{
  "version": 3,
  "sources": ["../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js", "../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js", "../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js", "../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/node.js", "../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js", "../../../node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js", "../../../node_modules/.pnpm/setprototypeof@1.2.0/node_modules/setprototypeof/index.js", "../../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json", "../../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js", "../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../../../node_modules/.pnpm/toidentifier@1.0.1/node_modules/toidentifier/index.js", "../../../node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/index.js", "../../../node_modules/.pnpm/bytes@3.1.2/node_modules/bytes/index.js", "../../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/lib/helpers/merge-exports.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/utf32.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/cp936.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/cp949.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/cp950.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/encodings/index.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/lib/streams.js", "../../../node_modules/.pnpm/iconv-lite@0.7.2/node_modules/iconv-lite/lib/index.js", "../../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js", "../../../node_modules/.pnpm/raw-body@3.0.2/node_modules/raw-body/index.js", "../../../node_modules/.pnpm/ee-first@1.1.1/node_modules/ee-first/index.js", "../../../node_modules/.pnpm/on-finished@2.4.1/node_modules/on-finished/index.js", "../../../node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", "../../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/db.json", "../../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/index.js", "../../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/mimeScore.js", "../../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/index.js", "../../../node_modules/.pnpm/media-typer@1.1.0/node_modules/media-typer/index.js", "../../../node_modules/.pnpm/type-is@2.0.1/node_modules/type-is/index.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/utils.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/read.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/types/json.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/types/raw.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/types/text.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js", "../../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/util.inspect.js", "../../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/index.js", "../../../node_modules/.pnpm/side-channel-list@1.0.0/node_modules/side-channel-list/index.js", "../../../node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js", "../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js", "../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js", "../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js", "../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js", "../../../node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js", "../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js", "../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js", "../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js", "../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js", "../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js", "../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js", "../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js", "../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js", "../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js", "../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js", "../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js", "../../../node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js", "../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js", "../../../node_modules/.pnpm/hasown@2.0.4/node_modules/hasown/index.js", "../../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js", "../../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js", "../../../node_modules/.pnpm/side-channel-map@1.0.1/node_modules/side-channel-map/index.js", "../../../node_modules/.pnpm/side-channel-weakmap@1.0.2/node_modules/side-channel-weakmap/index.js", "../../../node_modules/.pnpm/side-channel@1.1.0/node_modules/side-channel/index.js", "../../../node_modules/.pnpm/qs@6.15.0/node_modules/qs/lib/formats.js", "../../../node_modules/.pnpm/qs@6.15.0/node_modules/qs/lib/utils.js", "../../../node_modules/.pnpm/qs@6.15.0/node_modules/qs/lib/stringify.js", "../../../node_modules/.pnpm/qs@6.15.0/node_modules/qs/lib/parse.js", "../../../node_modules/.pnpm/qs@6.15.0/node_modules/qs/lib/index.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/lib/types/urlencoded.js", "../../../node_modules/.pnpm/body-parser@2.2.2/node_modules/body-parser/index.js", "../../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.js", "../../../node_modules/.pnpm/encodeurl@2.0.0/node_modules/encodeurl/index.js", "../../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js", "../../../node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js", "../../../node_modules/.pnpm/finalhandler@2.1.1/node_modules/finalhandler/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/view.js", "../../../node_modules/.pnpm/etag@1.8.1/node_modules/etag/index.js", "../../../node_modules/.pnpm/forwarded@0.2.0/node_modules/forwarded/index.js", "../../../node_modules/.pnpm/ipaddr.js@1.9.1/node_modules/ipaddr.js/lib/ipaddr.js", "../../../node_modules/.pnpm/proxy-addr@2.0.7/node_modules/proxy-addr/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/utils.js", "../../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../../../node_modules/.pnpm/is-promise@4.0.0/node_modules/is-promise/index.js", "../../../node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/src/index.ts", "../../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/layer.js", "../../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/route.js", "../../../node_modules/.pnpm/router@2.2.0/node_modules/router/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/application.js", "../../../node_modules/.pnpm/negotiator@1.0.0/node_modules/negotiator/lib/charset.js", "../../../node_modules/.pnpm/negotiator@1.0.0/node_modules/negotiator/lib/encoding.js", "../../../node_modules/.pnpm/negotiator@1.0.0/node_modules/negotiator/lib/language.js", "../../../node_modules/.pnpm/negotiator@1.0.0/node_modules/negotiator/lib/mediaType.js", "../../../node_modules/.pnpm/negotiator@1.0.0/node_modules/negotiator/index.js", "../../../node_modules/.pnpm/accepts@2.0.0/node_modules/accepts/index.js", "../../../node_modules/.pnpm/fresh@2.0.0/node_modules/fresh/index.js", "../../../node_modules/.pnpm/range-parser@1.2.1/node_modules/range-parser/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/request.js", "../../../node_modules/.pnpm/content-disposition@1.0.1/node_modules/content-disposition/index.js", "../../../node_modules/.pnpm/cookie-signature@1.2.2/node_modules/cookie-signature/index.js", "../../../node_modules/.pnpm/cookie@0.7.2/node_modules/cookie/index.js", "../../../node_modules/.pnpm/send@1.2.1/node_modules/send/index.js", "../../../node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/response.js", "../../../node_modules/.pnpm/serve-static@2.2.1/node_modules/serve-static/index.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/lib/express.js", "../../../node_modules/.pnpm/express@5.2.1/node_modules/express/index.js", "../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js", "../../../node_modules/.pnpm/cors@2.8.6/node_modules/cors/lib/index.js", "../../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js", "../../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy/common.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js", "../../../node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3/node_modules/follow-redirects/debug.js", "../../../node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3/node_modules/follow-redirects/index.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy/index.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/lib/http-proxy.js", "../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.4.3/node_modules/http-proxy/index.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/errors.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/configuration.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/debug.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/plugins/default/debug-proxy-errors-plugin.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/status-code.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/plugins/default/error-response-plugin.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/logger.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/utils/logger-plugin.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/plugins/default/logger-plugin.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/utils/function.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/plugins/default/proxy-events.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/plugins/default/index.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/get-plugins.js", "../../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js", "../../../node_modules/.pnpm/is-glob@4.0.3/node_modules/is-glob/index.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/utils.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/stringify.js", "../../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js", "../../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js", "../../../node_modules/.pnpm/fill-range@7.1.1/node_modules/fill-range/index.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/compile.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/expand.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/constants.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/parse.js", "../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/index.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/constants.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/utils.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/scan.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/parse.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/picomatch.js", "../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/index.js", "../../../node_modules/.pnpm/micromatch@4.0.8/node_modules/micromatch/index.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/path-filter.js", "../../../node_modules/.pnpm/is-plain-object@5.0.0/node_modules/is-plain-object/dist/is-plain-object.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/path-rewriter.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/router.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/http-proxy-middleware.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/factory.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/handlers/response-interceptor.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/handlers/fix-request-body.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/handlers/public.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/handlers/index.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/legacy/options-adapter.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/legacy/create-proxy-middleware.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/legacy/public.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/legacy/index.js", "../../../node_modules/.pnpm/http-proxy-middleware@3.0.5/node_modules/http-proxy-middleware/dist/index.js", "../../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js", "../../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js", "../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/debug.js", "../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/browser.js", "../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/node.js", "../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/index.js", "../../../node_modules/.pnpm/on-headers@1.1.0/node_modules/on-headers/index.js", "../../../node_modules/.pnpm/cookie-signature@1.0.7/node_modules/cookie-signature/index.js", "../../../node_modules/.pnpm/random-bytes@1.0.0/node_modules/random-bytes/index.js", "../../../node_modules/.pnpm/uid-safe@2.1.5/node_modules/uid-safe/index.js", "../../../node_modules/.pnpm/express-session@1.19.0/node_modules/express-session/session/cookie.js", "../../../node_modules/.pnpm/express-session@1.19.0/node_modules/express-session/session/session.js", "../../../node_modules/.pnpm/express-session@1.19.0/node_modules/express-session/session/store.js", "../../../node_modules/.pnpm/express-session@1.19.0/node_modules/express-session/session/memory.js", "../../../node_modules/.pnpm/express-session@1.19.0/node_modules/express-session/index.js", "../../../node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js", "../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js", "../../../node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js", "../../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js", "../../../node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js", "../../../node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js", "../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js", "../../../node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js", "../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js", "../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js", "../../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/defaults.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/utils.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-legacy.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-webcrypto.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/cert-signatures.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/sasl.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/type-overrides.js", "../../../node_modules/.pnpm/pg-connection-string@2.12.0/node_modules/pg-connection-string/index.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection-parameters.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/result.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/query.js", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/messages.ts", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/buffer-writer.ts", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/serializer.ts", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/buffer-reader.ts", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/parser.ts", "../../../node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/src/index.ts", "../../../node_modules/.pnpm/pg-cloudflare@1.3.0/node_modules/pg-cloudflare/src/empty.ts", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/stream.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection.js", "../../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js", "../../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js", "../../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/client.js", "../../../node_modules/.pnpm/pg-pool@3.13.0_pg@8.20.0/node_modules/pg-pool/index.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/query.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/client.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/index.js", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/index.js", "../../../node_modules/.pnpm/connect-pg-simple@10.0.0/node_modules/connect-pg-simple/index.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-helpers.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-proto.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-with-cause.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/req.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/res.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/caller.js", "../../../node_modules/.pnpm/@pinojs+redact@0.4.0/node_modules/@pinojs/redact/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/symbols.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/redaction.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/time.js", "../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js", "../../../node_modules/.pnpm/atomic-sleep@1.0.0/node_modules/atomic-sleep/index.js", "../../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/index.js", "../../../node_modules/.pnpm/on-exit-leak-free@2.1.2/node_modules/on-exit-leak-free/index.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/package.json", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/wait.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/indexes.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/transport.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/tools.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/constants.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/levels.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/meta.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/proto.js", "../../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/multistream.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/pino.js", "../../../node_modules/.pnpm/get-caller-file@2.0.5/node_modules/get-caller-file/index.ts", "../../../node_modules/.pnpm/pino-http@10.5.0/node_modules/pino-http/logger.js", "../../../node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js", "../../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json", "../../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js", "../../../node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js", "../../../node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", "../../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js", "../../../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js", "../../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js", "../../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js", "../../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js", "../../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/immutable.js", "../../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/parse-path.js", "../../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/set-value.js", "../../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/index.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/lib/counter.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/lib/multer-error.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/lib/file-appender.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/lib/remove-uploaded-files.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/lib/make-middleware.js", "../../../node_modules/.pnpm/mkdirp@0.5.6/node_modules/mkdirp/index.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/storage/disk.js", "../../../node_modules/.pnpm/process-nextick-args@2.0.1/node_modules/process-nextick-args/index.js", "../../../node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/stream.js", "../../../node_modules/.pnpm/safe-buffer@5.1.2/node_modules/safe-buffer/index.js", "../../../node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/BufferList.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/.pnpm/string_decoder@1.1.1/node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/.pnpm/readable-stream@2.3.8/node_modules/readable-stream/readable.js", "../../../node_modules/.pnpm/buffer-from@1.1.2/node_modules/buffer-from/index.js", "../../../node_modules/.pnpm/typedarray@0.0.6/node_modules/typedarray/index.js", "../../../node_modules/.pnpm/concat-stream@1.6.2/node_modules/concat-stream/index.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/storage/memory.js", "../../../node_modules/.pnpm/multer@1.4.5-lts.2/node_modules/multer/index.js", "../src/app.ts", "../../../lib/db/src/index.ts", "../../../node_modules/.pnpm/pg@8.20.0/node_modules/pg/esm/index.mjs", "../../../lib/db/src/schema/index.ts", "../../../lib/db/src/schema/users.ts", "../../../lib/db/src/schema/patients.ts", "../../../lib/db/src/schema/growth.ts", "../../../lib/db/src/schema/appointments.ts", "../../../lib/db/src/schema/examinationTypes.ts", "../../../lib/db/src/schema/visits.ts", "../../../lib/db/src/schema/prescriptions.ts", "../../../lib/db/src/schema/referrals.ts", "../../../lib/db/src/schema/drugs.ts", "../../../lib/db/src/schema/payments.ts", "../../../lib/db/src/schema/audit.ts", "../../../lib/db/src/schema/sessionState.ts", "../../../lib/db/src/schema/session.ts", "../../../lib/db/src/schema/consultations.ts", "../../../lib/db/src/schema/siteContent.ts", "../../../lib/db/src/schema/systemSettings.ts", "../../../lib/db/src/schema/queue.ts", "../../../lib/db/src/schema/notifications.ts", "../../../lib/db/src/schema/complaints.ts", "../../../lib/db/src/schema/qrFiles.ts", "../src/routes/index.ts", "../src/routes/health.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js", "../../../lib/api-zod/src/generated/api.ts", "../src/routes/auth.ts", "../../../node_modules/.pnpm/bcryptjs@3.0.3/node_modules/bcryptjs/index.js", "../src/lib/session.ts", "../../../lib/permissions/src/index.ts", "../src/lib/audit.ts", "../src/lib/rateLimiter.ts", "../src/lib/logger.ts", "../src/routes/patients.ts", "../src/lib/codes.ts", "../src/lib/bookingSchedule.ts", "../src/routes/appointments.ts", "../src/lib/realtime.ts", "../src/routes/visits.ts", "../src/routes/prescriptions.ts", "../src/routes/referrals.ts", "../src/routes/drugs.ts", "../src/routes/payments.ts", "../src/routes/dashboard.ts", "../src/routes/audit.ts", "../src/routes/publicRoutes.ts", "../src/lib/ensureSeedSystemSettings.ts", "../src/routes/patientAuth.ts", "../src/lib/patientSession.ts", "../src/routes/consultations.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/internal/tslib.mjs", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/errors.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/core/error.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/version.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/shims.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/request-options.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/query.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/core/streaming.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/parse.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/core/api-promise.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/core/pagination.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/to-file.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/core/resource.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/headers.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/environments.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/stainless-helper-header.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/user-profiles.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/agents/versions.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/agents/agents.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memories.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memory-versions.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memory-stores.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/constants.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/beta-parser.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/tools/ToolError.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/tools/CompactionControl.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/tools/BetaToolRunner.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/events.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/resources.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/sessions.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/versions.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/skills.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/vaults/credentials.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/vaults/vaults.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/completions.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/parser.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/resources/models.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts", "../../../node_modules/.pnpm/@anthropic-ai+sdk@0.91.1_zod@3.25.76/node_modules/@anthropic-ai/sdk/src/client.ts", "../src/lib/aiClient.ts", "../src/routes/storage.ts", "../src/lib/objectStorage.ts", "../src/lib/objectAcl.ts", "../src/routes/siteAdmin.ts", "../src/routes/systemSettings.ts", "../src/routes/examinationTypes.ts", "../src/routes/backup.ts", "../src/routes/display.ts", "../src/routes/notifications.ts", "../src/routes/complaints.ts", "../src/routes/qrFiles.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/external.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/index.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/index.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ar.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/az.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/be.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ca.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/cs.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/de.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/en.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/eo.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/es.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/fa.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/fi.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/fr.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/fr-CA.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/he.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/hu.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/id.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/it.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ja.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/kh.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ko.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/mk.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ms.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/nl.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/no.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ota.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ps.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/pl.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/pt.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ru.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/sl.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/sv.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ta.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/th.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/tr.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ua.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/ur.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/vi.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/zh-CN.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/locales/zh-TW.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/function.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/json-schema.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/compat.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/coerce.js", "../src/lib/ensureSeedUsers.ts", "../src/lib/ensureSeedSiteContent.ts", "../src/lib/ensureSeedExaminationTypes.ts", "../src/lib/rotateSequentialPatientCodes.ts", "../src/index.ts"],
  "sourcesContent": ["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + stack[i].toString()\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n  var count = typeof emitter.listenerCount !== 'function'\n    ? emitter.listeners(type).length\n    : emitter.listenerCount(type)\n\n  return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = process.env.NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = process.env.TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eehaslisteners(process, 'deprecation')\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + stack[i].toString()\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n  // eslint-disable-next-line no-new-func\n  var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n    '\"use strict\"\\n' +\n    'return function (' + args + ') {' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '}')(fn, log, this, message, site)\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n", "'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n  obj.__proto__ = proto\n  return obj\n}\n\nfunction mixinProperties (obj, proto) {\n  for (var prop in proto) {\n    if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n      obj[prop] = proto[prop]\n    }\n  }\n  return obj\n}\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a Teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Too Early\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n  var map = {}\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // populate map\n    map[message.toLowerCase()] = status\n  })\n\n  return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n  return Object.keys(codes).map(function mapCode (code) {\n    return Number(code)\n  })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n  var msg = message.toLowerCase()\n\n  if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n    throw new Error('invalid status message: \"' + message + '\"')\n  }\n\n  return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n  if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n    throw new Error('invalid status code: ' + code)\n  }\n\n  return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    return getStatusMessage(code)\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    return getStatusMessage(n)\n  }\n\n  return getStatusCode(code)\n}\n", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "try {\n  var util = require('util');\n  /* istanbul ignore next */\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  /* istanbul ignore next */\n  module.exports = require('./inherits_browser.js');\n}\n", "/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n  return str\n    .split(' ')\n    .map(function (token) {\n      return token.slice(0, 1).toUpperCase() + token.slice(1)\n    })\n    .join('')\n    .replace(/[^ _0-9a-z]/gi, '')\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    var type = typeof arg\n    if (type === 'object' && arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n    } else if (type === 'number' && i === 0) {\n      status = arg\n    } else if (type === 'string') {\n      msg = arg\n    } else if (type === 'object') {\n      props = arg\n    } else {\n      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses.message[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses.message[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses.message[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n}\n\n/**\n * Get a class name from a name identifier.\n *\n * @param {string} name\n * @returns {string}\n * @private\n */\n\nfunction toClassName (name) {\n  return name.slice(-5) === 'Error' ? name : name + 'Error'\n}\n", "/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n  b:  1,\n  kb: 1 << 10,\n  mb: 1 << 20,\n  gb: 1 << 30,\n  tb: Math.pow(1024, 4),\n  pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n *  case: [string],\n *  decimalPlaces: [number]\n *  fixedDecimals: [boolean]\n *  thousandsSeparator: [string]\n *  unitSeparator: [string]\n *  }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n  if (typeof value === 'string') {\n    return parse(value);\n  }\n\n  if (typeof value === 'number') {\n    return format(value, options);\n  }\n\n  return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n  if (!Number.isFinite(value)) {\n    return null;\n  }\n\n  var mag = Math.abs(value);\n  var thousandsSeparator = (options && options.thousandsSeparator) || '';\n  var unitSeparator = (options && options.unitSeparator) || '';\n  var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n  var fixedDecimals = Boolean(options && options.fixedDecimals);\n  var unit = (options && options.unit) || '';\n\n  if (!unit || !map[unit.toLowerCase()]) {\n    if (mag >= map.pb) {\n      unit = 'PB';\n    } else if (mag >= map.tb) {\n      unit = 'TB';\n    } else if (mag >= map.gb) {\n      unit = 'GB';\n    } else if (mag >= map.mb) {\n      unit = 'MB';\n    } else if (mag >= map.kb) {\n      unit = 'KB';\n    } else {\n      unit = 'B';\n    }\n  }\n\n  var val = value / map[unit.toLowerCase()];\n  var str = val.toFixed(decimalPlaces);\n\n  if (!fixedDecimals) {\n    str = str.replace(formatDecimalsRegExp, '$1');\n  }\n\n  if (thousandsSeparator) {\n    str = str.split('.').map(function (s, i) {\n      return i === 0\n        ? s.replace(formatThousandsRegExp, thousandsSeparator)\n        : s\n    }).join('.');\n  }\n\n  return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n  if (typeof val === 'number' && !isNaN(val)) {\n    return val;\n  }\n\n  if (typeof val !== 'string') {\n    return null;\n  }\n\n  // Test if the string passed is valid\n  var results = parseRegExp.exec(val);\n  var floatValue;\n  var unit = 'b';\n\n  if (!results) {\n    // Nothing could be extracted from the given string\n    floatValue = parseInt(val, 10);\n    unit = 'b'\n  } else {\n    // Retrieve the value and the unit\n    floatValue = parseFloat(results[1]);\n    unit = results[4].toLowerCase();\n  }\n\n  if (isNaN(floatValue)) {\n    return null;\n  }\n\n  return Math.floor(map[unit] * floatValue);\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "\"use strict\"\n\nvar BOMChar = \"\\uFEFF\"\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper (encoder, options) {\n  this.encoder = encoder\n  this.addBOM = true\n}\n\nPrependBOMWrapper.prototype.write = function (str) {\n  if (this.addBOM) {\n    str = BOMChar + str\n    this.addBOM = false\n  }\n\n  return this.encoder.write(str)\n}\n\nPrependBOMWrapper.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// ------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper\nfunction StripBOMWrapper (decoder, options) {\n  this.decoder = decoder\n  this.pass = false\n  this.options = options || {}\n}\n\nStripBOMWrapper.prototype.write = function (buf) {\n  var res = this.decoder.write(buf)\n  if (this.pass || !res) { return res }\n\n  if (res[0] === BOMChar) {\n    res = res.slice(1)\n    if (typeof this.options.stripBOM === \"function\") { this.options.stripBOM() }\n  }\n\n  this.pass = true\n  return res\n}\n\nStripBOMWrapper.prototype.end = function () {\n  return this.decoder.end()\n}\n", "\"use strict\"\n\nvar hasOwn = typeof Object.hasOwn === \"undefined\" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn\n\nfunction mergeModules (target, module) {\n  for (var key in module) {\n    if (hasOwn(module, key)) {\n      target[key] = module[key]\n    }\n  }\n}\n\nmodule.exports = mergeModules\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n  // Encodings\n  utf8: { type: \"_internal\", bomAware: true },\n  cesu8: { type: \"_internal\", bomAware: true },\n  unicode11utf8: \"utf8\",\n\n  ucs2: { type: \"_internal\", bomAware: true },\n  utf16le: \"ucs2\",\n\n  binary: { type: \"_internal\" },\n  base64: { type: \"_internal\" },\n  hex: { type: \"_internal\" },\n\n  // Codec.\n  _internal: InternalCodec\n}\n\n// ------------------------------------------------------------------------------\n\nfunction InternalCodec (codecOptions, iconv) {\n  this.enc = codecOptions.encodingName\n  this.bomAware = codecOptions.bomAware\n\n  if (this.enc === \"base64\") { this.encoder = InternalEncoderBase64 } else if (this.enc === \"utf8\") { this.encoder = InternalEncoderUtf8 } else if (this.enc === \"cesu8\") {\n    this.enc = \"utf8\" // Use utf8 for decoding.\n    this.encoder = InternalEncoderCesu8\n\n    // Add decoder for versions of Node not supporting CESU-8\n    if (Buffer.from(\"eda0bdedb2a9\", \"hex\").toString() !== \"\uD83D\uDCA9\") {\n      this.decoder = InternalDecoderCesu8\n      this.defaultCharUnicode = iconv.defaultCharUnicode\n    }\n  }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder\nInternalCodec.prototype.decoder = InternalDecoder\n\n// ------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require(\"string_decoder\").StringDecoder\n\nfunction InternalDecoder (options, codec) {\n  this.decoder = new StringDecoder(codec.enc)\n}\n\nInternalDecoder.prototype.write = function (buf) {\n  if (!Buffer.isBuffer(buf)) {\n    buf = Buffer.from(buf)\n  }\n\n  return this.decoder.write(buf)\n}\n\nInternalDecoder.prototype.end = function () {\n  return this.decoder.end()\n}\n\n// ------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder (options, codec) {\n  this.enc = codec.enc\n}\n\nInternalEncoder.prototype.write = function (str) {\n  return Buffer.from(str, this.enc)\n}\n\nInternalEncoder.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64 (options, codec) {\n  this.prevStr = \"\"\n}\n\nInternalEncoderBase64.prototype.write = function (str) {\n  str = this.prevStr + str\n  var completeQuads = str.length - (str.length % 4)\n  this.prevStr = str.slice(completeQuads)\n  str = str.slice(0, completeQuads)\n\n  return Buffer.from(str, \"base64\")\n}\n\nInternalEncoderBase64.prototype.end = function () {\n  return Buffer.from(this.prevStr, \"base64\")\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8 (options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function (str) {\n  var buf = Buffer.alloc(str.length * 3); var bufIdx = 0\n  for (var i = 0; i < str.length; i++) {\n    var charCode = str.charCodeAt(i)\n    // Naive implementation, but it works because CESU-8 is especially easy\n    // to convert from UTF-16 (which all JS strings are encoded in).\n    if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) {\n      buf[bufIdx++] = 0xC0 + (charCode >>> 6)\n      buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n    } else { // charCode will always be < 0x10000 in javascript.\n      buf[bufIdx++] = 0xE0 + (charCode >>> 12)\n      buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f)\n      buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n    }\n  }\n  return buf.slice(0, bufIdx)\n}\n\nInternalEncoderCesu8.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8 (options, codec) {\n  this.acc = 0\n  this.contBytes = 0\n  this.accBytes = 0\n  this.defaultCharUnicode = codec.defaultCharUnicode\n}\n\nInternalDecoderCesu8.prototype.write = function (buf) {\n  var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes\n  var res = \"\"\n  for (var i = 0; i < buf.length; i++) {\n    var curByte = buf[i]\n    if ((curByte & 0xC0) !== 0x80) { // Leading byte\n      if (contBytes > 0) { // Previous code is invalid\n        res += this.defaultCharUnicode\n        contBytes = 0\n      }\n\n      if (curByte < 0x80) { // Single-byte code\n        res += String.fromCharCode(curByte)\n      } else if (curByte < 0xE0) { // Two-byte code\n        acc = curByte & 0x1F\n        contBytes = 1; accBytes = 1\n      } else if (curByte < 0xF0) { // Three-byte code\n        acc = curByte & 0x0F\n        contBytes = 2; accBytes = 1\n      } else { // Four or more are not supported for CESU-8.\n        res += this.defaultCharUnicode\n      }\n    } else { // Continuation byte\n      if (contBytes > 0) { // We're waiting for it.\n        acc = (acc << 6) | (curByte & 0x3f)\n        contBytes--; accBytes++\n        if (contBytes === 0) {\n          // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n          if (accBytes === 2 && acc < 0x80 && acc > 0) {\n            res += this.defaultCharUnicode\n          } else if (accBytes === 3 && acc < 0x800) {\n            res += this.defaultCharUnicode\n          } else {\n            // Actually add character.\n            res += String.fromCharCode(acc)\n          }\n        }\n      } else { // Unexpected continuation byte\n        res += this.defaultCharUnicode\n      }\n    }\n  }\n  this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes\n  return res\n}\n\nInternalDecoderCesu8.prototype.end = function () {\n  var res = 0\n  if (this.contBytes > 0) { res += this.defaultCharUnicode }\n  return res\n}\n\n// ------------------------------------------------------------------------------\n// check the chunk boundaries for surrogate pair\n\nfunction InternalEncoderUtf8 (options, codec) {\n  this.highSurrogate = \"\"\n}\n\nInternalEncoderUtf8.prototype.write = function (str) {\n  if (this.highSurrogate) {\n    str = this.highSurrogate + str\n    this.highSurrogate = \"\"\n  }\n\n  if (str.length > 0) {\n    var charCode = str.charCodeAt(str.length - 1)\n    if (charCode >= 0xd800 && charCode < 0xdc00) {\n      this.highSurrogate = str[str.length - 1]\n      str = str.slice(0, str.length - 1)\n    }\n  }\n\n  return Buffer.from(str, this.enc)\n}\n\nInternalEncoderUtf8.prototype.end = function () {\n  if (this.highSurrogate) {\n    var str = this.highSurrogate\n    this.highSurrogate = \"\"\n    return Buffer.from(str, this.enc)\n  }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec\n\nfunction Utf32Codec (codecOptions, iconv) {\n  this.iconv = iconv\n  this.bomAware = true\n  this.isLE = codecOptions.isLE\n}\n\nexports.utf32le = { type: \"_utf32\", isLE: true }\nexports.utf32be = { type: \"_utf32\", isLE: false }\n\n// Aliases\nexports.ucs4le = \"utf32le\"\nexports.ucs4be = \"utf32be\"\n\nUtf32Codec.prototype.encoder = Utf32Encoder\nUtf32Codec.prototype.decoder = Utf32Decoder\n\n// -- Encoding\n\nfunction Utf32Encoder (options, codec) {\n  this.isLE = codec.isLE\n  this.highSurrogate = 0\n}\n\nUtf32Encoder.prototype.write = function (str) {\n  var src = Buffer.from(str, \"ucs2\")\n  var dst = Buffer.alloc(src.length * 2)\n  var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE\n  var offset = 0\n\n  for (var i = 0; i < src.length; i += 2) {\n    var code = src.readUInt16LE(i)\n    var isHighSurrogate = (code >= 0xD800 && code < 0xDC00)\n    var isLowSurrogate = (code >= 0xDC00 && code < 0xE000)\n\n    if (this.highSurrogate) {\n      if (isHighSurrogate || !isLowSurrogate) {\n        // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n        // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n        // (technically wrong, but expected by some applications, like Windows file names).\n        write32.call(dst, this.highSurrogate, offset)\n        offset += 4\n      } else {\n        // Create 32-bit value from high and low surrogates;\n        var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000\n\n        write32.call(dst, codepoint, offset)\n        offset += 4\n        this.highSurrogate = 0\n\n        continue\n      }\n    }\n\n    if (isHighSurrogate) { this.highSurrogate = code } else {\n      // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n      // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n      // unpaired high surrogates.\n      write32.call(dst, code, offset)\n      offset += 4\n      this.highSurrogate = 0\n    }\n  }\n\n  if (offset < dst.length) { dst = dst.slice(0, offset) }\n\n  return dst\n}\n\nUtf32Encoder.prototype.end = function () {\n  // Treat any leftover high surrogate as a semi-valid independent character.\n  if (!this.highSurrogate) { return }\n\n  var buf = Buffer.alloc(4)\n\n  if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) }\n\n  this.highSurrogate = 0\n\n  return buf\n}\n\n// -- Decoding\n\nfunction Utf32Decoder (options, codec) {\n  this.isLE = codec.isLE\n  this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0)\n  this.overflow = []\n}\n\nUtf32Decoder.prototype.write = function (src) {\n  if (src.length === 0) { return \"\" }\n\n  var i = 0\n  var codepoint = 0\n  var dst = Buffer.alloc(src.length + 4)\n  var offset = 0\n  var isLE = this.isLE\n  var overflow = this.overflow\n  var badChar = this.badChar\n\n  if (overflow.length > 0) {\n    for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) }\n\n    if (overflow.length === 4) {\n      // NOTE: codepoint is a signed int32 and can be negative.\n      // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n      if (isLE) {\n        codepoint = overflow[i] | (overflow[i + 1] << 8) | (overflow[i + 2] << 16) | (overflow[i + 3] << 24)\n      } else {\n        codepoint = overflow[i + 3] | (overflow[i + 2] << 8) | (overflow[i + 1] << 16) | (overflow[i] << 24)\n      }\n      overflow.length = 0\n\n      offset = _writeCodepoint(dst, offset, codepoint, badChar)\n    }\n  }\n\n  // Main loop. Should be as optimized as possible.\n  for (; i < src.length - 3; i += 4) {\n    // NOTE: codepoint is a signed int32 and can be negative.\n    if (isLE) {\n      codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24)\n    } else {\n      codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24)\n    }\n    offset = _writeCodepoint(dst, offset, codepoint, badChar)\n  }\n\n  // Keep overflowing bytes.\n  for (; i < src.length; i++) {\n    overflow.push(src[i])\n  }\n\n  return dst.slice(0, offset).toString(\"ucs2\")\n}\n\nfunction _writeCodepoint (dst, offset, codepoint, badChar) {\n  // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n  if (codepoint < 0 || codepoint > 0x10FFFF) {\n    // Not a valid Unicode codepoint\n    codepoint = badChar\n  }\n\n  // Ephemeral Planes: Write high surrogate.\n  if (codepoint >= 0x10000) {\n    codepoint -= 0x10000\n\n    var high = 0xD800 | (codepoint >> 10)\n    dst[offset++] = high & 0xff\n    dst[offset++] = high >> 8\n\n    // Low surrogate is written below.\n    var codepoint = 0xDC00 | (codepoint & 0x3FF)\n  }\n\n  // Write BMP char or low surrogate.\n  dst[offset++] = codepoint & 0xff\n  dst[offset++] = codepoint >> 8\n\n  return offset\n};\n\nUtf32Decoder.prototype.end = function () {\n  this.overflow.length = 0\n}\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec\nexports.ucs4 = \"utf32\"\n\nfunction Utf32AutoCodec (options, iconv) {\n  this.iconv = iconv\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder\n\n// -- Encoding\n\nfunction Utf32AutoEncoder (options, codec) {\n  options = options || {}\n\n  if (options.addBOM === undefined) {\n    options.addBOM = true\n  }\n\n  this.encoder = codec.iconv.getEncoder(options.defaultEncoding || \"utf-32le\", options)\n}\n\nUtf32AutoEncoder.prototype.write = function (str) {\n  return this.encoder.write(str)\n}\n\nUtf32AutoEncoder.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf32AutoDecoder (options, codec) {\n  this.decoder = null\n  this.initialBufs = []\n  this.initialBufsLen = 0\n  this.options = options || {}\n  this.iconv = codec.iconv\n}\n\nUtf32AutoDecoder.prototype.write = function (buf) {\n  if (!this.decoder) {\n    // Codec is not chosen yet. Accumulate initial bytes.\n    this.initialBufs.push(buf)\n    this.initialBufsLen += buf.length\n\n    if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n    { return \"\" }\n\n    // We have enough bytes -> detect endianness.\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.write(buf)\n}\n\nUtf32AutoDecoder.prototype.end = function () {\n  if (!this.decoder) {\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    var trail = this.decoder.end()\n    if (trail) { resStr += trail }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n  var b = []\n  var charsProcessed = 0\n  var invalidLE = 0; var invalidBE = 0   // Number of invalid chars when decoded as LE or BE.\n  var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE.\n\n  outerLoop:\n  for (var i = 0; i < bufs.length; i++) {\n    var buf = bufs[i]\n    for (var j = 0; j < buf.length; j++) {\n      b.push(buf[j])\n      if (b.length === 4) {\n        if (charsProcessed === 0) {\n          // Check BOM first.\n          if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n            return \"utf-32le\"\n          }\n          if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n            return \"utf-32be\"\n          }\n        }\n\n        if (b[0] !== 0 || b[1] > 0x10) invalidBE++\n        if (b[3] !== 0 || b[2] > 0x10) invalidLE++\n\n        if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++\n        if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++\n\n        b.length = 0\n        charsProcessed++\n\n        if (charsProcessed >= 100) {\n          break outerLoop\n        }\n      }\n    }\n  }\n\n  // Make decisions.\n  if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return \"utf-32be\"\n  if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return \"utf-32le\"\n\n  // Couldn't decide (likely all zeros or not enough data).\n  return defaultEncoding || \"utf-32le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec\nfunction Utf16BECodec () {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder\nUtf16BECodec.prototype.decoder = Utf16BEDecoder\nUtf16BECodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf16BEEncoder () {\n}\n\nUtf16BEEncoder.prototype.write = function (str) {\n  var buf = Buffer.from(str, \"ucs2\")\n  for (var i = 0; i < buf.length; i += 2) {\n    var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp\n  }\n  return buf\n}\n\nUtf16BEEncoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf16BEDecoder () {\n  this.overflowByte = -1\n}\n\nUtf16BEDecoder.prototype.write = function (buf) {\n  if (buf.length == 0) { return \"\" }\n\n  var buf2 = Buffer.alloc(buf.length + 1)\n  var i = 0; var j = 0\n\n  if (this.overflowByte !== -1) {\n    buf2[0] = buf[0]\n    buf2[1] = this.overflowByte\n    i = 1; j = 2\n  }\n\n  for (; i < buf.length - 1; i += 2, j += 2) {\n    buf2[j] = buf[i + 1]\n    buf2[j + 1] = buf[i]\n  }\n\n  this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1\n\n  return buf2.slice(0, j).toString(\"ucs2\")\n}\n\nUtf16BEDecoder.prototype.end = function () {\n  this.overflowByte = -1\n}\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec\nfunction Utf16Codec (codecOptions, iconv) {\n  this.iconv = iconv\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder\nUtf16Codec.prototype.decoder = Utf16Decoder\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder (options, codec) {\n  options = options || {}\n  if (options.addBOM === undefined) { options.addBOM = true }\n  this.encoder = codec.iconv.getEncoder(\"utf-16le\", options)\n}\n\nUtf16Encoder.prototype.write = function (str) {\n  return this.encoder.write(str)\n}\n\nUtf16Encoder.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf16Decoder (options, codec) {\n  this.decoder = null\n  this.initialBufs = []\n  this.initialBufsLen = 0\n\n  this.options = options || {}\n  this.iconv = codec.iconv\n}\n\nUtf16Decoder.prototype.write = function (buf) {\n  if (!this.decoder) {\n    // Codec is not chosen yet. Accumulate initial bytes.\n    this.initialBufs.push(buf)\n    this.initialBufsLen += buf.length\n\n    if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n    { return \"\" }\n\n    // We have enough bytes -> detect endianness.\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.write(buf)\n}\n\nUtf16Decoder.prototype.end = function () {\n  if (!this.decoder) {\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    var trail = this.decoder.end()\n    if (trail) { resStr += trail }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n  return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n  var b = []\n  var charsProcessed = 0\n  // Number of ASCII chars when decoded as LE or BE.\n  var asciiCharsLE = 0\n  var asciiCharsBE = 0\n\n  outerLoop:\n  for (var i = 0; i < bufs.length; i++) {\n    var buf = bufs[i]\n    for (var j = 0; j < buf.length; j++) {\n      b.push(buf[j])\n      if (b.length === 2) {\n        if (charsProcessed === 0) {\n          // Check BOM first.\n          if (b[0] === 0xFF && b[1] === 0xFE) return \"utf-16le\"\n          if (b[0] === 0xFE && b[1] === 0xFF) return \"utf-16be\"\n        }\n\n        if (b[0] === 0 && b[1] !== 0) asciiCharsBE++\n        if (b[0] !== 0 && b[1] === 0) asciiCharsLE++\n\n        b.length = 0\n        charsProcessed++\n\n        if (charsProcessed >= 100) {\n          break outerLoop\n        }\n      }\n    }\n  }\n\n  // Make decisions.\n  // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n  // So, we count ASCII as if it was LE or BE, and decide from that.\n  if (asciiCharsBE > asciiCharsLE) return \"utf-16be\"\n  if (asciiCharsBE < asciiCharsLE) return \"utf-16le\"\n\n  // Couldn't decide (likely all zeros or not enough data).\n  return defaultEncoding || \"utf-16le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec\nexports.unicode11utf7 = \"utf7\" // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec (codecOptions, iconv) {\n  this.iconv = iconv\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder\nUtf7Codec.prototype.decoder = Utf7Decoder\nUtf7Codec.prototype.bomAware = true\n\n// -- Encoding\n\n// Why scape ()?./?\n// eslint-disable-next-line no-useless-escape\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g\n\nfunction Utf7Encoder (options, codec) {\n  this.iconv = codec.iconv\n}\n\nUtf7Encoder.prototype.write = function (str) {\n  // Naive implementation.\n  // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n  return Buffer.from(str.replace(nonDirectChars, function (chunk) {\n    return \"+\" + (chunk === \"+\"\n      ? \"\"\n      : this.iconv.encode(chunk, \"utf16-be\").toString(\"base64\").replace(/=+$/, \"\")) +\n            \"-\"\n  }.bind(this)))\n}\n\nUtf7Encoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf7Decoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = \"\"\n}\n\n// Why scape /?\n// eslint-disable-next-line no-useless-escape\nvar base64Regex = /[A-Za-z0-9\\/+]/\nvar base64Chars = []\nfor (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) }\n\nvar plusChar = \"+\".charCodeAt(0)\nvar minusChar = \"-\".charCodeAt(0)\nvar andChar = \"&\".charCodeAt(0)\n\nUtf7Decoder.prototype.write = function (buf) {\n  var res = \"\"; var lastI = 0\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n\n  // The decoder is more involved as we must handle chunks in stream.\n\n  for (var i = 0; i < buf.length; i++) {\n    if (!inBase64) { // We're in direct mode.\n      // Write direct chars until '+'\n      if (buf[i] == plusChar) {\n        res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n        lastI = i + 1\n        inBase64 = true\n      }\n    } else { // We decode base64.\n      if (!base64Chars[buf[i]]) { // Base64 ended.\n        if (i == lastI && buf[i] == minusChar) { // \"+-\" -> \"+\"\n          res += \"+\"\n        } else {\n          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\")\n          res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n        }\n\n        if (buf[i] != minusChar) // Minus is absorbed after base64.\n        { i-- }\n\n        lastI = i + 1\n        inBase64 = false\n        base64Accum = \"\"\n      }\n    }\n  }\n\n  if (!inBase64) {\n    res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n  } else {\n    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\")\n\n    var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n    base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n    b64str = b64str.slice(0, canBeDecoded)\n\n    res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n  }\n\n  this.inBase64 = inBase64\n  this.base64Accum = base64Accum\n\n  return res\n}\n\nUtf7Decoder.prototype.end = function () {\n  var res = \"\"\n  if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n  this.inBase64 = false\n  this.base64Accum = \"\"\n  return res\n}\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\nexports.utf7imap = Utf7IMAPCodec\nfunction Utf7IMAPCodec (codecOptions, iconv) {\n  this.iconv = iconv\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder\nUtf7IMAPCodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = Buffer.alloc(6)\n  this.base64AccumIdx = 0\n}\n\nUtf7IMAPEncoder.prototype.write = function (str) {\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n  var base64AccumIdx = this.base64AccumIdx\n  var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0\n\n  for (var i = 0; i < str.length; i++) {\n    var uChar = str.charCodeAt(i)\n    if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'.\n      if (inBase64) {\n        if (base64AccumIdx > 0) {\n          bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n          base64AccumIdx = 0\n        }\n\n        buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n        inBase64 = false\n      }\n\n      if (!inBase64) {\n        buf[bufIdx++] = uChar // Write direct character\n\n        if (uChar === andChar)  // Ampersand -> '&-'\n        { buf[bufIdx++] = minusChar }\n      }\n    } else { // Non-direct character\n      if (!inBase64) {\n        buf[bufIdx++] = andChar // Write '&', then go to base64 mode.\n        inBase64 = true\n      }\n      if (inBase64) {\n        base64Accum[base64AccumIdx++] = uChar >> 8\n        base64Accum[base64AccumIdx++] = uChar & 0xFF\n\n        if (base64AccumIdx == base64Accum.length) {\n          bufIdx += buf.write(base64Accum.toString(\"base64\").replace(/\\//g, \",\"), bufIdx)\n          base64AccumIdx = 0\n        }\n      }\n    }\n  }\n\n  this.inBase64 = inBase64\n  this.base64AccumIdx = base64AccumIdx\n\n  return buf.slice(0, bufIdx)\n}\n\nUtf7IMAPEncoder.prototype.end = function () {\n  var buf = Buffer.alloc(10); var bufIdx = 0\n  if (this.inBase64) {\n    if (this.base64AccumIdx > 0) {\n      bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n      this.base64AccumIdx = 0\n    }\n\n    buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n    this.inBase64 = false\n  }\n\n  return buf.slice(0, bufIdx)\n}\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = \"\"\n}\n\nvar base64IMAPChars = base64Chars.slice()\nbase64IMAPChars[\",\".charCodeAt(0)] = true\n\nUtf7IMAPDecoder.prototype.write = function (buf) {\n  var res = \"\"; var lastI = 0\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n\n  // The decoder is more involved as we must handle chunks in stream.\n  // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n  for (var i = 0; i < buf.length; i++) {\n    if (!inBase64) { // We're in direct mode.\n      // Write direct chars until '&'\n      if (buf[i] == andChar) {\n        res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n        lastI = i + 1\n        inBase64 = true\n      }\n    } else { // We decode base64.\n      if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n        if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n          res += \"&\"\n        } else {\n          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, \"/\")\n          res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n        }\n\n        if (buf[i] != minusChar) // Minus may be absorbed after base64.\n        { i-- }\n\n        lastI = i + 1\n        inBase64 = false\n        base64Accum = \"\"\n      }\n    }\n  }\n\n  if (!inBase64) {\n    res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n  } else {\n    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, \"/\")\n\n    var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n    base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n    b64str = b64str.slice(0, canBeDecoded)\n\n    res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n  }\n\n  this.inBase64 = inBase64\n  this.base64Accum = base64Accum\n\n  return res\n}\n\nUtf7IMAPDecoder.prototype.end = function () {\n  var res = \"\"\n  if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n  this.inBase64 = false\n  this.base64Accum = \"\"\n  return res\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII).\n\nexports._sbcs = SBCSCodec\nfunction SBCSCodec (codecOptions, iconv) {\n  if (!codecOptions) {\n    throw new Error(\"SBCS codec is called without the data.\")\n  }\n\n  // Prepare char buffer for decoding.\n  if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) {\n    throw new Error(\"Encoding '\" + codecOptions.type + \"' has incorrect 'chars' (must be of len 128 or 256)\")\n  }\n\n  if (codecOptions.chars.length === 128) {\n    var asciiString = \"\"\n    for (var i = 0; i < 128; i++) {\n      asciiString += String.fromCharCode(i)\n    }\n    codecOptions.chars = asciiString + codecOptions.chars\n  }\n\n  this.decodeBuf = Buffer.from(codecOptions.chars, \"ucs2\")\n\n  // Encoding buffer.\n  var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0))\n\n  for (var i = 0; i < codecOptions.chars.length; i++) {\n    encodeBuf[codecOptions.chars.charCodeAt(i)] = i\n  }\n\n  this.encodeBuf = encodeBuf\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder\nSBCSCodec.prototype.decoder = SBCSDecoder\n\nfunction SBCSEncoder (options, codec) {\n  this.encodeBuf = codec.encodeBuf\n}\n\nSBCSEncoder.prototype.write = function (str) {\n  var buf = Buffer.alloc(str.length)\n  for (var i = 0; i < str.length; i++) {\n    buf[i] = this.encodeBuf[str.charCodeAt(i)]\n  }\n\n  return buf\n}\n\nSBCSEncoder.prototype.end = function () {\n}\n\nfunction SBCSDecoder (options, codec) {\n  this.decodeBuf = codec.decodeBuf\n}\n\nSBCSDecoder.prototype.write = function (buf) {\n  // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n  var decodeBuf = this.decodeBuf\n  var newBuf = Buffer.alloc(buf.length * 2)\n  var idx1 = 0; var idx2 = 0\n  for (var i = 0; i < buf.length; i++) {\n    idx1 = buf[i] * 2; idx2 = i * 2\n    newBuf[idx2] = decodeBuf[idx1]\n    newBuf[idx2 + 1] = decodeBuf[idx1 + 1]\n  }\n  return newBuf.toString(\"ucs2\")\n}\n\nSBCSDecoder.prototype.end = function () {\n}\n", "\"use strict\"\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n  // Not supported by iconv, not sure why.\n  10029: \"maccenteuro\",\n  maccenteuro: {\n    type: \"_sbcs\",\n    chars: \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n  },\n\n  808: \"cp808\",\n  ibm808: \"cp808\",\n  cp808: {\n    type: \"_sbcs\",\n    chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n  },\n\n  mik: {\n    type: \"_sbcs\",\n    chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n\n  cp720: {\n    type: \"_sbcs\",\n    chars: \"\\x80\\x81\u00E9\u00E2\\x84\u00E0\\x86\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\\x8d\\x8e\\x8f\\x90\\u0651\\u0652\u00F4\u00A4\u0640\u00FB\u00F9\u0621\u0622\u0623\u0624\u00A3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\u00B5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\\u00a0\"\n  },\n\n  // Aliases of generated encodings.\n  ascii8bit: \"ascii\",\n  usascii: \"ascii\",\n  ansix34: \"ascii\",\n  ansix341968: \"ascii\",\n  ansix341986: \"ascii\",\n  csascii: \"ascii\",\n  cp367: \"ascii\",\n  ibm367: \"ascii\",\n  isoir6: \"ascii\",\n  iso646us: \"ascii\",\n  iso646irv: \"ascii\",\n  us: \"ascii\",\n\n  latin1: \"iso88591\",\n  latin2: \"iso88592\",\n  latin3: \"iso88593\",\n  latin4: \"iso88594\",\n  latin5: \"iso88599\",\n  latin6: \"iso885910\",\n  latin7: \"iso885913\",\n  latin8: \"iso885914\",\n  latin9: \"iso885915\",\n  latin10: \"iso885916\",\n\n  csisolatin1: \"iso88591\",\n  csisolatin2: \"iso88592\",\n  csisolatin3: \"iso88593\",\n  csisolatin4: \"iso88594\",\n  csisolatincyrillic: \"iso88595\",\n  csisolatinarabic: \"iso88596\",\n  csisolatingreek: \"iso88597\",\n  csisolatinhebrew: \"iso88598\",\n  csisolatin5: \"iso88599\",\n  csisolatin6: \"iso885910\",\n\n  l1: \"iso88591\",\n  l2: \"iso88592\",\n  l3: \"iso88593\",\n  l4: \"iso88594\",\n  l5: \"iso88599\",\n  l6: \"iso885910\",\n  l7: \"iso885913\",\n  l8: \"iso885914\",\n  l9: \"iso885915\",\n  l10: \"iso885916\",\n\n  isoir14: \"iso646jp\",\n  isoir57: \"iso646cn\",\n  isoir100: \"iso88591\",\n  isoir101: \"iso88592\",\n  isoir109: \"iso88593\",\n  isoir110: \"iso88594\",\n  isoir144: \"iso88595\",\n  isoir127: \"iso88596\",\n  isoir126: \"iso88597\",\n  isoir138: \"iso88598\",\n  isoir148: \"iso88599\",\n  isoir157: \"iso885910\",\n  isoir166: \"tis620\",\n  isoir179: \"iso885913\",\n  isoir199: \"iso885914\",\n  isoir203: \"iso885915\",\n  isoir226: \"iso885916\",\n\n  cp819: \"iso88591\",\n  ibm819: \"iso88591\",\n\n  cyrillic: \"iso88595\",\n\n  arabic: \"iso88596\",\n  arabic8: \"iso88596\",\n  ecma114: \"iso88596\",\n  asmo708: \"iso88596\",\n\n  greek: \"iso88597\",\n  greek8: \"iso88597\",\n  ecma118: \"iso88597\",\n  elot928: \"iso88597\",\n\n  hebrew: \"iso88598\",\n  hebrew8: \"iso88598\",\n\n  turkish: \"iso88599\",\n  turkish8: \"iso88599\",\n\n  thai: \"iso885911\",\n  thai8: \"iso885911\",\n\n  celtic: \"iso885914\",\n  celtic8: \"iso885914\",\n  isoceltic: \"iso885914\",\n\n  tis6200: \"tis620\",\n  tis62025291: \"tis620\",\n  tis62025330: \"tis620\",\n\n  10000: \"macroman\",\n  10006: \"macgreek\",\n  10007: \"maccyrillic\",\n  10079: \"maciceland\",\n  10081: \"macturkish\",\n\n  cspc8codepage437: \"cp437\",\n  cspc775baltic: \"cp775\",\n  cspc850multilingual: \"cp850\",\n  cspcp852: \"cp852\",\n  cspc862latinhebrew: \"cp862\",\n  cpgr: \"cp869\",\n\n  msee: \"cp1250\",\n  mscyrl: \"cp1251\",\n  msansi: \"cp1252\",\n  msgreek: \"cp1253\",\n  msturk: \"cp1254\",\n  mshebr: \"cp1255\",\n  msarab: \"cp1256\",\n  winbaltrim: \"cp1257\",\n\n  cp20866: \"koi8r\",\n  20866: \"koi8r\",\n  ibm878: \"koi8r\",\n  cskoi8r: \"koi8r\",\n\n  cp21866: \"koi8u\",\n  21866: \"koi8u\",\n  ibm1168: \"koi8u\",\n\n  strk10482002: \"rk1048\",\n\n  tcvn5712: \"tcvn\",\n  tcvn57121: \"tcvn\",\n\n  gb198880: \"iso646cn\",\n  cn: \"iso646cn\",\n\n  csiso14jisc6220ro: \"iso646jp\",\n  jisc62201969ro: \"iso646jp\",\n  jp: \"iso646jp\",\n\n  cshproman8: \"hproman8\",\n  r8: \"hproman8\",\n  roman8: \"hproman8\",\n  xroman8: \"hproman8\",\n  ibm1051: \"hproman8\",\n\n  mac: \"macintosh\",\n  csmacintosh: \"macintosh\"\n}\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  }\n}", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec\n\nvar UNASSIGNED = -1\nvar GB18030_CODE = -2\nvar SEQ_START = -10\nvar NODE_START = -1000\nvar UNASSIGNED_NODE = new Array(0x100)\nvar DEF_CHAR = -1\n\nfor (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED }\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec (codecOptions, iconv) {\n  this.encodingName = codecOptions.encodingName\n  if (!codecOptions) { throw new Error(\"DBCS codec is called without the data.\") }\n  if (!codecOptions.table) { throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\") }\n\n  // Load tables.\n  var mappingTable = codecOptions.table()\n\n  // Decode tables: MBCS -> Unicode.\n\n  // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n  // Trie root is decodeTables[0].\n  // Values: >=  0 -> unicode character code. can be > 0xFFFF\n  //         == UNASSIGNED -> unknown/unassigned sequence.\n  //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n  //         <= NODE_START -> index of the next node in our trie to process next byte.\n  //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n  this.decodeTables = []\n  this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node.\n\n  // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.\n  this.decodeTableSeq = []\n\n  // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n  for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) }\n\n  // Load & create GB18030 tables when needed.\n  if (typeof codecOptions.gb18030 === \"function\") {\n    this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges.\n\n    // Add GB18030 common decode nodes.\n    var commonThirdByteNodeIdx = this.decodeTables.length\n    this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n    var commonFourthByteNodeIdx = this.decodeTables.length\n    this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n    // Fill out the tree\n    var firstByteNode = this.decodeTables[0]\n    for (var i = 0x81; i <= 0xFE; i++) {\n      var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]\n      for (var j = 0x30; j <= 0x39; j++) {\n        if (secondByteNode[j] === UNASSIGNED) {\n          secondByteNode[j] = NODE_START - commonThirdByteNodeIdx\n        } else if (secondByteNode[j] > NODE_START) {\n          throw new Error(\"gb18030 decode tables conflict at byte 2\")\n        }\n\n        var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]\n        for (var k = 0x81; k <= 0xFE; k++) {\n          if (thirdByteNode[k] === UNASSIGNED) {\n            thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx\n          } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n            continue\n          } else if (thirdByteNode[k] > NODE_START) {\n            throw new Error(\"gb18030 decode tables conflict at byte 3\")\n          }\n\n          var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]\n          for (var l = 0x30; l <= 0x39; l++) {\n            if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE }\n          }\n        }\n      }\n    }\n  }\n\n  this.defaultCharUnicode = iconv.defaultCharUnicode\n\n  // Encode tables: Unicode -> DBCS.\n\n  // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n  // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n  // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n  //         == UNASSIGNED -> no conversion found. Output a default char.\n  //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n  this.encodeTable = []\n\n  // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n  // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n  // means end of sequence (needed when one sequence is a strict subsequence of another).\n  // Objects are kept separately from encodeTable to increase performance.\n  this.encodeTableSeq = []\n\n  // Some chars can be decoded, but need not be encoded.\n  var skipEncodeChars = {}\n  if (codecOptions.encodeSkipVals) {\n    for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n      var val = codecOptions.encodeSkipVals[i]\n      if (typeof val === \"number\") { skipEncodeChars[val] = true } else {\n        for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true }\n      }\n    }\n  }\n\n  // Use decode trie to recursively fill out encode tables.\n  this._fillEncodeTable(0, 0, skipEncodeChars)\n\n  // Add more encoding pairs when needed.\n  if (codecOptions.encodeAdd) {\n    for (var uChar in codecOptions.encodeAdd) {\n      if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) }\n    }\n  }\n\n  this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]\n  if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0][\"?\"]\n  if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0)\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder\nDBCSCodec.prototype.decoder = DBCSDecoder\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function (addr) {\n  var bytes = []\n  for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) }\n  if (bytes.length == 0) { bytes.push(0) }\n\n  var node = this.decodeTables[0]\n  for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie.\n    var val = node[bytes[i]]\n\n    if (val == UNASSIGNED) { // Create new node.\n      node[bytes[i]] = NODE_START - this.decodeTables.length\n      this.decodeTables.push(node = UNASSIGNED_NODE.slice(0))\n    } else if (val <= NODE_START) { // Existing node.\n      node = this.decodeTables[NODE_START - val]\n    } else { throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16)) }\n  }\n  return node\n}\n\nDBCSCodec.prototype._addDecodeChunk = function (chunk) {\n  // First element of chunk is the hex mbcs code where we start.\n  var curAddr = parseInt(chunk[0], 16)\n\n  // Choose the decoding node where we'll write our chars.\n  var writeTable = this._getDecodeTrieNode(curAddr)\n  curAddr = curAddr & 0xFF\n\n  // Write all other elements of the chunk to the table.\n  for (var k = 1; k < chunk.length; k++) {\n    var part = chunk[k]\n    if (typeof part === \"string\") { // String, write as-is.\n      for (var l = 0; l < part.length;) {\n        var code = part.charCodeAt(l++)\n        if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate\n          var codeTrail = part.charCodeAt(l++)\n          if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n        } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used)\n          var len = 0xFFF - code + 2\n          var seq = []\n          for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq.\n\n          writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length\n          this.decodeTableSeq.push(seq)\n        } else { writeTable[curAddr++] = code } // Basic char\n      }\n    } else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n      var charCode = writeTable[curAddr - 1] + 1\n      for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ }\n    } else { throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n  }\n  if (curAddr > 0xFF) { throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr) }\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function (uCode) {\n  var high = uCode >> 8 // This could be > 0xFF because of astral characters.\n  if (this.encodeTable[high] === undefined) {\n    this.encodeTable[high] = UNASSIGNED_NODE.slice(0)\n  } // Create bucket on demand.\n  return this.encodeTable[high]\n}\n\nDBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) {\n  var bucket = this._getEncodeBucket(uCode)\n  var low = uCode & 0xFF\n  if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it.\n  else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode }\n}\n\nDBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) {\n  // Get the root of character tree according to first character of the sequence.\n  var uCode = seq[0]\n  var bucket = this._getEncodeBucket(uCode)\n  var low = uCode & 0xFF\n\n  var node\n  if (bucket[low] <= SEQ_START) {\n    // There's already a sequence with  - use it.\n    node = this.encodeTableSeq[SEQ_START - bucket[low]]\n  } else {\n    // There was no sequence object - allocate a new one.\n    node = {}\n    if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence.\n    bucket[low] = SEQ_START - this.encodeTableSeq.length\n    this.encodeTableSeq.push(node)\n  }\n\n  // Traverse the character tree, allocating new nodes as needed.\n  for (var j = 1; j < seq.length - 1; j++) {\n    var oldVal = node[uCode]\n    if (typeof oldVal === \"object\") { node = oldVal } else {\n      node = node[uCode] = {}\n      if (oldVal !== undefined) { node[DEF_CHAR] = oldVal }\n    }\n  }\n\n  // Set the leaf to given dbcsCode.\n  uCode = seq[seq.length - 1]\n  node[uCode] = dbcsCode\n}\n\nDBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) {\n  var node = this.decodeTables[nodeIdx]\n  var hasValues = false\n  var subNodeEmpty = {}\n  for (var i = 0; i < 0x100; i++) {\n    var uCode = node[i]\n    var mbCode = prefix + i\n    if (skipEncodeChars[mbCode]) { continue }\n\n    if (uCode >= 0) {\n      this._setEncodeChar(uCode, mbCode)\n      hasValues = true\n    } else if (uCode <= NODE_START) {\n      var subNodeIdx = NODE_START - uCode\n      if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n        var newPrefix = (mbCode << 8) >>> 0  // NOTE: '>>> 0' keeps 32-bit num positive.\n        if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true }\n      }\n    } else if (uCode <= SEQ_START) {\n      this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode)\n      hasValues = true\n    }\n  }\n  return hasValues\n}\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder (options, codec) {\n  // Encoder state\n  this.leadSurrogate = -1\n  this.seqObj = undefined\n\n  // Static data\n  this.encodeTable = codec.encodeTable\n  this.encodeTableSeq = codec.encodeTableSeq\n  this.defaultCharSingleByte = codec.defCharSB\n  this.gb18030 = codec.gb18030\n}\n\nDBCSEncoder.prototype.write = function (str) {\n  var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3))\n  var leadSurrogate = this.leadSurrogate\n  var seqObj = this.seqObj\n  var nextChar = -1\n  var i = 0; var j = 0\n\n  while (true) {\n    // 0. Get next character.\n    if (nextChar === -1) {\n      if (i == str.length) break\n      var uCode = str.charCodeAt(i++)\n    } else {\n      var uCode = nextChar\n      nextChar = -1\n    }\n\n    // 1. Handle surrogates.\n    if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates.\n      if (uCode < 0xDC00) { // We've got lead surrogate.\n        if (leadSurrogate === -1) {\n          leadSurrogate = uCode\n          continue\n        } else {\n          leadSurrogate = uCode\n          // Double lead surrogate found.\n          uCode = UNASSIGNED\n        }\n      } else { // We've got trail surrogate.\n        if (leadSurrogate !== -1) {\n          uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00)\n          leadSurrogate = -1\n        } else {\n          // Incomplete surrogate pair - only trail surrogate found.\n          uCode = UNASSIGNED\n        }\n      }\n    } else if (leadSurrogate !== -1) {\n      // Incomplete surrogate pair - only lead surrogate found.\n      nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char.\n      leadSurrogate = -1\n    }\n\n    // 2. Convert uCode character.\n    var dbcsCode = UNASSIGNED\n    if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n      var resCode = seqObj[uCode]\n      if (typeof resCode === \"object\") { // Sequence continues.\n        seqObj = resCode\n        continue\n      } else if (typeof resCode === \"number\") { // Sequence finished. Write it.\n        dbcsCode = resCode\n      } else if (resCode == undefined) { // Current character is not part of the sequence.\n        // Try default character for this sequence\n        resCode = seqObj[DEF_CHAR]\n        if (resCode !== undefined) {\n          dbcsCode = resCode // Found. Write it.\n          nextChar = uCode // Current character will be written too in the next iteration.\n        } else {\n          // TODO: What if we have no default? (resCode == undefined)\n          // Then, we should write first char of the sequence as-is and try the rest recursively.\n          // Didn't do it for now because no encoding has this situation yet.\n          // Currently, just skip the sequence and write current char.\n        }\n      }\n      seqObj = undefined\n    } else if (uCode >= 0) {  // Regular character\n      var subtable = this.encodeTable[uCode >> 8]\n      if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] }\n\n      if (dbcsCode <= SEQ_START) { // Sequence start\n        seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]\n        continue\n      }\n\n      if (dbcsCode == UNASSIGNED && this.gb18030) {\n        // Use GB18030 algorithm to find character(s) to write.\n        var idx = findIdx(this.gb18030.uChars, uCode)\n        if (idx != -1) {\n          var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx])\n          newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600\n          newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260\n          newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10\n          newBuf[j++] = 0x30 + dbcsCode\n          continue\n        }\n      }\n    }\n\n    // 3. Write dbcsCode character.\n    if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte }\n\n    if (dbcsCode < 0x100) {\n      newBuf[j++] = dbcsCode\n    } else if (dbcsCode < 0x10000) {\n      newBuf[j++] = dbcsCode >> 8   // high byte\n      newBuf[j++] = dbcsCode & 0xFF // low byte\n    } else if (dbcsCode < 0x1000000) {\n      newBuf[j++] = dbcsCode >> 16\n      newBuf[j++] = (dbcsCode >> 8) & 0xFF\n      newBuf[j++] = dbcsCode & 0xFF\n    } else {\n      newBuf[j++] = dbcsCode >>> 24\n      newBuf[j++] = (dbcsCode >>> 16) & 0xFF\n      newBuf[j++] = (dbcsCode >>> 8) & 0xFF\n      newBuf[j++] = dbcsCode & 0xFF\n    }\n  }\n\n  this.seqObj = seqObj\n  this.leadSurrogate = leadSurrogate\n  return newBuf.slice(0, j)\n}\n\nDBCSEncoder.prototype.end = function () {\n  if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case.\n\n  var newBuf = Buffer.alloc(10); var j = 0\n\n  if (this.seqObj) { // We're in the sequence.\n    var dbcsCode = this.seqObj[DEF_CHAR]\n    if (dbcsCode !== undefined) { // Write beginning of the sequence.\n      if (dbcsCode < 0x100) {\n        newBuf[j++] = dbcsCode\n      } else {\n        newBuf[j++] = dbcsCode >> 8   // high byte\n        newBuf[j++] = dbcsCode & 0xFF // low byte\n      }\n    } else {\n      // See todo above.\n    }\n    this.seqObj = undefined\n  }\n\n  if (this.leadSurrogate !== -1) {\n    // Incomplete surrogate pair - only lead surrogate found.\n    newBuf[j++] = this.defaultCharSingleByte\n    this.leadSurrogate = -1\n  }\n\n  return newBuf.slice(0, j)\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder (options, codec) {\n  // Decoder state\n  this.nodeIdx = 0\n  this.prevBytes = []\n\n  // Static data\n  this.decodeTables = codec.decodeTables\n  this.decodeTableSeq = codec.decodeTableSeq\n  this.defaultCharUnicode = codec.defaultCharUnicode\n  this.gb18030 = codec.gb18030\n}\n\nDBCSDecoder.prototype.write = function (buf) {\n  var newBuf = Buffer.alloc(buf.length * 2)\n  var nodeIdx = this.nodeIdx\n  var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length\n  var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence.\n  var uCode\n\n  for (var i = 0, j = 0; i < buf.length; i++) {\n    var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]\n\n    // Lookup in current trie node.\n    var uCode = this.decodeTables[nodeIdx][curByte]\n\n    if (uCode >= 0) {\n      // Normal character, just use it.\n    } else if (uCode === UNASSIGNED) { // Unknown char.\n      // TODO: Callback with seq.\n      uCode = this.defaultCharUnicode.charCodeAt(0)\n      i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n    } else if (uCode === GB18030_CODE) {\n      if (i >= 3) {\n        var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30)\n      } else {\n        var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 +\n                          (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 +\n                          (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 +\n                          (curByte - 0x30)\n      }\n      var idx = findIdx(this.gb18030.gbChars, ptr)\n      uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]\n    } else if (uCode <= NODE_START) { // Go to next trie node.\n      nodeIdx = NODE_START - uCode\n      continue\n    } else if (uCode <= SEQ_START) { // Output a sequence of chars.\n      var seq = this.decodeTableSeq[SEQ_START - uCode]\n      for (var k = 0; k < seq.length - 1; k++) {\n        uCode = seq[k]\n        newBuf[j++] = uCode & 0xFF\n        newBuf[j++] = uCode >> 8\n      }\n      uCode = seq[seq.length - 1]\n    } else { throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte) }\n\n    // Write the character to buffer, handling higher planes using surrogate pair.\n    if (uCode >= 0x10000) {\n      uCode -= 0x10000\n      var uCodeLead = 0xD800 | (uCode >> 10)\n      newBuf[j++] = uCodeLead & 0xFF\n      newBuf[j++] = uCodeLead >> 8\n\n      uCode = 0xDC00 | (uCode & 0x3FF)\n    }\n    newBuf[j++] = uCode & 0xFF\n    newBuf[j++] = uCode >> 8\n\n    // Reset trie node.\n    nodeIdx = 0; seqStart = i + 1\n  }\n\n  this.nodeIdx = nodeIdx\n  this.prevBytes = (seqStart >= 0)\n    ? Array.prototype.slice.call(buf, seqStart)\n    : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf))\n\n  return newBuf.slice(0, j).toString(\"ucs2\")\n}\n\nDBCSDecoder.prototype.end = function () {\n  var ret = \"\"\n\n  // Try to parse all remaining chars.\n  while (this.prevBytes.length > 0) {\n    // Skip 1 character in the buffer.\n    ret += this.defaultCharUnicode\n    var bytesArr = this.prevBytes.slice(1)\n\n    // Parse remaining as usual.\n    this.prevBytes = []\n    this.nodeIdx = 0\n    if (bytesArr.length > 0) { ret += this.write(bytesArr) }\n  }\n\n  this.prevBytes = []\n  this.nodeIdx = 0\n  return ret\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx (table, val) {\n  if (table[0] > val) { return -1 }\n\n  var l = 0; var r = table.length\n  while (l < r - 1) { // always table[l] <= val < table[r]\n    var mid = l + ((r - l + 1) >> 1)\n    if (table[mid] <= val) { l = mid } else { r = mid }\n  }\n  return l\n}\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\u1E3F\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93],\n[\"8135f437\",\"\uE7C7\"]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\"\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n\n  // == Japanese/ShiftJIS ====================================================\n  // All japanese encodings are based on JIS X set of standards:\n  // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n  // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.\n  //              Has several variations in 1978, 1983, 1990 and 1997.\n  // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n  // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n  //              2 planes, first is superset of 0208, second - revised 0212.\n  //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n  // Byte encodings are:\n  //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n  //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n  //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n  //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n  //               0x00-0x7F       - lower part of 0201\n  //               0x8E, 0xA1-0xDF - upper part of 0201\n  //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n  //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n  //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n  //               Used as-is in ISO2022 family.\n  //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,\n  //                0201-1976 Roman, 0208-1978, 0208-1983.\n  //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n  //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n  //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n  //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n  //\n  // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n  //\n  // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n  shiftjis: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/shiftjis.json\") },\n    encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E },\n    encodeSkipVals: [{ from: 0xED40, to: 0xF940 }]\n  },\n  csshiftjis: \"shiftjis\",\n  mskanji: \"shiftjis\",\n  sjis: \"shiftjis\",\n  windows31j: \"shiftjis\",\n  ms31j: \"shiftjis\",\n  xsjis: \"shiftjis\",\n  windows932: \"shiftjis\",\n  ms932: \"shiftjis\",\n  932: \"shiftjis\",\n  cp932: \"shiftjis\",\n\n  eucjp: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/eucjp.json\") },\n    encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E }\n  },\n\n  // TODO: KDDI extension to Shift_JIS\n  // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n  // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n  // == Chinese/GBK ==========================================================\n  // http://en.wikipedia.org/wiki/GBK\n  // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n  // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n  gb2312: \"cp936\",\n  gb231280: \"cp936\",\n  gb23121980: \"cp936\",\n  csgb2312: \"cp936\",\n  csiso58gb231280: \"cp936\",\n  euccn: \"cp936\",\n\n  // Microsoft's CP936 is a subset and approximation of GBK.\n  windows936: \"cp936\",\n  ms936: \"cp936\",\n  936: \"cp936\",\n  cp936: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\") }\n  },\n\n  // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n  gbk: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) }\n  },\n  xgbk: \"gbk\",\n  isoir58: \"gbk\",\n\n  // GB18030 is an algorithmic extension of GBK.\n  // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n  // http://icu-project.org/docs/papers/gb18030.html\n  // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n  // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n  gb18030: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) },\n    gb18030: function () { return require(\"./tables/gb18030-ranges.json\") },\n    encodeSkipVals: [0x80],\n    encodeAdd: { \"\u20AC\": 0xA2E3 }\n  },\n\n  chinese: \"gb18030\",\n\n  // == Korean ===============================================================\n  // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n  windows949: \"cp949\",\n  ms949: \"cp949\",\n  949: \"cp949\",\n  cp949: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp949.json\") }\n  },\n\n  cseuckr: \"cp949\",\n  csksc56011987: \"cp949\",\n  euckr: \"cp949\",\n  isoir149: \"cp949\",\n  korean: \"cp949\",\n  ksc56011987: \"cp949\",\n  ksc56011989: \"cp949\",\n  ksc5601: \"cp949\",\n\n  // == Big5/Taiwan/Hong Kong ================================================\n  // There are lots of tables for Big5 and cp950. Please see the following links for history:\n  // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n  // Variations, in roughly number of defined chars:\n  //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n  //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n  //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n  //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n  //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.\n  //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n  //    Plus, it has 4 combining sequences.\n  //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n  //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n  //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n  //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n  //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n  //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n  //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n  //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n  //\n  // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n  // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n  windows950: \"cp950\",\n  ms950: \"cp950\",\n  950: \"cp950\",\n  cp950: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp950.json\") }\n  },\n\n  // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n  big5: \"big5hkscs\",\n  big5hkscs: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp950.json\").concat(require(\"./tables/big5-added.json\")) },\n    encodeSkipVals: [\n      // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n      // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n      // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n      0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n      0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n      0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n      0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n      0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n      // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n      0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce\n    ]\n  },\n\n  cnbig5: \"big5hkscs\",\n  csbig5: \"big5hkscs\",\n  xxbig5: \"big5hkscs\"\n}\n", "\"use strict\"\n\nvar mergeModules = require(\"../lib/helpers/merge-exports\")\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n  require(\"./internal\"),\n  require(\"./utf32\"),\n  require(\"./utf16\"),\n  require(\"./utf7\"),\n  require(\"./sbcs-codec\"),\n  require(\"./sbcs-data\"),\n  require(\"./sbcs-data-generated\"),\n  require(\"./dbcs-codec\"),\n  require(\"./dbcs-data\")\n]\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n  var module = modules[i]\n  mergeModules(exports, module)\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),\n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function (streamModule) {\n  var Transform = streamModule.Transform\n\n  // == Encoder stream =======================================================\n\n  function IconvLiteEncoderStream (conv, options) {\n    this.conv = conv\n    options = options || {}\n    options.decodeStrings = false // We accept only strings, so we don't need to decode them.\n    Transform.call(this, options)\n  }\n\n  IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteEncoderStream }\n  })\n\n  IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) {\n    if (typeof chunk !== \"string\") {\n      return done(new Error(\"Iconv encoding stream needs strings as its input.\"))\n    }\n\n    try {\n      var res = this.conv.write(chunk)\n      if (res && res.length) this.push(res)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteEncoderStream.prototype._flush = function (done) {\n    try {\n      var res = this.conv.end()\n      if (res && res.length) this.push(res)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteEncoderStream.prototype.collect = function (cb) {\n    var chunks = []\n    this.on(\"error\", cb)\n    this.on(\"data\", function (chunk) { chunks.push(chunk) })\n    this.on(\"end\", function () {\n      cb(null, Buffer.concat(chunks))\n    })\n    return this\n  }\n\n  // == Decoder stream =======================================================\n\n  function IconvLiteDecoderStream (conv, options) {\n    this.conv = conv\n    options = options || {}\n    options.encoding = this.encoding = \"utf8\" // We output strings.\n    Transform.call(this, options)\n  }\n\n  IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteDecoderStream }\n  })\n\n  IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) {\n    if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error(\"Iconv decoding stream needs buffers as its input.\")) }\n    try {\n      var res = this.conv.write(chunk)\n      if (res && res.length) this.push(res, this.encoding)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteDecoderStream.prototype._flush = function (done) {\n    try {\n      var res = this.conv.end()\n      if (res && res.length) this.push(res, this.encoding)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteDecoderStream.prototype.collect = function (cb) {\n    var res = \"\"\n    this.on(\"error\", cb)\n    this.on(\"data\", function (chunk) { res += chunk })\n    this.on(\"end\", function () {\n      cb(null, res)\n    })\n    return this\n  }\n\n  return {\n    IconvLiteEncoderStream: IconvLiteEncoderStream,\n    IconvLiteDecoderStream: IconvLiteDecoderStream\n  }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\nvar bomHandling = require(\"./bom-handling\")\nvar mergeModules = require(\"./helpers/merge-exports\")\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\n// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true\nmodule.exports.encodings = null\n\n// Characters emitted in case of error.\nmodule.exports.defaultCharUnicode = \"\uFFFD\"\nmodule.exports.defaultCharSingleByte = \"?\"\n\n// Public API.\nmodule.exports.encode = function encode (str, encoding, options) {\n  str = \"\" + (str || \"\") // Ensure string.\n\n  var encoder = module.exports.getEncoder(encoding, options)\n\n  var res = encoder.write(str)\n  var trail = encoder.end()\n\n  return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res\n}\n\nmodule.exports.decode = function decode (buf, encoding, options) {\n  if (typeof buf === \"string\") {\n    if (!module.exports.skipDecodeWarning) {\n      console.error(\"Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding\")\n      module.exports.skipDecodeWarning = true\n    }\n\n    buf = Buffer.from(\"\" + (buf || \"\"), \"binary\") // Ensure buffer.\n  }\n\n  var decoder = module.exports.getDecoder(encoding, options)\n\n  var res = decoder.write(buf)\n  var trail = decoder.end()\n\n  return trail ? (res + trail) : res\n}\n\nmodule.exports.encodingExists = function encodingExists (enc) {\n  try {\n    module.exports.getCodec(enc)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n\n// Legacy aliases to convert functions\nmodule.exports.toEncoding = module.exports.encode\nmodule.exports.fromEncoding = module.exports.decode\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\nmodule.exports._codecDataCache = { __proto__: null }\n\nmodule.exports.getCodec = function getCodec (encoding) {\n  if (!module.exports.encodings) {\n    var raw = require(\"../encodings\")\n    // TODO: In future versions when old nodejs support is removed can use object.assign\n    module.exports.encodings = { __proto__: null } // Initialize as empty object.\n    mergeModules(module.exports.encodings, raw)\n  }\n\n  // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n  var enc = module.exports._canonicalizeEncoding(encoding)\n\n  // Traverse iconv.encodings to find actual codec.\n  var codecOptions = {}\n  while (true) {\n    var codec = module.exports._codecDataCache[enc]\n\n    if (codec) { return codec }\n\n    var codecDef = module.exports.encodings[enc]\n\n    switch (typeof codecDef) {\n      case \"string\": // Direct alias to other encoding.\n        enc = codecDef\n        break\n\n      case \"object\": // Alias with options. Can be layered.\n        for (var key in codecDef) { codecOptions[key] = codecDef[key] }\n\n        if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n        enc = codecDef.type\n        break\n\n      case \"function\": // Codec itself.\n        if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n        // The codec function must load all tables and return object with .encoder and .decoder methods.\n        // It'll be called only once (for each different options object).\n        //\n        codec = new codecDef(codecOptions, module.exports)\n\n        module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later.\n        return codec\n\n      default:\n        throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\" + enc + \"')\")\n    }\n  }\n}\n\nmodule.exports._canonicalizeEncoding = function (encoding) {\n  // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n  return (\"\" + encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\")\n}\n\nmodule.exports.getEncoder = function getEncoder (encoding, options) {\n  var codec = module.exports.getCodec(encoding)\n  var encoder = new codec.encoder(options, codec)\n\n  if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) }\n\n  return encoder\n}\n\nmodule.exports.getDecoder = function getDecoder (encoding, options) {\n  var codec = module.exports.getCodec(encoding)\n  var decoder = new codec.decoder(options, codec)\n\n  if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) }\n\n  return decoder\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\nmodule.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) {\n  if (module.exports.supportsStreams) { return }\n\n  // Dependency-inject stream module to create IconvLite stream classes.\n  var streams = require(\"./streams\")(streamModule)\n\n  // Not public API yet, but expose the stream classes.\n  module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream\n  module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream\n\n  // Streaming API.\n  module.exports.encodeStream = function encodeStream (encoding, options) {\n    return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options)\n  }\n\n  module.exports.decodeStream = function decodeStream (encoding, options) {\n    return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options)\n  }\n\n  module.exports.supportsStreams = true\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar streamModule\ntry {\n  streamModule = require(\"stream\")\n} catch (e) {}\n\nif (streamModule && streamModule.Transform) {\n  module.exports.enableStreamingAPI(streamModule)\n} else {\n  // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n  module.exports.encodeStream = module.exports.decodeStream = function () {\n    throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\")\n  }\n}\n\n// Some environments, such as browsers, may not load JavaScript files as UTF-8\n// eslint-disable-next-line no-constant-condition\nif (\"\u0100\" !== \"\\u0100\") {\n  console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\")\n}\n", "/*!\n * unpipe\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = unpipe\n\n/**\n * Determine if there are Node.js pipe-like data listeners.\n * @private\n */\n\nfunction hasPipeDataListeners(stream) {\n  var listeners = stream.listeners('data')\n\n  for (var i = 0; i < listeners.length; i++) {\n    if (listeners[i].name === 'ondata') {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Unpipe a stream from all destinations.\n *\n * @param {object} stream\n * @public\n */\n\nfunction unpipe(stream) {\n  if (!stream) {\n    throw new TypeError('argument stream is required')\n  }\n\n  if (typeof stream.unpipe === 'function') {\n    // new-style\n    stream.unpipe()\n    return\n  }\n\n  // Node.js 0.8 hack\n  if (!hasPipeDataListeners(stream)) {\n    return\n  }\n\n  var listener\n  var listeners = stream.listeners('close')\n\n  for (var i = 0; i < listeners.length; i++) {\n    listener = listeners[i]\n\n    if (listener.name !== 'cleanup' && listener.name !== 'onclose') {\n      continue\n    }\n\n    // invoke the listener\n    listener.call(stream)\n  }\n}\n", "/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar bytes = require('bytes')\nvar createError = require('http-errors')\nvar iconv = require('iconv-lite')\nvar unpipe = require('unpipe')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n  if (!encoding) return null\n\n  try {\n    return iconv.getDecoder(encoding)\n  } catch (e) {\n    // error getting decoder\n    if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n    // the encoding was not found\n    throw createError(415, 'specified encoding unsupported', {\n      encoding: encoding,\n      type: 'encoding.unsupported'\n    })\n  }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n  var done = callback\n  var opts = options || {}\n\n  // light validation\n  if (stream === undefined) {\n    throw new TypeError('argument stream is required')\n  } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') {\n    throw new TypeError('argument stream must be a stream')\n  }\n\n  if (options === true || typeof options === 'string') {\n    // short cut for encoding\n    opts = {\n      encoding: options\n    }\n  }\n\n  if (typeof options === 'function') {\n    done = options\n    opts = {}\n  }\n\n  // validate callback is a function, if provided\n  if (done !== undefined && typeof done !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!done && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  // get encoding\n  var encoding = opts.encoding !== true\n    ? opts.encoding\n    : 'utf-8'\n\n  // convert the limit to an integer\n  var limit = bytes.parse(opts.limit)\n\n  // convert the expected length to an integer\n  var length = opts.length != null && !isNaN(opts.length)\n    ? parseInt(opts.length, 10)\n    : null\n\n  if (done) {\n    // classic callback style\n    return readStream(stream, encoding, length, limit, wrap(done))\n  }\n\n  return new Promise(function executor (resolve, reject) {\n    readStream(stream, encoding, length, limit, function onRead (err, buf) {\n      if (err) return reject(err)\n      resolve(buf)\n    })\n  })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n  // unpipe everything from the stream\n  unpipe(stream)\n\n  // pause stream\n  if (typeof stream.pause === 'function') {\n    stream.pause()\n  }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n  var complete = false\n  var sync = true\n\n  // check the length and limit options.\n  // note: we intentionally leave the stream paused,\n  // so users should handle the stream themselves.\n  if (limit !== null && length !== null && length > limit) {\n    return done(createError(413, 'request entity too large', {\n      expected: length,\n      length: length,\n      limit: limit,\n      type: 'entity.too.large'\n    }))\n  }\n\n  // streams1: assert request encoding is buffer.\n  // streams2+: assert the stream encoding is buffer.\n  //   stream._decoder: streams1\n  //   state.encoding: streams2\n  //   state.decoder: streams2, specifically < 0.10.6\n  var state = stream._readableState\n  if (stream._decoder || (state && (state.encoding || state.decoder))) {\n    // developer error\n    return done(createError(500, 'stream encoding should not be set', {\n      type: 'stream.encoding.set'\n    }))\n  }\n\n  if (typeof stream.readable !== 'undefined' && !stream.readable) {\n    return done(createError(500, 'stream is not readable', {\n      type: 'stream.not.readable'\n    }))\n  }\n\n  var received = 0\n  var decoder\n\n  try {\n    decoder = getDecoder(encoding)\n  } catch (err) {\n    return done(err)\n  }\n\n  var buffer = decoder\n    ? ''\n    : []\n\n  // attach listeners\n  stream.on('aborted', onAborted)\n  stream.on('close', cleanup)\n  stream.on('data', onData)\n  stream.on('end', onEnd)\n  stream.on('error', onEnd)\n\n  // mark sync section complete\n  sync = false\n\n  function done () {\n    var args = new Array(arguments.length)\n\n    // copy arguments\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    // mark complete\n    complete = true\n\n    if (sync) {\n      process.nextTick(invokeCallback)\n    } else {\n      invokeCallback()\n    }\n\n    function invokeCallback () {\n      cleanup()\n\n      if (args[0]) {\n        // halt the stream on error\n        halt(stream)\n      }\n\n      callback.apply(null, args)\n    }\n  }\n\n  function onAborted () {\n    if (complete) return\n\n    done(createError(400, 'request aborted', {\n      code: 'ECONNABORTED',\n      expected: length,\n      length: length,\n      received: received,\n      type: 'request.aborted'\n    }))\n  }\n\n  function onData (chunk) {\n    if (complete) return\n\n    received += chunk.length\n\n    if (limit !== null && received > limit) {\n      done(createError(413, 'request entity too large', {\n        limit: limit,\n        received: received,\n        type: 'entity.too.large'\n      }))\n    } else if (decoder) {\n      buffer += decoder.write(chunk)\n    } else {\n      buffer.push(chunk)\n    }\n  }\n\n  function onEnd (err) {\n    if (complete) return\n    if (err) return done(err)\n\n    if (length !== null && received !== length) {\n      done(createError(400, 'request size did not match content length', {\n        expected: length,\n        length: length,\n        received: received,\n        type: 'request.size.invalid'\n      }))\n    } else {\n      var string = decoder\n        ? buffer + (decoder.end() || '')\n        : Buffer.concat(buffer)\n      done(null, string)\n    }\n  }\n\n  function cleanup () {\n    buffer = null\n\n    stream.removeListener('aborted', onAborted)\n    stream.removeListener('data', onData)\n    stream.removeListener('end', onEnd)\n    stream.removeListener('error', onEnd)\n    stream.removeListener('close', cleanup)\n  }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n  try {\n    return require('async_hooks')\n  } catch (e) {\n    return {}\n  }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n  var res\n\n  // create anonymous resource\n  if (asyncHooks.AsyncResource) {\n    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n  }\n\n  // incompatible node.js\n  if (!res || !res.runInAsyncScope) {\n    return fn\n  }\n\n  // return bound function\n  return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n  if (!Array.isArray(stuff))\n    throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n  var cleanups = []\n\n  for (var i = 0; i < stuff.length; i++) {\n    var arr = stuff[i]\n\n    if (!Array.isArray(arr) || arr.length < 2)\n      throw new TypeError('each array member must be [ee, events...]')\n\n    var ee = arr[0]\n\n    for (var j = 1; j < arr.length; j++) {\n      var event = arr[j]\n      var fn = listener(event, callback)\n\n      // listen to the event\n      ee.on(event, fn)\n      // push this listener to the list of cleanups\n      cleanups.push({\n        ee: ee,\n        event: event,\n        fn: fn,\n      })\n    }\n  }\n\n  function callback() {\n    cleanup()\n    done.apply(null, arguments)\n  }\n\n  function cleanup() {\n    var x\n    for (var i = 0; i < cleanups.length; i++) {\n      x = cleanups[i]\n      x.ee.removeListener(x.event, x.fn)\n    }\n  }\n\n  function thunk(fn) {\n    done = fn\n  }\n\n  thunk.cancel = cleanup\n\n  return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n  return function onevent(arg1) {\n    var args = new Array(arguments.length)\n    var ee = this\n    var err = event === 'error'\n      ? arg1\n      : null\n\n    // copy args to prevent arguments escaping scope\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    done(err, ee, event, args)\n  }\n}\n", "/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar first = require('ee-first')\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n  ? setImmediate\n  : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished (msg, listener) {\n  if (isFinished(msg) !== false) {\n    defer(listener, null, msg)\n    return msg\n  }\n\n  // attach the listener to the message\n  attachListener(msg, wrap(listener))\n\n  return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished (msg) {\n  var socket = msg.socket\n\n  if (typeof msg.finished === 'boolean') {\n    // OutgoingMessage\n    return Boolean(msg.finished || (socket && !socket.writable))\n  }\n\n  if (typeof msg.complete === 'boolean') {\n    // IncomingMessage\n    return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n  }\n\n  // don't know\n  return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener (msg, callback) {\n  var eeMsg\n  var eeSocket\n  var finished = false\n\n  function onFinish (error) {\n    eeMsg.cancel()\n    eeSocket.cancel()\n\n    finished = true\n    callback(error)\n  }\n\n  // finished on first message event\n  eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n  function onSocket (socket) {\n    // remove listener\n    msg.removeListener('socket', onSocket)\n\n    if (finished) return\n    if (eeMsg !== eeSocket) return\n\n    // finished on first socket event\n    eeSocket = first([[socket, 'error', 'close']], onFinish)\n  }\n\n  if (msg.socket) {\n    // socket already assigned\n    onSocket(msg.socket)\n    return\n  }\n\n  // wait for socket to be assigned\n  msg.on('socket', onSocket)\n\n  if (msg.socket === undefined) {\n    // istanbul ignore next: node.js 0.8 patch\n    patchAssignSocket(msg, onSocket)\n  }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener (msg, listener) {\n  var attached = msg.__onFinished\n\n  // create a private single listener with queue\n  if (!attached || !attached.queue) {\n    attached = msg.__onFinished = createListener(msg)\n    attachFinishedListener(msg, attached)\n  }\n\n  attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener (msg) {\n  function listener (err) {\n    if (msg.__onFinished === listener) msg.__onFinished = null\n    if (!listener.queue) return\n\n    var queue = listener.queue\n    listener.queue = null\n\n    for (var i = 0; i < queue.length; i++) {\n      queue[i](err, msg)\n    }\n  }\n\n  listener.queue = []\n\n  return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\n// istanbul ignore next: node.js 0.8 patch\nfunction patchAssignSocket (res, callback) {\n  var assignSocket = res.assignSocket\n\n  if (typeof assignSocket !== 'function') return\n\n  // res.on('socket', callback) is broken in 0.8\n  res.assignSocket = function _assignSocket (socket) {\n    assignSocket.call(this, socket)\n    callback(socket)\n  }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n  try {\n    return require('async_hooks')\n  } catch (e) {\n    return {}\n  }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n  var res\n\n  // create anonymous resource\n  if (asyncHooks.AsyncResource) {\n    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n  }\n\n  // incompatible node.js\n  if (!res || !res.runInAsyncScope) {\n    return fn\n  }\n\n  // return bound function\n  return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.slice(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value.charCodeAt(0) === 0x22 /* \" */) {\n        // remove quotes\n        value = value.slice(1, -1)\n\n        // remove escapes\n        if (value.indexOf('\\\\') !== -1) {\n          value = value.replace(QESC_REGEXP, '$1')\n        }\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\n}\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ace-groupcomm+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace-trl+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aif+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/aif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdni+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdnifilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmapparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tips+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tipsparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/appinstaller\": {\n    \"compressible\": false,\n    \"extensions\": [\"appinstaller\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/appx\": {\n    \"compressible\": false,\n    \"extensions\": [\"appx\"]\n  },\n  \"application/appxbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"appxbundle\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/automationml-aml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"aml\"]\n  },\n  \"application/automationml-amlx+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"amlx\"]\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/bufr\": {\n    \"source\": \"iana\"\n  },\n  \"application/c2pa\": {\n    \"source\": \"iana\"\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/ce+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/cid-edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/city+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-eap\": {\n    \"source\": \"iana\"\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/concise-problem-details+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-x509\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cwl\"]\n  },\n  \"application/cwl+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cwl+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dcm\"]\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dpop+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/eat-ucs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-ucs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ecmascript\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ecma\"]\n  },\n  \"application/edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.legacyesn+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/entity-statement+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gnap-binding-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/grib\": {\n    \"source\": \"iana\"\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"apache\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscontact+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jsonpath\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/logout+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4\",\"mpg4\",\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msix\": {\n    \"compressible\": false,\n    \"extensions\": [\"msix\"]\n  },\n  \"application/msixbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"msixbundle\"]\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/ohttp-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\",\"one\",\"onea\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sig\",\"asc\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/private-token-issuer-directory\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/provided-claims+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.implied-document+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-object+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-structure\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.mayfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.vcfbzip2\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsf\"]\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"apache\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resolve-response+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-checklist\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-signed-tal\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"apache\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/sslkeylogfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/st2110-41\": {\n    \"source\": \"iana\"\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/stratum\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/toc+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/trust-chain+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/trust-mark+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/trust-mark-delegation+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/uccs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ujcs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.1ob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3a+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ach+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc8+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.crs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.current-location-discovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.pinapp-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.seal-group-doc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-network-qos-management-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-ue-config-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-unicast-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-user-profile-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.v2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.vae-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acm.addressxfer+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acm.chatbot+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.parquet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apexlang\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autodesk.fbx\": {\n    \"extensions\": [\"fbx\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.belightsoft.lhzd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.belightsoft.lhzl+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bzip3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.c3voc.schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.cncf.helm.chart.content.v1.tar+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.chart.provenance.v1.prov\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.config.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.dcmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dcmp\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eln+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.erofs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.fdsn.stationxml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"XML-BASED\",\n    \"compressible\": true\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.freelog.comic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.ga4gh.passport+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.genozip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.catmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.ebuild\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.eclass\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.gpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.manifest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.pkgmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.xpak\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.pinboard\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggs\"]\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.gnu.taler.exchange+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gnu.taler.merchant+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.google-apps.audio\": {},\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.drawing\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdraw\"]\n  },\n  \"application/vnd.google-apps.drive-sdk\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.file\": {},\n  \"application/vnd.google-apps.folder\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.form\": {\n    \"compressible\": false,\n    \"extensions\": [\"gform\"]\n  },\n  \"application/vnd.google-apps.fusiontable\": {},\n  \"application/vnd.google-apps.jam\": {\n    \"compressible\": false,\n    \"extensions\": [\"gjam\"]\n  },\n  \"application/vnd.google-apps.mail-layout\": {},\n  \"application/vnd.google-apps.map\": {\n    \"compressible\": false,\n    \"extensions\": [\"gmap\"]\n  },\n  \"application/vnd.google-apps.photo\": {},\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.script\": {\n    \"compressible\": false,\n    \"extensions\": [\"gscript\"]\n  },\n  \"application/vnd.google-apps.shortcut\": {},\n  \"application/vnd.google-apps.site\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsite\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-apps.unknown\": {},\n  \"application/vnd.google-apps.video\": {},\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdcf\"]\n  },\n  \"application/vnd.gpxsee.map+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.hsl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.ipfs.ipns-record\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.car\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.keyman.kmp+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.keyman.kmx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ldev.productlicensing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.mdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mdl-mbsdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.medicalholodeck.recordxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mermaid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.modl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-visio.viewer\": {\n    \"extensions\": [\"vdx\"]\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msgpack\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nato.bindingdataobject+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bdo\"]\n  },\n  \"application/vnd.nato.openxmlformats-package.iepd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oai.workflows+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onvif.metadata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openvpi.dspx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.procrate.brushset\": {\n    \"extensions\": [\"brushset\"]\n  },\n  \"application/vnd.procreate.brush\": {\n    \"extensions\": [\"brush\"]\n  },\n  \"application/vnd.procreate.dream\": {\n    \"extensions\": [\"drm\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pt.mundusmundi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtm\"]\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.relpipe\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sketchometry\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.smintio.portals.archive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sybyl.mol2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uic.osdm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\",\"uo\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veraison.tsm-report+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veraison.tsm-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\",\"vsdx\",\"vtx\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vocalshaper.vsp4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.wasmflow.wafl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordlift\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xarin.cpj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xecrets-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/voucher-jws+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blender\": {\n    \"extensions\": [\"blend\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-compressed\": {\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-ipynb+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"ipynb\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zip-compressed\": {\n    \"extensions\": [\"zip\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-sid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zip+dotlottie\": {\n    \"extensions\": [\"lottie\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"adts\",\"aac\"]\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/midi-clip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\",\"m4b\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"apache\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\",\"dib\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/dpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpx\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/j2c\": {\n    \"source\": \"iana\"\n  },\n  \"image/jaii\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jaii\"]\n  },\n  \"image/jais\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jais\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpg\",\"jpeg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxl\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false,\n    \"extensions\": [\"jfif\"]\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\",\"btf\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.clip\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-adobe-dng\": {\n    \"extensions\": [\"dng\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-emf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-wmf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/bhttp\": {\n    \"source\": \"iana\"\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/mls\": {\n    \"source\": \"iana\"\n  },\n  \"message/news\": {\n    \"source\": \"apache\"\n  },\n  \"message/ohttp-req\": {\n    \"source\": \"iana\"\n  },\n  \"message/ohttp-res\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\",\"mht\",\"mhtml\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"apache\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"apache\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/jt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jt\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/prc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"prc\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"step\",\"stp\",\"stpnc\",\"p21\",\"210\"]\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/u3d\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u3d\"]\n  },\n  \"model/vnd.bary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bary\"]\n  },\n  \"model/vnd.cld\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cld\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyo\",\"pyox\"]\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"usda\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"apache\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/hl7v2\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"md\",\"markdown\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.texi\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.exchangeable\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"apache\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.vcf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vnd.zoo.kcl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/wgsl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgsl\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/evc\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/h266\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/lottie+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"video/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"video/matroska-3d\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\",\"m2t\",\"m2ts\",\"mts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.planar\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"apache\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "// 'mime-score' back-ported to CommonJS\n\n// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)\nvar FACET_SCORES = {\n  'prs.': 100,\n  'x-': 200,\n  'x.': 300,\n  'vnd.': 400,\n  default: 900\n}\n\n// Score mime source (Logic originally from `jshttp/mime-types` module)\nvar SOURCE_SCORES = {\n  nginx: 10,\n  apache: 20,\n  iana: 40,\n  default: 30 // definitions added by `jshttp/mime-db` project?\n}\n\nvar TYPE_SCORES = {\n  // prefer application/xml over text/xml\n  // prefer application/rtf over text/rtf\n  application: 1,\n\n  // prefer font/woff over application/font-woff\n  font: 2,\n\n  // prefer video/mp4 over audio/mp4 over application/mp4\n  // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2\n  audio: 2,\n  video: 3,\n\n  default: 0\n}\n\n/**\n * Get each component of the score for a mime type.  The sum of these is the\n * total score.  The higher the score, the more \"official\" the type.\n */\nmodule.exports = function mimeScore (mimeType, source = 'default') {\n  if (mimeType === 'application/octet-stream') {\n    return 0\n  }\n\n  const [type, subtype] = mimeType.split('/')\n\n  const facet = subtype.replace(/(\\.|x-).*/, '$1')\n\n  const facetScore = FACET_SCORES[facet] || FACET_SCORES.default\n  const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default\n  const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default\n\n  // All else being equal prefer shorter types\n  const lengthScore = 1 - mimeType.length / 100\n\n  return facetScore + sourceScore + typeScore + lengthScore\n}\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\nvar mimeScore = require('./mimeScore')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\nexports._extensionConflicts = []\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {false|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {false|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .slice(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n      types[extension] = _preferredType(extension, types[extension], type)\n\n      // DELETE (eventually): Capture extension->type maps that change as a\n      // result of switching to mime-score.  This is just to help make reviewing\n      // PR #119 easier, and can be removed once that PR is approved.\n      const legacyType = _preferredTypeLegacy(\n        extension,\n        types[extension],\n        type\n      )\n      if (legacyType !== types[extension]) {\n        exports._extensionConflicts.push([extension, legacyType, types[extension]])\n      }\n    }\n  })\n}\n\n// Resolve type conflict using mime-score\nfunction _preferredType (ext, type0, type1) {\n  var score0 = type0 ? mimeScore(type0, db[type0].source) : 0\n  var score1 = type1 ? mimeScore(type1, db[type1].source) : 0\n\n  return score0 > score1 ? type0 : type1\n}\n\n// Resolve type conflict using pre-mime-score logic\nfunction _preferredTypeLegacy (ext, type0, type1) {\n  var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana']\n\n  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0\n  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0\n\n  if (\n    exports.types[extension] !== 'application/octet-stream' &&\n    (score0 > score1 ||\n      (score0 === score1 &&\n        exports.types[extension]?.slice(0, 12) === 'application/'))\n  ) {\n    return type0\n  }\n\n  return score0 > score1 ? type0 : type1\n}\n", "/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !TYPE_NAME_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!TYPE_NAME_REGEXP.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n  this.type = type\n  this.subtype = subtype\n  this.suffix = suffix\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar contentType = require('content-type')\nvar mime = require('mime-types')\nvar typer = require('media-typer')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {Object} req\n * @param {(String|Array)} types...\n * @return {(String|false|null)}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  // no body\n  if (!hasbody(req)) return null\n  // support flattened arguments\n  var types = arguments.length > 2\n    ? Array.prototype.slice.call(arguments, 1)\n    : types_\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @return {String|false|null}\n * @public\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @public\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].slice(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction normalizeType (value) {\n  // Parse the type\n  var type = contentType.parse(value).type\n\n  return typer.test(type) ? type : null\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction tryNormalizeType (value) {\n  try {\n    return value ? normalizeType(value) : null\n  } catch (err) {\n    return null\n  }\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\nmodule.exports = {\n  getCharset,\n  normalizeOptions,\n  passthrough\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {Object} req\n * @returns {string | undefined}\n * @private\n */\nfunction getCharset (req) {\n  try {\n    return (contentType.parse(req).parameters.charset || '').toLowerCase()\n  } catch {\n    return undefined\n  }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string | string[]} type\n * @returns {Function}\n * @private\n */\nfunction typeChecker (type) {\n  return function checkType (req) {\n    return Boolean(typeis(req, type))\n  }\n}\n\n/**\n * Normalizes the common options for all parsers.\n *\n * @param {Object} options options to normalize\n * @param {string | string[] | Function} defaultType default content type(s) or a function to determine it\n * @returns {Object}\n * @private\n */\nfunction normalizeOptions (options, defaultType) {\n  if (!defaultType) {\n    // Parsers must define a default content type\n    throw new TypeError('defaultType must be provided')\n  }\n\n  var inflate = options?.inflate !== false\n  var limit = typeof options?.limit !== 'number'\n    ? bytes.parse(options?.limit || '100kb')\n    : options?.limit\n  var type = options?.type || defaultType\n  var verify = options?.verify || false\n  var defaultCharset = options?.defaultCharset || 'utf-8'\n\n  if (verify !== false && typeof verify !== 'function') {\n    throw new TypeError('option verify must be function')\n  }\n\n  // create the appropriate type checking function\n  var shouldParse = typeof type !== 'function'\n    ? typeChecker(type)\n    : type\n\n  return {\n    inflate,\n    limit,\n    verify,\n    defaultCharset,\n    shouldParse\n  }\n}\n\n/**\n * Passthrough function that returns input unchanged.\n * Used by parsers that don't need to transform the data.\n *\n * @param {*} value\n * @returns {*}\n * @private\n */\nfunction passthrough (value) {\n  return value\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar getBody = require('raw-body')\nvar iconv = require('iconv-lite')\nvar onFinished = require('on-finished')\nvar zlib = require('node:zlib')\nvar hasBody = require('type-is').hasBody\nvar { getCharset } = require('./utils')\n\n/**\n * Module exports.\n */\n\nmodule.exports = read\n\n/**\n * Read a request into a buffer and parse.\n *\n * @param {Object} req\n * @param {Object} res\n * @param {Function} next\n * @param {Function} parse\n * @param {Function} debug\n * @param {Object} options\n * @private\n */\nfunction read (req, res, next, parse, debug, options) {\n  if (onFinished.isFinished(req)) {\n    debug('body already parsed')\n    next()\n    return\n  }\n\n  if (!('body' in req)) {\n    req.body = undefined\n  }\n\n  // skip requests without bodies\n  if (!hasBody(req)) {\n    debug('skip empty body')\n    next()\n    return\n  }\n\n  debug('content-type %j', req.headers['content-type'])\n\n  // determine if request should be parsed\n  if (!options.shouldParse(req)) {\n    debug('skip parsing')\n    next()\n    return\n  }\n\n  var encoding = null\n  if (options?.skipCharset !== true) {\n    encoding = getCharset(req) || options.defaultCharset\n\n    // validate charset\n    if (!!options?.isValidCharset && !options.isValidCharset(encoding)) {\n      debug('invalid charset')\n      next(createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n        charset: encoding,\n        type: 'charset.unsupported'\n      }))\n      return\n    }\n  }\n\n  var length\n  var opts = options\n  var stream\n\n  // read options\n  var verify = opts.verify\n\n  try {\n    // get the content stream\n    stream = contentstream(req, debug, opts.inflate)\n    length = stream.length\n    stream.length = undefined\n  } catch (err) {\n    return next(err)\n  }\n\n  // set raw-body options\n  opts.length = length\n  opts.encoding = verify\n    ? null\n    : encoding\n\n  // assert charset is supported\n  if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {\n    return next(createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n      charset: encoding.toLowerCase(),\n      type: 'charset.unsupported'\n    }))\n  }\n\n  // read body\n  debug('read body')\n  getBody(stream, opts, function (error, body) {\n    if (error) {\n      var _error\n\n      if (error.type === 'encoding.unsupported') {\n        // echo back charset\n        _error = createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n          charset: encoding.toLowerCase(),\n          type: 'charset.unsupported'\n        })\n      } else {\n        // set status code on error\n        _error = createError(400, error)\n      }\n\n      // unpipe from stream and destroy\n      if (stream !== req) {\n        req.unpipe()\n        stream.destroy()\n      }\n\n      // read off entire request\n      dump(req, function onfinished () {\n        next(createError(400, _error))\n      })\n      return\n    }\n\n    // verify\n    if (verify) {\n      try {\n        debug('verify body')\n        verify(req, res, body, encoding)\n      } catch (err) {\n        next(createError(403, err, {\n          body: body,\n          type: err.type || 'entity.verify.failed'\n        }))\n        return\n      }\n    }\n\n    // parse\n    var str = body\n    try {\n      debug('parse body')\n      str = typeof body !== 'string' && encoding !== null\n        ? iconv.decode(body, encoding)\n        : body\n      req.body = parse(str, encoding)\n    } catch (err) {\n      next(createError(400, err, {\n        body: str,\n        type: err.type || 'entity.parse.failed'\n      }))\n      return\n    }\n\n    next()\n  })\n}\n\n/**\n * Get the content stream of the request.\n *\n * @param {Object} req\n * @param {Function} debug\n * @param {boolean} inflate\n * @returns {Object}\n * @private\n */\nfunction contentstream (req, debug, inflate) {\n  var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()\n  var length = req.headers['content-length']\n\n  debug('content-encoding \"%s\"', encoding)\n\n  if (inflate === false && encoding !== 'identity') {\n    throw createError(415, 'content encoding unsupported', {\n      encoding: encoding,\n      type: 'encoding.unsupported'\n    })\n  }\n\n  if (encoding === 'identity') {\n    req.length = length\n    return req\n  }\n\n  var stream = createDecompressionStream(encoding, debug)\n  req.pipe(stream)\n  return stream\n}\n\n/**\n * Create a decompression stream for the given encoding.\n * @param {string} encoding\n * @param {Function} debug\n * @returns {Object}\n * @private\n */\nfunction createDecompressionStream (encoding, debug) {\n  switch (encoding) {\n    case 'deflate':\n      debug('inflate body')\n      return zlib.createInflate()\n    case 'gzip':\n      debug('gunzip body')\n      return zlib.createGunzip()\n    case 'br':\n      debug('brotli decompress body')\n      return zlib.createBrotliDecompress()\n    default:\n      throw createError(415, 'unsupported content encoding \"' + encoding + '\"', {\n        encoding: encoding,\n        type: 'encoding.unsupported'\n      })\n  }\n}\n\n/**\n * Dump the contents of a request.\n *\n * @param {Object} req\n * @param {Function} callback\n * @private\n */\nfunction dump (req, callback) {\n  if (onFinished.isFinished(req)) {\n    callback(null)\n  } else {\n    onFinished(req, callback)\n    req.resume()\n  }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('body-parser:json')\nvar read = require('../read')\nvar { normalizeOptions } = require('../utils')\n\n/**\n * Module exports.\n */\n\nmodule.exports = json\n\n/**\n * RegExp to match the first non-space in a string.\n *\n * Allowed whitespace is defined in RFC 7159:\n *\n *    ws = *(\n *            %x20 /              ; Space\n *            %x09 /              ; Horizontal tab\n *            %x0A /              ; Line feed or New line\n *            %x0D )              ; Carriage return\n */\nvar FIRST_CHAR_REGEXP = /^[\\x20\\x09\\x0a\\x0d]*([^\\x20\\x09\\x0a\\x0d])/ // eslint-disable-line no-control-regex\n\nvar JSON_SYNTAX_CHAR = '#'\nvar JSON_SYNTAX_REGEXP = /#+/g\n\n/**\n * Create a middleware to parse JSON bodies.\n *\n * @param {Object} [options]\n * @returns {Function}\n * @public\n */\nfunction json (options) {\n  const normalizedOptions = normalizeOptions(options, 'application/json')\n\n  var reviver = options?.reviver\n  var strict = options?.strict !== false\n\n  function parse (body) {\n    if (body.length === 0) {\n      // special-case empty json body, as it's a common client-side mistake\n      // TODO: maybe make this configurable or part of \"strict\" option\n      return {}\n    }\n\n    if (strict) {\n      var first = firstchar(body)\n\n      if (first !== '{' && first !== '[') {\n        debug('strict violation')\n        throw createStrictSyntaxError(body, first)\n      }\n    }\n\n    try {\n      debug('parse json')\n      return JSON.parse(body, reviver)\n    } catch (e) {\n      throw normalizeJsonSyntaxError(e, {\n        message: e.message,\n        stack: e.stack\n      })\n    }\n  }\n\n  const readOptions = {\n    ...normalizedOptions,\n    // assert charset per RFC 7159 sec 8.1\n    isValidCharset: (charset) => charset.slice(0, 4) === 'utf-'\n  }\n\n  return function jsonParser (req, res, next) {\n    read(req, res, next, parse, debug, readOptions)\n  }\n}\n\n/**\n * Create strict violation syntax error matching native error.\n *\n * @param {string} str\n * @param {string} char\n * @returns {Error}\n * @private\n */\nfunction createStrictSyntaxError (str, char) {\n  var index = str.indexOf(char)\n  var partial = ''\n\n  if (index !== -1) {\n    partial = str.substring(0, index) + JSON_SYNTAX_CHAR.repeat(str.length - index)\n  }\n\n  try {\n    JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')\n  } catch (e) {\n    return normalizeJsonSyntaxError(e, {\n      message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) {\n        return str.substring(index, index + placeholder.length)\n      }),\n      stack: e.stack\n    })\n  }\n}\n\n/**\n * Get the first non-whitespace character in a string.\n *\n * @param {string} str\n * @returns {string|undefined}\n * @private\n */\nfunction firstchar (str) {\n  var match = FIRST_CHAR_REGEXP.exec(str)\n\n  return match\n    ? match[1]\n    : undefined\n}\n\n/**\n * Normalize a SyntaxError for JSON.parse.\n *\n * @param {SyntaxError} error\n * @param {Object} obj\n * @returns {SyntaxError}\n * @private\n */\nfunction normalizeJsonSyntaxError (error, obj) {\n  var keys = Object.getOwnPropertyNames(error)\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i]\n    if (key !== 'stack' && key !== 'message') {\n      delete error[key]\n    }\n  }\n\n  // replace stack before message for Node.js 0.10 and below\n  error.stack = obj.stack.replace(error.message, obj.message)\n  error.message = obj.message\n\n  return error\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('body-parser:raw')\nvar read = require('../read')\nvar { normalizeOptions, passthrough } = require('../utils')\n\n/**\n * Module exports.\n */\n\nmodule.exports = raw\n\n/**\n * Create a middleware to parse raw bodies.\n *\n * @param {Object} [options]\n * @returns {Function}\n * @public\n */\nfunction raw (options) {\n  const normalizedOptions = normalizeOptions(options, 'application/octet-stream')\n\n  const readOptions = {\n    ...normalizedOptions,\n    // Skip charset validation and parse the body as is\n    skipCharset: true\n  }\n\n  return function rawParser (req, res, next) {\n    read(req, res, next, passthrough, debug, readOptions)\n  }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('body-parser:text')\nvar read = require('../read')\nvar { normalizeOptions, passthrough } = require('../utils')\n\n/**\n * Module exports.\n */\n\nmodule.exports = text\n\n/**\n * Create a middleware to parse text bodies.\n *\n * @param {Object} [options]\n * @returns {Function}\n * @public\n */\nfunction text (options) {\n  const normalizedOptions = normalizeOptions(options, 'text/plain')\n\n  return function textParser (req, res, next) {\n    read(req, res, next, passthrough, debug, normalizedOptions)\n  }\n}\n", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "module.exports = require('util').inspect;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n", "'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n", "'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n", "'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n", "'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n", "'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n", "'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n", "'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n", "'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n", "'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n", "'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n", "'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n", "'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n", "'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n", "'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n", "'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (options && options.strictMerge) {\n                return [target, source];\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n", "'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('\u2713')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictMerge: true,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the \u2713 character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the \u2713 character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && (options.duplicates === 'combine' || part.indexOf('[]=') > -1)) {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictMerge: typeof opts.strictMerge === 'boolean' ? !!opts.strictMerge : defaults.strictMerge,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar debug = require('debug')('body-parser:urlencoded')\nvar read = require('../read')\nvar qs = require('qs')\nvar { normalizeOptions } = require('../utils')\n\n/**\n * Module exports.\n */\n\nmodule.exports = urlencoded\n\n/**\n * Create a middleware to parse urlencoded bodies.\n *\n * @param {Object} [options]\n * @returns {Function}\n * @public\n */\nfunction urlencoded (options) {\n  const normalizedOptions = normalizeOptions(options, 'application/x-www-form-urlencoded')\n\n  if (normalizedOptions.defaultCharset !== 'utf-8' && normalizedOptions.defaultCharset !== 'iso-8859-1') {\n    throw new TypeError('option defaultCharset must be either utf-8 or iso-8859-1')\n  }\n\n  // create the appropriate query parser\n  var queryparse = createQueryParser(options)\n\n  function parse (body, encoding) {\n    return body.length\n      ? queryparse(body, encoding)\n      : {}\n  }\n\n  const readOptions = {\n    ...normalizedOptions,\n    // assert charset\n    isValidCharset: (charset) => charset === 'utf-8' || charset === 'iso-8859-1'\n  }\n\n  return function urlencodedParser (req, res, next) {\n    read(req, res, next, parse, debug, readOptions)\n  }\n}\n\n/**\n * Get the extended query parser.\n *\n * @param {Object} options\n * @returns {Function}\n * @private\n */\nfunction createQueryParser (options) {\n  var extended = Boolean(options?.extended)\n  var parameterLimit = options?.parameterLimit !== undefined\n    ? options?.parameterLimit\n    : 1000\n  var charsetSentinel = options?.charsetSentinel\n  var interpretNumericEntities = options?.interpretNumericEntities\n  var depth = extended ? (options?.depth !== undefined ? options?.depth : 32) : 0\n\n  if (isNaN(parameterLimit) || parameterLimit < 1) {\n    throw new TypeError('option parameterLimit must be a positive number')\n  }\n\n  if (isNaN(depth) || depth < 0) {\n    throw new TypeError('option depth must be a zero or a positive number')\n  }\n\n  if (isFinite(parameterLimit)) {\n    parameterLimit = parameterLimit | 0\n  }\n\n  return function queryparse (body, encoding) {\n    var paramCount = parameterCount(body, parameterLimit)\n\n    if (paramCount === undefined) {\n      debug('too many parameters')\n      throw createError(413, 'too many parameters', {\n        type: 'parameters.too.many'\n      })\n    }\n\n    var arrayLimit = extended ? Math.max(100, paramCount) : paramCount\n\n    debug('parse ' + (extended ? 'extended ' : '') + 'urlencoding')\n    try {\n      return qs.parse(body, {\n        allowPrototypes: true,\n        arrayLimit: arrayLimit,\n        depth: depth,\n        charsetSentinel: charsetSentinel,\n        interpretNumericEntities: interpretNumericEntities,\n        charset: encoding,\n        parameterLimit: parameterLimit,\n        strictDepth: true\n      })\n    } catch (err) {\n      if (err instanceof RangeError) {\n        throw createError(400, 'The input exceeded the depth', {\n          type: 'querystring.parse.rangeError'\n        })\n      } else {\n        throw err\n      }\n    }\n  }\n}\n\n/**\n * Count the number of parameters, stopping once limit reached\n *\n * @param {string} body\n * @param {number} limit\n * @returns {number|undefined} Returns undefined if limit exceeded\n * @private\n */\nfunction parameterCount (body, limit) {\n  let count = 0\n  let index = -1\n  do {\n    count++\n    if (count > limit) return undefined // Early exit if limit exceeded\n    index = body.indexOf('&', index + 1)\n  } while (index !== -1)\n  return count\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * @typedef {Object} Parsers\n * @property {Function} json JSON parser\n * @property {Function} raw Raw parser\n * @property {Function} text Text parser\n * @property {Function} urlencoded URL-encoded parser\n */\n\n/**\n * Module exports.\n * @type {Function & Parsers}\n */\nexports = module.exports = bodyParser\n\n/**\n * JSON parser.\n * @public\n */\nObject.defineProperty(exports, 'json', {\n  configurable: true,\n  enumerable: true,\n  get: () => require('./lib/types/json')\n})\n\n/**\n * Raw parser.\n * @public\n */\nObject.defineProperty(exports, 'raw', {\n  configurable: true,\n  enumerable: true,\n  get: () => require('./lib/types/raw')\n})\n\n/**\n * Text parser.\n * @public\n */\nObject.defineProperty(exports, 'text', {\n  configurable: true,\n  enumerable: true,\n  get: () => require('./lib/types/text')\n})\n\n/**\n * URL-encoded parser.\n * @public\n */\nObject.defineProperty(exports, 'urlencoded', {\n  configurable: true,\n  enumerable: true,\n  get: () => require('./lib/types/urlencoded')\n})\n\n/**\n * Create a middleware to parse json and urlencoded bodies.\n *\n * @deprecated\n * @public\n */\nfunction bodyParser () {\n  throw new Error('The bodyParser() generic has been split into individual middleware to use instead.')\n}\n", "'use strict';\n\nfunction mergeDescriptors(destination, source, overwrite = true) {\n\tif (!destination) {\n\t\tthrow new TypeError('The `destination` argument is required.');\n\t}\n\n\tif (!source) {\n\t\tthrow new TypeError('The `source` argument is required.');\n\t}\n\n\tfor (const name of Object.getOwnPropertyNames(source)) {\n\t\tif (!overwrite && Object.hasOwn(destination, name)) {\n\t\t\t// Skip descriptor\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Copy descriptor\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(source, name);\n\t\tObject.defineProperty(destination, name, descriptor);\n\t}\n\n\treturn destination;\n}\n\nmodule.exports = mergeDescriptors;\n", "/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including \"%\")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x23-\\x3B\\x3D\\x3F-\\x5F\\x61-\\x7A\\x7C\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\\uFFFD$2'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the \"%\" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be \"safe\" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n  return String(url)\n    .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n    .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34: // \"\n        escape = '&quot;';\n        break;\n      case 38: // &\n        escape = '&amp;';\n        break;\n      case 39: // '\n        escape = '&#39;';\n        break;\n      case 60: // <\n        escape = '&lt;';\n        break;\n      case 62: // >\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index\n    ? html + str.substring(lastIndex, index)\n    : html;\n}\n", "/*!\n * parseurl\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar url = require('url')\nvar parse = url.parse\nvar Url = url.Url\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = parseurl\nmodule.exports.original = originalurl\n\n/**\n * Parse the `req` url with memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction parseurl (req) {\n  var url = req.url\n\n  if (url === undefined) {\n    // URL is undefined\n    return undefined\n  }\n\n  var parsed = req._parsedUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedUrl = parsed)\n};\n\n/**\n * Parse the `req` original url with fallback and memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction originalurl (req) {\n  var url = req.originalUrl\n\n  if (typeof url !== 'string') {\n    // Fallback\n    return parseurl(req)\n  }\n\n  var parsed = req._parsedOriginalUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedOriginalUrl = parsed)\n};\n\n/**\n * Parse the `str` url with fast-path short-cut.\n *\n * @param {string} str\n * @return {Object}\n * @private\n */\n\nfunction fastparse (str) {\n  if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {\n    return parse(str)\n  }\n\n  var pathname = str\n  var query = null\n  var search = null\n\n  // This takes the regexp from https://github.com/joyent/node/pull/7878\n  // Which is /^(\\/[^?#\\s]*)(\\?[^#\\s]*)?$/\n  // And unrolls it into a for loop\n  for (var i = 1; i < str.length; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x3f: /* ?  */\n        if (search === null) {\n          pathname = str.substring(0, i)\n          query = str.substring(i + 1)\n          search = str.substring(i)\n        }\n        break\n      case 0x09: /* \\t */\n      case 0x0a: /* \\n */\n      case 0x0c: /* \\f */\n      case 0x0d: /* \\r */\n      case 0x20: /*    */\n      case 0x23: /* #  */\n      case 0xa0:\n      case 0xfeff:\n        return parse(str)\n    }\n  }\n\n  var url = Url !== undefined\n    ? new Url()\n    : {}\n\n  url.path = str\n  url.href = str\n  url.pathname = pathname\n\n  if (search !== null) {\n    url.query = query\n    url.search = search\n  }\n\n  return url\n}\n\n/**\n * Determine if parsed is still fresh for url.\n *\n * @param {string} url\n * @param {object} parsedUrl\n * @return {boolean}\n * @private\n */\n\nfunction fresh (url, parsedUrl) {\n  return typeof parsedUrl === 'object' &&\n    parsedUrl !== null &&\n    (Url === undefined || parsedUrl instanceof Url) &&\n    parsedUrl._raw === url\n}\n", "/*!\n * finalhandler\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('finalhandler')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar onFinished = require('on-finished')\nvar parseUrl = require('parseurl')\nvar statuses = require('statuses')\n\n/**\n * Module variables.\n * @private\n */\n\nvar isFinished = onFinished.isFinished\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} message\n * @private\n */\n\nfunction createHtmlDocument (message) {\n  var body = escapeHtml(message)\n    .replaceAll('\\n', '<br>')\n    .replaceAll('  ', ' &nbsp;')\n\n  return '<!DOCTYPE html>\\n' +\n    '<html lang=\"en\">\\n' +\n    '<head>\\n' +\n    '<meta charset=\"utf-8\">\\n' +\n    '<title>Error</title>\\n' +\n    '</head>\\n' +\n    '<body>\\n' +\n    '<pre>' + body + '</pre>\\n' +\n    '</body>\\n' +\n    '</html>\\n'\n}\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = finalhandler\n\n/**\n * Create a function to handle the final response.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Object} [options]\n * @return {Function}\n * @public\n */\n\nfunction finalhandler (req, res, options) {\n  var opts = options || {}\n\n  // get environment\n  var env = opts.env || process.env.NODE_ENV || 'development'\n\n  // get error callback\n  var onerror = opts.onerror\n\n  return function (err) {\n    var headers\n    var msg\n    var status\n\n    // ignore 404 on in-flight response\n    if (!err && res.headersSent) {\n      debug('cannot 404 after headers sent')\n      return\n    }\n\n    // unhandled error\n    if (err) {\n      // respect status code from error\n      status = getErrorStatusCode(err)\n\n      if (status === undefined) {\n        // fallback to status code on response\n        status = getResponseStatusCode(res)\n      } else {\n        // respect headers from error\n        headers = getErrorHeaders(err)\n      }\n\n      // get error message\n      msg = getErrorMessage(err, status, env)\n    } else {\n      // not found\n      status = 404\n      msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req))\n    }\n\n    debug('default %s', status)\n\n    // schedule onerror callback\n    if (err && onerror) {\n      setImmediate(onerror, err, req, res)\n    }\n\n    // cannot actually respond\n    if (res.headersSent) {\n      debug('cannot %d after headers sent', status)\n      if (req.socket) {\n        req.socket.destroy()\n      }\n      return\n    }\n\n    // send response\n    send(req, res, status, headers, msg)\n  }\n}\n\n/**\n * Get headers from Error object.\n *\n * @param {Error} err\n * @return {object}\n * @private\n */\n\nfunction getErrorHeaders (err) {\n  if (!err.headers || typeof err.headers !== 'object') {\n    return undefined\n  }\n\n  return { ...err.headers }\n}\n\n/**\n * Get message from Error object, fallback to status message.\n *\n * @param {Error} err\n * @param {number} status\n * @param {string} env\n * @return {string}\n * @private\n */\n\nfunction getErrorMessage (err, status, env) {\n  var msg\n\n  if (env !== 'production') {\n    // use err.stack, which typically includes err.message\n    msg = err.stack\n\n    // fallback to err.toString() when possible\n    if (!msg && typeof err.toString === 'function') {\n      msg = err.toString()\n    }\n  }\n\n  return msg || statuses.message[status]\n}\n\n/**\n * Get status code from Error object.\n *\n * @param {Error} err\n * @return {number}\n * @private\n */\n\nfunction getErrorStatusCode (err) {\n  // check err.status\n  if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) {\n    return err.status\n  }\n\n  // check err.statusCode\n  if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) {\n    return err.statusCode\n  }\n\n  return undefined\n}\n\n/**\n * Get resource name for the request.\n *\n * This is typically just the original pathname of the request\n * but will fallback to \"resource\" is that cannot be determined.\n *\n * @param {IncomingMessage} req\n * @return {string}\n * @private\n */\n\nfunction getResourceName (req) {\n  try {\n    return parseUrl.original(req).pathname\n  } catch (e) {\n    return 'resource'\n  }\n}\n\n/**\n * Get status code from response.\n *\n * @param {OutgoingMessage} res\n * @return {number}\n * @private\n */\n\nfunction getResponseStatusCode (res) {\n  var status = res.statusCode\n\n  // default status code to 500 if outside valid range\n  if (typeof status !== 'number' || status < 400 || status > 599) {\n    status = 500\n  }\n\n  return status\n}\n\n/**\n * Send response.\n *\n * @param {IncomingMessage} req\n * @param {OutgoingMessage} res\n * @param {number} status\n * @param {object} headers\n * @param {string} message\n * @private\n */\n\nfunction send (req, res, status, headers, message) {\n  function write () {\n    // response body\n    var body = createHtmlDocument(message)\n\n    // response status\n    res.statusCode = status\n\n    if (req.httpVersionMajor < 2) {\n      res.statusMessage = statuses.message[status]\n    }\n\n    // remove any content headers\n    res.removeHeader('Content-Encoding')\n    res.removeHeader('Content-Language')\n    res.removeHeader('Content-Range')\n\n    // response headers\n    for (const [key, value] of Object.entries(headers ?? {})) {\n      res.setHeader(key, value)\n    }\n\n    // security headers\n    res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n    res.setHeader('X-Content-Type-Options', 'nosniff')\n\n    // standard headers\n    res.setHeader('Content-Type', 'text/html; charset=utf-8')\n    res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8'))\n\n    if (req.method === 'HEAD') {\n      res.end()\n      return\n    }\n\n    res.end(body, 'utf8')\n  }\n\n  if (isFinished(req)) {\n    write()\n    return\n  }\n\n  // unpipe everything from the request\n  req.unpipe()\n\n  // flush the request\n  onFinished(req, write)\n  req.resume()\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('express:view');\nvar path = require('node:path');\nvar fs = require('node:fs');\n\n/**\n * Module variables.\n * @private\n */\n\nvar dirname = path.dirname;\nvar basename = path.basename;\nvar extname = path.extname;\nvar join = path.join;\nvar resolve = path.resolve;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = View;\n\n/**\n * Initialize a new `View` with the given `name`.\n *\n * Options:\n *\n *   - `defaultEngine` the default template engine name\n *   - `engines` template engine require() cache\n *   - `root` root path for view lookup\n *\n * @param {string} name\n * @param {object} options\n * @public\n */\n\nfunction View(name, options) {\n  var opts = options || {};\n\n  this.defaultEngine = opts.defaultEngine;\n  this.ext = extname(name);\n  this.name = name;\n  this.root = opts.root;\n\n  if (!this.ext && !this.defaultEngine) {\n    throw new Error('No default engine was specified and no extension was provided.');\n  }\n\n  var fileName = name;\n\n  if (!this.ext) {\n    // get extension from default engine name\n    this.ext = this.defaultEngine[0] !== '.'\n      ? '.' + this.defaultEngine\n      : this.defaultEngine;\n\n    fileName += this.ext;\n  }\n\n  if (!opts.engines[this.ext]) {\n    // load engine\n    var mod = this.ext.slice(1)\n    debug('require \"%s\"', mod)\n\n    // default engine export\n    var fn = require(mod).__express\n\n    if (typeof fn !== 'function') {\n      throw new Error('Module \"' + mod + '\" does not provide a view engine.')\n    }\n\n    opts.engines[this.ext] = fn\n  }\n\n  // store loaded engine\n  this.engine = opts.engines[this.ext];\n\n  // lookup path\n  this.path = this.lookup(fileName);\n}\n\n/**\n * Lookup view by the given `name`\n *\n * @param {string} name\n * @private\n */\n\nView.prototype.lookup = function lookup(name) {\n  var path;\n  var roots = [].concat(this.root);\n\n  debug('lookup \"%s\"', name);\n\n  for (var i = 0; i < roots.length && !path; i++) {\n    var root = roots[i];\n\n    // resolve the path\n    var loc = resolve(root, name);\n    var dir = dirname(loc);\n    var file = basename(loc);\n\n    // resolve the file\n    path = this.resolve(dir, file);\n  }\n\n  return path;\n};\n\n/**\n * Render with the given options.\n *\n * @param {object} options\n * @param {function} callback\n * @private\n */\n\nView.prototype.render = function render(options, callback) {\n  var sync = true;\n\n  debug('render \"%s\"', this.path);\n\n  // render, normalizing sync callbacks\n  this.engine(this.path, options, function onRender() {\n    if (!sync) {\n      return callback.apply(this, arguments);\n    }\n\n    // copy arguments\n    var args = new Array(arguments.length);\n    var cntx = this;\n\n    for (var i = 0; i < arguments.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    // force callback to be async\n    return process.nextTick(function renderTick() {\n      return callback.apply(cntx, args);\n    });\n  });\n\n  sync = false;\n};\n\n/**\n * Resolve the file within the given directory.\n *\n * @param {string} dir\n * @param {string} file\n * @private\n */\n\nView.prototype.resolve = function resolve(dir, file) {\n  var ext = this.ext;\n\n  // <path>.<ext>\n  var path = join(dir, file);\n  var stat = tryStat(path);\n\n  if (stat && stat.isFile()) {\n    return path;\n  }\n\n  // <path>/index.<ext>\n  path = join(dir, basename(file, ext), 'index' + ext);\n  stat = tryStat(path);\n\n  if (stat && stat.isFile()) {\n    return path;\n  }\n};\n\n/**\n * Return a stat, maybe.\n *\n * @param {string} path\n * @return {fs.Stats}\n * @private\n */\n\nfunction tryStat(path) {\n  debug('stat \"%s\"', path);\n\n  try {\n    return fs.statSync(path);\n  } catch (e) {\n    return undefined;\n  }\n}\n", "/*!\n * etag\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = etag\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar crypto = require('crypto')\nvar Stats = require('fs').Stats\n\n/**\n * Module variables.\n * @private\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Generate an entity tag.\n *\n * @param {Buffer|string} entity\n * @return {string}\n * @private\n */\n\nfunction entitytag (entity) {\n  if (entity.length === 0) {\n    // fast-path empty\n    return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"'\n  }\n\n  // compute hash of entity\n  var hash = crypto\n    .createHash('sha1')\n    .update(entity, 'utf8')\n    .digest('base64')\n    .substring(0, 27)\n\n  // compute length of entity\n  var len = typeof entity === 'string'\n    ? Buffer.byteLength(entity, 'utf8')\n    : entity.length\n\n  return '\"' + len.toString(16) + '-' + hash + '\"'\n}\n\n/**\n * Create a simple ETag.\n *\n * @param {string|Buffer|Stats} entity\n * @param {object} [options]\n * @param {boolean} [options.weak]\n * @return {String}\n * @public\n */\n\nfunction etag (entity, options) {\n  if (entity == null) {\n    throw new TypeError('argument entity is required')\n  }\n\n  // support fs.Stats object\n  var isStats = isstats(entity)\n  var weak = options && typeof options.weak === 'boolean'\n    ? options.weak\n    : isStats\n\n  // validate argument\n  if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {\n    throw new TypeError('argument entity must be string, Buffer, or fs.Stats')\n  }\n\n  // generate entity tag\n  var tag = isStats\n    ? stattag(entity)\n    : entitytag(entity)\n\n  return weak\n    ? 'W/' + tag\n    : tag\n}\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\n\nfunction isstats (obj) {\n  // genuine fs.Stats\n  if (typeof Stats === 'function' && obj instanceof Stats) {\n    return true\n  }\n\n  // quack quack\n  return obj && typeof obj === 'object' &&\n    'ctime' in obj && toString.call(obj.ctime) === '[object Date]' &&\n    'mtime' in obj && toString.call(obj.mtime) === '[object Date]' &&\n    'ino' in obj && typeof obj.ino === 'number' &&\n    'size' in obj && typeof obj.size === 'number'\n}\n\n/**\n * Generate a tag for a stat.\n *\n * @param {object} stat\n * @return {string}\n * @private\n */\n\nfunction stattag (stat) {\n  var mtime = stat.mtime.getTime().toString(16)\n  var size = stat.size.toString(16)\n\n  return '\"' + size + '-' + mtime + '\"'\n}\n", "/*!\n * forwarded\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = forwarded\n\n/**\n * Get all addresses in the request, using the `X-Forwarded-For` header.\n *\n * @param {object} req\n * @return {array}\n * @public\n */\n\nfunction forwarded (req) {\n  if (!req) {\n    throw new TypeError('argument req is required')\n  }\n\n  // simple header parsing\n  var proxyAddrs = parse(req.headers['x-forwarded-for'] || '')\n  var socketAddr = getSocketAddr(req)\n  var addrs = [socketAddr].concat(proxyAddrs)\n\n  // return all addresses\n  return addrs\n}\n\n/**\n * Get the socket address for a request.\n *\n * @param {object} req\n * @return {string}\n * @private\n */\n\nfunction getSocketAddr (req) {\n  return req.socket\n    ? req.socket.remoteAddress\n    : req.connection.remoteAddress\n}\n\n/**\n * Parse the X-Forwarded-For header.\n *\n * @param {string} header\n * @private\n */\n\nfunction parse (header) {\n  var end = header.length\n  var list = []\n  var start = header.length\n\n  // gather addresses, backwards\n  for (var i = header.length - 1; i >= 0; i--) {\n    switch (header.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i\n        }\n        break\n      case 0x2c: /* , */\n        if (start !== end) {\n          list.push(header.substring(start, end))\n        }\n        start = end = i\n        break\n      default:\n        start = i\n        break\n    }\n  }\n\n  // final address\n  if (start !== end) {\n    list.push(header.substring(start, end))\n  }\n\n  return list\n}\n", "(function() {\n  var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex;\n\n  ipaddr = {};\n\n  root = this;\n\n  if ((typeof module !== \"undefined\" && module !== null) && module.exports) {\n    module.exports = ipaddr;\n  } else {\n    root['ipaddr'] = ipaddr;\n  }\n\n  matchCIDR = function(first, second, partSize, cidrBits) {\n    var part, shift;\n    if (first.length !== second.length) {\n      throw new Error(\"ipaddr: cannot match CIDR for objects with different lengths\");\n    }\n    part = 0;\n    while (cidrBits > 0) {\n      shift = partSize - cidrBits;\n      if (shift < 0) {\n        shift = 0;\n      }\n      if (first[part] >> shift !== second[part] >> shift) {\n        return false;\n      }\n      cidrBits -= partSize;\n      part += 1;\n    }\n    return true;\n  };\n\n  ipaddr.subnetMatch = function(address, rangeList, defaultName) {\n    var k, len, rangeName, rangeSubnets, subnet;\n    if (defaultName == null) {\n      defaultName = 'unicast';\n    }\n    for (rangeName in rangeList) {\n      rangeSubnets = rangeList[rangeName];\n      if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n        rangeSubnets = [rangeSubnets];\n      }\n      for (k = 0, len = rangeSubnets.length; k < len; k++) {\n        subnet = rangeSubnets[k];\n        if (address.kind() === subnet[0].kind()) {\n          if (address.match.apply(address, subnet)) {\n            return rangeName;\n          }\n        }\n      }\n    }\n    return defaultName;\n  };\n\n  ipaddr.IPv4 = (function() {\n    function IPv4(octets) {\n      var k, len, octet;\n      if (octets.length !== 4) {\n        throw new Error(\"ipaddr: ipv4 octet count should be 4\");\n      }\n      for (k = 0, len = octets.length; k < len; k++) {\n        octet = octets[k];\n        if (!((0 <= octet && octet <= 255))) {\n          throw new Error(\"ipaddr: ipv4 octet should fit in 8 bits\");\n        }\n      }\n      this.octets = octets;\n    }\n\n    IPv4.prototype.kind = function() {\n      return 'ipv4';\n    };\n\n    IPv4.prototype.toString = function() {\n      return this.octets.join(\".\");\n    };\n\n    IPv4.prototype.toNormalizedString = function() {\n      return this.toString();\n    };\n\n    IPv4.prototype.toByteArray = function() {\n      return this.octets.slice(0);\n    };\n\n    IPv4.prototype.match = function(other, cidrRange) {\n      var ref;\n      if (cidrRange === void 0) {\n        ref = other, other = ref[0], cidrRange = ref[1];\n      }\n      if (other.kind() !== 'ipv4') {\n        throw new Error(\"ipaddr: cannot match ipv4 address with non-ipv4 one\");\n      }\n      return matchCIDR(this.octets, other.octets, 8, cidrRange);\n    };\n\n    IPv4.prototype.SpecialRanges = {\n      unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n      broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n      multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n      linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n      loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n      carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n      \"private\": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],\n      reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]\n    };\n\n    IPv4.prototype.range = function() {\n      return ipaddr.subnetMatch(this, this.SpecialRanges);\n    };\n\n    IPv4.prototype.toIPv4MappedAddress = function() {\n      return ipaddr.IPv6.parse(\"::ffff:\" + (this.toString()));\n    };\n\n    IPv4.prototype.prefixLengthFromSubnetMask = function() {\n      var cidr, i, k, octet, stop, zeros, zerotable;\n      zerotable = {\n        0: 8,\n        128: 7,\n        192: 6,\n        224: 5,\n        240: 4,\n        248: 3,\n        252: 2,\n        254: 1,\n        255: 0\n      };\n      cidr = 0;\n      stop = false;\n      for (i = k = 3; k >= 0; i = k += -1) {\n        octet = this.octets[i];\n        if (octet in zerotable) {\n          zeros = zerotable[octet];\n          if (stop && zeros !== 0) {\n            return null;\n          }\n          if (zeros !== 8) {\n            stop = true;\n          }\n          cidr += zeros;\n        } else {\n          return null;\n        }\n      }\n      return 32 - cidr;\n    };\n\n    return IPv4;\n\n  })();\n\n  ipv4Part = \"(0?\\\\d+|0x[a-f0-9]+)\";\n\n  ipv4Regexes = {\n    fourOctet: new RegExp(\"^\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"$\", 'i'),\n    longValue: new RegExp(\"^\" + ipv4Part + \"$\", 'i')\n  };\n\n  ipaddr.IPv4.parser = function(string) {\n    var match, parseIntAuto, part, shift, value;\n    parseIntAuto = function(string) {\n      if (string[0] === \"0\" && string[1] !== \"x\") {\n        return parseInt(string, 8);\n      } else {\n        return parseInt(string);\n      }\n    };\n    if (match = string.match(ipv4Regexes.fourOctet)) {\n      return (function() {\n        var k, len, ref, results;\n        ref = match.slice(1, 6);\n        results = [];\n        for (k = 0, len = ref.length; k < len; k++) {\n          part = ref[k];\n          results.push(parseIntAuto(part));\n        }\n        return results;\n      })();\n    } else if (match = string.match(ipv4Regexes.longValue)) {\n      value = parseIntAuto(match[1]);\n      if (value > 0xffffffff || value < 0) {\n        throw new Error(\"ipaddr: address outside defined range\");\n      }\n      return ((function() {\n        var k, results;\n        results = [];\n        for (shift = k = 0; k <= 24; shift = k += 8) {\n          results.push((value >> shift) & 0xff);\n        }\n        return results;\n      })()).reverse();\n    } else {\n      return null;\n    }\n  };\n\n  ipaddr.IPv6 = (function() {\n    function IPv6(parts, zoneId) {\n      var i, k, l, len, part, ref;\n      if (parts.length === 16) {\n        this.parts = [];\n        for (i = k = 0; k <= 14; i = k += 2) {\n          this.parts.push((parts[i] << 8) | parts[i + 1]);\n        }\n      } else if (parts.length === 8) {\n        this.parts = parts;\n      } else {\n        throw new Error(\"ipaddr: ipv6 part count should be 8 or 16\");\n      }\n      ref = this.parts;\n      for (l = 0, len = ref.length; l < len; l++) {\n        part = ref[l];\n        if (!((0 <= part && part <= 0xffff))) {\n          throw new Error(\"ipaddr: ipv6 part should fit in 16 bits\");\n        }\n      }\n      if (zoneId) {\n        this.zoneId = zoneId;\n      }\n    }\n\n    IPv6.prototype.kind = function() {\n      return 'ipv6';\n    };\n\n    IPv6.prototype.toString = function() {\n      return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::');\n    };\n\n    IPv6.prototype.toRFC5952String = function() {\n      var bestMatchIndex, bestMatchLength, match, regex, string;\n      regex = /((^|:)(0(:|$)){2,})/g;\n      string = this.toNormalizedString();\n      bestMatchIndex = 0;\n      bestMatchLength = -1;\n      while ((match = regex.exec(string))) {\n        if (match[0].length > bestMatchLength) {\n          bestMatchIndex = match.index;\n          bestMatchLength = match[0].length;\n        }\n      }\n      if (bestMatchLength < 0) {\n        return string;\n      }\n      return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength);\n    };\n\n    IPv6.prototype.toByteArray = function() {\n      var bytes, k, len, part, ref;\n      bytes = [];\n      ref = this.parts;\n      for (k = 0, len = ref.length; k < len; k++) {\n        part = ref[k];\n        bytes.push(part >> 8);\n        bytes.push(part & 0xff);\n      }\n      return bytes;\n    };\n\n    IPv6.prototype.toNormalizedString = function() {\n      var addr, part, suffix;\n      addr = ((function() {\n        var k, len, ref, results;\n        ref = this.parts;\n        results = [];\n        for (k = 0, len = ref.length; k < len; k++) {\n          part = ref[k];\n          results.push(part.toString(16));\n        }\n        return results;\n      }).call(this)).join(\":\");\n      suffix = '';\n      if (this.zoneId) {\n        suffix = '%' + this.zoneId;\n      }\n      return addr + suffix;\n    };\n\n    IPv6.prototype.toFixedLengthString = function() {\n      var addr, part, suffix;\n      addr = ((function() {\n        var k, len, ref, results;\n        ref = this.parts;\n        results = [];\n        for (k = 0, len = ref.length; k < len; k++) {\n          part = ref[k];\n          results.push(part.toString(16).padStart(4, '0'));\n        }\n        return results;\n      }).call(this)).join(\":\");\n      suffix = '';\n      if (this.zoneId) {\n        suffix = '%' + this.zoneId;\n      }\n      return addr + suffix;\n    };\n\n    IPv6.prototype.match = function(other, cidrRange) {\n      var ref;\n      if (cidrRange === void 0) {\n        ref = other, other = ref[0], cidrRange = ref[1];\n      }\n      if (other.kind() !== 'ipv6') {\n        throw new Error(\"ipaddr: cannot match ipv6 address with non-ipv6 one\");\n      }\n      return matchCIDR(this.parts, other.parts, 16, cidrRange);\n    };\n\n    IPv6.prototype.SpecialRanges = {\n      unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n      linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n      multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n      loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n      uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n      ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n      rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n      rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n      '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n      teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n      reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]\n    };\n\n    IPv6.prototype.range = function() {\n      return ipaddr.subnetMatch(this, this.SpecialRanges);\n    };\n\n    IPv6.prototype.isIPv4MappedAddress = function() {\n      return this.range() === 'ipv4Mapped';\n    };\n\n    IPv6.prototype.toIPv4Address = function() {\n      var high, low, ref;\n      if (!this.isIPv4MappedAddress()) {\n        throw new Error(\"ipaddr: trying to convert a generic ipv6 address to ipv4\");\n      }\n      ref = this.parts.slice(-2), high = ref[0], low = ref[1];\n      return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n    };\n\n    IPv6.prototype.prefixLengthFromSubnetMask = function() {\n      var cidr, i, k, part, stop, zeros, zerotable;\n      zerotable = {\n        0: 16,\n        32768: 15,\n        49152: 14,\n        57344: 13,\n        61440: 12,\n        63488: 11,\n        64512: 10,\n        65024: 9,\n        65280: 8,\n        65408: 7,\n        65472: 6,\n        65504: 5,\n        65520: 4,\n        65528: 3,\n        65532: 2,\n        65534: 1,\n        65535: 0\n      };\n      cidr = 0;\n      stop = false;\n      for (i = k = 7; k >= 0; i = k += -1) {\n        part = this.parts[i];\n        if (part in zerotable) {\n          zeros = zerotable[part];\n          if (stop && zeros !== 0) {\n            return null;\n          }\n          if (zeros !== 16) {\n            stop = true;\n          }\n          cidr += zeros;\n        } else {\n          return null;\n        }\n      }\n      return 128 - cidr;\n    };\n\n    return IPv6;\n\n  })();\n\n  ipv6Part = \"(?:[0-9a-f]+::?)+\";\n\n  zoneIndex = \"%[0-9a-z]{1,}\";\n\n  ipv6Regexes = {\n    zoneIndex: new RegExp(zoneIndex, 'i'),\n    \"native\": new RegExp(\"^(::)?(\" + ipv6Part + \")?([0-9a-f]+)?(::)?(\" + zoneIndex + \")?$\", 'i'),\n    transitional: new RegExp((\"^((?:\" + ipv6Part + \")|(?:::)(?:\" + ipv6Part + \")?)\") + (ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part) + (\"(\" + zoneIndex + \")?$\"), 'i')\n  };\n\n  expandIPv6 = function(string, parts) {\n    var colonCount, lastColon, part, replacement, replacementCount, zoneId;\n    if (string.indexOf('::') !== string.lastIndexOf('::')) {\n      return null;\n    }\n    zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0];\n    if (zoneId) {\n      zoneId = zoneId.substring(1);\n      string = string.replace(/%.+$/, '');\n    }\n    colonCount = 0;\n    lastColon = -1;\n    while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n      colonCount++;\n    }\n    if (string.substr(0, 2) === '::') {\n      colonCount--;\n    }\n    if (string.substr(-2, 2) === '::') {\n      colonCount--;\n    }\n    if (colonCount > parts) {\n      return null;\n    }\n    replacementCount = parts - colonCount;\n    replacement = ':';\n    while (replacementCount--) {\n      replacement += '0:';\n    }\n    string = string.replace('::', replacement);\n    if (string[0] === ':') {\n      string = string.slice(1);\n    }\n    if (string[string.length - 1] === ':') {\n      string = string.slice(0, -1);\n    }\n    parts = (function() {\n      var k, len, ref, results;\n      ref = string.split(\":\");\n      results = [];\n      for (k = 0, len = ref.length; k < len; k++) {\n        part = ref[k];\n        results.push(parseInt(part, 16));\n      }\n      return results;\n    })();\n    return {\n      parts: parts,\n      zoneId: zoneId\n    };\n  };\n\n  ipaddr.IPv6.parser = function(string) {\n    var addr, k, len, match, octet, octets, zoneId;\n    if (ipv6Regexes['native'].test(string)) {\n      return expandIPv6(string, 8);\n    } else if (match = string.match(ipv6Regexes['transitional'])) {\n      zoneId = match[6] || '';\n      addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n      if (addr.parts) {\n        octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];\n        for (k = 0, len = octets.length; k < len; k++) {\n          octet = octets[k];\n          if (!((0 <= octet && octet <= 255))) {\n            return null;\n          }\n        }\n        addr.parts.push(octets[0] << 8 | octets[1]);\n        addr.parts.push(octets[2] << 8 | octets[3]);\n        return {\n          parts: addr.parts,\n          zoneId: addr.zoneId\n        };\n      }\n    }\n    return null;\n  };\n\n  ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {\n    return this.parser(string) !== null;\n  };\n\n  ipaddr.IPv4.isValid = function(string) {\n    var e;\n    try {\n      new this(this.parser(string));\n      return true;\n    } catch (error1) {\n      e = error1;\n      return false;\n    }\n  };\n\n  ipaddr.IPv4.isValidFourPartDecimal = function(string) {\n    if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  ipaddr.IPv6.isValid = function(string) {\n    var addr, e;\n    if (typeof string === \"string\" && string.indexOf(\":\") === -1) {\n      return false;\n    }\n    try {\n      addr = this.parser(string);\n      new this(addr.parts, addr.zoneId);\n      return true;\n    } catch (error1) {\n      e = error1;\n      return false;\n    }\n  };\n\n  ipaddr.IPv4.parse = function(string) {\n    var parts;\n    parts = this.parser(string);\n    if (parts === null) {\n      throw new Error(\"ipaddr: string is not formatted like ip address\");\n    }\n    return new this(parts);\n  };\n\n  ipaddr.IPv6.parse = function(string) {\n    var addr;\n    addr = this.parser(string);\n    if (addr.parts === null) {\n      throw new Error(\"ipaddr: string is not formatted like ip address\");\n    }\n    return new this(addr.parts, addr.zoneId);\n  };\n\n  ipaddr.IPv4.parseCIDR = function(string) {\n    var maskLength, match, parsed;\n    if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n      maskLength = parseInt(match[2]);\n      if (maskLength >= 0 && maskLength <= 32) {\n        parsed = [this.parse(match[1]), maskLength];\n        Object.defineProperty(parsed, 'toString', {\n          value: function() {\n            return this.join('/');\n          }\n        });\n        return parsed;\n      }\n    }\n    throw new Error(\"ipaddr: string is not formatted like an IPv4 CIDR range\");\n  };\n\n  ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) {\n    var filledOctetCount, j, octets;\n    prefix = parseInt(prefix);\n    if (prefix < 0 || prefix > 32) {\n      throw new Error('ipaddr: invalid IPv4 prefix length');\n    }\n    octets = [0, 0, 0, 0];\n    j = 0;\n    filledOctetCount = Math.floor(prefix / 8);\n    while (j < filledOctetCount) {\n      octets[j] = 255;\n      j++;\n    }\n    if (filledOctetCount < 4) {\n      octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n    }\n    return new this(octets);\n  };\n\n  ipaddr.IPv4.broadcastAddressFromCIDR = function(string) {\n    var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n    try {\n      cidr = this.parseCIDR(string);\n      ipInterfaceOctets = cidr[0].toByteArray();\n      subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n      octets = [];\n      i = 0;\n      while (i < 4) {\n        octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n        i++;\n      }\n      return new this(octets);\n    } catch (error1) {\n      error = error1;\n      throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n    }\n  };\n\n  ipaddr.IPv4.networkAddressFromCIDR = function(string) {\n    var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n    try {\n      cidr = this.parseCIDR(string);\n      ipInterfaceOctets = cidr[0].toByteArray();\n      subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n      octets = [];\n      i = 0;\n      while (i < 4) {\n        octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n        i++;\n      }\n      return new this(octets);\n    } catch (error1) {\n      error = error1;\n      throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n    }\n  };\n\n  ipaddr.IPv6.parseCIDR = function(string) {\n    var maskLength, match, parsed;\n    if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n      maskLength = parseInt(match[2]);\n      if (maskLength >= 0 && maskLength <= 128) {\n        parsed = [this.parse(match[1]), maskLength];\n        Object.defineProperty(parsed, 'toString', {\n          value: function() {\n            return this.join('/');\n          }\n        });\n        return parsed;\n      }\n    }\n    throw new Error(\"ipaddr: string is not formatted like an IPv6 CIDR range\");\n  };\n\n  ipaddr.isValid = function(string) {\n    return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n  };\n\n  ipaddr.parse = function(string) {\n    if (ipaddr.IPv6.isValid(string)) {\n      return ipaddr.IPv6.parse(string);\n    } else if (ipaddr.IPv4.isValid(string)) {\n      return ipaddr.IPv4.parse(string);\n    } else {\n      throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 format\");\n    }\n  };\n\n  ipaddr.parseCIDR = function(string) {\n    var e;\n    try {\n      return ipaddr.IPv6.parseCIDR(string);\n    } catch (error1) {\n      e = error1;\n      try {\n        return ipaddr.IPv4.parseCIDR(string);\n      } catch (error1) {\n        e = error1;\n        throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 CIDR format\");\n      }\n    }\n  };\n\n  ipaddr.fromByteArray = function(bytes) {\n    var length;\n    length = bytes.length;\n    if (length === 4) {\n      return new ipaddr.IPv4(bytes);\n    } else if (length === 16) {\n      return new ipaddr.IPv6(bytes);\n    } else {\n      throw new Error(\"ipaddr: the binary input is neither an IPv6 nor IPv4 address\");\n    }\n  };\n\n  ipaddr.process = function(string) {\n    var addr;\n    addr = this.parse(string);\n    if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n      return addr.toIPv4Address();\n    } else {\n      return addr;\n    }\n  };\n\n}).call(this);\n", "/*!\n * proxy-addr\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = proxyaddr\nmodule.exports.all = alladdrs\nmodule.exports.compile = compile\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar forwarded = require('forwarded')\nvar ipaddr = require('ipaddr.js')\n\n/**\n * Variables.\n * @private\n */\n\nvar DIGIT_REGEXP = /^[0-9]+$/\nvar isip = ipaddr.isValid\nvar parseip = ipaddr.parse\n\n/**\n * Pre-defined IP ranges.\n * @private\n */\n\nvar IP_RANGES = {\n  linklocal: ['169.254.0.0/16', 'fe80::/10'],\n  loopback: ['127.0.0.1/8', '::1/128'],\n  uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7']\n}\n\n/**\n * Get all addresses in the request, optionally stopping\n * at the first untrusted.\n *\n * @param {Object} request\n * @param {Function|Array|String} [trust]\n * @public\n */\n\nfunction alladdrs (req, trust) {\n  // get addresses\n  var addrs = forwarded(req)\n\n  if (!trust) {\n    // Return all addresses\n    return addrs\n  }\n\n  if (typeof trust !== 'function') {\n    trust = compile(trust)\n  }\n\n  for (var i = 0; i < addrs.length - 1; i++) {\n    if (trust(addrs[i], i)) continue\n\n    addrs.length = i + 1\n  }\n\n  return addrs\n}\n\n/**\n * Compile argument into trust function.\n *\n * @param {Array|String} val\n * @private\n */\n\nfunction compile (val) {\n  if (!val) {\n    throw new TypeError('argument is required')\n  }\n\n  var trust\n\n  if (typeof val === 'string') {\n    trust = [val]\n  } else if (Array.isArray(val)) {\n    trust = val.slice()\n  } else {\n    throw new TypeError('unsupported trust argument')\n  }\n\n  for (var i = 0; i < trust.length; i++) {\n    val = trust[i]\n\n    if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) {\n      continue\n    }\n\n    // Splice in pre-defined range\n    val = IP_RANGES[val]\n    trust.splice.apply(trust, [i, 1].concat(val))\n    i += val.length - 1\n  }\n\n  return compileTrust(compileRangeSubnets(trust))\n}\n\n/**\n * Compile `arr` elements into range subnets.\n *\n * @param {Array} arr\n * @private\n */\n\nfunction compileRangeSubnets (arr) {\n  var rangeSubnets = new Array(arr.length)\n\n  for (var i = 0; i < arr.length; i++) {\n    rangeSubnets[i] = parseipNotation(arr[i])\n  }\n\n  return rangeSubnets\n}\n\n/**\n * Compile range subnet array into trust function.\n *\n * @param {Array} rangeSubnets\n * @private\n */\n\nfunction compileTrust (rangeSubnets) {\n  // Return optimized function based on length\n  var len = rangeSubnets.length\n  return len === 0\n    ? trustNone\n    : len === 1\n      ? trustSingle(rangeSubnets[0])\n      : trustMulti(rangeSubnets)\n}\n\n/**\n * Parse IP notation string into range subnet.\n *\n * @param {String} note\n * @private\n */\n\nfunction parseipNotation (note) {\n  var pos = note.lastIndexOf('/')\n  var str = pos !== -1\n    ? note.substring(0, pos)\n    : note\n\n  if (!isip(str)) {\n    throw new TypeError('invalid IP address: ' + str)\n  }\n\n  var ip = parseip(str)\n\n  if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {\n    // Store as IPv4\n    ip = ip.toIPv4Address()\n  }\n\n  var max = ip.kind() === 'ipv6'\n    ? 128\n    : 32\n\n  var range = pos !== -1\n    ? note.substring(pos + 1, note.length)\n    : null\n\n  if (range === null) {\n    range = max\n  } else if (DIGIT_REGEXP.test(range)) {\n    range = parseInt(range, 10)\n  } else if (ip.kind() === 'ipv4' && isip(range)) {\n    range = parseNetmask(range)\n  } else {\n    range = null\n  }\n\n  if (range <= 0 || range > max) {\n    throw new TypeError('invalid range on address: ' + note)\n  }\n\n  return [ip, range]\n}\n\n/**\n * Parse netmask string into CIDR range.\n *\n * @param {String} netmask\n * @private\n */\n\nfunction parseNetmask (netmask) {\n  var ip = parseip(netmask)\n  var kind = ip.kind()\n\n  return kind === 'ipv4'\n    ? ip.prefixLengthFromSubnetMask()\n    : null\n}\n\n/**\n * Determine address of proxied request.\n *\n * @param {Object} request\n * @param {Function|Array|String} trust\n * @public\n */\n\nfunction proxyaddr (req, trust) {\n  if (!req) {\n    throw new TypeError('req argument is required')\n  }\n\n  if (!trust) {\n    throw new TypeError('trust argument is required')\n  }\n\n  var addrs = alladdrs(req, trust)\n  var addr = addrs[addrs.length - 1]\n\n  return addr\n}\n\n/**\n * Static trust function to trust nothing.\n *\n * @private\n */\n\nfunction trustNone () {\n  return false\n}\n\n/**\n * Compile trust function for multiple subnets.\n *\n * @param {Array} subnets\n * @private\n */\n\nfunction trustMulti (subnets) {\n  return function trust (addr) {\n    if (!isip(addr)) return false\n\n    var ip = parseip(addr)\n    var ipconv\n    var kind = ip.kind()\n\n    for (var i = 0; i < subnets.length; i++) {\n      var subnet = subnets[i]\n      var subnetip = subnet[0]\n      var subnetkind = subnetip.kind()\n      var subnetrange = subnet[1]\n      var trusted = ip\n\n      if (kind !== subnetkind) {\n        if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) {\n          // Incompatible IP addresses\n          continue\n        }\n\n        if (!ipconv) {\n          // Convert IP to match subnet IP kind\n          ipconv = subnetkind === 'ipv4'\n            ? ip.toIPv4Address()\n            : ip.toIPv4MappedAddress()\n        }\n\n        trusted = ipconv\n      }\n\n      if (trusted.match(subnetip, subnetrange)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n/**\n * Compile trust function for single subnet.\n *\n * @param {Object} subnet\n * @private\n */\n\nfunction trustSingle (subnet) {\n  var subnetip = subnet[0]\n  var subnetkind = subnetip.kind()\n  var subnetisipv4 = subnetkind === 'ipv4'\n  var subnetrange = subnet[1]\n\n  return function trust (addr) {\n    if (!isip(addr)) return false\n\n    var ip = parseip(addr)\n    var kind = ip.kind()\n\n    if (kind !== subnetkind) {\n      if (subnetisipv4 && !ip.isIPv4MappedAddress()) {\n        // Incompatible IP addresses\n        return false\n      }\n\n      // Convert IP to match subnet IP kind\n      ip = subnetisipv4\n        ? ip.toIPv4Address()\n        : ip.toIPv4MappedAddress()\n    }\n\n    return ip.match(subnetip, subnetrange)\n  }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @api private\n */\n\nvar { METHODS } = require('node:http');\nvar contentType = require('content-type');\nvar etag = require('etag');\nvar mime = require('mime-types')\nvar proxyaddr = require('proxy-addr');\nvar qs = require('qs');\nvar querystring = require('node:querystring');\nconst { Buffer } = require('node:buffer');\n\n\n/**\n * A list of lowercased HTTP methods that are supported by Node.js.\n * @api private\n */\nexports.methods = METHODS.map((method) => method.toLowerCase());\n\n/**\n * Return strong ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.etag = createETagGenerator({ weak: false })\n\n/**\n * Return weak ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.wetag = createETagGenerator({ weak: true })\n\n/**\n * Normalize the given `type`, for example \"html\" becomes \"text/html\".\n *\n * @param {String} type\n * @return {Object}\n * @api private\n */\n\nexports.normalizeType = function(type){\n  return ~type.indexOf('/')\n    ? acceptParams(type)\n    : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} }\n};\n\n/**\n * Normalize `types`, for example \"html\" becomes \"text/html\".\n *\n * @param {Array} types\n * @return {Array}\n * @api private\n */\n\nexports.normalizeTypes = function(types) {\n  return types.map(exports.normalizeType);\n};\n\n\n/**\n * Parse accept params `str` returning an\n * object with `.value`, `.quality` and `.params`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction acceptParams (str) {\n  var length = str.length;\n  var colonIndex = str.indexOf(';');\n  var index = colonIndex === -1 ? length : colonIndex;\n  var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} };\n\n  while (index < length) {\n    var splitIndex = str.indexOf('=', index);\n    if (splitIndex === -1) break;\n\n    var colonIndex = str.indexOf(';', index);\n    var endIndex = colonIndex === -1 ? length : colonIndex;\n\n    if (splitIndex > endIndex) {\n      index = str.lastIndexOf(';', splitIndex - 1) + 1;\n      continue;\n    }\n\n    var key = str.slice(index, splitIndex).trim();\n    var value = str.slice(splitIndex + 1, endIndex).trim();\n\n    if (key === 'q') {\n      ret.quality = parseFloat(value);\n    } else {\n      ret.params[key] = value;\n    }\n\n    index = endIndex + 1;\n  }\n\n  return ret;\n}\n\n/**\n * Compile \"etag\" value to function.\n *\n * @param  {Boolean|String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileETag = function(val) {\n  var fn;\n\n  if (typeof val === 'function') {\n    return val;\n  }\n\n  switch (val) {\n    case true:\n    case 'weak':\n      fn = exports.wetag;\n      break;\n    case false:\n      break;\n    case 'strong':\n      fn = exports.etag;\n      break;\n    default:\n      throw new TypeError('unknown value for etag function: ' + val);\n  }\n\n  return fn;\n}\n\n/**\n * Compile \"query parser\" value to function.\n *\n * @param  {String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileQueryParser = function compileQueryParser(val) {\n  var fn;\n\n  if (typeof val === 'function') {\n    return val;\n  }\n\n  switch (val) {\n    case true:\n    case 'simple':\n      fn = querystring.parse;\n      break;\n    case false:\n      break;\n    case 'extended':\n      fn = parseExtendedQueryString;\n      break;\n    default:\n      throw new TypeError('unknown value for query parser function: ' + val);\n  }\n\n  return fn;\n}\n\n/**\n * Compile \"proxy trust\" value to function.\n *\n * @param  {Boolean|String|Number|Array|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileTrust = function(val) {\n  if (typeof val === 'function') return val;\n\n  if (val === true) {\n    // Support plain true/false\n    return function(){ return true };\n  }\n\n  if (typeof val === 'number') {\n    // Support trusting hop count\n    return function(a, i){ return i < val };\n  }\n\n  if (typeof val === 'string') {\n    // Support comma-separated values\n    val = val.split(',')\n      .map(function (v) { return v.trim() })\n  }\n\n  return proxyaddr.compile(val || []);\n}\n\n/**\n * Set the charset in a given Content-Type string.\n *\n * @param {String} type\n * @param {String} charset\n * @return {String}\n * @api private\n */\n\nexports.setCharset = function setCharset(type, charset) {\n  if (!type || !charset) {\n    return type;\n  }\n\n  // parse type\n  var parsed = contentType.parse(type);\n\n  // set charset\n  parsed.parameters.charset = charset;\n\n  // format type\n  return contentType.format(parsed);\n};\n\n/**\n * Create an ETag generator function, generating ETags with\n * the given options.\n *\n * @param {object} options\n * @return {function}\n * @private\n */\n\nfunction createETagGenerator (options) {\n  return function generateETag (body, encoding) {\n    var buf = !Buffer.isBuffer(body)\n      ? Buffer.from(body, encoding)\n      : body\n\n    return etag(buf, options)\n  }\n}\n\n/**\n * Parse an extended query string with qs.\n *\n * @param {String} str\n * @return {Object}\n * @private\n */\n\nfunction parseExtendedQueryString(str) {\n  return qs.parse(str, {\n    allowPrototypes: true\n  });\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n  if (fn && cb) return wrappy(fn)(cb)\n\n  if (typeof fn !== 'function')\n    throw new TypeError('need wrapper function')\n\n  Object.keys(fn).forEach(function (k) {\n    wrapper[k] = fn[k]\n  })\n\n  return wrapper\n\n  function wrapper() {\n    var args = new Array(arguments.length)\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n    var ret = fn.apply(this, args)\n    var cb = args[args.length-1]\n    if (typeof ret === 'function' && ret !== cb) {\n      Object.keys(cb).forEach(function (k) {\n        ret[k] = cb[k]\n      })\n    }\n    return ret\n  }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n  Object.defineProperty(Function.prototype, 'once', {\n    value: function () {\n      return once(this)\n    },\n    configurable: true\n  })\n\n  Object.defineProperty(Function.prototype, 'onceStrict', {\n    value: function () {\n      return onceStrict(this)\n    },\n    configurable: true\n  })\n})\n\nfunction once (fn) {\n  var f = function () {\n    if (f.called) return f.value\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  f.called = false\n  return f\n}\n\nfunction onceStrict (fn) {\n  var f = function () {\n    if (f.called)\n      throw new Error(f.onceError)\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  var name = fn.name || 'Function wrapped with `once`'\n  f.onceError = name + \" shouldn't be called more than once\"\n  f.called = false\n  return f\n}\n", "module.exports = isPromise;\nmodule.exports.default = isPromise;\n\nfunction isPromise(obj) {\n  return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "const DEFAULT_DELIMITER = \"/\";\nconst NOOP_VALUE = (value: string) => value;\nconst ID_START = /^[$_\\p{ID_Start}]$/u;\nconst ID_CONTINUE = /^[$\\u200c\\u200d\\p{ID_Continue}]$/u;\nconst ID = /^[$_\\p{ID_Start}][$\\u200c\\u200d\\p{ID_Continue}]*$/u;\n\n/**\n * Encode a string into another string.\n */\nexport type Encode = (value: string) => string;\n\n/**\n * Decode a string into another string.\n */\nexport type Decode = (value: string) => string;\n\nexport interface ParseOptions {\n  /**\n   * A function for encoding input strings.\n   */\n  encodePath?: Encode;\n}\n\nexport interface PathToRegexpOptions {\n  /**\n   * Matches the path completely without trailing characters. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * Allows optional trailing delimiter to match. (default: `true`)\n   */\n  trailing?: boolean;\n  /**\n   * Match will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\nexport interface MatchOptions extends PathToRegexpOptions {\n  /**\n   * Function for decoding strings for params, or `false` to disable entirely. (default: `decodeURIComponent`)\n   */\n  decode?: Decode | false;\n}\n\nexport interface CompileOptions {\n  /**\n   * Function for encoding input strings for output into the path, or `false` to disable entirely. (default: `encodeURIComponent`)\n   */\n  encode?: Encode | false;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\n/**\n * Escape text for stringify to path.\n */\nfunction escapeText(str: string) {\n  return str.replace(/[{}()\\[\\]+?!:*\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escape(str: string) {\n  return str.replace(/[.+*?^${}()[\\]|/\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Plain text.\n */\nexport interface Text {\n  type: \"text\";\n  value: string;\n}\n\n/**\n * A parameter designed to match arbitrary text within a segment.\n */\nexport interface Parameter {\n  type: \"param\";\n  name: string;\n}\n\n/**\n * A wildcard parameter designed to match multiple segments.\n */\nexport interface Wildcard {\n  type: \"wildcard\";\n  name: string;\n}\n\n/**\n * A set of possible tokens to expand when matching.\n */\nexport interface Group {\n  type: \"group\";\n  tokens: Token[];\n}\n\n/**\n * A token that corresponds with a regexp capture.\n */\nexport type Key = Parameter | Wildcard;\n\n/**\n * A sequence of `path-to-regexp` keys that match capturing groups.\n */\nexport type Keys = Array<Key>;\n\n/**\n * A sequence of path match characters.\n */\nexport type Token = Text | Parameter | Wildcard | Group;\n\n/**\n * Tokenized path instance.\n */\nexport class TokenData {\n  constructor(\n    public readonly tokens: Token[],\n    public readonly originalPath?: string,\n  ) {}\n}\n\n/**\n * ParseError is thrown when there is an error processing the path.\n */\nexport class PathError extends TypeError {\n  constructor(\n    message: string,\n    public readonly originalPath: string | undefined,\n  ) {\n    let text = message;\n    if (originalPath) text += `: ${originalPath}`;\n    text += `; visit https://git.new/pathToRegexpError for info`;\n    super(text);\n  }\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): TokenData {\n  const { encodePath = NOOP_VALUE } = options;\n  const chars = [...str];\n  let index = 0;\n\n  function consumeUntil(end: string): Token[] {\n    const output: Token[] = [];\n    let path = \"\";\n\n    function writePath() {\n      if (!path) return;\n      output.push({\n        type: \"text\",\n        value: encodePath(path),\n      });\n      path = \"\";\n    }\n\n    while (index < chars.length) {\n      const value = chars[index++];\n\n      if (value === end) {\n        writePath();\n        return output;\n      }\n\n      if (value === \"\\\\\") {\n        if (index === chars.length) {\n          throw new PathError(`Unexpected end after \\\\ at index ${index}`, str);\n        }\n\n        path += chars[index++];\n        continue;\n      }\n\n      if (value === \":\" || value === \"*\") {\n        const type = value === \":\" ? \"param\" : \"wildcard\";\n        let name = \"\";\n\n        if (ID_START.test(chars[index])) {\n          do {\n            name += chars[index++];\n          } while (ID_CONTINUE.test(chars[index]));\n        } else if (chars[index] === '\"') {\n          let quoteStart = index;\n\n          while (index < chars.length) {\n            if (chars[++index] === '\"') {\n              index++;\n              quoteStart = 0;\n              break;\n            }\n\n            // Increment over escape characters.\n            if (chars[index] === \"\\\\\") index++;\n\n            name += chars[index];\n          }\n\n          if (quoteStart) {\n            throw new PathError(\n              `Unterminated quote at index ${quoteStart}`,\n              str,\n            );\n          }\n        }\n\n        if (!name) {\n          throw new PathError(`Missing parameter name at index ${index}`, str);\n        }\n\n        writePath();\n        output.push({ type, name });\n        continue;\n      }\n\n      if (value === \"{\") {\n        writePath();\n        output.push({\n          type: \"group\",\n          tokens: consumeUntil(\"}\"),\n        });\n        continue;\n      }\n\n      if (\n        value === \"}\" ||\n        value === \"(\" ||\n        value === \")\" ||\n        value === \"[\" ||\n        value === \"]\" ||\n        value === \"+\" ||\n        value === \"?\" ||\n        value === \"!\"\n      ) {\n        throw new PathError(`Unexpected ${value} at index ${index - 1}`, str);\n      }\n\n      path += value;\n    }\n\n    if (end) {\n      throw new PathError(\n        `Unexpected end at index ${index}, expected ${end}`,\n        str,\n      );\n    }\n\n    writePath();\n    return output;\n  }\n\n  return new TokenData(consumeUntil(\"\"), str);\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends ParamData = ParamData>(\n  path: Path,\n  options: CompileOptions & ParseOptions = {},\n) {\n  const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const data = typeof path === \"object\" ? path : parse(path, options);\n  const fn = tokensToFunction(data.tokens, delimiter, encode);\n\n  return function path(params: P = {} as P) {\n    const missing: string[] = [];\n    const path = fn(params, missing);\n\n    if (missing.length) {\n      throw new TypeError(`Missing parameters: ${missing.join(\", \")}`);\n    }\n\n    return path;\n  };\n}\n\nexport type ParamData = Partial<Record<string, string | string[]>>;\nexport type PathFunction<P extends ParamData> = (data?: P) => string;\n\n/**\n * Internal path builder function.\n */\ntype TokenEncoder = (data: ParamData, missing: string[]) => string;\n\nfunction tokensToFunction(\n  tokens: Token[],\n  delimiter: string,\n  encode: Encode | false,\n): TokenEncoder {\n  const encoders = tokens.map((token) =>\n    tokenToFunction(token, delimiter, encode),\n  );\n\n  return (data: ParamData, missing: string[]) => {\n    let result = \"\";\n\n    for (const encoder of encoders) {\n      result += encoder(data, missing);\n    }\n\n    return result;\n  };\n}\n\n/**\n * Convert a single token into a path building function.\n */\nfunction tokenToFunction(\n  token: Token,\n  delimiter: string,\n  encode: Encode | false,\n): TokenEncoder {\n  if (token.type === \"text\") return () => token.value;\n\n  if (token.type === \"group\") {\n    const fn = tokensToFunction(token.tokens, delimiter, encode);\n\n    return (data, missing) => {\n      const len = missing.length;\n      const value = fn(data, missing);\n      if (missing.length === len) return value;\n\n      missing.length = len; // Reset optional group.\n      return \"\";\n    };\n  }\n\n  const encodeValue = encode || NOOP_VALUE;\n\n  if (token.type === \"wildcard\" && encode !== false) {\n    return (data, missing) => {\n      const value = data[token.name];\n      if (value == null) {\n        missing.push(token.name);\n        return \"\";\n      }\n\n      if (!Array.isArray(value) || value.length === 0) {\n        throw new TypeError(`Expected \"${token.name}\" to be a non-empty array`);\n      }\n\n      let result = \"\";\n\n      for (let i = 0; i < value.length; i++) {\n        if (typeof value[i] !== \"string\") {\n          throw new TypeError(`Expected \"${token.name}/${i}\" to be a string`);\n        }\n\n        if (i > 0) result += delimiter;\n        result += encodeValue(value[i]);\n      }\n\n      return result;\n    };\n  }\n\n  return (data, missing) => {\n    const value = data[token.name];\n    if (value == null) {\n      missing.push(token.name);\n      return \"\";\n    }\n\n    if (typeof value !== \"string\") {\n      throw new TypeError(`Expected \"${token.name}\" to be a string`);\n    }\n\n    return encodeValue(value);\n  };\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends ParamData> {\n  path: string;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends ParamData> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends ParamData> = (path: string) => Match<P>;\n\n/**\n * Supported path types.\n */\nexport type Path = string | TokenData;\n\n/**\n * Transform a path into a match function.\n */\nexport function match<P extends ParamData>(\n  path: Path | Path[],\n  options: MatchOptions & ParseOptions = {},\n): MatchFunction<P> {\n  const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const { regexp, keys } = pathToRegexp(path, options);\n\n  const decoders = keys.map((key) => {\n    if (decode === false) return NOOP_VALUE;\n    if (key.type === \"param\") return decode;\n    return (value: string) => value.split(delimiter).map(decode);\n  });\n\n  return function match(input: string) {\n    const m = regexp.exec(input);\n    if (!m) return false;\n\n    const path = m[0];\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n      const decoder = decoders[i - 1];\n      params[key.name] = decoder(m[i]);\n    }\n\n    return { path, params };\n  };\n}\n\n/**\n * Transform a path into a regular expression and capture keys.\n */\nexport function pathToRegexp(\n  path: Path | Path[],\n  options: PathToRegexpOptions & ParseOptions = {},\n) {\n  const {\n    delimiter = DEFAULT_DELIMITER,\n    end = true,\n    sensitive = false,\n    trailing = true,\n  } = options;\n  const keys: Keys = [];\n  let source = \"\";\n  let combinations = 0;\n\n  function process(path: Path | Path[]) {\n    if (Array.isArray(path)) {\n      for (const p of path) process(p);\n      return;\n    }\n\n    const data = typeof path === \"object\" ? path : parse(path, options);\n    flatten(data.tokens, 0, [], (tokens) => {\n      if (combinations >= 256) {\n        throw new PathError(\"Too many path combinations\", data.originalPath);\n      }\n\n      if (combinations > 0) source += \"|\";\n      source += toRegExpSource(tokens, delimiter, keys, data.originalPath);\n      combinations++;\n    });\n  }\n\n  process(path);\n\n  let pattern = `^(?:${source})`;\n  if (trailing) pattern += \"(?:\" + escape(delimiter) + \"$)?\";\n  pattern += end ? \"$\" : \"(?=\" + escape(delimiter) + \"|$)\";\n\n  return { regexp: new RegExp(pattern, sensitive ? \"\" : \"i\"), keys };\n}\n\n/**\n * Generate a flat list of sequence tokens from the given tokens.\n */\nfunction flatten(\n  tokens: Token[],\n  index: number,\n  result: Exclude<Token, Group>[],\n  callback: (result: Exclude<Token, Group>[]) => void,\n): void {\n  while (index < tokens.length) {\n    const token = tokens[index++];\n\n    if (token.type === \"group\") {\n      const len = result.length;\n      flatten(token.tokens, 0, result, (seq) =>\n        flatten(tokens, index, seq, callback),\n      );\n      result.length = len;\n      continue;\n    }\n\n    result.push(token);\n  }\n\n  callback(result);\n}\n\n/**\n * Transform a flat sequence of tokens into a regular expression.\n */\nfunction toRegExpSource(\n  tokens: Exclude<Token, Group>[],\n  delimiter: string,\n  keys: Keys,\n  originalPath: string | undefined,\n): string {\n  let result = \"\";\n  let backtrack = \"\";\n  let wildcardBacktrack = \"\";\n  let prevCaptureType: 0 | 1 | 2 = 0;\n  let hasSegmentCapture = 0;\n  let index = 0;\n\n  function hasInSegment(index: number, type: Token[\"type\"]) {\n    while (index < tokens.length) {\n      const token = tokens[index++];\n      if (token.type === type) return true;\n      if (token.type === \"text\") {\n        if (token.value.includes(delimiter)) break;\n      }\n    }\n    return false;\n  }\n\n  function peekText(index: number) {\n    let result = \"\";\n    while (index < tokens.length) {\n      const token = tokens[index++];\n      if (token.type !== \"text\") break;\n      result += token.value;\n    }\n    return result;\n  }\n\n  while (index < tokens.length) {\n    const token = tokens[index++];\n\n    if (token.type === \"text\") {\n      result += escape(token.value);\n      backtrack += token.value;\n      if (prevCaptureType === 2) wildcardBacktrack += token.value;\n      if (token.value.includes(delimiter)) hasSegmentCapture = 0;\n      continue;\n    }\n\n    if (token.type === \"param\" || token.type === \"wildcard\") {\n      if (prevCaptureType && !backtrack) {\n        throw new PathError(\n          `Missing text before \"${token.name}\" ${token.type}`,\n          originalPath,\n        );\n      }\n\n      if (token.type === \"param\") {\n        result +=\n          hasSegmentCapture & 2 // Seen wildcard in segment.\n            ? `(${negate(delimiter, backtrack)}+)`\n            : hasInSegment(index, \"wildcard\") // See wildcard later in segment.\n              ? `(${negate(delimiter, peekText(index))}+)`\n              : hasSegmentCapture & 1 // Seen parameter in segment.\n                ? `(${negate(delimiter, backtrack)}+|${escape(backtrack)})`\n                : `(${negate(delimiter, \"\")}+)`;\n\n        hasSegmentCapture |= prevCaptureType = 1;\n      } else {\n        result +=\n          hasSegmentCapture & 2 // Seen wildcard in segment.\n            ? `(${negate(backtrack, \"\")}+)`\n            : wildcardBacktrack // No capture in segment, seen wildcard in path.\n              ? `(${negate(wildcardBacktrack, \"\")}+|${negate(delimiter, \"\")}+)`\n              : `([^]+)`;\n\n        wildcardBacktrack = \"\";\n        hasSegmentCapture |= prevCaptureType = 2;\n      }\n\n      keys.push(token);\n      backtrack = \"\";\n      continue;\n    }\n\n    throw new TypeError(`Unknown token type: ${(token as any).type}`);\n  }\n\n  return result;\n}\n\n/**\n * Block backtracking on previous text/delimiter.\n */\nfunction negate(a: string, b: string): string {\n  if (b.length > a.length) return negate(b, a); // Longest string first.\n\n  if (a === b) b = \"\"; // Cleaner regex strings, no duplication.\n  if (b.length > 1) return `(?:(?!${escape(a)}|${escape(b)})[^])`;\n  if (a.length > 1) return `(?:(?!${escape(a)})[^${escape(b)}])`;\n  return `[^${escape(a + b)}]`;\n}\n\n/**\n * Stringify an array of tokens into a path string.\n */\nfunction stringifyTokens(tokens: Token[], index: number): string {\n  let value = \"\";\n\n  while (index < tokens.length) {\n    const token = tokens[index++];\n\n    if (token.type === \"text\") {\n      value += escapeText(token.value);\n      continue;\n    }\n\n    if (token.type === \"group\") {\n      value += \"{\" + stringifyTokens(token.tokens, 0) + \"}\";\n      continue;\n    }\n\n    if (token.type === \"param\") {\n      value += \":\" + stringifyName(token.name, tokens[index]);\n      continue;\n    }\n\n    if (token.type === \"wildcard\") {\n      value += \"*\" + stringifyName(token.name, tokens[index]);\n      continue;\n    }\n\n    throw new TypeError(`Unknown token type: ${(token as any).type}`);\n  }\n\n  return value;\n}\n\n/**\n * Stringify token data into a path string.\n */\nexport function stringify(data: TokenData): string {\n  return stringifyTokens(data.tokens, 0);\n}\n\n/**\n * Stringify a parameter name, escaping when it cannot be emitted directly.\n */\nfunction stringifyName(name: string, next: Token | undefined): string {\n  if (!ID.test(name)) return JSON.stringify(name);\n\n  if (next?.type === \"text\" && ID_CONTINUE.test(next.value[0])) {\n    return JSON.stringify(name);\n  }\n\n  return name;\n}\n", "/*!\n * router\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nconst isPromise = require('is-promise')\nconst pathRegexp = require('path-to-regexp')\nconst debug = require('debug')('router:layer')\nconst deprecate = require('depd')('router')\n\n/**\n * Module variables.\n * @private\n */\n\nconst TRAILING_SLASH_REGEXP = /\\/+$/\nconst MATCHING_GROUP_REGEXP = /\\((?:\\?<(.*?)>)?(?!\\?)/g\n\n/**\n * Expose `Layer`.\n */\n\nmodule.exports = Layer\n\nfunction Layer (path, options, fn) {\n  if (!(this instanceof Layer)) {\n    return new Layer(path, options, fn)\n  }\n\n  debug('new %o', path)\n  const opts = options || {}\n\n  this.handle = fn\n  this.keys = []\n  this.name = fn.name || '<anonymous>'\n  this.params = undefined\n  this.path = undefined\n  this.slash = path === '/' && opts.end === false\n\n  function matcher (_path) {\n    if (_path instanceof RegExp) {\n      const keys = []\n      let name = 0\n      let m\n      // eslint-disable-next-line no-cond-assign\n      while (m = MATCHING_GROUP_REGEXP.exec(_path.source)) {\n        keys.push({\n          name: m[1] || name++,\n          offset: m.index\n        })\n      }\n\n      return function regexpMatcher (p) {\n        const match = _path.exec(p)\n        if (!match) {\n          return false\n        }\n\n        const params = {}\n        for (let i = 1; i < match.length; i++) {\n          const key = keys[i - 1]\n          const prop = key.name\n          const val = decodeParam(match[i])\n\n          if (val !== undefined) {\n            params[prop] = val\n          }\n        }\n\n        return {\n          params,\n          path: match[0]\n        }\n      }\n    }\n\n    return pathRegexp.match((opts.strict ? _path : loosen(_path)), {\n      sensitive: opts.sensitive,\n      end: opts.end,\n      trailing: !opts.strict,\n      decode: decodeParam\n    })\n  }\n  this.matchers = Array.isArray(path) ? path.map(matcher) : [matcher(path)]\n}\n\n/**\n * Handle the error for the layer.\n *\n * @param {Error} error\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handleError = function handleError (error, req, res, next) {\n  const fn = this.handle\n\n  if (fn.length !== 4) {\n    // not a standard error handler\n    return next(error)\n  }\n\n  try {\n    // invoke function\n    const ret = fn(error, req, res, next)\n\n    // wait for returned promise\n    if (isPromise(ret)) {\n      if (!(ret instanceof Promise)) {\n        deprecate('handlers that are Promise-like are deprecated, use a native Promise instead')\n      }\n\n      ret.then(null, function (error) {\n        next(error || new Error('Rejected promise'))\n      })\n    }\n  } catch (err) {\n    next(err)\n  }\n}\n\n/**\n * Handle the request for the layer.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handleRequest = function handleRequest (req, res, next) {\n  const fn = this.handle\n\n  if (fn.length > 3) {\n    // not a standard request handler\n    return next()\n  }\n\n  try {\n    // invoke function\n    const ret = fn(req, res, next)\n\n    // wait for returned promise\n    if (isPromise(ret)) {\n      if (!(ret instanceof Promise)) {\n        deprecate('handlers that are Promise-like are deprecated, use a native Promise instead')\n      }\n\n      ret.then(null, function (error) {\n        next(error || new Error('Rejected promise'))\n      })\n    }\n  } catch (err) {\n    next(err)\n  }\n}\n\n/**\n * Check if this route matches `path`, if so\n * populate `.params`.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nLayer.prototype.match = function match (path) {\n  let match\n\n  if (path != null) {\n    // fast path non-ending match for / (any path matches)\n    if (this.slash) {\n      this.params = {}\n      this.path = ''\n      return true\n    }\n\n    let i = 0\n    while (!match && i < this.matchers.length) {\n      // match the path\n      match = this.matchers[i](path)\n      i++\n    }\n  }\n\n  if (!match) {\n    this.params = undefined\n    this.path = undefined\n    return false\n  }\n\n  // store values\n  this.params = match.params\n  this.path = match.path\n  this.keys = Object.keys(match.params)\n\n  return true\n}\n\n/**\n * Decode param value.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction decodeParam (val) {\n  if (typeof val !== 'string' || val.length === 0) {\n    return val\n  }\n\n  try {\n    return decodeURIComponent(val)\n  } catch (err) {\n    if (err instanceof URIError) {\n      err.message = 'Failed to decode param \\'' + val + '\\''\n      err.status = 400\n    }\n\n    throw err\n  }\n}\n\n/**\n * Loosens the given path for path-to-regexp matching.\n */\nfunction loosen (path) {\n  if (path instanceof RegExp || path === '/') {\n    return path\n  }\n\n  return Array.isArray(path)\n    ? path.map(function (p) { return loosen(p) })\n    : String(path).replace(TRAILING_SLASH_REGEXP, '')\n}\n", "/*!\n * router\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nconst debug = require('debug')('router:route')\nconst Layer = require('./layer')\nconst { METHODS } = require('node:http')\n\n/**\n * Module variables.\n * @private\n */\n\nconst slice = Array.prototype.slice\nconst flatten = Array.prototype.flat\nconst methods = METHODS.map((method) => method.toLowerCase())\n\n/**\n * Expose `Route`.\n */\n\nmodule.exports = Route\n\n/**\n * Initialize `Route` with the given `path`,\n *\n * @param {String} path\n * @api private\n */\n\nfunction Route (path) {\n  debug('new %o', path)\n  this.path = path\n  this.stack = []\n\n  // route handlers for various http methods\n  this.methods = Object.create(null)\n}\n\n/**\n * @private\n */\n\nRoute.prototype._handlesMethod = function _handlesMethod (method) {\n  if (this.methods._all) {\n    return true\n  }\n\n  // normalize name\n  let name = typeof method === 'string'\n    ? method.toLowerCase()\n    : method\n\n  if (name === 'head' && !this.methods.head) {\n    name = 'get'\n  }\n\n  return Boolean(this.methods[name])\n}\n\n/**\n * @return {array} supported HTTP methods\n * @private\n */\n\nRoute.prototype._methods = function _methods () {\n  const methods = Object.keys(this.methods)\n\n  // append automatic head\n  if (this.methods.get && !this.methods.head) {\n    methods.push('head')\n  }\n\n  for (let i = 0; i < methods.length; i++) {\n    // make upper case\n    methods[i] = methods[i].toUpperCase()\n  }\n\n  return methods\n}\n\n/**\n * dispatch req, res into this route\n *\n * @private\n */\n\nRoute.prototype.dispatch = function dispatch (req, res, done) {\n  let idx = 0\n  const stack = this.stack\n  let sync = 0\n\n  if (stack.length === 0) {\n    return done()\n  }\n\n  let method = typeof req.method === 'string'\n    ? req.method.toLowerCase()\n    : req.method\n\n  if (method === 'head' && !this.methods.head) {\n    method = 'get'\n  }\n\n  req.route = this\n\n  next()\n\n  function next (err) {\n    // signal to exit route\n    if (err && err === 'route') {\n      return done()\n    }\n\n    // signal to exit router\n    if (err && err === 'router') {\n      return done(err)\n    }\n\n    // no more matching layers\n    if (idx >= stack.length) {\n      return done(err)\n    }\n\n    // max sync stack\n    if (++sync > 100) {\n      return setImmediate(next, err)\n    }\n\n    let layer\n    let match\n\n    // find next matching layer\n    while (match !== true && idx < stack.length) {\n      layer = stack[idx++]\n      match = !layer.method || layer.method === method\n    }\n\n    // no match\n    if (match !== true) {\n      return done(err)\n    }\n\n    if (err) {\n      layer.handleError(err, req, res, next)\n    } else {\n      layer.handleRequest(req, res, next)\n    }\n\n    sync = 0\n  }\n}\n\n/**\n * Add a handler for all HTTP verbs to this route.\n *\n * Behaves just like middleware and can respond or call `next`\n * to continue processing.\n *\n * You can use multiple `.all` call to add multiple handlers.\n *\n *   function check_something(req, res, next){\n *     next()\n *   }\n *\n *   function validate_user(req, res, next){\n *     next()\n *   }\n *\n *   route\n *   .all(validate_user)\n *   .all(check_something)\n *   .get(function(req, res, next){\n *     res.send('hello world')\n *   })\n *\n * @param {array|function} handler\n * @return {Route} for chaining\n * @api public\n */\n\nRoute.prototype.all = function all (handler) {\n  const callbacks = flatten.call(slice.call(arguments), Infinity)\n\n  if (callbacks.length === 0) {\n    throw new TypeError('argument handler is required')\n  }\n\n  for (let i = 0; i < callbacks.length; i++) {\n    const fn = callbacks[i]\n\n    if (typeof fn !== 'function') {\n      throw new TypeError('argument handler must be a function')\n    }\n\n    const layer = Layer('/', {}, fn)\n    layer.method = undefined\n\n    this.methods._all = true\n    this.stack.push(layer)\n  }\n\n  return this\n}\n\nmethods.forEach(function (method) {\n  Route.prototype[method] = function (handler) {\n    const callbacks = flatten.call(slice.call(arguments), Infinity)\n\n    if (callbacks.length === 0) {\n      throw new TypeError('argument handler is required')\n    }\n\n    for (let i = 0; i < callbacks.length; i++) {\n      const fn = callbacks[i]\n\n      if (typeof fn !== 'function') {\n        throw new TypeError('argument handler must be a function')\n      }\n\n      debug('%s %s', method, this.path)\n\n      const layer = Layer('/', {}, fn)\n      layer.method = method\n\n      this.methods[method] = true\n      this.stack.push(layer)\n    }\n\n    return this\n  }\n})\n", "/*!\n * router\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nconst isPromise = require('is-promise')\nconst Layer = require('./lib/layer')\nconst { METHODS } = require('node:http')\nconst parseUrl = require('parseurl')\nconst Route = require('./lib/route')\nconst debug = require('debug')('router')\nconst deprecate = require('depd')('router')\n\n/**\n * Module variables.\n * @private\n */\n\nconst slice = Array.prototype.slice\nconst flatten = Array.prototype.flat\nconst methods = METHODS.map((method) => method.toLowerCase())\n\n/**\n * Expose `Router`.\n */\n\nmodule.exports = Router\n\n/**\n * Expose `Route`.\n */\n\nmodule.exports.Route = Route\n\n/**\n * Initialize a new `Router` with the given `options`.\n *\n * @param {object} [options]\n * @return {Router} which is a callable function\n * @public\n */\n\nfunction Router (options) {\n  if (!(this instanceof Router)) {\n    return new Router(options)\n  }\n\n  const opts = options || {}\n\n  function router (req, res, next) {\n    router.handle(req, res, next)\n  }\n\n  // inherit from the correct prototype\n  Object.setPrototypeOf(router, this)\n\n  router.caseSensitive = opts.caseSensitive\n  router.mergeParams = opts.mergeParams\n  router.params = {}\n  router.strict = opts.strict\n  router.stack = []\n\n  return router\n}\n\n/**\n * Router prototype inherits from a Function.\n */\n\n/* istanbul ignore next */\nRouter.prototype = function () {}\n\n/**\n * Map the given param placeholder `name`(s) to the given callback.\n *\n * Parameter mapping is used to provide pre-conditions to routes\n * which use normalized placeholders. For example a _:user_id_ parameter\n * could automatically load a user's information from the database without\n * any additional code.\n *\n * The callback uses the same signature as middleware, the only difference\n * being that the value of the placeholder is passed, in this case the _id_\n * of the user. Once the `next()` function is invoked, just like middleware\n * it will continue on to execute the route, or subsequent parameter functions.\n *\n * Just like in middleware, you must either respond to the request or call next\n * to avoid stalling the request.\n *\n *  router.param('user_id', function(req, res, next, id){\n *    User.find(id, function(err, user){\n *      if (err) {\n *        return next(err)\n *      } else if (!user) {\n *        return next(new Error('failed to load user'))\n *      }\n *      req.user = user\n *      next()\n *    })\n *  })\n *\n * @param {string} name\n * @param {function} fn\n * @public\n */\n\nRouter.prototype.param = function param (name, fn) {\n  if (!name) {\n    throw new TypeError('argument name is required')\n  }\n\n  if (typeof name !== 'string') {\n    throw new TypeError('argument name must be a string')\n  }\n\n  if (!fn) {\n    throw new TypeError('argument fn is required')\n  }\n\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  let params = this.params[name]\n\n  if (!params) {\n    params = this.params[name] = []\n  }\n\n  params.push(fn)\n\n  return this\n}\n\n/**\n * Dispatch a req, res into the router.\n *\n * @private\n */\n\nRouter.prototype.handle = function handle (req, res, callback) {\n  if (!callback) {\n    throw new TypeError('argument callback is required')\n  }\n\n  debug('dispatching %s %s', req.method, req.url)\n\n  let idx = 0\n  let methods\n  const protohost = getProtohost(req.url) || ''\n  let removed = ''\n  const self = this\n  let slashAdded = false\n  let sync = 0\n  const paramcalled = {}\n\n  // middleware and routes\n  const stack = this.stack\n\n  // manage inter-router variables\n  const parentParams = req.params\n  const parentUrl = req.baseUrl || ''\n  let done = restore(callback, req, 'baseUrl', 'next', 'params')\n\n  // setup next layer\n  req.next = next\n\n  // for options requests, respond with a default if nothing else responds\n  if (req.method === 'OPTIONS') {\n    methods = []\n    done = wrap(done, generateOptionsResponder(res, methods))\n  }\n\n  // setup basic req values\n  req.baseUrl = parentUrl\n  req.originalUrl = req.originalUrl || req.url\n\n  next()\n\n  function next (err) {\n    let layerError = err === 'route'\n      ? null\n      : err\n\n    // remove added slash\n    if (slashAdded) {\n      req.url = req.url.slice(1)\n      slashAdded = false\n    }\n\n    // restore altered req.url\n    if (removed.length !== 0) {\n      req.baseUrl = parentUrl\n      req.url = protohost + removed + req.url.slice(protohost.length)\n      removed = ''\n    }\n\n    // signal to exit router\n    if (layerError === 'router') {\n      setImmediate(done, null)\n      return\n    }\n\n    // no more matching layers\n    if (idx >= stack.length) {\n      setImmediate(done, layerError)\n      return\n    }\n\n    // max sync stack\n    if (++sync > 100) {\n      return setImmediate(next, err)\n    }\n\n    // get pathname of request\n    const path = getPathname(req)\n\n    if (path == null) {\n      return done(layerError)\n    }\n\n    // find next matching layer\n    let layer\n    let match\n    let route\n\n    while (match !== true && idx < stack.length) {\n      layer = stack[idx++]\n      match = matchLayer(layer, path)\n      route = layer.route\n\n      if (typeof match !== 'boolean') {\n        // hold on to layerError\n        layerError = layerError || match\n      }\n\n      if (match !== true) {\n        continue\n      }\n\n      if (!route) {\n        // process non-route handlers normally\n        continue\n      }\n\n      if (layerError) {\n        // routes do not match with a pending error\n        match = false\n        continue\n      }\n\n      const method = req.method\n      const hasMethod = route._handlesMethod(method)\n\n      // build up automatic options response\n      if (!hasMethod && method === 'OPTIONS' && methods) {\n        methods.push.apply(methods, route._methods())\n      }\n\n      // don't even bother matching route\n      if (!hasMethod && method !== 'HEAD') {\n        match = false\n      }\n    }\n\n    // no match\n    if (match !== true) {\n      return done(layerError)\n    }\n\n    // store route for dispatch on change\n    if (route) {\n      req.route = route\n    }\n\n    // Capture one-time layer values\n    req.params = self.mergeParams\n      ? mergeParams(layer.params, parentParams)\n      : layer.params\n    const layerPath = layer.path\n\n    // this should be done for the layer\n    processParams(self.params, layer, paramcalled, req, res, function (err) {\n      if (err) {\n        next(layerError || err)\n      } else if (route) {\n        layer.handleRequest(req, res, next)\n      } else {\n        trimPrefix(layer, layerError, layerPath, path)\n      }\n\n      sync = 0\n    })\n  }\n\n  function trimPrefix (layer, layerError, layerPath, path) {\n    if (layerPath.length !== 0) {\n      // Validate path is a prefix match\n      if (layerPath !== path.substring(0, layerPath.length)) {\n        next(layerError)\n        return\n      }\n\n      // Validate path breaks on a path separator\n      const c = path[layerPath.length]\n      if (c && c !== '/') {\n        next(layerError)\n        return\n      }\n\n      // Trim off the part of the url that matches the route\n      // middleware (.use stuff) needs to have the path stripped\n      debug('trim prefix (%s) from url %s', layerPath, req.url)\n      removed = layerPath\n      req.url = protohost + req.url.slice(protohost.length + removed.length)\n\n      // Ensure leading slash\n      if (!protohost && req.url[0] !== '/') {\n        req.url = '/' + req.url\n        slashAdded = true\n      }\n\n      // Setup base URL (no trailing slash)\n      req.baseUrl = parentUrl + (removed[removed.length - 1] === '/'\n        ? removed.substring(0, removed.length - 1)\n        : removed)\n    }\n\n    debug('%s %s : %s', layer.name, layerPath, req.originalUrl)\n\n    if (layerError) {\n      layer.handleError(layerError, req, res, next)\n    } else {\n      layer.handleRequest(req, res, next)\n    }\n  }\n}\n\n/**\n * Use the given middleware function, with optional path, defaulting to \"/\".\n *\n * Use (like `.all`) will run for any http METHOD, but it will not add\n * handlers for those methods so OPTIONS requests will not consider `.use`\n * functions even if they could respond.\n *\n * The other difference is that _route_ path is stripped and not visible\n * to the handler function. The main effect of this feature is that mounted\n * handlers can operate without any code changes regardless of the \"prefix\"\n * pathname.\n *\n * @public\n */\n\nRouter.prototype.use = function use (handler) {\n  let offset = 0\n  let path = '/'\n\n  // default path to '/'\n  // disambiguate router.use([handler])\n  if (typeof handler !== 'function') {\n    let arg = handler\n\n    while (Array.isArray(arg) && arg.length !== 0) {\n      arg = arg[0]\n    }\n\n    // first arg is the path\n    if (typeof arg !== 'function') {\n      offset = 1\n      path = handler\n    }\n  }\n\n  const callbacks = flatten.call(slice.call(arguments, offset), Infinity)\n\n  if (callbacks.length === 0) {\n    throw new TypeError('argument handler is required')\n  }\n\n  for (let i = 0; i < callbacks.length; i++) {\n    const fn = callbacks[i]\n\n    if (typeof fn !== 'function') {\n      throw new TypeError('argument handler must be a function')\n    }\n\n    // add the middleware\n    debug('use %o %s', path, fn.name || '<anonymous>')\n\n    const layer = new Layer(path, {\n      sensitive: this.caseSensitive,\n      strict: false,\n      end: false\n    }, fn)\n\n    layer.route = undefined\n\n    this.stack.push(layer)\n  }\n\n  return this\n}\n\n/**\n * Create a new Route for the given path.\n *\n * Each route contains a separate middleware stack and VERB handlers.\n *\n * See the Route api documentation for details on adding handlers\n * and middleware to routes.\n *\n * @param {string} path\n * @return {Route}\n * @public\n */\n\nRouter.prototype.route = function route (path) {\n  const route = new Route(path)\n\n  const layer = new Layer(path, {\n    sensitive: this.caseSensitive,\n    strict: this.strict,\n    end: true\n  }, handle)\n\n  function handle (req, res, next) {\n    route.dispatch(req, res, next)\n  }\n\n  layer.route = route\n\n  this.stack.push(layer)\n  return route\n}\n\n// create Router#VERB functions\nmethods.concat('all').forEach(function (method) {\n  Router.prototype[method] = function (path) {\n    const route = this.route(path)\n    route[method].apply(route, slice.call(arguments, 1))\n    return this\n  }\n})\n\n/**\n * Generate a callback that will make an OPTIONS response.\n *\n * @param {OutgoingMessage} res\n * @param {array} methods\n * @private\n */\n\nfunction generateOptionsResponder (res, methods) {\n  return function onDone (fn, err) {\n    if (err || methods.length === 0) {\n      return fn(err)\n    }\n\n    trySendOptionsResponse(res, methods, fn)\n  }\n}\n\n/**\n * Get pathname of request.\n *\n * @param {IncomingMessage} req\n * @private\n */\n\nfunction getPathname (req) {\n  try {\n    return parseUrl(req).pathname\n  } catch (err) {\n    return undefined\n  }\n}\n\n/**\n * Get get protocol + host for a URL.\n *\n * @param {string} url\n * @private\n */\n\nfunction getProtohost (url) {\n  if (typeof url !== 'string' || url.length === 0 || url[0] === '/') {\n    return undefined\n  }\n\n  const searchIndex = url.indexOf('?')\n  const pathLength = searchIndex !== -1\n    ? searchIndex\n    : url.length\n  const fqdnIndex = url.substring(0, pathLength).indexOf('://')\n\n  return fqdnIndex !== -1\n    ? url.substring(0, url.indexOf('/', 3 + fqdnIndex))\n    : undefined\n}\n\n/**\n * Match path to a layer.\n *\n * @param {Layer} layer\n * @param {string} path\n * @private\n */\n\nfunction matchLayer (layer, path) {\n  try {\n    return layer.match(path)\n  } catch (err) {\n    return err\n  }\n}\n\n/**\n * Merge params with parent params\n *\n * @private\n */\n\nfunction mergeParams (params, parent) {\n  if (typeof parent !== 'object' || !parent) {\n    return params\n  }\n\n  // make copy of parent for base\n  const obj = Object.assign({}, parent)\n\n  // simple non-numeric merging\n  if (!(0 in params) || !(0 in parent)) {\n    return Object.assign(obj, params)\n  }\n\n  let i = 0\n  let o = 0\n\n  // determine numeric gap in params\n  while (i in params) {\n    i++\n  }\n\n  // determine numeric gap in parent\n  while (o in parent) {\n    o++\n  }\n\n  // offset numeric indices in params before merge\n  for (i--; i >= 0; i--) {\n    params[i + o] = params[i]\n\n    // create holes for the merge when necessary\n    if (i < o) {\n      delete params[i]\n    }\n  }\n\n  return Object.assign(obj, params)\n}\n\n/**\n * Process any parameters for the layer.\n *\n * @private\n */\n\nfunction processParams (params, layer, called, req, res, done) {\n  // captured parameters from the layer, keys and values\n  const keys = layer.keys\n\n  // fast track\n  if (!keys || keys.length === 0) {\n    return done()\n  }\n\n  let i = 0\n  let paramIndex = 0\n  let key\n  let paramVal\n  let paramCallbacks\n  let paramCalled\n\n  // process params in order\n  // param callbacks can be async\n  function param (err) {\n    if (err) {\n      return done(err)\n    }\n\n    if (i >= keys.length) {\n      return done()\n    }\n\n    paramIndex = 0\n    key = keys[i++]\n    paramVal = req.params[key]\n    paramCallbacks = params[key]\n    paramCalled = called[key]\n\n    if (paramVal === undefined || !paramCallbacks) {\n      return param()\n    }\n\n    // param previously called with same value or error occurred\n    if (paramCalled && (paramCalled.match === paramVal ||\n      (paramCalled.error && paramCalled.error !== 'route'))) {\n      // restore value\n      req.params[key] = paramCalled.value\n\n      // next param\n      return param(paramCalled.error)\n    }\n\n    called[key] = paramCalled = {\n      error: null,\n      match: paramVal,\n      value: paramVal\n    }\n\n    paramCallback()\n  }\n\n  // single param callbacks\n  function paramCallback (err) {\n    const fn = paramCallbacks[paramIndex++]\n\n    // store updated value\n    paramCalled.value = req.params[key]\n\n    if (err) {\n      // store error\n      paramCalled.error = err\n      param(err)\n      return\n    }\n\n    if (!fn) return param()\n\n    try {\n      const ret = fn(req, res, paramCallback, paramVal, key)\n      if (isPromise(ret)) {\n        if (!(ret instanceof Promise)) {\n          deprecate('parameters that are Promise-like are deprecated, use a native Promise instead')\n        }\n\n        ret.then(null, function (error) {\n          paramCallback(error || new Error('Rejected promise'))\n        })\n      }\n    } catch (e) {\n      paramCallback(e)\n    }\n  }\n\n  param()\n}\n\n/**\n * Restore obj props after function\n *\n * @private\n */\n\nfunction restore (fn, obj) {\n  const props = new Array(arguments.length - 2)\n  const vals = new Array(arguments.length - 2)\n\n  for (let i = 0; i < props.length; i++) {\n    props[i] = arguments[i + 2]\n    vals[i] = obj[props[i]]\n  }\n\n  return function () {\n    // restore vals\n    for (let i = 0; i < props.length; i++) {\n      obj[props[i]] = vals[i]\n    }\n\n    return fn.apply(this, arguments)\n  }\n}\n\n/**\n * Send an OPTIONS response.\n *\n * @private\n */\n\nfunction sendOptionsResponse (res, methods) {\n  const options = Object.create(null)\n\n  // build unique method map\n  for (let i = 0; i < methods.length; i++) {\n    options[methods[i]] = true\n  }\n\n  // construct the allow list\n  const allow = Object.keys(options).sort().join(', ')\n\n  // send response\n  res.setHeader('Allow', allow)\n  res.setHeader('Content-Length', Buffer.byteLength(allow))\n  res.setHeader('Content-Type', 'text/plain')\n  res.setHeader('X-Content-Type-Options', 'nosniff')\n  res.end(allow)\n}\n\n/**\n * Try to send an OPTIONS response.\n *\n * @private\n */\n\nfunction trySendOptionsResponse (res, methods, next) {\n  try {\n    sendOptionsResponse(res, methods)\n  } catch (err) {\n    next(err)\n  }\n}\n\n/**\n * Wrap a function\n *\n * @private\n */\n\nfunction wrap (old, fn) {\n  return function proxy () {\n    const args = new Array(arguments.length + 1)\n\n    args[0] = old\n    for (let i = 0, len = arguments.length; i < len; i++) {\n      args[i + 1] = arguments[i]\n    }\n\n    fn.apply(this, args)\n  }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar finalhandler = require('finalhandler');\nvar debug = require('debug')('express:application');\nvar View = require('./view');\nvar http = require('node:http');\nvar methods = require('./utils').methods;\nvar compileETag = require('./utils').compileETag;\nvar compileQueryParser = require('./utils').compileQueryParser;\nvar compileTrust = require('./utils').compileTrust;\nvar resolve = require('node:path').resolve;\nvar once = require('once')\nvar Router = require('router');\n\n/**\n * Module variables.\n * @private\n */\n\nvar slice = Array.prototype.slice;\nvar flatten = Array.prototype.flat;\n\n/**\n * Application prototype.\n */\n\nvar app = exports = module.exports = {};\n\n/**\n * Variable for trust proxy inheritance back-compat\n * @private\n */\n\nvar trustProxyDefaultSymbol = '@@symbol:trust_proxy_default';\n\n/**\n * Initialize the server.\n *\n *   - setup default configuration\n *   - setup default middleware\n *   - setup route reflection methods\n *\n * @private\n */\n\napp.init = function init() {\n  var router = null;\n\n  this.cache = Object.create(null);\n  this.engines = Object.create(null);\n  this.settings = Object.create(null);\n\n  this.defaultConfiguration();\n\n  // Setup getting to lazily add base router\n  Object.defineProperty(this, 'router', {\n    configurable: true,\n    enumerable: true,\n    get: function getrouter() {\n      if (router === null) {\n        router = new Router({\n          caseSensitive: this.enabled('case sensitive routing'),\n          strict: this.enabled('strict routing')\n        });\n      }\n\n      return router;\n    }\n  });\n};\n\n/**\n * Initialize application configuration.\n * @private\n */\n\napp.defaultConfiguration = function defaultConfiguration() {\n  var env = process.env.NODE_ENV || 'development';\n\n  // default settings\n  this.enable('x-powered-by');\n  this.set('etag', 'weak');\n  this.set('env', env);\n  this.set('query parser', 'simple')\n  this.set('subdomain offset', 2);\n  this.set('trust proxy', false);\n\n  // trust proxy inherit back-compat\n  Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n    configurable: true,\n    value: true\n  });\n\n  debug('booting in %s mode', env);\n\n  this.on('mount', function onmount(parent) {\n    // inherit trust proxy\n    if (this.settings[trustProxyDefaultSymbol] === true\n      && typeof parent.settings['trust proxy fn'] === 'function') {\n      delete this.settings['trust proxy'];\n      delete this.settings['trust proxy fn'];\n    }\n\n    // inherit protos\n    Object.setPrototypeOf(this.request, parent.request)\n    Object.setPrototypeOf(this.response, parent.response)\n    Object.setPrototypeOf(this.engines, parent.engines)\n    Object.setPrototypeOf(this.settings, parent.settings)\n  });\n\n  // setup locals\n  this.locals = Object.create(null);\n\n  // top-most app is mounted at /\n  this.mountpath = '/';\n\n  // default locals\n  this.locals.settings = this.settings;\n\n  // default configuration\n  this.set('view', View);\n  this.set('views', resolve('views'));\n  this.set('jsonp callback name', 'callback');\n\n  if (env === 'production') {\n    this.enable('view cache');\n  }\n};\n\n/**\n * Dispatch a req, res pair into the application. Starts pipeline processing.\n *\n * If no callback is provided, then default error handlers will respond\n * in the event of an error bubbling through the stack.\n *\n * @private\n */\n\napp.handle = function handle(req, res, callback) {\n  // final handler\n  var done = callback || finalhandler(req, res, {\n    env: this.get('env'),\n    onerror: logerror.bind(this)\n  });\n\n  // set powered by header\n  if (this.enabled('x-powered-by')) {\n    res.setHeader('X-Powered-By', 'Express');\n  }\n\n  // set circular references\n  req.res = res;\n  res.req = req;\n\n  // alter the prototypes\n  Object.setPrototypeOf(req, this.request)\n  Object.setPrototypeOf(res, this.response)\n\n  // setup locals\n  if (!res.locals) {\n    res.locals = Object.create(null);\n  }\n\n  this.router.handle(req, res, done);\n};\n\n/**\n * Proxy `Router#use()` to add middleware to the app router.\n * See Router#use() documentation for details.\n *\n * If the _fn_ parameter is an express app, then it will be\n * mounted at the _route_ specified.\n *\n * @public\n */\n\napp.use = function use(fn) {\n  var offset = 0;\n  var path = '/';\n\n  // default path to '/'\n  // disambiguate app.use([fn])\n  if (typeof fn !== 'function') {\n    var arg = fn;\n\n    while (Array.isArray(arg) && arg.length !== 0) {\n      arg = arg[0];\n    }\n\n    // first arg is the path\n    if (typeof arg !== 'function') {\n      offset = 1;\n      path = fn;\n    }\n  }\n\n  var fns = flatten.call(slice.call(arguments, offset), Infinity);\n\n  if (fns.length === 0) {\n    throw new TypeError('app.use() requires a middleware function')\n  }\n\n  // get router\n  var router = this.router;\n\n  fns.forEach(function (fn) {\n    // non-express app\n    if (!fn || !fn.handle || !fn.set) {\n      return router.use(path, fn);\n    }\n\n    debug('.use app under %s', path);\n    fn.mountpath = path;\n    fn.parent = this;\n\n    // restore .app property on req and res\n    router.use(path, function mounted_app(req, res, next) {\n      var orig = req.app;\n      fn.handle(req, res, function (err) {\n        Object.setPrototypeOf(req, orig.request)\n        Object.setPrototypeOf(res, orig.response)\n        next(err);\n      });\n    });\n\n    // mounted an app\n    fn.emit('mount', this);\n  }, this);\n\n  return this;\n};\n\n/**\n * Proxy to the app `Router#route()`\n * Returns a new `Route` instance for the _path_.\n *\n * Routes are isolated middleware stacks for specific paths.\n * See the Route api docs for details.\n *\n * @public\n */\n\napp.route = function route(path) {\n  return this.router.route(path);\n};\n\n/**\n * Register the given template engine callback `fn`\n * as `ext`.\n *\n * By default will `require()` the engine based on the\n * file extension. For example if you try to render\n * a \"foo.ejs\" file Express will invoke the following internally:\n *\n *     app.engine('ejs', require('ejs').__express);\n *\n * For engines that do not provide `.__express` out of the box,\n * or if you wish to \"map\" a different extension to the template engine\n * you may use this method. For example mapping the EJS template engine to\n * \".html\" files:\n *\n *     app.engine('html', require('ejs').renderFile);\n *\n * In this case EJS provides a `.renderFile()` method with\n * the same signature that Express expects: `(path, options, callback)`,\n * though note that it aliases this method as `ejs.__express` internally\n * so if you're using \".ejs\" extensions you don't need to do anything.\n *\n * Some template engines do not follow this convention, the\n * [Consolidate.js](https://github.com/tj/consolidate.js)\n * library was created to map all of node's popular template\n * engines to follow this convention, thus allowing them to\n * work seamlessly within Express.\n *\n * @param {String} ext\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.engine = function engine(ext, fn) {\n  if (typeof fn !== 'function') {\n    throw new Error('callback function required');\n  }\n\n  // get file extension\n  var extension = ext[0] !== '.'\n    ? '.' + ext\n    : ext;\n\n  // store engine\n  this.engines[extension] = fn;\n\n  return this;\n};\n\n/**\n * Proxy to `Router#param()` with one added api feature. The _name_ parameter\n * can be an array of names.\n *\n * See the Router#param() docs for more details.\n *\n * @param {String|Array} name\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.param = function param(name, fn) {\n  if (Array.isArray(name)) {\n    for (var i = 0; i < name.length; i++) {\n      this.param(name[i], fn);\n    }\n\n    return this;\n  }\n\n  this.router.param(name, fn);\n\n  return this;\n};\n\n/**\n * Assign `setting` to `val`, or return `setting`'s value.\n *\n *    app.set('foo', 'bar');\n *    app.set('foo');\n *    // => \"bar\"\n *\n * Mounted servers inherit their parent server's settings.\n *\n * @param {String} setting\n * @param {*} [val]\n * @return {Server} for chaining\n * @public\n */\n\napp.set = function set(setting, val) {\n  if (arguments.length === 1) {\n    // app.get(setting)\n    return this.settings[setting];\n  }\n\n  debug('set \"%s\" to %o', setting, val);\n\n  // set value\n  this.settings[setting] = val;\n\n  // trigger matched settings\n  switch (setting) {\n    case 'etag':\n      this.set('etag fn', compileETag(val));\n      break;\n    case 'query parser':\n      this.set('query parser fn', compileQueryParser(val));\n      break;\n    case 'trust proxy':\n      this.set('trust proxy fn', compileTrust(val));\n\n      // trust proxy inherit back-compat\n      Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n        configurable: true,\n        value: false\n      });\n\n      break;\n  }\n\n  return this;\n};\n\n/**\n * Return the app's absolute pathname\n * based on the parent(s) that have\n * mounted it.\n *\n * For example if the application was\n * mounted as \"/admin\", which itself\n * was mounted as \"/blog\" then the\n * return value would be \"/blog/admin\".\n *\n * @return {String}\n * @private\n */\n\napp.path = function path() {\n  return this.parent\n    ? this.parent.path() + this.mountpath\n    : '';\n};\n\n/**\n * Check if `setting` is enabled (truthy).\n *\n *    app.enabled('foo')\n *    // => false\n *\n *    app.enable('foo')\n *    app.enabled('foo')\n *    // => true\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.enabled = function enabled(setting) {\n  return Boolean(this.set(setting));\n};\n\n/**\n * Check if `setting` is disabled.\n *\n *    app.disabled('foo')\n *    // => true\n *\n *    app.enable('foo')\n *    app.disabled('foo')\n *    // => false\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.disabled = function disabled(setting) {\n  return !this.set(setting);\n};\n\n/**\n * Enable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.enable = function enable(setting) {\n  return this.set(setting, true);\n};\n\n/**\n * Disable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.disable = function disable(setting) {\n  return this.set(setting, false);\n};\n\n/**\n * Delegate `.VERB(...)` calls to `router.VERB(...)`.\n */\n\nmethods.forEach(function (method) {\n  app[method] = function (path) {\n    if (method === 'get' && arguments.length === 1) {\n      // app.get(setting)\n      return this.set(path);\n    }\n\n    var route = this.route(path);\n    route[method].apply(route, slice.call(arguments, 1));\n    return this;\n  };\n});\n\n/**\n * Special-cased \"all\" method, applying the given route `path`,\n * middleware, and callback to _every_ HTTP method.\n *\n * @param {String} path\n * @param {Function} ...\n * @return {app} for chaining\n * @public\n */\n\napp.all = function all(path) {\n  var route = this.route(path);\n  var args = slice.call(arguments, 1);\n\n  for (var i = 0; i < methods.length; i++) {\n    route[methods[i]].apply(route, args);\n  }\n\n  return this;\n};\n\n/**\n * Render the given view `name` name with `options`\n * and a callback accepting an error and the\n * rendered template string.\n *\n * Example:\n *\n *    app.render('email', { name: 'Tobi' }, function(err, html){\n *      // ...\n *    })\n *\n * @param {String} name\n * @param {Object|Function} options or fn\n * @param {Function} callback\n * @public\n */\n\napp.render = function render(name, options, callback) {\n  var cache = this.cache;\n  var done = callback;\n  var engines = this.engines;\n  var opts = options;\n  var view;\n\n  // support callback function as second arg\n  if (typeof options === 'function') {\n    done = options;\n    opts = {};\n  }\n\n  // merge options\n  var renderOptions = { ...this.locals, ...opts._locals, ...opts };\n\n  // set .cache unless explicitly provided\n  if (renderOptions.cache == null) {\n    renderOptions.cache = this.enabled('view cache');\n  }\n\n  // primed cache\n  if (renderOptions.cache) {\n    view = cache[name];\n  }\n\n  // view\n  if (!view) {\n    var View = this.get('view');\n\n    view = new View(name, {\n      defaultEngine: this.get('view engine'),\n      root: this.get('views'),\n      engines: engines\n    });\n\n    if (!view.path) {\n      var dirs = Array.isArray(view.root) && view.root.length > 1\n        ? 'directories \"' + view.root.slice(0, -1).join('\", \"') + '\" or \"' + view.root[view.root.length - 1] + '\"'\n        : 'directory \"' + view.root + '\"'\n      var err = new Error('Failed to lookup view \"' + name + '\" in views ' + dirs);\n      err.view = view;\n      return done(err);\n    }\n\n    // prime the cache\n    if (renderOptions.cache) {\n      cache[name] = view;\n    }\n  }\n\n  // render\n  tryRender(view, renderOptions, done);\n};\n\n/**\n * Listen for connections.\n *\n * A node `http.Server` is returned, with this\n * application (which is a `Function`) as its\n * callback. If you wish to create both an HTTP\n * and HTTPS server you may do so with the \"http\"\n * and \"https\" modules as shown here:\n *\n *    var http = require('node:http')\n *      , https = require('node:https')\n *      , express = require('express')\n *      , app = express();\n *\n *    http.createServer(app).listen(80);\n *    https.createServer({ ... }, app).listen(443);\n *\n * @return {http.Server}\n * @public\n */\n\napp.listen = function listen() {\n  var server = http.createServer(this)\n  var args = slice.call(arguments)\n  if (typeof args[args.length - 1] === 'function') {\n    var done = args[args.length - 1] = once(args[args.length - 1])\n    server.once('error', done)\n  }\n  return server.listen.apply(server, args)\n}\n\n/**\n * Log error using console.error.\n *\n * @param {Error} err\n * @private\n */\n\nfunction logerror(err) {\n  /* istanbul ignore next */\n  if (this.get('env') !== 'test') console.error(err.stack || err.toString());\n}\n\n/**\n * Try rendering a view.\n * @private\n */\n\nfunction tryRender(view, options, callback) {\n  try {\n    view.render(options, callback);\n  } catch (err) {\n    callback(err);\n  }\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var charset = parseCharset(accepts[i].trim(), i);\n\n    if (charset) {\n      accepts[j++] = charset;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n  var match = simpleCharsetRegExp.exec(str);\n  if (!match) return null;\n\n  var charset = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    charset: charset,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(charset, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n  var s = 0;\n  if(spec.charset.toLowerCase() === charset.toLowerCase()){\n    s |= 1;\n  } else if (spec.charset !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n  // RFC 2616 sec 14.2: no header = *\n  var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all charsets\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullCharset);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getCharsetPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted charsets\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n  return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n  var accepts = accept.split(',');\n  var hasIdentity = false;\n  var minQuality = 1;\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var encoding = parseEncoding(accepts[i].trim(), i);\n\n    if (encoding) {\n      accepts[j++] = encoding;\n      hasIdentity = hasIdentity || specify('identity', encoding);\n      minQuality = Math.min(minQuality, encoding.q || 1);\n    }\n  }\n\n  if (!hasIdentity) {\n    /*\n     * If identity doesn't explicitly appear in the accept-encoding header,\n     * it's added to the list of acceptable encoding with the lowest q\n     */\n    accepts[j++] = {\n      encoding: 'identity',\n      q: minQuality,\n      i: i\n    };\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n  var match = simpleEncodingRegExp.exec(str);\n  if (!match) return null;\n\n  var encoding = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';');\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    encoding: encoding,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n  var priority = {encoding: encoding, o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(encoding, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n  var s = 0;\n  if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n    s |= 1;\n  } else if (spec.encoding !== '*' ) {\n    return null\n  }\n\n  return {\n    encoding: encoding,\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided, preferred) {\n  var accepts = parseAcceptEncoding(accept || '');\n\n  var comparator = preferred ? function comparator (a, b) {\n    if (a.q !== b.q) {\n      return b.q - a.q // higher quality first\n    }\n\n    var aPreferred = preferred.indexOf(a.encoding)\n    var bPreferred = preferred.indexOf(b.encoding)\n\n    if (aPreferred === -1 && bPreferred === -1) {\n      // consider the original specifity/order\n      return (b.s - a.s) || (a.o - b.o) || (a.i - b.i)\n    }\n\n    if (aPreferred !== -1 && bPreferred !== -1) {\n      return aPreferred - bPreferred // consider the preferred order\n    }\n\n    return aPreferred === -1 ? 1 : -1 // preferred first\n  } : compareSpecs;\n\n  if (!provided) {\n    // sorted list of all encodings\n    return accepts\n      .filter(isQuality)\n      .sort(comparator)\n      .map(getFullEncoding);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getEncodingPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted encodings\n  return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i);\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n  return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var language = parseLanguage(accepts[i].trim(), i);\n\n    if (language) {\n      accepts[j++] = language;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n  var match = simpleLanguageRegExp.exec(str);\n  if (!match) return null;\n\n  var prefix = match[1]\n  var suffix = match[2]\n  var full = prefix\n\n  if (suffix) full += \"-\" + suffix;\n\n  var q = 1;\n  if (match[3]) {\n    var params = match[3].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].split('=');\n      if (p[0] === 'q') q = parseFloat(p[1]);\n    }\n  }\n\n  return {\n    prefix: prefix,\n    suffix: suffix,\n    q: q,\n    i: i,\n    full: full\n  };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(language, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n  var p = parseLanguage(language)\n  if (!p) return null;\n  var s = 0;\n  if(spec.full.toLowerCase() === p.full.toLowerCase()){\n    s |= 4;\n  } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n    s |= 2;\n  } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n    s |= 1;\n  } else if (spec.full !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n  // RFC 2616 sec 14.4: no header = *\n  var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all languages\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullLanguage);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getLanguagePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted languages\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n  return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n  var accepts = splitMediaTypes(accept);\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var mediaType = parseMediaType(accepts[i].trim(), i);\n\n    if (mediaType) {\n      accepts[j++] = mediaType;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n  var match = simpleMediaTypeRegExp.exec(str);\n  if (!match) return null;\n\n  var params = Object.create(null);\n  var q = 1;\n  var subtype = match[2];\n  var type = match[1];\n\n  if (match[3]) {\n    var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n    for (var j = 0; j < kvps.length; j++) {\n      var pair = kvps[j];\n      var key = pair[0].toLowerCase();\n      var val = pair[1];\n\n      // get the value, unwrapping quotes\n      var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n        ? val.slice(1, -1)\n        : val;\n\n      if (key === 'q') {\n        q = parseFloat(value);\n        break;\n      }\n\n      // store parameter\n      params[key] = value;\n    }\n  }\n\n  return {\n    type: type,\n    subtype: subtype,\n    params: params,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(type, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n  var p = parseMediaType(type);\n  var s = 0;\n\n  if (!p) {\n    return null;\n  }\n\n  if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n    s |= 4\n  } else if(spec.type != '*') {\n    return null;\n  }\n\n  if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n    s |= 2\n  } else if(spec.subtype != '*') {\n    return null;\n  }\n\n  var keys = Object.keys(spec.params);\n  if (keys.length > 0) {\n    if (keys.every(function (k) {\n      return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n    })) {\n      s |= 1\n    } else {\n      return null\n    }\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s,\n  }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n  // RFC 2616 sec 14.2: no header = */*\n  var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all types\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullType);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getMediaTypePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted types\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n  return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n  var count = 0;\n  var index = 0;\n\n  while ((index = string.indexOf('\"', index)) !== -1) {\n    count++;\n    index++;\n  }\n\n  return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n  var index = str.indexOf('=');\n  var key;\n  var val;\n\n  if (index === -1) {\n    key = str;\n  } else {\n    key = str.slice(0, index);\n    val = str.slice(index + 1);\n  }\n\n  return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 1, j = 0; i < accepts.length; i++) {\n    if (quoteCount(accepts[j]) % 2 == 0) {\n      accepts[++j] = accepts[i];\n    } else {\n      accepts[j] += ',' + accepts[i];\n    }\n  }\n\n  // trim accepts\n  accepts.length = j + 1;\n\n  return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n  var parameters = str.split(';');\n\n  for (var i = 1, j = 0; i < parameters.length; i++) {\n    if (quoteCount(parameters[j]) % 2 == 0) {\n      parameters[++j] = parameters[i];\n    } else {\n      parameters[j] += ';' + parameters[i];\n    }\n  }\n\n  // trim parameters\n  parameters.length = j + 1;\n\n  for (var i = 0; i < parameters.length; i++) {\n    parameters[i] = parameters[i].trim();\n  }\n\n  return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n  if (!(this instanceof Negotiator)) {\n    return new Negotiator(request);\n  }\n\n  this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n  var set = this.charsets(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n  return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available, opts) {\n  var set = this.encodings(available, opts);\n  return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available, options) {\n  var opts = options || {};\n  return preferredEncodings(this.request.headers['accept-encoding'], available, opts.preferred);\n};\n\nNegotiator.prototype.language = function language(available) {\n  var set = this.languages(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n  return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n  var set = this.mediaTypes(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n  return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = require('negotiator')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n  if (!(this instanceof Accepts)) {\n    return new Accepts(req)\n  }\n\n  this.headers = req.headers\n  this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n *     // Accept: text/html\n *     this.types('html');\n *     // => \"html\"\n *\n *     // Accept: text/*, application/json\n *     this.types('html');\n *     // => \"html\"\n *     this.types('text/html');\n *     // => \"text/html\"\n *     this.types('json', 'text');\n *     // => \"json\"\n *     this.types('application/json');\n *     // => \"application/json\"\n *\n *     // Accept: text/*, application/json\n *     this.types('image/png');\n *     this.types('png');\n *     // => undefined\n *\n *     // Accept: text/*;q=.5, application/json\n *     this.types(['html', 'json']);\n *     this.types('html', 'json');\n *     // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n  var types = types_\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i]\n    }\n  }\n\n  // no types, return all requested types\n  if (!types || types.length === 0) {\n    return this.negotiator.mediaTypes()\n  }\n\n  // no accept header, return first given type\n  if (!this.headers.accept) {\n    return types[0]\n  }\n\n  var mimes = types.map(extToMime)\n  var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n  var first = accepts[0]\n\n  return first\n    ? types[mimes.indexOf(first)]\n    : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n *     ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n  var encodings = encodings_\n\n  // support flattened arguments\n  if (encodings && !Array.isArray(encodings)) {\n    encodings = new Array(arguments.length)\n    for (var i = 0; i < encodings.length; i++) {\n      encodings[i] = arguments[i]\n    }\n  }\n\n  // no encodings, return all requested encodings\n  if (!encodings || encodings.length === 0) {\n    return this.negotiator.encodings()\n  }\n\n  return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n *     ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n  var charsets = charsets_\n\n  // support flattened arguments\n  if (charsets && !Array.isArray(charsets)) {\n    charsets = new Array(arguments.length)\n    for (var i = 0; i < charsets.length; i++) {\n      charsets[i] = arguments[i]\n    }\n  }\n\n  // no charsets, return all requested charsets\n  if (!charsets || charsets.length === 0) {\n    return this.negotiator.charsets()\n  }\n\n  return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n *     ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n  var languages = languages_\n\n  // support flattened arguments\n  if (languages && !Array.isArray(languages)) {\n    languages = new Array(arguments.length)\n    for (var i = 0; i < languages.length; i++) {\n      languages[i] = arguments[i]\n    }\n  }\n\n  // no languages, return all requested languages\n  if (!languages || languages.length === 0) {\n    return this.negotiator.languages()\n  }\n\n  return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {Boolean}\n * @private\n */\n\nfunction validMime (type) {\n  return typeof type === 'string'\n}\n", "/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n  // fields\n  var modifiedSince = reqHeaders['if-modified-since']\n  var noneMatch = reqHeaders['if-none-match']\n\n  // unconditional request\n  if (!modifiedSince && !noneMatch) {\n    return false\n  }\n\n  // Always return stale when Cache-Control: no-cache\n  // to support end-to-end reload requests\n  // https://tools.ietf.org/html/rfc2616#section-14.9.4\n  var cacheControl = reqHeaders['cache-control']\n  if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n    return false\n  }\n\n  // if-none-match takes precedent over if-modified-since\n  if (noneMatch) {\n    if (noneMatch === '*') {\n      return true\n    }\n    var etag = resHeaders.etag\n\n    if (!etag) {\n      return false\n    }\n\n    var matches = parseTokenList(noneMatch)\n    for (var i = 0; i < matches.length; i++) {\n      var match = matches[i]\n      if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  // if-modified-since\n  if (modifiedSince) {\n    var lastModified = resHeaders['last-modified']\n    var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n    if (modifiedStale) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n  var timestamp = date && Date.parse(date)\n\n  // istanbul ignore next: guard against date.js Date.parse patching\n  return typeof timestamp === 'number'\n    ? timestamp\n    : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = str.length; i < len; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(str.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(str.substring(start, end))\n\n  return list\n}\n", "/*!\n * range-parser\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = rangeParser\n\n/**\n * Parse \"Range\" header `str` relative to the given file `size`.\n *\n * @param {Number} size\n * @param {String} str\n * @param {Object} [options]\n * @return {Array}\n * @public\n */\n\nfunction rangeParser (size, str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string')\n  }\n\n  var index = str.indexOf('=')\n\n  if (index === -1) {\n    return -2\n  }\n\n  // split the range string\n  var arr = str.slice(index + 1).split(',')\n  var ranges = []\n\n  // add ranges type\n  ranges.type = str.slice(0, index)\n\n  // parse all ranges\n  for (var i = 0; i < arr.length; i++) {\n    var range = arr[i].split('-')\n    var start = parseInt(range[0], 10)\n    var end = parseInt(range[1], 10)\n\n    // -nnn\n    if (isNaN(start)) {\n      start = size - end\n      end = size - 1\n    // nnn-\n    } else if (isNaN(end)) {\n      end = size - 1\n    }\n\n    // limit last-byte-pos to current length\n    if (end > size - 1) {\n      end = size - 1\n    }\n\n    // invalid or unsatisifiable\n    if (isNaN(start) || isNaN(end) || start > end || start < 0) {\n      continue\n    }\n\n    // add range\n    ranges.push({\n      start: start,\n      end: end\n    })\n  }\n\n  if (ranges.length < 1) {\n    // unsatisifiable\n    return -1\n  }\n\n  return options && options.combine\n    ? combineRanges(ranges)\n    : ranges\n}\n\n/**\n * Combine overlapping & adjacent ranges.\n * @private\n */\n\nfunction combineRanges (ranges) {\n  var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)\n\n  for (var j = 0, i = 1; i < ordered.length; i++) {\n    var range = ordered[i]\n    var current = ordered[j]\n\n    if (range.start > current.end + 1) {\n      // next range\n      ordered[++j] = range\n    } else if (range.end > current.end) {\n      // extend range\n      current.end = range.end\n      current.index = Math.min(current.index, range.index)\n    }\n  }\n\n  // trim ordered array\n  ordered.length = j + 1\n\n  // generate combined range\n  var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)\n\n  // copy ranges type\n  combined.type = ranges.type\n\n  return combined\n}\n\n/**\n * Map function to add index value to ranges.\n * @private\n */\n\nfunction mapWithIndex (range, index) {\n  return {\n    start: range.start,\n    end: range.end,\n    index: index\n  }\n}\n\n/**\n * Map function to remove index value from ranges.\n * @private\n */\n\nfunction mapWithoutIndex (range) {\n  return {\n    start: range.start,\n    end: range.end\n  }\n}\n\n/**\n * Sort function to sort ranges by index.\n * @private\n */\n\nfunction sortByRangeIndex (a, b) {\n  return a.index - b.index\n}\n\n/**\n * Sort function to sort ranges by start position.\n * @private\n */\n\nfunction sortByRangeStart (a, b) {\n  return a.start - b.start\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar accepts = require('accepts');\nvar isIP = require('node:net').isIP;\nvar typeis = require('type-is');\nvar http = require('node:http');\nvar fresh = require('fresh');\nvar parseRange = require('range-parser');\nvar parse = require('parseurl');\nvar proxyaddr = require('proxy-addr');\n\n/**\n * Request prototype.\n * @public\n */\n\nvar req = Object.create(http.IncomingMessage.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = req\n\n/**\n * Return request header.\n *\n * The `Referrer` header field is special-cased,\n * both `Referrer` and `Referer` are interchangeable.\n *\n * Examples:\n *\n *     req.get('Content-Type');\n *     // => \"text/plain\"\n *\n *     req.get('content-type');\n *     // => \"text/plain\"\n *\n *     req.get('Something');\n *     // => undefined\n *\n * Aliased as `req.header()`.\n *\n * @param {String} name\n * @return {String}\n * @public\n */\n\nreq.get =\nreq.header = function header(name) {\n  if (!name) {\n    throw new TypeError('name argument is required to req.get');\n  }\n\n  if (typeof name !== 'string') {\n    throw new TypeError('name must be a string to req.get');\n  }\n\n  var lc = name.toLowerCase();\n\n  switch (lc) {\n    case 'referer':\n    case 'referrer':\n      return this.headers.referrer\n        || this.headers.referer;\n    default:\n      return this.headers[lc];\n  }\n};\n\n/**\n * To do: update docs.\n *\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single MIME type string\n * such as \"application/json\", an extension name\n * such as \"json\", a comma-delimited list such as \"json, html, text/plain\",\n * an argument list such as `\"json\", \"html\", \"text/plain\"`,\n * or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given, the _best_ match, if any is returned.\n *\n * Examples:\n *\n *     // Accept: text/html\n *     req.accepts('html');\n *     // => \"html\"\n *\n *     // Accept: text/*, application/json\n *     req.accepts('html');\n *     // => \"html\"\n *     req.accepts('text/html');\n *     // => \"text/html\"\n *     req.accepts('json, text');\n *     // => \"json\"\n *     req.accepts('application/json');\n *     // => \"application/json\"\n *\n *     // Accept: text/*, application/json\n *     req.accepts('image/png');\n *     req.accepts('png');\n *     // => undefined\n *\n *     // Accept: text/*;q=.5, application/json\n *     req.accepts(['html', 'json']);\n *     req.accepts('html', 'json');\n *     req.accepts('html, json');\n *     // => \"json\"\n *\n * @param {String|Array} type(s)\n * @return {String|Array|Boolean}\n * @public\n */\n\nreq.accepts = function(){\n  var accept = accepts(this);\n  return accept.types.apply(accept, arguments);\n};\n\n/**\n * Check if the given `encoding`s are accepted.\n *\n * @param {String} ...encoding\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsEncodings = function(){\n  var accept = accepts(this);\n  return accept.encodings.apply(accept, arguments);\n};\n\n/**\n * Check if the given `charset`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...charset\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsCharsets = function(){\n  var accept = accepts(this);\n  return accept.charsets.apply(accept, arguments);\n};\n\n/**\n * Check if the given `lang`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...lang\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsLanguages = function(...languages) {\n  return accepts(this).languages(...languages);\n};\n\n/**\n * Parse Range header field, capping to the given `size`.\n *\n * Unspecified ranges such as \"0-\" require knowledge of your resource length. In\n * the case of a byte range this is of course the total number of bytes. If the\n * Range header field is not given `undefined` is returned, `-1` when unsatisfiable,\n * and `-2` when syntactically invalid.\n *\n * When ranges are returned, the array has a \"type\" property which is the type of\n * range that is required (most commonly, \"bytes\"). Each array element is an object\n * with a \"start\" and \"end\" property for the portion of the range.\n *\n * The \"combine\" option can be set to `true` and overlapping & adjacent ranges\n * will be combined into a single range.\n *\n * NOTE: remember that ranges are inclusive, so for example \"Range: users=0-3\"\n * should respond with 4 users when available, not 3.\n *\n * @param {number} size\n * @param {object} [options]\n * @param {boolean} [options.combine=false]\n * @return {number|array}\n * @public\n */\n\nreq.range = function range(size, options) {\n  var range = this.get('Range');\n  if (!range) return;\n  return parseRange(size, range, options);\n};\n\n/**\n * Parse the query string of `req.url`.\n *\n * This uses the \"query parser\" setting to parse the raw\n * string into an object.\n *\n * @return {String}\n * @api public\n */\n\ndefineGetter(req, 'query', function query(){\n  var queryparse = this.app.get('query parser fn');\n\n  if (!queryparse) {\n    // parsing is disabled\n    return Object.create(null);\n  }\n\n  var querystring = parse(this).query;\n\n  return queryparse(querystring);\n});\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains the given mime `type`.\n *\n * Examples:\n *\n *      // With Content-Type: text/html; charset=utf-8\n *      req.is('html');\n *      req.is('text/html');\n *      req.is('text/*');\n *      // => true\n *\n *      // When Content-Type is application/json\n *      req.is('json');\n *      req.is('application/json');\n *      req.is('application/*');\n *      // => true\n *\n *      req.is('html');\n *      // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nreq.is = function is(types) {\n  var arr = types;\n\n  // support flattened arguments\n  if (!Array.isArray(types)) {\n    arr = new Array(arguments.length);\n    for (var i = 0; i < arr.length; i++) {\n      arr[i] = arguments[i];\n    }\n  }\n\n  return typeis(this, arr);\n};\n\n/**\n * Return the protocol string \"http\" or \"https\"\n * when requested with TLS. When the \"trust proxy\"\n * setting trusts the socket address, the\n * \"X-Forwarded-Proto\" header field will be trusted\n * and used if present.\n *\n * If you're running behind a reverse proxy that\n * supplies https for you this may be enabled.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'protocol', function protocol(){\n  var proto = this.socket.encrypted\n    ? 'https'\n    : 'http';\n  var trust = this.app.get('trust proxy fn');\n\n  if (!trust(this.socket.remoteAddress, 0)) {\n    return proto;\n  }\n\n  // Note: X-Forwarded-Proto is normally only ever a\n  //       single value, but this is to be safe.\n  var header = this.get('X-Forwarded-Proto') || proto\n  var index = header.indexOf(',')\n\n  return index !== -1\n    ? header.substring(0, index).trim()\n    : header.trim()\n});\n\n/**\n * Short-hand for:\n *\n *    req.protocol === 'https'\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'secure', function secure(){\n  return this.protocol === 'https';\n});\n\n/**\n * Return the remote address from the trusted proxy.\n *\n * The is the remote address on the socket unless\n * \"trust proxy\" is set.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'ip', function ip(){\n  var trust = this.app.get('trust proxy fn');\n  return proxyaddr(this, trust);\n});\n\n/**\n * When \"trust proxy\" is set, trusted proxy addresses + client.\n *\n * For example if the value were \"client, proxy1, proxy2\"\n * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n * where \"proxy2\" is the furthest down-stream and \"proxy1\" and\n * \"proxy2\" were trusted.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'ips', function ips() {\n  var trust = this.app.get('trust proxy fn');\n  var addrs = proxyaddr.all(this, trust);\n\n  // reverse the order (to farthest -> closest)\n  // and remove socket address\n  addrs.reverse().pop()\n\n  return addrs\n});\n\n/**\n * Return subdomains as an array.\n *\n * Subdomains are the dot-separated parts of the host before the main domain of\n * the app. By default, the domain of the app is assumed to be the last two\n * parts of the host. This can be changed by setting \"subdomain offset\".\n *\n * For example, if the domain is \"tobi.ferrets.example.com\":\n * If \"subdomain offset\" is not set, req.subdomains is `[\"ferrets\", \"tobi\"]`.\n * If \"subdomain offset\" is 3, req.subdomains is `[\"tobi\"]`.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'subdomains', function subdomains() {\n  var hostname = this.hostname;\n\n  if (!hostname) return [];\n\n  var offset = this.app.get('subdomain offset');\n  var subdomains = !isIP(hostname)\n    ? hostname.split('.').reverse()\n    : [hostname];\n\n  return subdomains.slice(offset);\n});\n\n/**\n * Short-hand for `url.parse(req.url).pathname`.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'path', function path() {\n  return parse(this).pathname;\n});\n\n/**\n * Parse the \"Host\" header field to a host.\n *\n * When the \"trust proxy\" setting trusts the socket\n * address, the \"X-Forwarded-Host\" header field will\n * be trusted.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'host', function host(){\n  var trust = this.app.get('trust proxy fn');\n  var val = this.get('X-Forwarded-Host');\n\n  if (!val || !trust(this.socket.remoteAddress, 0)) {\n    val = this.get('Host');\n  } else if (val.indexOf(',') !== -1) {\n    // Note: X-Forwarded-Host is normally only ever a\n    //       single value, but this is to be safe.\n    val = val.substring(0, val.indexOf(',')).trimRight()\n  }\n\n  return val || undefined;\n});\n\n/**\n * Parse the \"Host\" header field to a hostname.\n *\n * When the \"trust proxy\" setting trusts the socket\n * address, the \"X-Forwarded-Host\" header field will\n * be trusted.\n *\n * @return {String}\n * @api public\n */\n\ndefineGetter(req, 'hostname', function hostname(){\n  var host = this.host;\n\n  if (!host) return;\n\n  // IPv6 literal support\n  var offset = host[0] === '['\n    ? host.indexOf(']') + 1\n    : 0;\n  var index = host.indexOf(':', offset);\n\n  return index !== -1\n    ? host.substring(0, index)\n    : host;\n});\n\n/**\n * Check if the request is fresh, aka\n * Last-Modified or the ETag\n * still match.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'fresh', function(){\n  var method = this.method;\n  var res = this.res\n  var status = res.statusCode\n\n  // GET or HEAD for weak freshness validation only\n  if ('GET' !== method && 'HEAD' !== method) return false;\n\n  // 2xx or 304 as per rfc2616 14.26\n  if ((status >= 200 && status < 300) || 304 === status) {\n    return fresh(this.headers, {\n      'etag': res.get('ETag'),\n      'last-modified': res.get('Last-Modified')\n    })\n  }\n\n  return false;\n});\n\n/**\n * Check if the request is stale, aka\n * \"Last-Modified\" and / or the \"ETag\" for the\n * resource has changed.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'stale', function stale(){\n  return !this.fresh;\n});\n\n/**\n * Check if the request was an _XMLHttpRequest_.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'xhr', function xhr(){\n  var val = this.get('X-Requested-With') || '';\n  return val.toLowerCase() === 'xmlhttprequest';\n});\n\n/**\n * Helper function for creating a getter on an object.\n *\n * @param {Object} obj\n * @param {String} name\n * @param {Function} getter\n * @private\n */\nfunction defineGetter(obj, name, getter) {\n  Object.defineProperty(obj, name, {\n    configurable: true,\n    enumerable: true,\n    get: getter\n  });\n}\n", "/*!\n * content-disposition\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = contentDisposition\nmodule.exports.parse = parse\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar basename = require('path').basename\n\n/**\n * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including \"%\")\n * @private\n */\n\nvar ENCODE_URL_ATTR_CHAR_REGEXP = /[\\x00-\\x20\"'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match percent encoding escape.\n * @private\n */\n\nvar HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/\nvar HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g\n\n/**\n * RegExp to match non-latin1 characters.\n * @private\n */\n\nvar NON_LATIN1_REGEXP = /[^\\x20-\\x7e\\xa0-\\xff]/g\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n * @private\n */\n\nvar QESC_REGEXP = /\\\\([\\u0000-\\u007f])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n * @private\n */\n\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp for various RFC 2616 grammar\n *\n * parameter     = token \"=\" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *               | \",\" | \";\" | \":\" | \"\\\" | <\">\n *               | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *               | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext        = <any TEXT except <\">>\n * quoted-pair   = \"\\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * HT            = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n * @private\n */\n\nvar PARAM_REGEXP = /;[\\x09\\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*(\"(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*\"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\x20-\\x7e\\x80-\\xff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/\n\n/**\n * RegExp for various RFC 5987 grammar\n *\n * ext-value     = charset  \"'\" [ language ] \"'\" value-chars\n * charset       = \"UTF-8\" / \"ISO-8859-1\" / mime-charset\n * mime-charset  = 1*mime-charsetc\n * mime-charsetc = ALPHA / DIGIT\n *               / \"!\" / \"#\" / \"$\" / \"%\" / \"&\"\n *               / \"+\" / \"-\" / \"^\" / \"_\" / \"`\"\n *               / \"{\" / \"}\" / \"~\"\n * language      = ( 2*3ALPHA [ extlang ] )\n *               / 4ALPHA\n *               / 5*8ALPHA\n * extlang       = *3( \"-\" 3ALPHA )\n * value-chars   = *( pct-encoded / attr-char )\n * pct-encoded   = \"%\" HEXDIG HEXDIG\n * attr-char     = ALPHA / DIGIT\n *               / \"!\" / \"#\" / \"$\" / \"&\" / \"+\" / \"-\" / \".\"\n *               / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * @private\n */\n\nvar EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/\n\n/**\n * RegExp for various RFC 6266 grammar\n *\n * disposition-type = \"inline\" | \"attachment\" | disp-ext-type\n * disp-ext-type    = token\n * disposition-parm = filename-parm | disp-ext-parm\n * filename-parm    = \"filename\" \"=\" value\n *                  | \"filename*\" \"=\" ext-value\n * disp-ext-parm    = token \"=\" value\n *                  | ext-token \"=\" ext-value\n * ext-token        = <the characters in token, followed by \"*\">\n * @private\n */\n\nvar DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/ // eslint-disable-line no-control-regex\n\n/**\n * Create an attachment Content-Disposition header.\n *\n * @param {string} [filename]\n * @param {object} [options]\n * @param {string} [options.type=attachment]\n * @param {string|boolean} [options.fallback=true]\n * @return {string}\n * @public\n */\n\nfunction contentDisposition (filename, options) {\n  var opts = options || {}\n\n  // get type\n  var type = opts.type || 'attachment'\n\n  // get parameters\n  var params = createparams(filename, opts.fallback)\n\n  // format into string\n  return format(new ContentDisposition(type, params))\n}\n\n/**\n * Create parameters object from filename and fallback.\n *\n * @param {string} [filename]\n * @param {string|boolean} [fallback=true]\n * @return {object}\n * @private\n */\n\nfunction createparams (filename, fallback) {\n  if (filename === undefined) {\n    return\n  }\n\n  var params = {}\n\n  if (typeof filename !== 'string') {\n    throw new TypeError('filename must be a string')\n  }\n\n  // fallback defaults to true\n  if (fallback === undefined) {\n    fallback = true\n  }\n\n  if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {\n    throw new TypeError('fallback must be a string or boolean')\n  }\n\n  if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) {\n    throw new TypeError('fallback must be ISO-8859-1 string')\n  }\n\n  // restrict to file base name\n  var name = basename(filename)\n\n  // determine if name is suitable for quoted string\n  var isQuotedString = TEXT_REGEXP.test(name)\n\n  // generate fallback name\n  var fallbackName = typeof fallback !== 'string'\n    ? fallback && getlatin1(name)\n    : basename(fallback)\n  var hasFallback = typeof fallbackName === 'string' && fallbackName !== name\n\n  // set extended filename parameter\n  if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {\n    params['filename*'] = name\n  }\n\n  // set filename parameter\n  if (isQuotedString || hasFallback) {\n    params.filename = hasFallback\n      ? fallbackName\n      : name\n  }\n\n  return params\n}\n\n/**\n * Format object to Content-Disposition header.\n *\n * @param {object} obj\n * @param {string} obj.type\n * @param {object} [obj.parameters]\n * @return {string}\n * @private\n */\n\nfunction format (obj) {\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  // start with normalized type\n  var string = String(type).toLowerCase()\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      var val = param.slice(-1) === '*'\n        ? ustring(parameters[param])\n        : qstring(parameters[param])\n\n      string += '; ' + param + '=' + val\n    }\n  }\n\n  return string\n}\n\n/**\n * Decode a RFC 5987 field value (gracefully).\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction decodefield (str) {\n  var match = EXT_VALUE_REGEXP.exec(str)\n\n  if (!match) {\n    throw new TypeError('invalid extended field value')\n  }\n\n  var charset = match[1].toLowerCase()\n  var encoded = match[2]\n  var value\n\n  // to binary string\n  var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)\n\n  switch (charset) {\n    case 'iso-8859-1':\n      value = getlatin1(binary)\n      break\n    case 'utf-8':\n    case 'utf8':\n      value = Buffer.from(binary, 'binary').toString('utf8')\n      break\n    default:\n      throw new TypeError('unsupported charset in extended field')\n  }\n\n  return value\n}\n\n/**\n * Get ISO-8859-1 version of string.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction getlatin1 (val) {\n  // simple Unicode -> ISO-8859-1 transformation\n  return String(val).replace(NON_LATIN1_REGEXP, '?')\n}\n\n/**\n * Parse Content-Disposition header string.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string || typeof string !== 'string') {\n    throw new TypeError('argument string is required')\n  }\n\n  var match = DISPOSITION_TYPE_REGEXP.exec(string)\n\n  if (!match) {\n    throw new TypeError('invalid type format')\n  }\n\n  // normalize type\n  var index = match[0].length\n  var type = match[1].toLowerCase()\n\n  var key\n  var names = []\n  var params = {}\n  var value\n\n  // calculate index to start at\n  index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ';'\n    ? index - 1\n    : index\n\n  // match parameters\n  while ((match = PARAM_REGEXP.exec(string))) {\n    if (match.index !== index) {\n      throw new TypeError('invalid parameter format')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (names.indexOf(key) !== -1) {\n      throw new TypeError('invalid duplicate parameter')\n    }\n\n    names.push(key)\n\n    if (key.indexOf('*') + 1 === key.length) {\n      // decode extended value\n      key = key.slice(0, -1)\n      value = decodefield(value)\n\n      // overwrite existing value\n      params[key] = value\n      continue\n    }\n\n    if (typeof params[key] === 'string') {\n      continue\n    }\n\n    if (value[0] === '\"') {\n      // remove quotes and escapes\n      value = value\n        .slice(1, -1)\n        .replace(QESC_REGEXP, '$1')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError('invalid parameter format')\n  }\n\n  return new ContentDisposition(type, params)\n}\n\n/**\n * Percent decode a single character.\n *\n * @param {string} str\n * @param {string} hex\n * @return {string}\n * @private\n */\n\nfunction pdecode (str, hex) {\n  return String.fromCharCode(parseInt(hex, 16))\n}\n\n/**\n * Percent encode a single character.\n *\n * @param {string} char\n * @return {string}\n * @private\n */\n\nfunction pencode (char) {\n  return '%' + String(char)\n    .charCodeAt(0)\n    .toString(16)\n    .toUpperCase()\n}\n\n/**\n * Quote a string for HTTP.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Encode a Unicode string for HTTP (RFC 5987).\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction ustring (val) {\n  var str = String(val)\n\n  // percent encode as UTF-8\n  var encoded = encodeURIComponent(str)\n    .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)\n\n  return 'UTF-8\\'\\'' + encoded\n}\n\n/**\n * Class for parsed Content-Disposition header for v8 optimization\n *\n * @public\n * @param {string} type\n * @param {object} parameters\n * @constructor\n */\n\nfunction ContentDisposition (type, parameters) {\n  this.type = type\n  this.parameters = parameters\n}\n", "/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto');\n\n/**\n * Sign the given `val` with `secret`.\n *\n * @param {String} val\n * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret\n * @return {String}\n * @api private\n */\n\nexports.sign = function(val, secret){\n  if ('string' != typeof val) throw new TypeError(\"Cookie value must be provided as a string.\");\n  if (null == secret) throw new TypeError(\"Secret key must be provided.\");\n  return val + '.' + crypto\n    .createHmac('sha256', secret)\n    .update(val)\n    .digest('base64')\n    .replace(/\\=+$/, '');\n};\n\n/**\n * Unsign and decode the given `input` with `secret`,\n * returning `false` if the signature is invalid.\n *\n * @param {String} input\n * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret\n * @return {String|Boolean}\n * @api private\n */\n\nexports.unsign = function(input, secret){\n  if ('string' != typeof input) throw new TypeError(\"Signed cookie string must be provided.\");\n  if (null == secret) throw new TypeError(\"Secret key must be provided.\");\n  var tentativeValue = input.slice(0, input.lastIndexOf('.')),\n      expectedInput = exports.sign(tentativeValue, secret),\n      expectedBuffer = Buffer.from(expectedInput),\n      inputBuffer = Buffer.from(input);\n  return (\n    expectedBuffer.length === inputBuffer.length &&\n    crypto.timingSafeEqual(expectedBuffer, inputBuffer)\n   ) ? tentativeValue : false;\n};\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\nvar __hasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n */\n\nvar cookieNameRegExp = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/;\n\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n */\n\nvar cookieValueRegExp = /^(\"?)[\\u0021\\u0023-\\u002B\\u002D-\\u003A\\u003C-\\u005B\\u005D-\\u007E]*\\1$/;\n\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\n\nvar domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\n\nvar pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [opt]\n * @return {object}\n * @public\n */\n\nfunction parse(str, opt) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {};\n  var len = str.length;\n  // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n  if (len < 2) return obj;\n\n  var dec = (opt && opt.decode) || decode;\n  var index = 0;\n  var eqIdx = 0;\n  var endIdx = 0;\n\n  do {\n    eqIdx = str.indexOf('=', index);\n    if (eqIdx === -1) break; // No more cookie pairs.\n\n    endIdx = str.indexOf(';', index);\n\n    if (endIdx === -1) {\n      endIdx = len;\n    } else if (eqIdx > endIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(';', eqIdx - 1) + 1;\n      continue;\n    }\n\n    var keyStartIdx = startIndex(str, index, eqIdx);\n    var keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n    var key = str.slice(keyStartIdx, keyEndIdx);\n\n    // only assign once\n    if (!__hasOwnProperty.call(obj, key)) {\n      var valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n      var valEndIdx = endIndex(str, endIdx, valStartIdx);\n\n      if (str.charCodeAt(valStartIdx) === 0x22 /* \" */ && str.charCodeAt(valEndIdx - 1) === 0x22 /* \" */) {\n        valStartIdx++;\n        valEndIdx--;\n      }\n\n      var val = str.slice(valStartIdx, valEndIdx);\n      obj[key] = tryDecode(val, dec);\n    }\n\n    index = endIdx + 1\n  } while (index < len);\n\n  return obj;\n}\n\nfunction startIndex(str, index, max) {\n  do {\n    var code = str.charCodeAt(index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index;\n  } while (++index < max);\n  return max;\n}\n\nfunction endIndex(str, index, min) {\n  while (index > min) {\n    var code = str.charCodeAt(--index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index + 1;\n  }\n  return min;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [opt]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, opt) {\n  var enc = (opt && opt.encode) || encodeURIComponent;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!cookieNameRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (!cookieValueRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n  if (!opt) return str;\n\n  if (null != opt.maxAge) {\n    var maxAge = Math.floor(opt.maxAge);\n\n    if (!isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + maxAge;\n  }\n\n  if (opt.domain) {\n    if (!domainValueRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!pathValueRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    var expires = opt.expires\n\n    if (!isDate(expires) || isNaN(expires.valueOf())) {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + expires.toUTCString()\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.partitioned) {\n    str += '; Partitioned'\n  }\n\n  if (opt.priority) {\n    var priority = typeof opt.priority === 'string'\n      ? opt.priority.toLowerCase() : opt.priority;\n\n    switch (priority) {\n      case 'low':\n        str += '; Priority=Low'\n        break\n      case 'medium':\n        str += '; Priority=Medium'\n        break\n      case 'high':\n        str += '; Priority=High'\n        break\n      default:\n        throw new TypeError('option priority is invalid')\n    }\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n  return str.indexOf('%') !== -1\n    ? decodeURIComponent(str)\n    : str\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n  return __toString.call(val) === '[object Date]';\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n", "/*!\n * send\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar debug = require('debug')('send')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar etag = require('etag')\nvar fresh = require('fresh')\nvar fs = require('fs')\nvar mime = require('mime-types')\nvar ms = require('ms')\nvar onFinished = require('on-finished')\nvar parseRange = require('range-parser')\nvar path = require('path')\nvar statuses = require('statuses')\nvar Stream = require('stream')\nvar util = require('util')\n\n/**\n * Path function references.\n * @private\n */\n\nvar extname = path.extname\nvar join = path.join\nvar normalize = path.normalize\nvar resolve = path.resolve\nvar sep = path.sep\n\n/**\n * Regular expression for identifying a bytes Range header.\n * @private\n */\n\nvar BYTES_RANGE_REGEXP = /^ *bytes=/\n\n/**\n * Maximum value allowed for the max age.\n * @private\n */\n\nvar MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year\n\n/**\n * Regular expression to match a path with a directory up component.\n * @private\n */\n\nvar UP_PATH_REGEXP = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = send\n\n/**\n * Return a `SendStream` for `req` and `path`.\n *\n * @param {object} req\n * @param {string} path\n * @param {object} [options]\n * @return {SendStream}\n * @public\n */\n\nfunction send (req, path, options) {\n  return new SendStream(req, path, options)\n}\n\n/**\n * Initialize a `SendStream` with the given `path`.\n *\n * @param {Request} req\n * @param {String} path\n * @param {object} [options]\n * @private\n */\n\nfunction SendStream (req, path, options) {\n  Stream.call(this)\n\n  var opts = options || {}\n\n  this.options = opts\n  this.path = path\n  this.req = req\n\n  this._acceptRanges = opts.acceptRanges !== undefined\n    ? Boolean(opts.acceptRanges)\n    : true\n\n  this._cacheControl = opts.cacheControl !== undefined\n    ? Boolean(opts.cacheControl)\n    : true\n\n  this._etag = opts.etag !== undefined\n    ? Boolean(opts.etag)\n    : true\n\n  this._dotfiles = opts.dotfiles !== undefined\n    ? opts.dotfiles\n    : 'ignore'\n\n  if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {\n    throw new TypeError('dotfiles option must be \"allow\", \"deny\", or \"ignore\"')\n  }\n\n  this._extensions = opts.extensions !== undefined\n    ? normalizeList(opts.extensions, 'extensions option')\n    : []\n\n  this._immutable = opts.immutable !== undefined\n    ? Boolean(opts.immutable)\n    : false\n\n  this._index = opts.index !== undefined\n    ? normalizeList(opts.index, 'index option')\n    : ['index.html']\n\n  this._lastModified = opts.lastModified !== undefined\n    ? Boolean(opts.lastModified)\n    : true\n\n  this._maxage = opts.maxAge || opts.maxage\n  this._maxage = typeof this._maxage === 'string'\n    ? ms(this._maxage)\n    : Number(this._maxage)\n  this._maxage = !isNaN(this._maxage)\n    ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n    : 0\n\n  this._root = opts.root\n    ? resolve(opts.root)\n    : null\n}\n\n/**\n * Inherits from `Stream`.\n */\n\nutil.inherits(SendStream, Stream)\n\n/**\n * Emit error with `status`.\n *\n * @param {number} status\n * @param {Error} [err]\n * @private\n */\n\nSendStream.prototype.error = function error (status, err) {\n  // emit if listeners instead of responding\n  if (hasListeners(this, 'error')) {\n    return this.emit('error', createHttpError(status, err))\n  }\n\n  var res = this.res\n  var msg = statuses.message[status] || String(status)\n  var doc = createHtmlDocument('Error', escapeHtml(msg))\n\n  // clear existing headers\n  clearHeaders(res)\n\n  // add error headers\n  if (err && err.headers) {\n    setHeaders(res, err.headers)\n  }\n\n  // send basic response\n  res.statusCode = status\n  res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n  res.setHeader('Content-Length', Buffer.byteLength(doc))\n  res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n  res.setHeader('X-Content-Type-Options', 'nosniff')\n  res.end(doc)\n}\n\n/**\n * Check if the pathname ends with \"/\".\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {\n  return this.path[this.path.length - 1] === '/'\n}\n\n/**\n * Check if this is a conditional GET request.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isConditionalGET = function isConditionalGET () {\n  return this.req.headers['if-match'] ||\n    this.req.headers['if-unmodified-since'] ||\n    this.req.headers['if-none-match'] ||\n    this.req.headers['if-modified-since']\n}\n\n/**\n * Check if the request preconditions failed.\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {\n  var req = this.req\n  var res = this.res\n\n  // if-match\n  var match = req.headers['if-match']\n  if (match) {\n    var etag = res.getHeader('ETag')\n    return !etag || (match !== '*' && parseTokenList(match).every(function (match) {\n      return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag\n    }))\n  }\n\n  // if-unmodified-since\n  var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since'])\n  if (!isNaN(unmodifiedSince)) {\n    var lastModified = parseHttpDate(res.getHeader('Last-Modified'))\n    return isNaN(lastModified) || lastModified > unmodifiedSince\n  }\n\n  return false\n}\n\n/**\n * Strip various content header fields for a change in entity.\n *\n * @private\n */\n\nSendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {\n  var res = this.res\n\n  res.removeHeader('Content-Encoding')\n  res.removeHeader('Content-Language')\n  res.removeHeader('Content-Length')\n  res.removeHeader('Content-Range')\n  res.removeHeader('Content-Type')\n}\n\n/**\n * Respond with 304 not modified.\n *\n * @api private\n */\n\nSendStream.prototype.notModified = function notModified () {\n  var res = this.res\n  debug('not modified')\n  this.removeContentHeaderFields()\n  res.statusCode = 304\n  res.end()\n}\n\n/**\n * Raise error that headers already sent.\n *\n * @api private\n */\n\nSendStream.prototype.headersAlreadySent = function headersAlreadySent () {\n  var err = new Error('Can\\'t set headers after they are sent.')\n  debug('headers already sent')\n  this.error(500, err)\n}\n\n/**\n * Check if the request is cacheable, aka\n * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isCachable = function isCachable () {\n  var statusCode = this.res.statusCode\n  return (statusCode >= 200 && statusCode < 300) ||\n    statusCode === 304\n}\n\n/**\n * Handle stat() error.\n *\n * @param {Error} error\n * @private\n */\n\nSendStream.prototype.onStatError = function onStatError (error) {\n  switch (error.code) {\n    case 'ENAMETOOLONG':\n    case 'ENOENT':\n    case 'ENOTDIR':\n      this.error(404, error)\n      break\n    default:\n      this.error(500, error)\n      break\n  }\n}\n\n/**\n * Check if the cache is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isFresh = function isFresh () {\n  return fresh(this.req.headers, {\n    etag: this.res.getHeader('ETag'),\n    'last-modified': this.res.getHeader('Last-Modified')\n  })\n}\n\n/**\n * Check if the range is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isRangeFresh = function isRangeFresh () {\n  var ifRange = this.req.headers['if-range']\n\n  if (!ifRange) {\n    return true\n  }\n\n  // if-range as etag\n  if (ifRange.indexOf('\"') !== -1) {\n    var etag = this.res.getHeader('ETag')\n    return Boolean(etag && ifRange.indexOf(etag) !== -1)\n  }\n\n  // if-range as modified date\n  var lastModified = this.res.getHeader('Last-Modified')\n  return parseHttpDate(lastModified) <= parseHttpDate(ifRange)\n}\n\n/**\n * Redirect to path.\n *\n * @param {string} path\n * @private\n */\n\nSendStream.prototype.redirect = function redirect (path) {\n  var res = this.res\n\n  if (hasListeners(this, 'directory')) {\n    this.emit('directory', res, path)\n    return\n  }\n\n  if (this.hasTrailingSlash()) {\n    this.error(403)\n    return\n  }\n\n  var loc = encodeUrl(collapseLeadingSlashes(this.path + '/'))\n  var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc))\n\n  // redirect\n  res.statusCode = 301\n  res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n  res.setHeader('Content-Length', Buffer.byteLength(doc))\n  res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n  res.setHeader('X-Content-Type-Options', 'nosniff')\n  res.setHeader('Location', loc)\n  res.end(doc)\n}\n\n/**\n * Pipe to `res.\n *\n * @param {Stream} res\n * @return {Stream} res\n * @api public\n */\n\nSendStream.prototype.pipe = function pipe (res) {\n  // root path\n  var root = this._root\n\n  // references\n  this.res = res\n\n  // decode the path\n  var path = decode(this.path)\n  if (path === -1) {\n    this.error(400)\n    return res\n  }\n\n  // null byte(s)\n  if (~path.indexOf('\\0')) {\n    this.error(400)\n    return res\n  }\n\n  var parts\n  if (root !== null) {\n    // normalize\n    if (path) {\n      path = normalize('.' + sep + path)\n    }\n\n    // malicious path\n    if (UP_PATH_REGEXP.test(path)) {\n      debug('malicious path \"%s\"', path)\n      this.error(403)\n      return res\n    }\n\n    // explode path parts\n    parts = path.split(sep)\n\n    // join / normalize from optional root dir\n    path = normalize(join(root, path))\n  } else {\n    // \"..\" is malicious without \"root\"\n    if (UP_PATH_REGEXP.test(path)) {\n      debug('malicious path \"%s\"', path)\n      this.error(403)\n      return res\n    }\n\n    // explode path parts\n    parts = normalize(path).split(sep)\n\n    // resolve the path\n    path = resolve(path)\n  }\n\n  // dotfile handling\n  if (containsDotFile(parts)) {\n    debug('%s dotfile \"%s\"', this._dotfiles, path)\n    switch (this._dotfiles) {\n      case 'allow':\n        break\n      case 'deny':\n        this.error(403)\n        return res\n      case 'ignore':\n      default:\n        this.error(404)\n        return res\n    }\n  }\n\n  // index file support\n  if (this._index.length && this.hasTrailingSlash()) {\n    this.sendIndex(path)\n    return res\n  }\n\n  this.sendFile(path)\n  return res\n}\n\n/**\n * Transfer `path`.\n *\n * @param {String} path\n * @api public\n */\n\nSendStream.prototype.send = function send (path, stat) {\n  var len = stat.size\n  var options = this.options\n  var opts = {}\n  var res = this.res\n  var req = this.req\n  var ranges = req.headers.range\n  var offset = options.start || 0\n\n  if (res.headersSent) {\n    // impossible to send now\n    this.headersAlreadySent()\n    return\n  }\n\n  debug('pipe \"%s\"', path)\n\n  // set header fields\n  this.setHeader(path, stat)\n\n  // set content-type\n  this.type(path)\n\n  // conditional GET support\n  if (this.isConditionalGET()) {\n    if (this.isPreconditionFailure()) {\n      this.error(412)\n      return\n    }\n\n    if (this.isCachable() && this.isFresh()) {\n      this.notModified()\n      return\n    }\n  }\n\n  // adjust len to start/end options\n  len = Math.max(0, len - offset)\n  if (options.end !== undefined) {\n    var bytes = options.end - offset + 1\n    if (len > bytes) len = bytes\n  }\n\n  // Range support\n  if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {\n    // parse\n    ranges = parseRange(len, ranges, {\n      combine: true\n    })\n\n    // If-Range support\n    if (!this.isRangeFresh()) {\n      debug('range stale')\n      ranges = -2\n    }\n\n    // unsatisfiable\n    if (ranges === -1) {\n      debug('range unsatisfiable')\n\n      // Content-Range\n      res.setHeader('Content-Range', contentRange('bytes', len))\n\n      // 416 Requested Range Not Satisfiable\n      return this.error(416, {\n        headers: { 'Content-Range': res.getHeader('Content-Range') }\n      })\n    }\n\n    // valid (syntactically invalid/multiple ranges are treated as a regular response)\n    if (ranges !== -2 && ranges.length === 1) {\n      debug('range %j', ranges)\n\n      // Content-Range\n      res.statusCode = 206\n      res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))\n\n      // adjust for requested range\n      offset += ranges[0].start\n      len = ranges[0].end - ranges[0].start + 1\n    }\n  }\n\n  // clone options\n  for (var prop in options) {\n    opts[prop] = options[prop]\n  }\n\n  // set read options\n  opts.start = offset\n  opts.end = Math.max(offset, offset + len - 1)\n\n  // content-length\n  res.setHeader('Content-Length', len)\n\n  // HEAD support\n  if (req.method === 'HEAD') {\n    res.end()\n    return\n  }\n\n  this.stream(path, opts)\n}\n\n/**\n * Transfer file for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendFile = function sendFile (path) {\n  var i = 0\n  var self = this\n\n  debug('stat \"%s\"', path)\n  fs.stat(path, function onstat (err, stat) {\n    var pathEndsWithSep = path[path.length - 1] === sep\n    if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) {\n      // not found, check extensions\n      return next(err)\n    }\n    if (err) return self.onStatError(err)\n    if (stat.isDirectory()) return self.redirect(path)\n    if (pathEndsWithSep) return self.error(404)\n    self.emit('file', path, stat)\n    self.send(path, stat)\n  })\n\n  function next (err) {\n    if (self._extensions.length <= i) {\n      return err\n        ? self.onStatError(err)\n        : self.error(404)\n    }\n\n    var p = path + '.' + self._extensions[i++]\n\n    debug('stat \"%s\"', p)\n    fs.stat(p, function (err, stat) {\n      if (err) return next(err)\n      if (stat.isDirectory()) return next()\n      self.emit('file', p, stat)\n      self.send(p, stat)\n    })\n  }\n}\n\n/**\n * Transfer index for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendIndex = function sendIndex (path) {\n  var i = -1\n  var self = this\n\n  function next (err) {\n    if (++i >= self._index.length) {\n      if (err) return self.onStatError(err)\n      return self.error(404)\n    }\n\n    var p = join(path, self._index[i])\n\n    debug('stat \"%s\"', p)\n    fs.stat(p, function (err, stat) {\n      if (err) return next(err)\n      if (stat.isDirectory()) return next()\n      self.emit('file', p, stat)\n      self.send(p, stat)\n    })\n  }\n\n  next()\n}\n\n/**\n * Stream `path` to the response.\n *\n * @param {String} path\n * @param {Object} options\n * @api private\n */\n\nSendStream.prototype.stream = function stream (path, options) {\n  var self = this\n  var res = this.res\n\n  // pipe\n  var stream = fs.createReadStream(path, options)\n  this.emit('stream', stream)\n  stream.pipe(res)\n\n  // cleanup\n  function cleanup () {\n    stream.destroy()\n  }\n\n  // response finished, cleanup\n  onFinished(res, cleanup)\n\n  // error handling\n  stream.on('error', function onerror (err) {\n    // clean up stream early\n    cleanup()\n\n    // error\n    self.onStatError(err)\n  })\n\n  // end\n  stream.on('end', function onend () {\n    self.emit('end')\n  })\n}\n\n/**\n * Set content-type based on `path`\n * if it hasn't been explicitly set.\n *\n * @param {String} path\n * @api private\n */\n\nSendStream.prototype.type = function type (path) {\n  var res = this.res\n\n  if (res.getHeader('Content-Type')) return\n\n  var ext = extname(path)\n  var type = mime.contentType(ext) || 'application/octet-stream'\n\n  debug('content-type %s', type)\n  res.setHeader('Content-Type', type)\n}\n\n/**\n * Set response header fields, most\n * fields may be pre-defined.\n *\n * @param {String} path\n * @param {Object} stat\n * @api private\n */\n\nSendStream.prototype.setHeader = function setHeader (path, stat) {\n  var res = this.res\n\n  this.emit('headers', res, path, stat)\n\n  if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {\n    debug('accept ranges')\n    res.setHeader('Accept-Ranges', 'bytes')\n  }\n\n  if (this._cacheControl && !res.getHeader('Cache-Control')) {\n    var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)\n\n    if (this._immutable) {\n      cacheControl += ', immutable'\n    }\n\n    debug('cache-control %s', cacheControl)\n    res.setHeader('Cache-Control', cacheControl)\n  }\n\n  if (this._lastModified && !res.getHeader('Last-Modified')) {\n    var modified = stat.mtime.toUTCString()\n    debug('modified %s', modified)\n    res.setHeader('Last-Modified', modified)\n  }\n\n  if (this._etag && !res.getHeader('ETag')) {\n    var val = etag(stat)\n    debug('etag %s', val)\n    res.setHeader('ETag', val)\n  }\n}\n\n/**\n * Clear all headers from a response.\n *\n * @param {object} res\n * @private\n */\n\nfunction clearHeaders (res) {\n  for (const header of res.getHeaderNames()) {\n    res.removeHeader(header)\n  }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n *\n * @param {string} str\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n  for (var i = 0; i < str.length; i++) {\n    if (str[i] !== '/') {\n      break\n    }\n  }\n\n  return i > 1\n    ? '/' + str.substr(i)\n    : str\n}\n\n/**\n * Determine if path parts contain a dotfile.\n *\n * @api private\n */\n\nfunction containsDotFile (parts) {\n  for (var i = 0; i < parts.length; i++) {\n    var part = parts[i]\n    if (part.length > 1 && part[0] === '.') {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Create a Content-Range header.\n *\n * @param {string} type\n * @param {number} size\n * @param {array} [range]\n */\n\nfunction contentRange (type, size, range) {\n  return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n  return '<!DOCTYPE html>\\n' +\n    '<html lang=\"en\">\\n' +\n    '<head>\\n' +\n    '<meta charset=\"utf-8\">\\n' +\n    '<title>' + title + '</title>\\n' +\n    '</head>\\n' +\n    '<body>\\n' +\n    '<pre>' + body + '</pre>\\n' +\n    '</body>\\n' +\n    '</html>\\n'\n}\n\n/**\n * Create a HttpError object from simple arguments.\n *\n * @param {number} status\n * @param {Error|object} err\n * @private\n */\n\nfunction createHttpError (status, err) {\n  if (!err) {\n    return createError(status)\n  }\n\n  return err instanceof Error\n    ? createError(status, err, { expose: false })\n    : createError(status, err)\n}\n\n/**\n * decodeURIComponent.\n *\n * Allows V8 to only deoptimize this fn instead of all\n * of send().\n *\n * @param {String} path\n * @api private\n */\n\nfunction decode (path) {\n  try {\n    return decodeURIComponent(path)\n  } catch (err) {\n    return -1\n  }\n}\n\n/**\n * Determine if emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.10\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction hasListeners (emitter, type) {\n  var count = typeof emitter.listenerCount !== 'function'\n    ? emitter.listeners(type).length\n    : emitter.listenerCount(type)\n\n  return count > 0\n}\n\n/**\n * Normalize the index option into an array.\n *\n * @param {boolean|string|array} val\n * @param {string} name\n * @private\n */\n\nfunction normalizeList (val, name) {\n  var list = [].concat(val || [])\n\n  for (var i = 0; i < list.length; i++) {\n    if (typeof list[i] !== 'string') {\n      throw new TypeError(name + ' must be array of strings or false')\n    }\n  }\n\n  return list\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n  var timestamp = date && Date.parse(date)\n\n  return typeof timestamp === 'number'\n    ? timestamp\n    : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = str.length; i < len; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        if (start !== end) {\n          list.push(str.substring(start, end))\n        }\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  if (start !== end) {\n    list.push(str.substring(start, end))\n  }\n\n  return list\n}\n\n/**\n * Set an object of headers on a response.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n  var keys = Object.keys(headers)\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i]\n    res.setHeader(key, headers[key])\n  }\n}\n", "/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name    = token\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n  if (typeof header !== 'string') {\n    throw new TypeError('header argument is required')\n  }\n\n  if (!field) {\n    throw new TypeError('field argument is required')\n  }\n\n  // get fields array\n  var fields = !Array.isArray(field)\n    ? parse(String(field))\n    : field\n\n  // assert on invalid field names\n  for (var j = 0; j < fields.length; j++) {\n    if (!FIELD_NAME_REGEXP.test(fields[j])) {\n      throw new TypeError('field argument contains an invalid header name')\n    }\n  }\n\n  // existing, unspecified vary\n  if (header === '*') {\n    return header\n  }\n\n  // enumerate current values\n  var val = header\n  var vals = parse(header.toLowerCase())\n\n  // unspecified vary\n  if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n    return '*'\n  }\n\n  for (var i = 0; i < fields.length; i++) {\n    var fld = fields[i].toLowerCase()\n\n    // append value (case-preserving)\n    if (vals.indexOf(fld) === -1) {\n      vals.push(fld)\n      val = val\n        ? val + ', ' + fields[i]\n        : fields[i]\n    }\n  }\n\n  return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = header.length; i < len; i++) {\n    switch (header.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(header.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(header.substring(start, end))\n\n  return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n  if (!res || !res.getHeader || !res.setHeader) {\n    // quack quack\n    throw new TypeError('res argument is required')\n  }\n\n  // get existing header\n  var val = res.getHeader('Vary') || ''\n  var header = Array.isArray(val)\n    ? val.join(', ')\n    : String(val)\n\n  // set new header\n  if ((val = append(header, field))) {\n    res.setHeader('Vary', val)\n  }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar contentDisposition = require('content-disposition');\nvar createError = require('http-errors')\nvar deprecate = require('depd')('express');\nvar encodeUrl = require('encodeurl');\nvar escapeHtml = require('escape-html');\nvar http = require('node:http');\nvar onFinished = require('on-finished');\nvar mime = require('mime-types')\nvar path = require('node:path');\nvar pathIsAbsolute = require('node:path').isAbsolute;\nvar statuses = require('statuses')\nvar sign = require('cookie-signature').sign;\nvar normalizeType = require('./utils').normalizeType;\nvar normalizeTypes = require('./utils').normalizeTypes;\nvar setCharset = require('./utils').setCharset;\nvar cookie = require('cookie');\nvar send = require('send');\nvar extname = path.extname;\nvar resolve = path.resolve;\nvar vary = require('vary');\nconst { Buffer } = require('node:buffer');\n\n/**\n * Response prototype.\n * @public\n */\n\nvar res = Object.create(http.ServerResponse.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = res\n\n/**\n * Set the HTTP status code for the response.\n *\n * Expects an integer value between 100 and 999 inclusive.\n * Throws an error if the provided status code is not an integer or if it's outside the allowable range.\n *\n * @param {number} code - The HTTP status code to set.\n * @return {ServerResponse} - Returns itself for chaining methods.\n * @throws {TypeError} If `code` is not an integer.\n * @throws {RangeError} If `code` is outside the range 100 to 999.\n * @public\n */\n\nres.status = function status(code) {\n  // Check if the status code is not an integer\n  if (!Number.isInteger(code)) {\n    throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`);\n  }\n  // Check if the status code is outside of Node's valid range\n  if (code < 100 || code > 999) {\n    throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`);\n  }\n\n  this.statusCode = code;\n  return this;\n};\n\n/**\n * Set Link header field with the given `links`.\n *\n * Examples:\n *\n *    res.links({\n *      next: 'http://api.example.com/users?page=2',\n *      last: 'http://api.example.com/users?page=5',\n *      pages: [\n *        'http://api.example.com/users?page=1',\n *        'http://api.example.com/users?page=2'\n *      ]\n *    });\n *\n * @param {Object} links\n * @return {ServerResponse}\n * @public\n */\n\nres.links = function(links) {\n  var link = this.get('Link') || '';\n  if (link) link += ', ';\n  return this.set('Link', link + Object.keys(links).map(function(rel) {\n    // Allow multiple links if links[rel] is an array\n    if (Array.isArray(links[rel])) {\n      return links[rel].map(function (singleLink) {\n        return `<${singleLink}>; rel=\"${rel}\"`;\n      }).join(', ');\n    } else {\n      return `<${links[rel]}>; rel=\"${rel}\"`;\n    }\n  }).join(', '));\n};\n\n/**\n * Send a response.\n *\n * Examples:\n *\n *     res.send(Buffer.from('wahoo'));\n *     res.send({ some: 'json' });\n *     res.send('<p>some html</p>');\n *\n * @param {string|number|boolean|object|Buffer} body\n * @public\n */\n\nres.send = function send(body) {\n  var chunk = body;\n  var encoding;\n  var req = this.req;\n  var type;\n\n  // settings\n  var app = this.app;\n\n  switch (typeof chunk) {\n    // string defaulting to html\n    case 'string':\n      if (!this.get('Content-Type')) {\n        this.type('html');\n      }\n      break;\n    case 'boolean':\n    case 'number':\n    case 'object':\n      if (chunk === null) {\n        chunk = '';\n      } else if (ArrayBuffer.isView(chunk)) {\n        if (!this.get('Content-Type')) {\n          this.type('bin');\n        }\n      } else {\n        return this.json(chunk);\n      }\n      break;\n  }\n\n  // write strings in utf-8\n  if (typeof chunk === 'string') {\n    encoding = 'utf8';\n    type = this.get('Content-Type');\n\n    // reflect this in content-type\n    if (typeof type === 'string') {\n      this.set('Content-Type', setCharset(type, 'utf-8'));\n    }\n  }\n\n  // determine if ETag should be generated\n  var etagFn = app.get('etag fn')\n  var generateETag = !this.get('ETag') && typeof etagFn === 'function'\n\n  // populate Content-Length\n  var len\n  if (chunk !== undefined) {\n    if (Buffer.isBuffer(chunk)) {\n      // get length of Buffer\n      len = chunk.length\n    } else if (!generateETag && chunk.length < 1000) {\n      // just calculate length when no ETag + small chunk\n      len = Buffer.byteLength(chunk, encoding)\n    } else {\n      // convert chunk to Buffer and calculate\n      chunk = Buffer.from(chunk, encoding)\n      encoding = undefined;\n      len = chunk.length\n    }\n\n    this.set('Content-Length', len);\n  }\n\n  // populate ETag\n  var etag;\n  if (generateETag && len !== undefined) {\n    if ((etag = etagFn(chunk, encoding))) {\n      this.set('ETag', etag);\n    }\n  }\n\n  // freshness\n  if (req.fresh) this.status(304);\n\n  // strip irrelevant headers\n  if (204 === this.statusCode || 304 === this.statusCode) {\n    this.removeHeader('Content-Type');\n    this.removeHeader('Content-Length');\n    this.removeHeader('Transfer-Encoding');\n    chunk = '';\n  }\n\n  // alter headers for 205\n  if (this.statusCode === 205) {\n    this.set('Content-Length', '0')\n    this.removeHeader('Transfer-Encoding')\n    chunk = ''\n  }\n\n  if (req.method === 'HEAD') {\n    // skip body for HEAD\n    this.end();\n  } else {\n    // respond\n    this.end(chunk, encoding);\n  }\n\n  return this;\n};\n\n/**\n * Send JSON response.\n *\n * Examples:\n *\n *     res.json(null);\n *     res.json({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.json = function json(obj) {\n  // settings\n  var app = this.app;\n  var escape = app.get('json escape')\n  var replacer = app.get('json replacer');\n  var spaces = app.get('json spaces');\n  var body = stringify(obj, replacer, spaces, escape)\n\n  // content-type\n  if (!this.get('Content-Type')) {\n    this.set('Content-Type', 'application/json');\n  }\n\n  return this.send(body);\n};\n\n/**\n * Send JSON response with JSONP callback support.\n *\n * Examples:\n *\n *     res.jsonp(null);\n *     res.jsonp({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.jsonp = function jsonp(obj) {\n  // settings\n  var app = this.app;\n  var escape = app.get('json escape')\n  var replacer = app.get('json replacer');\n  var spaces = app.get('json spaces');\n  var body = stringify(obj, replacer, spaces, escape)\n  var callback = this.req.query[app.get('jsonp callback name')];\n\n  // content-type\n  if (!this.get('Content-Type')) {\n    this.set('X-Content-Type-Options', 'nosniff');\n    this.set('Content-Type', 'application/json');\n  }\n\n  // fixup callback\n  if (Array.isArray(callback)) {\n    callback = callback[0];\n  }\n\n  // jsonp\n  if (typeof callback === 'string' && callback.length !== 0) {\n    this.set('X-Content-Type-Options', 'nosniff');\n    this.set('Content-Type', 'text/javascript');\n\n    // restrict callback charset\n    callback = callback.replace(/[^\\[\\]\\w$.]/g, '');\n\n    if (body === undefined) {\n      // empty argument\n      body = ''\n    } else if (typeof body === 'string') {\n      // replace chars not allowed in JavaScript that are in JSON\n      body = body\n        .replace(/\\u2028/g, '\\\\u2028')\n        .replace(/\\u2029/g, '\\\\u2029')\n    }\n\n    // the /**/ is a specific security mitigation for \"Rosetta Flash JSONP abuse\"\n    // the typeof check is just to reduce client error noise\n    body = '/**/ typeof ' + callback + ' === \\'function\\' && ' + callback + '(' + body + ');';\n  }\n\n  return this.send(body);\n};\n\n/**\n * Send given HTTP status code.\n *\n * Sets the response status to `statusCode` and the body of the\n * response to the standard description from node's http.STATUS_CODES\n * or the statusCode number if no description.\n *\n * Examples:\n *\n *     res.sendStatus(200);\n *\n * @param {number} statusCode\n * @public\n */\n\nres.sendStatus = function sendStatus(statusCode) {\n  var body = statuses.message[statusCode] || String(statusCode)\n\n  this.status(statusCode);\n  this.type('txt');\n\n  return this.send(body);\n};\n\n/**\n * Transfer the file at the given `path`.\n *\n * Automatically sets the _Content-Type_ response header field.\n * The callback `callback(err)` is invoked when the transfer is complete\n * or when an error occurs. Be sure to check `res.headersSent`\n * if you wish to attempt responding, as the header and some data\n * may have already been transferred.\n *\n * Options:\n *\n *   - `maxAge`   defaulting to 0 (can be string converted by `ms`)\n *   - `root`     root directory for relative filenames\n *   - `headers`  object of headers to serve with file\n *   - `dotfiles` serve dotfiles, defaulting to false; can be `\"allow\"` to send them\n *\n * Other options are passed along to `send`.\n *\n * Examples:\n *\n *  The following example illustrates how `res.sendFile()` may\n *  be used as an alternative for the `static()` middleware for\n *  dynamic situations. The code backing `res.sendFile()` is actually\n *  the same code, so HTTP cache support etc is identical.\n *\n *     app.get('/user/:uid/photos/:file', function(req, res){\n *       var uid = req.params.uid\n *         , file = req.params.file;\n *\n *       req.user.mayViewFilesFrom(uid, function(yes){\n *         if (yes) {\n *           res.sendFile('/uploads/' + uid + '/' + file);\n *         } else {\n *           res.send(403, 'Sorry! you cant see that.');\n *         }\n *       });\n *     });\n *\n * @public\n */\n\nres.sendFile = function sendFile(path, options, callback) {\n  var done = callback;\n  var req = this.req;\n  var res = this;\n  var next = req.next;\n  var opts = options || {};\n\n  if (!path) {\n    throw new TypeError('path argument is required to res.sendFile');\n  }\n\n  if (typeof path !== 'string') {\n    throw new TypeError('path must be a string to res.sendFile')\n  }\n\n  // support function as second arg\n  if (typeof options === 'function') {\n    done = options;\n    opts = {};\n  }\n\n  if (!opts.root && !pathIsAbsolute(path)) {\n    throw new TypeError('path must be absolute or specify root to res.sendFile');\n  }\n\n  // create file stream\n  var pathname = encodeURI(path);\n\n  // wire application etag option to send\n  opts.etag = this.app.enabled('etag');\n  var file = send(req, pathname, opts);\n\n  // transfer\n  sendfile(res, file, opts, function (err) {\n    if (done) return done(err);\n    if (err && err.code === 'EISDIR') return next();\n\n    // next() all but write errors\n    if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {\n      next(err);\n    }\n  });\n};\n\n/**\n * Transfer the file at the given `path` as an attachment.\n *\n * Optionally providing an alternate attachment `filename`,\n * and optional callback `callback(err)`. The callback is invoked\n * when the data transfer is complete, or when an error has\n * occurred. Be sure to check `res.headersSent` if you plan to respond.\n *\n * Optionally providing an `options` object to use with `res.sendFile()`.\n * This function will set the `Content-Disposition` header, overriding\n * any `Content-Disposition` header passed as header options in order\n * to set the attachment and filename.\n *\n * This method uses `res.sendFile()`.\n *\n * @public\n */\n\nres.download = function download (path, filename, options, callback) {\n  var done = callback;\n  var name = filename;\n  var opts = options || null\n\n  // support function as second or third arg\n  if (typeof filename === 'function') {\n    done = filename;\n    name = null;\n    opts = null\n  } else if (typeof options === 'function') {\n    done = options\n    opts = null\n  }\n\n  // support optional filename, where options may be in it's place\n  if (typeof filename === 'object' &&\n    (typeof options === 'function' || options === undefined)) {\n    name = null\n    opts = filename\n  }\n\n  // set Content-Disposition when file is sent\n  var headers = {\n    'Content-Disposition': contentDisposition(name || path)\n  };\n\n  // merge user-provided headers\n  if (opts && opts.headers) {\n    var keys = Object.keys(opts.headers)\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i]\n      if (key.toLowerCase() !== 'content-disposition') {\n        headers[key] = opts.headers[key]\n      }\n    }\n  }\n\n  // merge user-provided options\n  opts = Object.create(opts)\n  opts.headers = headers\n\n  // Resolve the full path for sendFile\n  var fullPath = !opts.root\n    ? resolve(path)\n    : path\n\n  // send file\n  return this.sendFile(fullPath, opts, done)\n};\n\n/**\n * Set _Content-Type_ response header with `type` through `mime.contentType()`\n * when it does not contain \"/\", or set the Content-Type to `type` otherwise.\n * When no mapping is found though `mime.contentType()`, the type is set to\n * \"application/octet-stream\".\n *\n * Examples:\n *\n *     res.type('.html');\n *     res.type('html');\n *     res.type('json');\n *     res.type('application/json');\n *     res.type('png');\n *\n * @param {String} type\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.contentType =\nres.type = function contentType(type) {\n  var ct = type.indexOf('/') === -1\n    ? (mime.contentType(type) || 'application/octet-stream')\n    : type;\n\n  return this.set('Content-Type', ct);\n};\n\n/**\n * Respond to the Acceptable formats using an `obj`\n * of mime-type callbacks.\n *\n * This method uses `req.accepted`, an array of\n * acceptable types ordered by their quality values.\n * When \"Accept\" is not present the _first_ callback\n * is invoked, otherwise the first match is used. When\n * no match is performed the server responds with\n * 406 \"Not Acceptable\".\n *\n * Content-Type is set for you, however if you choose\n * you may alter this within the callback using `res.type()`\n * or `res.set('Content-Type', ...)`.\n *\n *    res.format({\n *      'text/plain': function(){\n *        res.send('hey');\n *      },\n *\n *      'text/html': function(){\n *        res.send('<p>hey</p>');\n *      },\n *\n *      'application/json': function () {\n *        res.send({ message: 'hey' });\n *      }\n *    });\n *\n * In addition to canonicalized MIME types you may\n * also use extnames mapped to these types:\n *\n *    res.format({\n *      text: function(){\n *        res.send('hey');\n *      },\n *\n *      html: function(){\n *        res.send('<p>hey</p>');\n *      },\n *\n *      json: function(){\n *        res.send({ message: 'hey' });\n *      }\n *    });\n *\n * By default Express passes an `Error`\n * with a `.status` of 406 to `next(err)`\n * if a match is not made. If you provide\n * a `.default` callback it will be invoked\n * instead.\n *\n * @param {Object} obj\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.format = function(obj){\n  var req = this.req;\n  var next = req.next;\n\n  var keys = Object.keys(obj)\n    .filter(function (v) { return v !== 'default' })\n\n  var key = keys.length > 0\n    ? req.accepts(keys)\n    : false;\n\n  this.vary(\"Accept\");\n\n  if (key) {\n    this.set('Content-Type', normalizeType(key).value);\n    obj[key](req, this, next);\n  } else if (obj.default) {\n    obj.default(req, this, next)\n  } else {\n    next(createError(406, {\n      types: normalizeTypes(keys).map(function (o) { return o.value })\n    }))\n  }\n\n  return this;\n};\n\n/**\n * Set _Content-Disposition_ header to _attachment_ with optional `filename`.\n *\n * @param {String} filename\n * @return {ServerResponse}\n * @public\n */\n\nres.attachment = function attachment(filename) {\n  if (filename) {\n    this.type(extname(filename));\n  }\n\n  this.set('Content-Disposition', contentDisposition(filename));\n\n  return this;\n};\n\n/**\n * Append additional header `field` with value `val`.\n *\n * Example:\n *\n *    res.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);\n *    res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n *    res.append('Warning', '199 Miscellaneous warning');\n *\n * @param {String} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.append = function append(field, val) {\n  var prev = this.get(field);\n  var value = val;\n\n  if (prev) {\n    // concat the new and prev vals\n    value = Array.isArray(prev) ? prev.concat(val)\n      : Array.isArray(val) ? [prev].concat(val)\n        : [prev, val]\n  }\n\n  return this.set(field, value);\n};\n\n/**\n * Set header `field` to `val`, or pass\n * an object of header fields.\n *\n * Examples:\n *\n *    res.set('Foo', ['bar', 'baz']);\n *    res.set('Accept', 'application/json');\n *    res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n *\n * Aliased as `res.header()`.\n *\n * When the set header is \"Content-Type\", the type is expanded to include\n * the charset if not present using `mime.contentType()`.\n *\n * @param {String|Object} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.set =\nres.header = function header(field, val) {\n  if (arguments.length === 2) {\n    var value = Array.isArray(val)\n      ? val.map(String)\n      : String(val);\n\n    // add charset to content-type\n    if (field.toLowerCase() === 'content-type') {\n      if (Array.isArray(value)) {\n        throw new TypeError('Content-Type cannot be set to an Array');\n      }\n      value = mime.contentType(value)\n    }\n\n    this.setHeader(field, value);\n  } else {\n    for (var key in field) {\n      this.set(key, field[key]);\n    }\n  }\n  return this;\n};\n\n/**\n * Get value for header `field`.\n *\n * @param {String} field\n * @return {String}\n * @public\n */\n\nres.get = function(field){\n  return this.getHeader(field);\n};\n\n/**\n * Clear cookie `name`.\n *\n * @param {String} name\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.clearCookie = function clearCookie(name, options) {\n  // Force cookie expiration by setting expires to the past\n  const opts = { path: '/', ...options, expires: new Date(1)};\n  // ensure maxAge is not passed\n  delete opts.maxAge\n\n  return this.cookie(name, '', opts);\n};\n\n/**\n * Set cookie `name` to `value`, with the given `options`.\n *\n * Options:\n *\n *    - `maxAge`   max-age in milliseconds, converted to `expires`\n *    - `signed`   sign the cookie\n *    - `path`     defaults to \"/\"\n *\n * Examples:\n *\n *    // \"Remember Me\" for 15 minutes\n *    res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });\n *\n *    // same as above\n *    res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })\n *\n * @param {String} name\n * @param {String|Object} value\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.cookie = function (name, value, options) {\n  var opts = { ...options };\n  var secret = this.req.secret;\n  var signed = opts.signed;\n\n  if (signed && !secret) {\n    throw new Error('cookieParser(\"secret\") required for signed cookies');\n  }\n\n  var val = typeof value === 'object'\n    ? 'j:' + JSON.stringify(value)\n    : String(value);\n\n  if (signed) {\n    val = 's:' + sign(val, secret);\n  }\n\n  if (opts.maxAge != null) {\n    var maxAge = opts.maxAge - 0\n\n    if (!isNaN(maxAge)) {\n      opts.expires = new Date(Date.now() + maxAge)\n      opts.maxAge = Math.floor(maxAge / 1000)\n    }\n  }\n\n  if (opts.path == null) {\n    opts.path = '/';\n  }\n\n  this.append('Set-Cookie', cookie.serialize(name, String(val), opts));\n\n  return this;\n};\n\n/**\n * Set the location header to `url`.\n *\n * The given `url` can also be \"back\", which redirects\n * to the _Referrer_ or _Referer_ headers or \"/\".\n *\n * Examples:\n *\n *    res.location('/foo/bar').;\n *    res.location('http://example.com');\n *    res.location('../login');\n *\n * @param {String} url\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.location = function location(url) {\n  return this.set('Location', encodeUrl(url));\n};\n\n/**\n * Redirect to the given `url` with optional response `status`\n * defaulting to 302.\n *\n * Examples:\n *\n *    res.redirect('/foo/bar');\n *    res.redirect('http://example.com');\n *    res.redirect(301, 'http://example.com');\n *    res.redirect('../login'); // /blog/post/1 -> /blog/login\n *\n * @public\n */\n\nres.redirect = function redirect(url) {\n  var address = url;\n  var body;\n  var status = 302;\n\n  // allow status / url\n  if (arguments.length === 2) {\n    status = arguments[0]\n    address = arguments[1]\n  }\n\n  if (!address) {\n    deprecate('Provide a url argument');\n  }\n\n  if (typeof address !== 'string') {\n    deprecate('Url must be a string');\n  }\n\n  if (typeof status !== 'number') {\n    deprecate('Status must be a number');\n  }\n\n  // Set location header\n  address = this.location(address).get('Location');\n\n  // Support text/{plain,html} by default\n  this.format({\n    text: function(){\n      body = statuses.message[status] + '. Redirecting to ' + address\n    },\n\n    html: function(){\n      var u = escapeHtml(address);\n      body = '<p>' + statuses.message[status] + '. Redirecting to ' + u + '</p>'\n    },\n\n    default: function(){\n      body = '';\n    }\n  });\n\n  // Respond\n  this.status(status);\n  this.set('Content-Length', Buffer.byteLength(body));\n\n  if (this.req.method === 'HEAD') {\n    this.end();\n  } else {\n    this.end(body);\n  }\n};\n\n/**\n * Add `field` to Vary. If already present in the Vary set, then\n * this call is simply ignored.\n *\n * @param {Array|String} field\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.vary = function(field){\n  vary(this, field);\n\n  return this;\n};\n\n/**\n * Render `view` with the given `options` and optional callback `fn`.\n * When a callback function is given a response will _not_ be made\n * automatically, otherwise a response of _200_ and _text/html_ is given.\n *\n * Options:\n *\n *  - `cache`     boolean hinting to the engine it should cache\n *  - `filename`  filename of the view being rendered\n *\n * @public\n */\n\nres.render = function render(view, options, callback) {\n  var app = this.req.app;\n  var done = callback;\n  var opts = options || {};\n  var req = this.req;\n  var self = this;\n\n  // support callback function as second arg\n  if (typeof options === 'function') {\n    done = options;\n    opts = {};\n  }\n\n  // merge res.locals\n  opts._locals = self.locals;\n\n  // default callback to respond\n  done = done || function (err, str) {\n    if (err) return req.next(err);\n    self.send(str);\n  };\n\n  // render\n  app.render(view, opts, done);\n};\n\n// pipe the send file stream\nfunction sendfile(res, file, options, callback) {\n  var done = false;\n  var streaming;\n\n  // request aborted\n  function onaborted() {\n    if (done) return;\n    done = true;\n\n    var err = new Error('Request aborted');\n    err.code = 'ECONNABORTED';\n    callback(err);\n  }\n\n  // directory\n  function ondirectory() {\n    if (done) return;\n    done = true;\n\n    var err = new Error('EISDIR, read');\n    err.code = 'EISDIR';\n    callback(err);\n  }\n\n  // errors\n  function onerror(err) {\n    if (done) return;\n    done = true;\n    callback(err);\n  }\n\n  // ended\n  function onend() {\n    if (done) return;\n    done = true;\n    callback();\n  }\n\n  // file\n  function onfile() {\n    streaming = false;\n  }\n\n  // finished\n  function onfinish(err) {\n    if (err && err.code === 'ECONNRESET') return onaborted();\n    if (err) return onerror(err);\n    if (done) return;\n\n    setImmediate(function () {\n      if (streaming !== false && !done) {\n        onaborted();\n        return;\n      }\n\n      if (done) return;\n      done = true;\n      callback();\n    });\n  }\n\n  // streaming\n  function onstream() {\n    streaming = true;\n  }\n\n  file.on('directory', ondirectory);\n  file.on('end', onend);\n  file.on('error', onerror);\n  file.on('file', onfile);\n  file.on('stream', onstream);\n  onFinished(res, onfinish);\n\n  if (options.headers) {\n    // set headers on successful transfer\n    file.on('headers', function headers(res) {\n      var obj = options.headers;\n      var keys = Object.keys(obj);\n\n      for (var i = 0; i < keys.length; i++) {\n        var k = keys[i];\n        res.setHeader(k, obj[k]);\n      }\n    });\n  }\n\n  // pipe\n  file.pipe(res);\n}\n\n/**\n * Stringify JSON, like JSON.stringify, but v8 optimized, with the\n * ability to escape characters that can trigger HTML sniffing.\n *\n * @param {*} value\n * @param {function} replacer\n * @param {number} spaces\n * @param {boolean} escape\n * @returns {string}\n * @private\n */\n\nfunction stringify (value, replacer, spaces, escape) {\n  // v8 checks arguments.length for optimizing simple call\n  // https://bugs.chromium.org/p/v8/issues/detail?id=4730\n  var json = replacer || spaces\n    ? JSON.stringify(value, replacer, spaces)\n    : JSON.stringify(value);\n\n  if (escape && typeof json === 'string') {\n    json = json.replace(/[<>&]/g, function (c) {\n      switch (c.charCodeAt(0)) {\n        case 0x3c:\n          return '\\\\u003c'\n        case 0x3e:\n          return '\\\\u003e'\n        case 0x26:\n          return '\\\\u0026'\n        /* istanbul ignore next: unreachable default */\n        default:\n          return c\n      }\n    })\n  }\n\n  return json\n}\n", "/*!\n * serve-static\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar parseUrl = require('parseurl')\nvar resolve = require('path').resolve\nvar send = require('send')\nvar url = require('url')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = serveStatic\n\n/**\n * @param {string} root\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction serveStatic (root, options) {\n  if (!root) {\n    throw new TypeError('root path required')\n  }\n\n  if (typeof root !== 'string') {\n    throw new TypeError('root path must be a string')\n  }\n\n  // copy options object\n  var opts = Object.create(options || null)\n\n  // fall-though\n  var fallthrough = opts.fallthrough !== false\n\n  // default redirect\n  var redirect = opts.redirect !== false\n\n  // headers listener\n  var setHeaders = opts.setHeaders\n\n  if (setHeaders && typeof setHeaders !== 'function') {\n    throw new TypeError('option setHeaders must be function')\n  }\n\n  // setup options for send\n  opts.maxage = opts.maxage || opts.maxAge || 0\n  opts.root = resolve(root)\n\n  // construct directory listener\n  var onDirectory = redirect\n    ? createRedirectDirectoryListener()\n    : createNotFoundDirectoryListener()\n\n  return function serveStatic (req, res, next) {\n    if (req.method !== 'GET' && req.method !== 'HEAD') {\n      if (fallthrough) {\n        return next()\n      }\n\n      // method not allowed\n      res.statusCode = 405\n      res.setHeader('Allow', 'GET, HEAD')\n      res.setHeader('Content-Length', '0')\n      res.end()\n      return\n    }\n\n    var forwardError = !fallthrough\n    var originalUrl = parseUrl.original(req)\n    var path = parseUrl(req).pathname\n\n    // make sure redirect occurs at mount\n    if (path === '/' && originalUrl.pathname.substr(-1) !== '/') {\n      path = ''\n    }\n\n    // create send stream\n    var stream = send(req, path, opts)\n\n    // add directory handler\n    stream.on('directory', onDirectory)\n\n    // add headers listener\n    if (setHeaders) {\n      stream.on('headers', setHeaders)\n    }\n\n    // add file listener for fallthrough\n    if (fallthrough) {\n      stream.on('file', function onFile () {\n        // once file is determined, always forward error\n        forwardError = true\n      })\n    }\n\n    // forward errors\n    stream.on('error', function error (err) {\n      if (forwardError || !(err.statusCode < 500)) {\n        next(err)\n        return\n      }\n\n      next()\n    })\n\n    // pipe\n    stream.pipe(res)\n  }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n  for (var i = 0; i < str.length; i++) {\n    if (str.charCodeAt(i) !== 0x2f /* / */) {\n      break\n    }\n  }\n\n  return i > 1\n    ? '/' + str.substr(i)\n    : str\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n  return '<!DOCTYPE html>\\n' +\n    '<html lang=\"en\">\\n' +\n    '<head>\\n' +\n    '<meta charset=\"utf-8\">\\n' +\n    '<title>' + title + '</title>\\n' +\n    '</head>\\n' +\n    '<body>\\n' +\n    '<pre>' + body + '</pre>\\n' +\n    '</body>\\n' +\n    '</html>\\n'\n}\n\n/**\n * Create a directory listener that just 404s.\n * @private\n */\n\nfunction createNotFoundDirectoryListener () {\n  return function notFound () {\n    this.error(404)\n  }\n}\n\n/**\n * Create a directory listener that performs a redirect.\n * @private\n */\n\nfunction createRedirectDirectoryListener () {\n  return function redirect (res) {\n    if (this.hasTrailingSlash()) {\n      this.error(404)\n      return\n    }\n\n    // get original URL\n    var originalUrl = parseUrl.original(this.req)\n\n    // append trailing slash\n    originalUrl.path = null\n    originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/')\n\n    // reformat the URL\n    var loc = encodeUrl(url.format(originalUrl))\n    var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc))\n\n    // send redirect response\n    res.statusCode = 301\n    res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n    res.setHeader('Content-Length', Buffer.byteLength(doc))\n    res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n    res.setHeader('X-Content-Type-Options', 'nosniff')\n    res.setHeader('Location', loc)\n    res.end(doc)\n  }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar bodyParser = require('body-parser')\nvar EventEmitter = require('node:events').EventEmitter;\nvar mixin = require('merge-descriptors');\nvar proto = require('./application');\nvar Router = require('router');\nvar req = require('./request');\nvar res = require('./response');\n\n/**\n * Expose `createApplication()`.\n */\n\nexports = module.exports = createApplication;\n\n/**\n * Create an express application.\n *\n * @return {Function}\n * @api public\n */\n\nfunction createApplication() {\n  var app = function(req, res, next) {\n    app.handle(req, res, next);\n  };\n\n  mixin(app, EventEmitter.prototype, false);\n  mixin(app, proto, false);\n\n  // expose the prototype that will get set on requests\n  app.request = Object.create(req, {\n    app: { configurable: true, enumerable: true, writable: true, value: app }\n  })\n\n  // expose the prototype that will get set on responses\n  app.response = Object.create(res, {\n    app: { configurable: true, enumerable: true, writable: true, value: app }\n  })\n\n  app.init();\n  return app;\n}\n\n/**\n * Expose the prototypes.\n */\n\nexports.application = proto;\nexports.request = req;\nexports.response = res;\n\n/**\n * Expose constructors.\n */\n\nexports.Route = Router.Route;\nexports.Router = Router;\n\n/**\n * Expose middleware\n */\n\nexports.json = bodyParser.json\nexports.raw = bodyParser.raw\nexports.static = require('serve-static');\nexports.text = bodyParser.text\nexports.urlencoded = bodyParser.urlencoded\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nmodule.exports = require('./lib/express');\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "(function () {\n\n  'use strict';\n\n  var assign = require('object-assign');\n  var vary = require('vary');\n\n  var defaults = {\n    origin: '*',\n    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n    preflightContinue: false,\n    optionsSuccessStatus: 204\n  };\n\n  function isString(s) {\n    return typeof s === 'string' || s instanceof String;\n  }\n\n  function isOriginAllowed(origin, allowedOrigin) {\n    if (Array.isArray(allowedOrigin)) {\n      for (var i = 0; i < allowedOrigin.length; ++i) {\n        if (isOriginAllowed(origin, allowedOrigin[i])) {\n          return true;\n        }\n      }\n      return false;\n    } else if (isString(allowedOrigin)) {\n      return origin === allowedOrigin;\n    } else if (allowedOrigin instanceof RegExp) {\n      return allowedOrigin.test(origin);\n    } else {\n      return !!allowedOrigin;\n    }\n  }\n\n  function configureOrigin(options, req) {\n    var requestOrigin = req.headers.origin,\n      headers = [],\n      isAllowed;\n\n    if (!options.origin || options.origin === '*') {\n      // allow any origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: '*'\n      }]);\n    } else if (isString(options.origin)) {\n      // fixed origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: options.origin\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    } else {\n      isAllowed = isOriginAllowed(requestOrigin, options.origin);\n      // reflect origin\n      headers.push([{\n        key: 'Access-Control-Allow-Origin',\n        value: isAllowed ? requestOrigin : false\n      }]);\n      headers.push([{\n        key: 'Vary',\n        value: 'Origin'\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureMethods(options) {\n    var methods = options.methods;\n    if (methods.join) {\n      methods = options.methods.join(','); // .methods is an array, so turn it into a string\n    }\n    return {\n      key: 'Access-Control-Allow-Methods',\n      value: methods\n    };\n  }\n\n  function configureCredentials(options) {\n    if (options.credentials === true) {\n      return {\n        key: 'Access-Control-Allow-Credentials',\n        value: 'true'\n      };\n    }\n    return null;\n  }\n\n  function configureAllowedHeaders(options, req) {\n    var allowedHeaders = options.allowedHeaders || options.headers;\n    var headers = [];\n\n    if (!allowedHeaders) {\n      allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n      headers.push([{\n        key: 'Vary',\n        value: 'Access-Control-Request-Headers'\n      }]);\n    } else if (allowedHeaders.join) {\n      allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n    }\n    if (allowedHeaders && allowedHeaders.length) {\n      headers.push([{\n        key: 'Access-Control-Allow-Headers',\n        value: allowedHeaders\n      }]);\n    }\n\n    return headers;\n  }\n\n  function configureExposedHeaders(options) {\n    var headers = options.exposedHeaders;\n    if (!headers) {\n      return null;\n    } else if (headers.join) {\n      headers = headers.join(','); // .headers is an array, so turn it into a string\n    }\n    if (headers && headers.length) {\n      return {\n        key: 'Access-Control-Expose-Headers',\n        value: headers\n      };\n    }\n    return null;\n  }\n\n  function configureMaxAge(options) {\n    var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()\n    if (maxAge && maxAge.length) {\n      return {\n        key: 'Access-Control-Max-Age',\n        value: maxAge\n      };\n    }\n    return null;\n  }\n\n  function applyHeaders(headers, res) {\n    for (var i = 0, n = headers.length; i < n; i++) {\n      var header = headers[i];\n      if (header) {\n        if (Array.isArray(header)) {\n          applyHeaders(header, res);\n        } else if (header.key === 'Vary' && header.value) {\n          vary(res, header.value);\n        } else if (header.value) {\n          res.setHeader(header.key, header.value);\n        }\n      }\n    }\n  }\n\n  function cors(options, req, res, next) {\n    var headers = [],\n      method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n    if (method === 'OPTIONS') {\n      // preflight\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options))\n      headers.push(configureMethods(options))\n      headers.push(configureAllowedHeaders(options, req));\n      headers.push(configureMaxAge(options))\n      headers.push(configureExposedHeaders(options))\n      applyHeaders(headers, res);\n\n      if (options.preflightContinue) {\n        next();\n      } else {\n        // Safari (and potentially other browsers) need content-length 0,\n        //   for 204 or they just hang waiting for a body\n        res.statusCode = options.optionsSuccessStatus;\n        res.setHeader('Content-Length', '0');\n        res.end();\n      }\n    } else {\n      // actual response\n      headers.push(configureOrigin(options, req));\n      headers.push(configureCredentials(options))\n      headers.push(configureExposedHeaders(options))\n      applyHeaders(headers, res);\n      next();\n    }\n  }\n\n  function middlewareWrapper(o) {\n    // if options are static (either via defaults or custom options passed in), wrap in a function\n    var optionsCallback = null;\n    if (typeof o === 'function') {\n      optionsCallback = o;\n    } else {\n      optionsCallback = function (req, cb) {\n        cb(null, o);\n      };\n    }\n\n    return function corsMiddleware(req, res, next) {\n      optionsCallback(req, function (err, options) {\n        if (err) {\n          next(err);\n        } else {\n          var corsOptions = assign({}, defaults, options);\n          var originCallback = null;\n          if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n            originCallback = corsOptions.origin;\n          } else if (corsOptions.origin) {\n            originCallback = function (origin, cb) {\n              cb(null, corsOptions.origin);\n            };\n          }\n\n          if (originCallback) {\n            originCallback(req.headers.origin, function (err2, origin) {\n              if (err2 || !origin) {\n                next(err2);\n              } else {\n                corsOptions.origin = origin;\n                cors(corsOptions, req, res, next);\n              }\n            });\n          } else {\n            next();\n          }\n        }\n      });\n    };\n  }\n\n  // can pass either an options hash, an options delegate, or nothing\n  module.exports = middlewareWrapper;\n\n}());\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n", "var common   = exports,\n    url      = require('url'),\n    extend   = require('util')._extend,\n    required = require('requires-port');\n\nvar upgradeHeader = /(^|,)\\s*upgrade\\s*($|,)/i,\n    isSSL = /^https|wss/;\n\n/**\n * Simple Regex for testing if protocol is https\n */\ncommon.isSSL = isSSL;\n/**\n * Copies the right headers from `options` and `req` to\n * `outgoing` which is then used to fire the proxied\n * request.\n *\n * Examples:\n *\n *    common.setupOutgoing(outgoing, options, req)\n *    // => { host: ..., hostname: ...}\n *\n * @param {Object} Outgoing Base object to be filled with required properties\n * @param {Object} Options Config object passed to the proxy\n * @param {ClientRequest} Req Request Object\n * @param {String} Forward String to select forward or target\n *\u00A0\n * @return {Object} Outgoing Object with all required properties set\n *\n * @api private\n */\n\ncommon.setupOutgoing = function(outgoing, options, req, forward) {\n  outgoing.port = options[forward || 'target'].port ||\n                  (isSSL.test(options[forward || 'target'].protocol) ? 443 : 80);\n\n  ['host', 'hostname', 'socketPath', 'pfx', 'key',\n    'passphrase', 'cert', 'ca', 'ciphers', 'secureProtocol'].forEach(\n    function(e) { outgoing[e] = options[forward || 'target'][e]; }\n  );\n\n  outgoing.method = options.method || req.method;\n  outgoing.headers = extend({}, req.headers);\n\n  if (options.headers){\n    extend(outgoing.headers, options.headers);\n  }\n\n  if (options.auth) {\n    outgoing.auth = options.auth;\n  }\n  \n  if (options.ca) {\n      outgoing.ca = options.ca;\n  }\n\n  if (isSSL.test(options[forward || 'target'].protocol)) {\n    outgoing.rejectUnauthorized = (typeof options.secure === \"undefined\") ? true : options.secure;\n  }\n\n\n  outgoing.agent = options.agent || false;\n  outgoing.localAddress = options.localAddress;\n\n  //\n  // Remark: If we are false and not upgrading, set the connection: close. This is the right thing to do\n  // as node core doesn't handle this COMPLETELY properly yet.\n  //\n  if (!outgoing.agent) {\n    outgoing.headers = outgoing.headers || {};\n    if (typeof outgoing.headers.connection !== 'string'\n        || !upgradeHeader.test(outgoing.headers.connection)\n       ) { outgoing.headers.connection = 'close'; }\n  }\n\n\n  // the final path is target path + relative path requested by user:\n  var target = options[forward || 'target'];\n  var targetPath = target && options.prependPath !== false\n    ? (target.path || '')\n    : '';\n\n  //\n  // Remark: Can we somehow not use url.parse as a perf optimization?\n  //\n  var outgoingPath = !options.toProxy\n    ? (url.parse(req.url).path || '')\n    : req.url;\n\n  //\n  // Remark: ignorePath will just straight up ignore whatever the request's\n  // path is. This can be labeled as FOOT-GUN material if you do not know what\n  // you are doing and are using conflicting options.\n  //\n  outgoingPath = !options.ignorePath ? outgoingPath : '';\n\n  outgoing.path = common.urlJoin(targetPath, outgoingPath);\n\n  if (options.changeOrigin) {\n    outgoing.headers.host =\n      required(outgoing.port, options[forward || 'target'].protocol) && !hasPort(outgoing.host)\n        ? outgoing.host + ':' + outgoing.port\n        : outgoing.host;\n  }\n  return outgoing;\n};\n\n/**\n * Set the proper configuration for sockets,\n * set no delay and set keep alive, also set\n * the timeout to 0.\n *\n * Examples:\n *\n *    common.setupSocket(socket)\n *    // => Socket\n *\n * @param {Socket} Socket instance to setup\n *\u00A0\n * @return {Socket} Return the configured socket.\n *\n * @api private\n */\n\ncommon.setupSocket = function(socket) {\n  socket.setTimeout(0);\n  socket.setNoDelay(true);\n\n  socket.setKeepAlive(true, 0);\n\n  return socket;\n};\n\n/**\n * Get the port number from the host. Or guess it based on the connection type.\n *\n * @param {Request} req Incoming HTTP request.\n *\n * @return {String} The port number.\n *\n * @api private\n */\ncommon.getPort = function(req) {\n  var res = req.headers.host ? req.headers.host.match(/:(\\d+)/) : '';\n\n  return res ?\n    res[1] :\n    common.hasEncryptedConnection(req) ? '443' : '80';\n};\n\n/**\n * Check if the request has an encrypted connection.\n *\n * @param {Request} req Incoming HTTP request.\n *\n * @return {Boolean} Whether the connection is encrypted or not.\n *\n * @api private\n */\ncommon.hasEncryptedConnection = function(req) {\n  return Boolean(req.connection.encrypted || req.connection.pair);\n};\n\n/**\n * OS-agnostic join (doesn't break on URLs like path.join does on Windows)>\n *\n * @return {String} The generated path.\n *\n * @api private\n */\n\ncommon.urlJoin = function() {\n    //\n    // We do not want to mess with the query string. All we want to touch is the path.\n    //\n  var args = Array.prototype.slice.call(arguments),\n      lastIndex = args.length - 1,\n      last = args[lastIndex],\n      lastSegs = last.split('?'),\n      retSegs;\n\n  args[lastIndex] = lastSegs.shift();\n\n  //\n  // Join all strings, but remove empty strings so we don't get extra slashes from\n  // joining e.g. ['', 'am']\n  //\n  retSegs = [\n    args.filter(Boolean).join('/')\n        .replace(/\\/+/g, '/')\n        .replace('http:/', 'http://')\n        .replace('https:/', 'https://')\n  ];\n\n  // Only join the query string if it exists so we don't have trailing a '?'\n  // on every request\n\n  // Handle case where there could be multiple ? in the URL.\n  retSegs.push.apply(retSegs, lastSegs);\n\n  return retSegs.join('?')\n};\n\n/**\n * Rewrites or removes the domain of a cookie header\n *\n * @param {String|Array} Header\n * @param {Object} Config, mapping of domain to rewritten domain.\n *                 '*' key to match any domain, null value to remove the domain.\n *\n * @api private\n */\ncommon.rewriteCookieProperty = function rewriteCookieProperty(header, config, property) {\n  if (Array.isArray(header)) {\n    return header.map(function (headerElement) {\n      return rewriteCookieProperty(headerElement, config, property);\n    });\n  }\n  return header.replace(new RegExp(\"(;\\\\s*\" + property + \"=)([^;]+)\", 'i'), function(match, prefix, previousValue) {\n    var newValue;\n    if (previousValue in config) {\n      newValue = config[previousValue];\n    } else if ('*' in config) {\n      newValue = config['*'];\n    } else {\n      //no match, return previous value\n      return match;\n    }\n    if (newValue) {\n      //replace value\n      return prefix + newValue;\n    } else {\n      //remove value\n      return '';\n    }\n  });\n};\n\n/**\n * Check the host and see if it potentially has a port in it (keep it simple)\n *\n * @returns {Boolean} Whether we have one or not\n *\n * @api private\n */\nfunction hasPort(host) {\n  return !!~host.indexOf(':');\n};\n", "var url    = require('url'),\n    common = require('../common');\n\n\nvar redirectRegex = /^201|30(1|2|7|8)$/;\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, res, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\nmodule.exports = { // <--\n\n  /**\n   * If is a HTTP 1.0 request, remove chunk headers\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {proxyResponse} Res Response object from the proxy request\n   *\n   * @api private\n   */\n  removeChunked: function removeChunked(req, res, proxyRes) {\n    if (req.httpVersion === '1.0') {\n      delete proxyRes.headers['transfer-encoding'];\n    }\n  },\n\n  /**\n   * If is a HTTP 1.0 request, set the correct connection header\n   * or if connection header not present, then use `keep-alive`\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {proxyResponse} Res Response object from the proxy request\n   *\n   * @api private\n   */\n  setConnection: function setConnection(req, res, proxyRes) {\n    if (req.httpVersion === '1.0') {\n      proxyRes.headers.connection = req.headers.connection || 'close';\n    } else if (req.httpVersion !== '2.0' && !proxyRes.headers.connection) {\n      proxyRes.headers.connection = req.headers.connection || 'keep-alive';\n    }\n  },\n\n  setRedirectHostRewrite: function setRedirectHostRewrite(req, res, proxyRes, options) {\n    if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite)\n        && proxyRes.headers['location']\n        && redirectRegex.test(proxyRes.statusCode)) {\n      var target = url.parse(options.target);\n      var u = url.parse(proxyRes.headers['location']);\n\n      // make sure the redirected host matches the target host before rewriting\n      if (target.host != u.host) {\n        return;\n      }\n\n      if (options.hostRewrite) {\n        u.host = options.hostRewrite;\n      } else if (options.autoRewrite) {\n        u.host = req.headers['host'];\n      }\n      if (options.protocolRewrite) {\n        u.protocol = options.protocolRewrite;\n      }\n\n      proxyRes.headers['location'] = u.format();\n    }\n  },\n  /**\n   * Copy headers from proxyResponse to response\n   * set each header in response object.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {proxyResponse} Res Response object from the proxy request\n   * @param {Object} Options options.cookieDomainRewrite: Config to rewrite cookie domain\n   *\n   * @api private\n   */\n  writeHeaders: function writeHeaders(req, res, proxyRes, options) {\n    var rewriteCookieDomainConfig = options.cookieDomainRewrite,\n        rewriteCookiePathConfig = options.cookiePathRewrite,\n        preserveHeaderKeyCase = options.preserveHeaderKeyCase,\n        rawHeaderKeyMap,\n        setHeader = function(key, header) {\n          if (header == undefined) return;\n          if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {\n            header = common.rewriteCookieProperty(header, rewriteCookieDomainConfig, 'domain');\n          }\n          if (rewriteCookiePathConfig && key.toLowerCase() === 'set-cookie') {\n            header = common.rewriteCookieProperty(header, rewriteCookiePathConfig, 'path');\n          }\n          res.setHeader(String(key).trim(), header);\n        };\n\n    if (typeof rewriteCookieDomainConfig === 'string') { //also test for ''\n      rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig };\n    }\n\n    if (typeof rewriteCookiePathConfig === 'string') { //also test for ''\n      rewriteCookiePathConfig = { '*': rewriteCookiePathConfig };\n    }\n\n    // message.rawHeaders is added in: v0.11.6\n    // https://nodejs.org/api/http.html#http_message_rawheaders\n    if (preserveHeaderKeyCase && proxyRes.rawHeaders != undefined) {\n      rawHeaderKeyMap = {};\n      for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {\n        var key = proxyRes.rawHeaders[i];\n        rawHeaderKeyMap[key.toLowerCase()] = key;\n      }\n    }\n\n    Object.keys(proxyRes.headers).forEach(function(key) {\n      var header = proxyRes.headers[key];\n      if (preserveHeaderKeyCase && rawHeaderKeyMap) {\n        key = rawHeaderKeyMap[key] || key;\n      }\n      setHeader(key, header);\n    });\n  },\n\n  /**\n   * Set the statusCode from the proxyResponse\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {proxyResponse} Res Response object from the proxy request\n   *\n   * @api private\n   */\n  writeStatusCode: function writeStatusCode(req, res, proxyRes) {\n    // From Node.js docs: response.writeHead(statusCode[, statusMessage][, headers])\n    if(proxyRes.statusMessage) {\n      res.statusCode = proxyRes.statusCode;\n      res.statusMessage = proxyRes.statusMessage;\n    } else {\n      res.statusCode = proxyRes.statusCode;\n    }\n  }\n\n};\n", "var debug;\n\nmodule.exports = function () {\n  if (!debug) {\n    try {\n      /* eslint global-require: off */\n      debug = require(\"debug\")(\"follow-redirects\");\n    }\n    catch (error) { /* */ }\n    if (typeof debug !== \"function\") {\n      debug = function () { /* */ };\n    }\n  }\n  debug.apply(null, arguments);\n};\n", "var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Preventive platform detection\n// istanbul ignore next\n(function detectUnsupportedEnvironment() {\n  var looksLikeNode = typeof process !== \"undefined\";\n  var looksLikeBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n  var looksLikeV8 = isFunction(Error.captureStackTrace);\n  if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {\n    console.warn(\"The follow-redirects package should be excluded from browser builds.\");\n  }\n}());\n\n// Whether to use the native URL object or the legacy url module\nvar useNativeURL = false;\ntry {\n  assert(new URL(\"\"));\n}\ncatch (error) {\n  useNativeURL = error.code === \"ERR_INVALID_URL\";\n}\n\n// HTTP headers to drop across HTTP/HTTPS and domain boundaries\nvar sensitiveHeaders = [\n  \"Authorization\",\n  \"Proxy-Authorization\",\n  \"Cookie\",\n];\n\n// URL fields to preserve in copy operations\nvar preservedUrlFields = [\n  \"auth\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"path\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"query\",\n  \"search\",\n  \"hash\",\n];\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n  eventHandlers[event] = function (arg1, arg2, arg3) {\n    this._redirectable.emit(event, arg1, arg2, arg3);\n  };\n});\n\n// Error types with codes\nvar InvalidUrlError = createErrorType(\n  \"ERR_INVALID_URL\",\n  \"Invalid URL\",\n  TypeError\n);\nvar RedirectionError = createErrorType(\n  \"ERR_FR_REDIRECTION_FAILURE\",\n  \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n  \"ERR_FR_TOO_MANY_REDIRECTS\",\n  \"Maximum number of redirects exceeded\",\n  RedirectionError\n);\nvar MaxBodyLengthExceededError = createErrorType(\n  \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n  \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n  \"ERR_STREAM_WRITE_AFTER_END\",\n  \"write after end\"\n);\n\n// istanbul ignore next\nvar destroy = Writable.prototype.destroy || noop;\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n  // Initialize the request\n  Writable.call(this);\n  this._sanitizeOptions(options);\n  this._options = options;\n  this._ended = false;\n  this._ending = false;\n  this._redirectCount = 0;\n  this._redirects = [];\n  this._requestBodyLength = 0;\n  this._requestBodyBuffers = [];\n\n  // Attach a callback if passed\n  if (responseCallback) {\n    this.on(\"response\", responseCallback);\n  }\n\n  // React to responses of native requests\n  var self = this;\n  this._onNativeResponse = function (response) {\n    try {\n      self._processResponse(response);\n    }\n    catch (cause) {\n      self.emit(\"error\", cause instanceof RedirectionError ?\n        cause : new RedirectionError({ cause: cause }));\n    }\n  };\n\n  // Create filter for sensitive HTTP headers\n  this._headerFilter = new RegExp(\"^(?:\" +\n      sensitiveHeaders.concat(options.sensitiveHeaders).map(escapeRegex).join(\"|\") +\n    \")$\", \"i\");\n\n  // Perform the first request\n  this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n  destroyRequest(this._currentRequest);\n  this._currentRequest.abort();\n  this.emit(\"abort\");\n};\n\nRedirectableRequest.prototype.destroy = function (error) {\n  destroyRequest(this._currentRequest, error);\n  destroy.call(this, error);\n  return this;\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n  // Writing is not allowed if end has been called\n  if (this._ending) {\n    throw new WriteAfterEndError();\n  }\n\n  // Validate input and shift parameters if necessary\n  if (!isString(data) && !isBuffer(data)) {\n    throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n  }\n  if (isFunction(encoding)) {\n    callback = encoding;\n    encoding = null;\n  }\n\n  // Ignore empty buffers, since writing them doesn't invoke the callback\n  // https://github.com/nodejs/node/issues/22066\n  if (data.length === 0) {\n    if (callback) {\n      callback();\n    }\n    return;\n  }\n  // Only write when we don't exceed the maximum body length\n  if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n    this._requestBodyLength += data.length;\n    this._requestBodyBuffers.push({ data: data, encoding: encoding });\n    this._currentRequest.write(data, encoding, callback);\n  }\n  // Error when we exceed the maximum body length\n  else {\n    this.emit(\"error\", new MaxBodyLengthExceededError());\n    this.abort();\n  }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n  // Shift parameters if necessary\n  if (isFunction(data)) {\n    callback = data;\n    data = encoding = null;\n  }\n  else if (isFunction(encoding)) {\n    callback = encoding;\n    encoding = null;\n  }\n\n  // Write data if needed and end\n  if (!data) {\n    this._ended = this._ending = true;\n    this._currentRequest.end(null, null, callback);\n  }\n  else {\n    var self = this;\n    var currentRequest = this._currentRequest;\n    this.write(data, encoding, function () {\n      self._ended = true;\n      currentRequest.end(null, null, callback);\n    });\n    this._ending = true;\n  }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n  this._options.headers[name] = value;\n  this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n  delete this._options.headers[name];\n  this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n  var self = this;\n\n  // Destroys the socket on timeout\n  function destroyOnTimeout(socket) {\n    socket.setTimeout(msecs);\n    socket.removeListener(\"timeout\", socket.destroy);\n    socket.addListener(\"timeout\", socket.destroy);\n  }\n\n  // Sets up a timer to trigger a timeout event\n  function startTimer(socket) {\n    if (self._timeout) {\n      clearTimeout(self._timeout);\n    }\n    self._timeout = setTimeout(function () {\n      self.emit(\"timeout\");\n      clearTimer();\n    }, msecs);\n    destroyOnTimeout(socket);\n  }\n\n  // Stops a timeout from triggering\n  function clearTimer() {\n    // Clear the timeout\n    if (self._timeout) {\n      clearTimeout(self._timeout);\n      self._timeout = null;\n    }\n\n    // Clean up all attached listeners\n    self.removeListener(\"abort\", clearTimer);\n    self.removeListener(\"error\", clearTimer);\n    self.removeListener(\"response\", clearTimer);\n    self.removeListener(\"close\", clearTimer);\n    if (callback) {\n      self.removeListener(\"timeout\", callback);\n    }\n    if (!self.socket) {\n      self._currentRequest.removeListener(\"socket\", startTimer);\n    }\n  }\n\n  // Attach callback if passed\n  if (callback) {\n    this.on(\"timeout\", callback);\n  }\n\n  // Start the timer if or when the socket is opened\n  if (this.socket) {\n    startTimer(this.socket);\n  }\n  else {\n    this._currentRequest.once(\"socket\", startTimer);\n  }\n\n  // Clean up on events\n  this.on(\"socket\", destroyOnTimeout);\n  this.on(\"abort\", clearTimer);\n  this.on(\"error\", clearTimer);\n  this.on(\"response\", clearTimer);\n  this.on(\"close\", clearTimer);\n\n  return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n  \"flushHeaders\", \"getHeader\",\n  \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n  RedirectableRequest.prototype[method] = function (a, b) {\n    return this._currentRequest[method](a, b);\n  };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n  Object.defineProperty(RedirectableRequest.prototype, property, {\n    get: function () { return this._currentRequest[property]; },\n  });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n  // Ensure headers are always present\n  if (!options.headers) {\n    options.headers = {};\n  }\n  if (!isArray(options.sensitiveHeaders)) {\n    options.sensitiveHeaders = [];\n  }\n\n  // Since http.request treats host as an alias of hostname,\n  // but the url module interprets host as hostname plus port,\n  // eliminate the host property to avoid confusion.\n  if (options.host) {\n    // Use hostname if set, because it has precedence\n    if (!options.hostname) {\n      options.hostname = options.host;\n    }\n    delete options.host;\n  }\n\n  // Complete the URL object when necessary\n  if (!options.pathname && options.path) {\n    var searchPos = options.path.indexOf(\"?\");\n    if (searchPos < 0) {\n      options.pathname = options.path;\n    }\n    else {\n      options.pathname = options.path.substring(0, searchPos);\n      options.search = options.path.substring(searchPos);\n    }\n  }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n  // Load the native protocol\n  var protocol = this._options.protocol;\n  var nativeProtocol = this._options.nativeProtocols[protocol];\n  if (!nativeProtocol) {\n    throw new TypeError(\"Unsupported protocol \" + protocol);\n  }\n\n  // If specified, use the agent corresponding to the protocol\n  // (HTTP and HTTPS use different types of agents)\n  if (this._options.agents) {\n    var scheme = protocol.slice(0, -1);\n    this._options.agent = this._options.agents[scheme];\n  }\n\n  // Create the native request and set up its event handlers\n  var request = this._currentRequest =\n        nativeProtocol.request(this._options, this._onNativeResponse);\n  request._redirectable = this;\n  for (var event of events) {\n    request.on(event, eventHandlers[event]);\n  }\n\n  // RFC7230\u00A75.3.1: When making a request directly to an origin server, [\u2026]\n  // a client MUST send only the absolute path [\u2026] as the request-target.\n  this._currentUrl = /^\\//.test(this._options.path) ?\n    url.format(this._options) :\n    // When making a request to a proxy, [\u2026]\n    // a client MUST send the target URI in absolute-form [\u2026].\n    this._options.path;\n\n  // End a redirected request\n  // (The first request must be ended explicitly with RedirectableRequest#end)\n  if (this._isRedirect) {\n    // Write the request entity and end\n    var i = 0;\n    var self = this;\n    var buffers = this._requestBodyBuffers;\n    (function writeNext(error) {\n      // Only write if this request has not been redirected yet\n      // istanbul ignore else\n      if (request === self._currentRequest) {\n        // Report any write errors\n        // istanbul ignore if\n        if (error) {\n          self.emit(\"error\", error);\n        }\n        // Write the next buffer if there are still left\n        else if (i < buffers.length) {\n          var buffer = buffers[i++];\n          // istanbul ignore else\n          if (!request.finished) {\n            request.write(buffer.data, buffer.encoding, writeNext);\n          }\n        }\n        // End the request if `end` has been called on us\n        else if (self._ended) {\n          request.end();\n        }\n      }\n    }());\n  }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n  // Store the redirected response\n  var statusCode = response.statusCode;\n  if (this._options.trackRedirects) {\n    this._redirects.push({\n      url: this._currentUrl,\n      headers: response.headers,\n      statusCode: statusCode,\n    });\n  }\n\n  // RFC7231\u00A76.4: The 3xx (Redirection) class of status code indicates\n  // that further action needs to be taken by the user agent in order to\n  // fulfill the request. If a Location header field is provided,\n  // the user agent MAY automatically redirect its request to the URI\n  // referenced by the Location field value,\n  // even if the specific status code is not understood.\n\n  // If the response is not a redirect; return it as-is\n  var location = response.headers.location;\n  if (!location || this._options.followRedirects === false ||\n      statusCode < 300 || statusCode >= 400) {\n    response.responseUrl = this._currentUrl;\n    response.redirects = this._redirects;\n    this.emit(\"response\", response);\n\n    // Clean up\n    this._requestBodyBuffers = [];\n    return;\n  }\n\n  // The response is a redirect, so abort the current request\n  destroyRequest(this._currentRequest);\n  // Discard the remainder of the response to avoid waiting for data\n  response.destroy();\n\n  // RFC7231\u00A76.4: A client SHOULD detect and intervene\n  // in cyclical redirections (i.e., \"infinite\" redirection loops).\n  if (++this._redirectCount > this._options.maxRedirects) {\n    throw new TooManyRedirectsError();\n  }\n\n  // Store the request headers if applicable\n  var requestHeaders;\n  var beforeRedirect = this._options.beforeRedirect;\n  if (beforeRedirect) {\n    requestHeaders = Object.assign({\n      // The Host header was set by nativeProtocol.request\n      Host: response.req.getHeader(\"host\"),\n    }, this._options.headers);\n  }\n\n  // RFC7231\u00A76.4: Automatic redirection needs to done with\n  // care for methods not known to be safe, [\u2026]\n  // RFC7231\u00A76.4.2\u20133: For historical reasons, a user agent MAY change\n  // the request method from POST to GET for the subsequent request.\n  var method = this._options.method;\n  if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n      // RFC7231\u00A76.4.4: The 303 (See Other) status code indicates that\n      // the server is redirecting the user agent to a different resource [\u2026]\n      // A user agent can perform a retrieval request targeting that URI\n      // (a GET or HEAD request if using HTTP) [\u2026]\n      (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n    this._options.method = \"GET\";\n    // Drop a possible entity and headers related to it\n    this._requestBodyBuffers = [];\n    removeMatchingHeaders(/^content-/i, this._options.headers);\n  }\n\n  // Drop the Host header, as the redirect might lead to a different host\n  var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n  // If the redirect is relative, carry over the host of the last request\n  var currentUrlParts = parseUrl(this._currentUrl);\n  var currentHost = currentHostHeader || currentUrlParts.host;\n  var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n    url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n  // Create the redirected request\n  var redirectUrl = resolveUrl(location, currentUrl);\n  debug(\"redirecting to\", redirectUrl.href);\n  this._isRedirect = true;\n  spreadUrlObject(redirectUrl, this._options);\n\n  // Drop confidential headers when redirecting to a less secure protocol\n  // or to a different domain that is not a superdomain\n  if (redirectUrl.protocol !== currentUrlParts.protocol &&\n     redirectUrl.protocol !== \"https:\" ||\n     redirectUrl.host !== currentHost &&\n     !isSubdomain(redirectUrl.host, currentHost)) {\n    removeMatchingHeaders(this._headerFilter, this._options.headers);\n  }\n\n  // Evaluate the beforeRedirect callback\n  if (isFunction(beforeRedirect)) {\n    var responseDetails = {\n      headers: response.headers,\n      statusCode: statusCode,\n    };\n    var requestDetails = {\n      url: currentUrl,\n      method: method,\n      headers: requestHeaders,\n    };\n    beforeRedirect(this._options, responseDetails, requestDetails);\n    this._sanitizeOptions(this._options);\n  }\n\n  // Perform the redirected request\n  this._performRequest();\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n  // Default settings\n  var exports = {\n    maxRedirects: 21,\n    maxBodyLength: 10 * 1024 * 1024,\n  };\n\n  // Wrap each protocol\n  var nativeProtocols = {};\n  Object.keys(protocols).forEach(function (scheme) {\n    var protocol = scheme + \":\";\n    var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n    var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n    // Executes a request, following redirects\n    function request(input, options, callback) {\n      // Parse parameters, ensuring that input is an object\n      if (isURL(input)) {\n        input = spreadUrlObject(input);\n      }\n      else if (isString(input)) {\n        input = spreadUrlObject(parseUrl(input));\n      }\n      else {\n        callback = options;\n        options = validateUrl(input);\n        input = { protocol: protocol };\n      }\n      if (isFunction(options)) {\n        callback = options;\n        options = null;\n      }\n\n      // Set defaults\n      options = Object.assign({\n        maxRedirects: exports.maxRedirects,\n        maxBodyLength: exports.maxBodyLength,\n      }, input, options);\n      options.nativeProtocols = nativeProtocols;\n      if (!isString(options.host) && !isString(options.hostname)) {\n        options.hostname = \"::1\";\n      }\n\n      assert.equal(options.protocol, protocol, \"protocol mismatch\");\n      debug(\"options\", options);\n      return new RedirectableRequest(options, callback);\n    }\n\n    // Executes a GET request, following redirects\n    function get(input, options, callback) {\n      var wrappedRequest = wrappedProtocol.request(input, options, callback);\n      wrappedRequest.end();\n      return wrappedRequest;\n    }\n\n    // Expose the properties on the wrapped protocol\n    Object.defineProperties(wrappedProtocol, {\n      request: { value: request, configurable: true, enumerable: true, writable: true },\n      get: { value: get, configurable: true, enumerable: true, writable: true },\n    });\n  });\n  return exports;\n}\n\nfunction noop() { /* empty */ }\n\nfunction parseUrl(input) {\n  var parsed;\n  // istanbul ignore else\n  if (useNativeURL) {\n    parsed = new URL(input);\n  }\n  else {\n    // Ensure the URL is valid and absolute\n    parsed = validateUrl(url.parse(input));\n    if (!isString(parsed.protocol)) {\n      throw new InvalidUrlError({ input });\n    }\n  }\n  return parsed;\n}\n\nfunction resolveUrl(relative, base) {\n  // istanbul ignore next\n  return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));\n}\n\nfunction validateUrl(input) {\n  if (/^\\[/.test(input.hostname) && !/^\\[[:0-9a-f]+\\]$/i.test(input.hostname)) {\n    throw new InvalidUrlError({ input: input.href || input });\n  }\n  if (/^\\[/.test(input.host) && !/^\\[[:0-9a-f]+\\](:\\d+)?$/i.test(input.host)) {\n    throw new InvalidUrlError({ input: input.href || input });\n  }\n  return input;\n}\n\nfunction spreadUrlObject(urlObject, target) {\n  var spread = target || {};\n  for (var key of preservedUrlFields) {\n    spread[key] = urlObject[key];\n  }\n\n  // Fix IPv6 hostname\n  if (spread.hostname.startsWith(\"[\")) {\n    spread.hostname = spread.hostname.slice(1, -1);\n  }\n  // Ensure port is a number\n  if (spread.port !== \"\") {\n    spread.port = Number(spread.port);\n  }\n  // Concatenate path\n  spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;\n\n  return spread;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n  var lastValue;\n  for (var header in headers) {\n    if (regex.test(header)) {\n      lastValue = headers[header];\n      delete headers[header];\n    }\n  }\n  return (lastValue === null || typeof lastValue === \"undefined\") ?\n    undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n  // Create constructor\n  function CustomError(properties) {\n    // istanbul ignore else\n    if (isFunction(Error.captureStackTrace)) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n    Object.assign(this, properties || {});\n    this.code = code;\n    this.message = this.cause ? message + \": \" + this.cause.message : message;\n  }\n\n  // Attach constructor and set default properties\n  CustomError.prototype = new (baseClass || Error)();\n  Object.defineProperties(CustomError.prototype, {\n    constructor: {\n      value: CustomError,\n      enumerable: false,\n    },\n    name: {\n      value: \"Error [\" + code + \"]\",\n      enumerable: false,\n    },\n  });\n  return CustomError;\n}\n\nfunction destroyRequest(request, error) {\n  for (var event of events) {\n    request.removeListener(event, eventHandlers[event]);\n  }\n  request.on(\"error\", noop);\n  request.destroy(error);\n}\n\nfunction isSubdomain(subdomain, domain) {\n  assert(isString(subdomain) && isString(domain));\n  var dot = subdomain.length - domain.length - 1;\n  return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isArray(value) {\n  return value instanceof Array;\n}\n\nfunction isString(value) {\n  return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n  return typeof value === \"object\" && (\"length\" in value);\n}\n\nfunction isURL(value) {\n  return URL && value instanceof URL;\n}\n\nfunction escapeRegex(regex) {\n  return regex.replace(/[\\]\\\\/()*+?.$]/g, \"\\\\$&\");\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n", "var httpNative   = require('http'),\n    httpsNative  = require('https'),\n    web_o  = require('./web-outgoing'),\n    common = require('../common'),\n    followRedirects = require('follow-redirects');\n\nweb_o = Object.keys(web_o).map(function(pass) {\n  return web_o[pass];\n});\n\nvar nativeAgents = { http: httpNative, https: httpsNative };\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, res, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\n\nmodule.exports = {\n\n  /**\n   * Sets `content-length` to '0' if request is of DELETE type.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n\n  deleteLength: function deleteLength(req, res, options) {\n    if((req.method === 'DELETE' || req.method === 'OPTIONS')\n       && !req.headers['content-length']) {\n      req.headers['content-length'] = '0';\n      delete req.headers['transfer-encoding'];\n    }\n  },\n\n  /**\n   * Sets timeout in request socket if it was specified in options.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n\n  timeout: function timeout(req, res, options) {\n    if(options.timeout) {\n      req.socket.setTimeout(options.timeout);\n    }\n  },\n\n  /**\n   * Sets `x-forwarded-*` headers if specified in config.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n\n  XHeaders: function XHeaders(req, res, options) {\n    if(!options.xfwd) return;\n\n    var encrypted = req.isSpdy || common.hasEncryptedConnection(req);\n    var values = {\n      for  : req.connection.remoteAddress || req.socket.remoteAddress,\n      port : common.getPort(req),\n      proto: encrypted ? 'https' : 'http'\n    };\n\n    ['for', 'port', 'proto'].forEach(function(header) {\n      req.headers['x-forwarded-' + header] =\n        (req.headers['x-forwarded-' + header] || '') +\n        (req.headers['x-forwarded-' + header] ? ',' : '') +\n        values[header];\n    });\n\n    req.headers['x-forwarded-host'] = req.headers['x-forwarded-host'] || req.headers['host'] || '';\n  },\n\n  /**\n   * Does the actual proxying. If `forward` is enabled fires up\n   * a ForwardStream, same happens for ProxyStream. The request\n   * just dies otherwise.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {IncomingMessage} Res Response object\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n\n  stream: function stream(req, res, options, _, server, clb) {\n\n    // And we begin!\n    server.emit('start', req, res, options.target || options.forward);\n\n    var agents = options.followRedirects ? followRedirects : nativeAgents;\n    var http = agents.http;\n    var https = agents.https;\n\n    if(options.forward) {\n      // If forward enable, so just pipe the request\n      var forwardReq = (options.forward.protocol === 'https:' ? https : http).request(\n        common.setupOutgoing(options.ssl || {}, options, req, 'forward')\n      );\n\n      // error handler (e.g. ECONNRESET, ECONNREFUSED)\n      // Handle errors on incoming request as well as it makes sense to\n      var forwardError = createErrorHandler(forwardReq, options.forward);\n      req.on('error', forwardError);\n      forwardReq.on('error', forwardError);\n\n      (options.buffer || req).pipe(forwardReq);\n      if(!options.target) { return res.end(); }\n    }\n\n    // Request initalization\n    var proxyReq = (options.target.protocol === 'https:' ? https : http).request(\n      common.setupOutgoing(options.ssl || {}, options, req)\n    );\n\n    // Enable developers to modify the proxyReq before headers are sent\n    proxyReq.on('socket', function(socket) {\n      if(server && !proxyReq.getHeader('expect')) {\n        server.emit('proxyReq', proxyReq, req, res, options);\n      }\n    });\n\n    // allow outgoing socket to timeout so that we could\n    // show an error page at the initial request\n    if(options.proxyTimeout) {\n      proxyReq.setTimeout(options.proxyTimeout, function() {\n         proxyReq.abort();\n      });\n    }\n\n    // Ensure we abort proxy if request is aborted\n    req.on('aborted', function () {\n      proxyReq.abort();\n    });\n\n    // handle errors in proxy and incoming request, just like for forward proxy\n    var proxyError = createErrorHandler(proxyReq, options.target);\n    req.on('error', proxyError);\n    proxyReq.on('error', proxyError);\n\n    function createErrorHandler(proxyReq, url) {\n      return function proxyError(err) {\n        if (req.socket.destroyed && err.code === 'ECONNRESET') {\n          server.emit('econnreset', err, req, res, url);\n          return proxyReq.abort();\n        }\n\n        if (clb) {\n          clb(err, req, res, url);\n        } else {\n          server.emit('error', err, req, res, url);\n        }\n      }\n    }\n\n    (options.buffer || req).pipe(proxyReq);\n\n    proxyReq.on('response', function(proxyRes) {\n      if(server) { server.emit('proxyRes', proxyRes, req, res); }\n\n      if(!res.headersSent && !options.selfHandleResponse) {\n        for(var i=0; i < web_o.length; i++) {\n          if(web_o[i](req, res, proxyRes, options)) { break; }\n        }\n      }\n\n      if (!res.finished) {\n        // Allow us to listen when the proxy has completed\n        proxyRes.on('end', function () {\n          if (server) server.emit('end', req, res, proxyRes);\n        });\n        // We pipe to the response unless its expected to be handled by the user\n        if (!options.selfHandleResponse) proxyRes.pipe(res);\n      } else {\n        if (server) server.emit('end', req, res, proxyRes);\n      }\n    });\n  }\n\n};\n", "var http   = require('http'),\n    https  = require('https'),\n    common = require('../common');\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, socket, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\n/*\n * Websockets Passes\n *\n */\n\n\nmodule.exports = {\n  /**\n   * WebSocket requests must have the `GET` method and\n   * the `upgrade:websocket` header\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {Socket} Websocket\n   *\n   * @api private\n   */\n\n  checkMethodAndHeader : function checkMethodAndHeader(req, socket) {\n    if (req.method !== 'GET' || !req.headers.upgrade) {\n      socket.destroy();\n      return true;\n    }\n\n    if (req.headers.upgrade.toLowerCase() !== 'websocket') {\n      socket.destroy();\n      return true;\n    }\n  },\n\n  /**\n   * Sets `x-forwarded-*` headers if specified in config.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {Socket} Websocket\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n\n  XHeaders : function XHeaders(req, socket, options) {\n    if(!options.xfwd) return;\n\n    var values = {\n      for  : req.connection.remoteAddress || req.socket.remoteAddress,\n      port : common.getPort(req),\n      proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws'\n    };\n\n    ['for', 'port', 'proto'].forEach(function(header) {\n      req.headers['x-forwarded-' + header] =\n        (req.headers['x-forwarded-' + header] || '') +\n        (req.headers['x-forwarded-' + header] ? ',' : '') +\n        values[header];\n    });\n  },\n\n  /**\n   * Does the actual proxying. Make the request and upgrade it\n   * send the Switching Protocols request and pipe the sockets.\n   *\n   * @param {ClientRequest} Req Request object\n   *\u00A0@param {Socket} Websocket\n   * @param {Object} Options Config object passed to the proxy\n   *\n   * @api private\n   */\n  stream : function stream(req, socket, options, head, server, clb) {\n\n    var createHttpHeader = function(line, headers) {\n      return Object.keys(headers).reduce(function (head, key) {\n        var value = headers[key];\n\n        if (!Array.isArray(value)) {\n          head.push(key + ': ' + value);\n          return head;\n        }\n\n        for (var i = 0; i < value.length; i++) {\n          head.push(key + ': ' + value[i]);\n        }\n        return head;\n      }, [line])\n      .join('\\r\\n') + '\\r\\n\\r\\n';\n    }\n\n    common.setupSocket(socket);\n\n    if (head && head.length) socket.unshift(head);\n\n\n    var proxyReq = (common.isSSL.test(options.target.protocol) ? https : http).request(\n      common.setupOutgoing(options.ssl || {}, options, req)\n    );\n\n    // Enable developers to modify the proxyReq before headers are sent\n    if (server) { server.emit('proxyReqWs', proxyReq, req, socket, options, head); }\n\n    // Error Handler\n    proxyReq.on('error', onOutgoingError);\n    proxyReq.on('response', function (res) {\n      // if upgrade event isn't going to happen, close the socket\n      if (!res.upgrade) {\n        socket.write(createHttpHeader('HTTP/' + res.httpVersion + ' ' + res.statusCode + ' ' + res.statusMessage, res.headers));\n        res.pipe(socket);\n      }\n    });\n\n    proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {\n      proxySocket.on('error', onOutgoingError);\n\n      // Allow us to listen when the websocket has completed\n      proxySocket.on('end', function () {\n        server.emit('close', proxyRes, proxySocket, proxyHead);\n      });\n\n      // The pipe below will end proxySocket if socket closes cleanly, but not\n      // if it errors (eg, vanishes from the net and starts returning\n      // EHOSTUNREACH). We need to do that explicitly.\n      socket.on('error', function () {\n        proxySocket.end();\n      });\n\n      common.setupSocket(proxySocket);\n\n      if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);\n\n      //\n      // Remark: Handle writing the headers to the socket when switching protocols\n      // Also handles when a header is an array\n      //\n      socket.write(createHttpHeader('HTTP/1.1 101 Switching Protocols', proxyRes.headers));\n\n      proxySocket.pipe(socket).pipe(proxySocket);\n\n      server.emit('open', proxySocket);\n      server.emit('proxySocket', proxySocket);  //DEPRECATED.\n    });\n\n    return proxyReq.end(); // XXX: CHECK IF THIS IS THIS CORRECT\n\n    function onOutgoingError(err) {\n      if (clb) {\n        clb(err, req, socket);\n      } else {\n        server.emit('error', err, req, socket);\n      }\n      socket.end();\n    }\n  }\n};\n", "var httpProxy = module.exports,\n    extend    = require('util')._extend,\n    parse_url = require('url').parse,\n    EE3       = require('eventemitter3'),\n    http      = require('http'),\n    https     = require('https'),\n    web       = require('./passes/web-incoming'),\n    ws        = require('./passes/ws-incoming');\n\nhttpProxy.Server = ProxyServer;\n\n/**\n * Returns a function that creates the loader for\n * either `ws` or `web`'s  passes.\n *\n * Examples:\n *\n *    httpProxy.createRightProxy('ws')\n *    // => [Function]\n *\n * @param {String} Type Either 'ws' or 'web'\n *\u00A0\n * @return {Function} Loader Function that when called returns an iterator for the right passes\n *\n * @api private\n */\n\nfunction createRightProxy(type) {\n\n  return function(options) {\n    return function(req, res /*, [head], [opts] */) {\n      var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n          args = [].slice.call(arguments),\n          cntr = args.length - 1,\n          head, cbl;\n\n      /* optional args parse begin */\n      if(typeof args[cntr] === 'function') {\n        cbl = args[cntr];\n\n        cntr--;\n      }\n\n      var requestOptions = options;\n      if(\n        !(args[cntr] instanceof Buffer) &&\n        args[cntr] !== res\n      ) {\n        //Copy global options\n        requestOptions = extend({}, options);\n        //Overwrite with request options\n        extend(requestOptions, args[cntr]);\n\n        cntr--;\n      }\n\n      if(args[cntr] instanceof Buffer) {\n        head = args[cntr];\n      }\n\n      /* optional args parse end */\n\n      ['target', 'forward'].forEach(function(e) {\n        if (typeof requestOptions[e] === 'string')\n          requestOptions[e] = parse_url(requestOptions[e]);\n      });\n\n      if (!requestOptions.target && !requestOptions.forward) {\n        return this.emit('error', new Error('Must provide a proper URL as target'));\n      }\n\n      for(var i=0; i < passes.length; i++) {\n        /**\n         * Call of passes functions\n         * pass(req, res, options, head)\n         *\n         * In WebSockets case the `res` variable\n         * refer to the connection socket\n         * pass(req, socket, options, head)\n         */\n        if(passes[i](req, res, requestOptions, head, this, cbl)) { // passes can return a truthy value to halt the loop\n          break;\n        }\n      }\n    };\n  };\n}\nhttpProxy.createRightProxy = createRightProxy;\n\nfunction ProxyServer(options) {\n  EE3.call(this);\n\n  options = options || {};\n  options.prependPath = options.prependPath === false ? false : true;\n\n  this.web = this.proxyRequest           = createRightProxy('web')(options);\n  this.ws  = this.proxyWebsocketRequest  = createRightProxy('ws')(options);\n  this.options = options;\n\n  this.webPasses = Object.keys(web).map(function(pass) {\n    return web[pass];\n  });\n\n  this.wsPasses = Object.keys(ws).map(function(pass) {\n    return ws[pass];\n  });\n\n  this.on('error', this.onError, this);\n\n}\n\nrequire('util').inherits(ProxyServer, EE3);\n\nProxyServer.prototype.onError = function (err) {\n  //\n  // Remark: Replicate node core behavior using EE3\n  // so we force people to handle their own errors\n  //\n  if(this.listeners('error').length === 1) {\n    throw err;\n  }\n};\n\nProxyServer.prototype.listen = function(port, hostname) {\n  var self    = this,\n      closure = function(req, res) { self.web(req, res); };\n\n  this._server  = this.options.ssl ?\n    https.createServer(this.options.ssl, closure) :\n    http.createServer(closure);\n\n  if(this.options.ws) {\n    this._server.on('upgrade', function(req, socket, head) { self.ws(req, socket, head); });\n  }\n\n  this._server.listen(port, hostname);\n\n  return this;\n};\n\nProxyServer.prototype.close = function(callback) {\n  var self = this;\n  if (this._server) {\n    this._server.close(done);\n  }\n\n  // Wrap callback to nullify server after all open connections are closed.\n  function done() {\n    self._server = null;\n    if (callback) {\n      callback.apply(null, arguments);\n    }\n  };\n};\n\nProxyServer.prototype.before = function(type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n      i = false;\n\n  passes.forEach(function(v, idx) {\n    if(v.name === passName) i = idx;\n  })\n\n  if(i === false) throw new Error('No such pass');\n\n  passes.splice(i, 0, callback);\n};\nProxyServer.prototype.after = function(type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n      i = false;\n\n  passes.forEach(function(v, idx) {\n    if(v.name === passName) i = idx;\n  })\n\n  if(i === false) throw new Error('No such pass');\n\n  passes.splice(i++, 0, callback);\n};\n", " // Use explicit /index.js to help browserify negociation in require '/lib/http-proxy' (!)\nvar ProxyServer = require('./http-proxy/index.js').Server;\n\n\n/**\n * Creates the proxy server.\n *\n * Examples:\n *\n *    httpProxy.createProxyServer({ .. }, 8000)\n *    // => '{ web: [Function], ws: [Function] ... }'\n *\n * @param {Object} Options Config object passed to the proxy\n *\n * @return {Object} Proxy Proxy object with handlers for `ws` and `web` requests\n *\n * @api public\n */\n\n\nfunction createProxyServer(options) {\n  /*\n   *  `options` is needed and it must have the following layout:\n   *\n   *  {\n   *    target : <url string to be parsed with the url module>\n   *    forward: <url string to be parsed with the url module>\n   *    agent  : <object to be passed to http(s).request>\n   *    ssl    : <object to be passed to https.createServer()>\n   *    ws     : <true/false, if you want to proxy websockets>\n   *    xfwd   : <true/false, adds x-forward headers>\n   *    secure : <true/false, verify SSL certificate>\n   *    toProxy: <true/false, explicitly specify if we are proxying to another proxy>\n   *    prependPath: <true/false, Default: true - specify whether you want to prepend the target's path to the proxy path>\n   *    ignorePath: <true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request>\n   *    localAddress : <Local interface string to bind for outgoing connections>\n   *    changeOrigin: <true/false, Default: false - changes the origin of the host header to the target URL>\n   *    preserveHeaderKeyCase: <true/false, Default: false - specify whether you want to keep letter case of response header key >\n   *    auth   : Basic authentication i.e. 'user:password' to compute an Authorization header.\n   *    hostRewrite: rewrites the location hostname on (201/301/302/307/308) redirects, Default: null.\n   *    autoRewrite: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.\n   *    protocolRewrite: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.\n   *  }\n   *\n   *  NOTE: `options.ws` and `options.ssl` are optional.\n   *    `options.target and `options.forward` cannot be\n   *    both missing\n   *  }\n   */\n\n  return new ProxyServer(options);\n}\n\n\nProxyServer.createProxyServer = createProxyServer;\nProxyServer.createServer      = createProxyServer;\nProxyServer.createProxy       = createProxyServer;\n\n\n\n\n/**\n * Export the proxy \"Server\" as the main export.\n */\nmodule.exports = ProxyServer;\n\n", "/*!\n * Caron dimonio, con occhi di bragia\n * loro accennando, tutte le raccoglie;\n * batte col remo qualunque s\u2019adagia \n *\n * Charon the demon, with the eyes of glede,\n * Beckoning to them, collects them all together,\n * Beats with his oar whoever lags behind\n *          \n *          Dante - The Divine Comedy (Canto III)\n */\n\nmodule.exports = require('./lib/http-proxy');", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERRORS = void 0;\nvar ERRORS;\n(function (ERRORS) {\n    ERRORS[\"ERR_CONFIG_FACTORY_TARGET_MISSING\"] = \"[HPM] Missing \\\"target\\\" option. Example: {target: \\\"http://www.example.org\\\"}\";\n    ERRORS[\"ERR_CONTEXT_MATCHER_GENERIC\"] = \"[HPM] Invalid pathFilter. Expecting something like: \\\"/api\\\" or [\\\"/api\\\", \\\"/ajax\\\"]\";\n    ERRORS[\"ERR_CONTEXT_MATCHER_INVALID_ARRAY\"] = \"[HPM] Invalid pathFilter. Plain paths (e.g. \\\"/api\\\") can not be mixed with globs (e.g. \\\"/api/**\\\"). Expecting something like: [\\\"/api\\\", \\\"/ajax\\\"] or [\\\"/api/**\\\", \\\"!**.html\\\"].\";\n    ERRORS[\"ERR_PATH_REWRITER_CONFIG\"] = \"[HPM] Invalid pathRewrite config. Expecting object with pathRewrite config or a rewrite function\";\n})(ERRORS || (exports.ERRORS = ERRORS = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.verifyConfig = verifyConfig;\nconst errors_1 = require(\"./errors\");\nfunction verifyConfig(options) {\n    if (!options.target && !options.router) {\n        throw new Error(errors_1.ERRORS.ERR_CONFIG_FACTORY_TARGET_MISSING);\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Debug = void 0;\nconst createDebug = require(\"debug\");\n/**\n * Debug instance with the given namespace: http-proxy-middleware\n */\nexports.Debug = createDebug('http-proxy-middleware');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debugProxyErrorsPlugin = void 0;\nconst debug_1 = require(\"../../debug\");\nconst debug = debug_1.Debug.extend('debug-proxy-errors-plugin');\n/**\n * Subscribe to {@link https://www.npmjs.com/package/http-proxy#listening-for-proxy-events http-proxy error events} to prevent server from crashing.\n * Errors are logged with {@link https://www.npmjs.com/package/debug debug} library.\n */\nconst debugProxyErrorsPlugin = (proxyServer) => {\n    /**\n     * http-proxy doesn't handle any errors by default (https://github.com/http-party/node-http-proxy#listening-for-proxy-events)\n     * Prevent server from crashing when http-proxy errors (uncaught errors)\n     */\n    proxyServer.on('error', (error, req, res, target) => {\n        debug(`http-proxy error event: \\n%O`, error);\n    });\n    proxyServer.on('proxyReq', (proxyReq, req, socket) => {\n        socket.on('error', (error) => {\n            debug('Socket error in proxyReq event: \\n%O', error);\n        });\n    });\n    /**\n     * Fix SSE close events\n     * @link https://github.com/chimurai/http-proxy-middleware/issues/678\n     * @link https://github.com/http-party/node-http-proxy/issues/1520#issue-877626125\n     */\n    proxyServer.on('proxyRes', (proxyRes, req, res) => {\n        res.on('close', () => {\n            if (!res.writableEnded) {\n                debug('Destroying proxyRes in proxyRes close event');\n                proxyRes.destroy();\n            }\n        });\n    });\n    /**\n     * Fix crash when target server restarts\n     * https://github.com/chimurai/http-proxy-middleware/issues/476#issuecomment-746329030\n     * https://github.com/webpack/webpack-dev-server/issues/1642#issuecomment-790602225\n     */\n    proxyServer.on('proxyReqWs', (proxyReq, req, socket) => {\n        socket.on('error', (error) => {\n            debug('Socket error in proxyReqWs event: \\n%O', error);\n        });\n    });\n    proxyServer.on('open', (proxySocket) => {\n        proxySocket.on('error', (error) => {\n            debug('Socket error in open event: \\n%O', error);\n        });\n    });\n    proxyServer.on('close', (req, socket, head) => {\n        socket.on('error', (error) => {\n            debug('Socket error in close event: \\n%O', error);\n        });\n    });\n    // https://github.com/webpack/webpack-dev-server/issues/1642#issuecomment-1103136590\n    proxyServer.on('econnreset', (error, req, res, target) => {\n        debug(`http-proxy econnreset event: \\n%O`, error);\n    });\n};\nexports.debugProxyErrorsPlugin = debugProxyErrorsPlugin;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStatusCode = getStatusCode;\nfunction getStatusCode(errorCode) {\n    let statusCode;\n    if (/HPE_INVALID/.test(errorCode)) {\n        statusCode = 502;\n    }\n    else {\n        switch (errorCode) {\n            case 'ECONNRESET':\n            case 'ENOTFOUND':\n            case 'ECONNREFUSED':\n            case 'ETIMEDOUT':\n                statusCode = 504;\n                break;\n            default:\n                statusCode = 500;\n                break;\n        }\n    }\n    return statusCode;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorResponsePlugin = void 0;\nconst status_code_1 = require(\"../../status-code\");\nfunction isResponseLike(obj) {\n    return obj && typeof obj.writeHead === 'function';\n}\nfunction isSocketLike(obj) {\n    return obj && typeof obj.write === 'function' && !('writeHead' in obj);\n}\nconst errorResponsePlugin = (proxyServer, options) => {\n    proxyServer.on('error', (err, req, res, target) => {\n        // Re-throw error. Not recoverable since req & res are empty.\n        if (!req && !res) {\n            throw err; // \"Error: Must provide a proper URL as target\"\n        }\n        if (isResponseLike(res)) {\n            if (!res.headersSent) {\n                const statusCode = (0, status_code_1.getStatusCode)(err.code);\n                res.writeHead(statusCode);\n            }\n            const host = req.headers && req.headers.host;\n            res.end(`Error occurred while trying to proxy: ${host}${req.url}`);\n        }\n        else if (isSocketLike(res)) {\n            res.destroy();\n        }\n    });\n};\nexports.errorResponsePlugin = errorResponsePlugin;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLogger = getLogger;\n/**\n * Compatibility matrix\n *\n  | Library  |  log  |  info  | warn  |  error  | \\<interpolation\\> |\n  |----------|:------|:-------|:------|:--------|:------------------|\n  | console  |   \u2705   |  \u2705   |   \u2705   |   \u2705    |   \u2705 (%s %o %O)   |\n  | bunyan   |   \u274C   |  \u2705   |   \u2705   |   \u2705    |   \u2705 (%s %o %O)   |\n  | pino     |   \u274C   |  \u2705   |   \u2705   |   \u2705    |   \u2705 (%s %o %O)   |\n  | winston  |   \u274C   |  \u2705   |   \u2705   |   \u2705    |   \u2705 (%s %o %O)^1 |\n  | log4js   |   \u274C   |  \u2705   |   \u2705   |   \u2705    |   \u2705 (%s %o %O)   |\n *\n * ^1: https://github.com/winstonjs/winston#string-interpolation\n */\nconst noopLogger = {\n    info: () => { },\n    warn: () => { },\n    error: () => { },\n};\nfunction getLogger(options) {\n    return options.logger || noopLogger;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPort = getPort;\n/**\n * Get port from target\n * Using proxyRes.req.agent.sockets to determine the target port\n */\nfunction getPort(sockets) {\n    return Object.keys(sockets || {})?.[0]?.split(':')[1];\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggerPlugin = void 0;\nconst url_1 = require(\"url\");\nconst logger_1 = require(\"../../logger\");\nconst logger_plugin_1 = require(\"../../utils/logger-plugin\");\nconst loggerPlugin = (proxyServer, options) => {\n    const logger = (0, logger_1.getLogger)(options);\n    proxyServer.on('error', (err, req, res, target) => {\n        const hostname = req?.headers?.host;\n        const requestHref = `${hostname}${req?.url}`;\n        const targetHref = `${target?.href}`; // target is undefined when websocket errors\n        const errorMessage = '[HPM] Error occurred while proxying request %s to %s [%s] (%s)';\n        const errReference = 'https://nodejs.org/api/errors.html#errors_common_system_errors'; // link to Node Common Systems Errors page\n        logger.error(errorMessage, requestHref, targetHref, err.code || err, errReference);\n    });\n    /**\n     * Log request and response\n     * @example\n     * ```shell\n     * [HPM] GET /users/ -> http://jsonplaceholder.typicode.com/users/ [304]\n     * ```\n     */\n    proxyServer.on('proxyRes', (proxyRes, req, res) => {\n        // BrowserSync uses req.originalUrl\n        // Next.js doesn't have req.baseUrl\n        const originalUrl = req.originalUrl ?? `${req.baseUrl || ''}${req.url}`;\n        // construct targetUrl\n        let target;\n        try {\n            const port = (0, logger_plugin_1.getPort)(proxyRes.req?.agent?.sockets);\n            const obj = {\n                protocol: proxyRes.req.protocol,\n                host: proxyRes.req.host,\n                pathname: proxyRes.req.path,\n            };\n            target = new url_1.URL(`${obj.protocol}//${obj.host}${obj.pathname}`);\n            if (port) {\n                target.port = port;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        }\n        catch (err) {\n            // nock issue (https://github.com/chimurai/http-proxy-middleware/issues/1035)\n            // fallback to old implementation (less correct - without port)\n            target = new url_1.URL(options.target);\n            target.pathname = proxyRes.req.path;\n        }\n        const targetUrl = target.toString();\n        const exchange = `[HPM] ${req.method} ${originalUrl} -> ${targetUrl} [${proxyRes.statusCode}]`;\n        logger.info(exchange);\n    });\n    /**\n     * When client opens WebSocket connection\n     */\n    proxyServer.on('open', (socket) => {\n        logger.info('[HPM] Client connected: %o', socket.address());\n    });\n    /**\n     * When client closes WebSocket connection\n     */\n    proxyServer.on('close', (req, proxySocket, proxyHead) => {\n        logger.info('[HPM] Client disconnected: %o', proxySocket.address());\n    });\n};\nexports.loggerPlugin = loggerPlugin;\n", "\"use strict\";\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFunctionName = getFunctionName;\nfunction getFunctionName(fn) {\n    return fn.name || '[anonymous Function]';\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.proxyEventsPlugin = void 0;\nconst debug_1 = require(\"../../debug\");\nconst function_1 = require(\"../../utils/function\");\nconst debug = debug_1.Debug.extend('proxy-events-plugin');\n/**\n * Implements option.on object to subscribe to http-proxy events.\n *\n * @example\n * ```js\n * createProxyMiddleware({\n *  on: {\n *    error: (error, req, res, target) => {},\n *    proxyReq: (proxyReq, req, res, options) => {},\n *    proxyReqWs: (proxyReq, req, socket, options) => {},\n *    proxyRes: (proxyRes, req, res) => {},\n *    open: (proxySocket) => {},\n *    close: (proxyRes, proxySocket, proxyHead) => {},\n *    start: (req, res, target) => {},\n *    end: (req, res, proxyRes) => {},\n *    econnreset: (error, req, res, target) => {},\n *  }\n * });\n * ```\n */\nconst proxyEventsPlugin = (proxyServer, options) => {\n    Object.entries(options.on || {}).forEach(([eventName, handler]) => {\n        debug(`register event handler: \"${eventName}\" -> \"${(0, function_1.getFunctionName)(handler)}\"`);\n        proxyServer.on(eventName, handler);\n    });\n};\nexports.proxyEventsPlugin = proxyEventsPlugin;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./debug-proxy-errors-plugin\"), exports);\n__exportStar(require(\"./error-response-plugin\"), exports);\n__exportStar(require(\"./logger-plugin\"), exports);\n__exportStar(require(\"./proxy-events\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPlugins = getPlugins;\nconst default_1 = require(\"./plugins/default\");\nfunction getPlugins(options) {\n    // don't load default errorResponsePlugin if user has specified their own\n    const maybeErrorResponsePlugin = options.on?.error ? [] : [default_1.errorResponsePlugin];\n    const defaultPlugins = options.ejectPlugins\n        ? [] // no default plugins when ejecting\n        : [default_1.debugProxyErrorsPlugin, default_1.proxyEventsPlugin, default_1.loggerPlugin, ...maybeErrorResponsePlugin];\n    const userPlugins = options.plugins ?? [];\n    return [...defaultPlugins, ...userPlugins];\n}\n", "/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  var match;\n  while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n    if (match[2]) return true;\n    str = str.slice(match.index + match[0].length);\n  }\n\n  return false;\n};\n", "/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  var pipeIndex = -2;\n  var closeSquareIndex = -2;\n  var closeCurlyIndex = -2;\n  var closeParenIndex = -2;\n  var backSlashIndex = -2;\n  while (index < str.length) {\n    if (str[index] === '*') {\n      return true;\n    }\n\n    if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n      return true;\n    }\n\n    if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n      if (closeSquareIndex < index) {\n        closeSquareIndex = str.indexOf(']', index);\n      }\n      if (closeSquareIndex > index) {\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n      closeCurlyIndex = str.indexOf('}', index);\n      if (closeCurlyIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n      closeParenIndex = str.indexOf(')', index);\n      if (closeParenIndex > index) {\n        backSlashIndex = str.indexOf('\\\\', index);\n        if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n          return true;\n        }\n      }\n    }\n\n    if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n      if (pipeIndex < index) {\n        pipeIndex = str.indexOf('|', index);\n      }\n      if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n        closeParenIndex = str.indexOf(')', pipeIndex);\n        if (closeParenIndex > pipeIndex) {\n          backSlashIndex = str.indexOf('\\\\', pipeIndex);\n          if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n            return true;\n          }\n        }\n      }\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nvar relaxedCheck = function(str) {\n  if (str[0] === '!') {\n    return true;\n  }\n  var index = 0;\n  while (index < str.length) {\n    if (/[*?{}()[\\]]/.test(str[index])) {\n      return true;\n    }\n\n    if (str[index] === '\\\\') {\n      var open = str[index + 1];\n      index += 2;\n      var close = chars[open];\n\n      if (close) {\n        var n = str.indexOf(close, index);\n        if (n !== -1) {\n          index = n + 1;\n        }\n      }\n\n      if (str[index] === '!') {\n        return true;\n      }\n    } else {\n      index++;\n    }\n  }\n  return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n  if (typeof str !== 'string' || str === '') {\n    return false;\n  }\n\n  if (isExtglob(str)) {\n    return true;\n  }\n\n  var check = strictCheck;\n\n  // optionally relax check\n  if (options && options.strict === false) {\n    check = relaxedCheck;\n  }\n\n  return check(str);\n};\n", "'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  const node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      const ele = arr[i];\n\n      if (Array.isArray(ele)) {\n        flat(ele);\n        continue;\n      }\n\n      if (ele !== undefined) {\n        result.push(ele);\n      }\n    }\n    return result;\n  };\n\n  flat(args);\n  return result;\n};\n", "'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  const stringify = (node, parent = {}) => {\n    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n", "/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n", "/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n", "/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options, maxLen)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  const walk = (node, parent = {}) => {\n    const invalidBlock = utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    const invalid = invalidBlock === true || invalidNode === true;\n    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n\n    if (node.isClose === true) {\n      console.log('node.isClose', prefix, node.value);\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? prefix + node.value : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? prefix + node.value : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n", "'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  const result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (const item of queue) {\n    if (Array.isArray(item)) {\n      for (const value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n  const walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    const enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      const child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n", "'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 10000,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n", "'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  const opts = options || {};\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  const ast = { type: 'root', input, nodes: [] };\n  const stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  const length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      const open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      const brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      const type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        const open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      const siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        const before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      const parent = stack[stack.length - 1];\n      const index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (const pattern of input) {\n      const result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n  return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n", "'use strict';\n\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\nconst DEFAULT_MAX_EXTGLOB_RECURSION = 0;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\nconst SEP = '/';\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR,\n  SEP\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,\n  SEP: '\\\\'\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  __proto__: null,\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  DEFAULT_MAX_EXTGLOB_RECURSION,\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    __proto__: null,\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n", "/*global navigator*/\n'use strict';\n\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.isWindows = () => {\n  if (typeof navigator !== 'undefined' && navigator.platform) {\n    const platform = navigator.platform.toLowerCase();\n    return platform === 'win32' || platform === 'windows';\n  }\n\n  if (typeof process !== 'undefined' && process.platform) {\n    return process.platform === 'win32';\n  }\n\n  return false;\n};\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n\nexports.basename = (path, { windows } = {}) => {\n  const segs = path.split(windows ? /[\\\\/]/ : '/');\n  const last = segs[segs.length - 1];\n\n  if (last === '') {\n    return segs[segs.length - 2];\n  }\n\n  return last;\n};\n", "'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let negatedExtglob = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n          negatedExtglob = true;\n        }\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n          break;\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated,\n    negatedExtglob\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n", "'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\nconst splitTopLevel = input => {\n  const parts = [];\n  let bracket = 0;\n  let paren = 0;\n  let quote = 0;\n  let value = '';\n  let escaped = false;\n\n  for (const ch of input) {\n    if (escaped === true) {\n      value += ch;\n      escaped = false;\n      continue;\n    }\n\n    if (ch === '\\\\') {\n      value += ch;\n      escaped = true;\n      continue;\n    }\n\n    if (ch === '\"') {\n      quote = quote === 1 ? 0 : 1;\n      value += ch;\n      continue;\n    }\n\n    if (quote === 0) {\n      if (ch === '[') {\n        bracket++;\n      } else if (ch === ']' && bracket > 0) {\n        bracket--;\n      } else if (bracket === 0) {\n        if (ch === '(') {\n          paren++;\n        } else if (ch === ')' && paren > 0) {\n          paren--;\n        } else if (ch === '|' && paren === 0) {\n          parts.push(value);\n          value = '';\n          continue;\n        }\n      }\n    }\n\n    value += ch;\n  }\n\n  parts.push(value);\n  return parts;\n};\n\nconst isPlainBranch = branch => {\n  let escaped = false;\n\n  for (const ch of branch) {\n    if (escaped === true) {\n      escaped = false;\n      continue;\n    }\n\n    if (ch === '\\\\') {\n      escaped = true;\n      continue;\n    }\n\n    if (/[?*+@!()[\\]{}]/.test(ch)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nconst normalizeSimpleBranch = branch => {\n  let value = branch.trim();\n  let changed = true;\n\n  while (changed === true) {\n    changed = false;\n\n    if (/^@\\([^\\\\()[\\]{}|]+\\)$/.test(value)) {\n      value = value.slice(2, -1);\n      changed = true;\n    }\n  }\n\n  if (!isPlainBranch(value)) {\n    return;\n  }\n\n  return value.replace(/\\\\(.)/g, '$1');\n};\n\nconst hasRepeatedCharPrefixOverlap = branches => {\n  const values = branches.map(normalizeSimpleBranch).filter(Boolean);\n\n  for (let i = 0; i < values.length; i++) {\n    for (let j = i + 1; j < values.length; j++) {\n      const a = values[i];\n      const b = values[j];\n      const char = a[0];\n\n      if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {\n        continue;\n      }\n\n      if (a === b || a.startsWith(b) || b.startsWith(a)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\nconst parseRepeatedExtglob = (pattern, requireEnd = true) => {\n  if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') {\n    return;\n  }\n\n  let bracket = 0;\n  let paren = 0;\n  let quote = 0;\n  let escaped = false;\n\n  for (let i = 1; i < pattern.length; i++) {\n    const ch = pattern[i];\n\n    if (escaped === true) {\n      escaped = false;\n      continue;\n    }\n\n    if (ch === '\\\\') {\n      escaped = true;\n      continue;\n    }\n\n    if (ch === '\"') {\n      quote = quote === 1 ? 0 : 1;\n      continue;\n    }\n\n    if (quote === 1) {\n      continue;\n    }\n\n    if (ch === '[') {\n      bracket++;\n      continue;\n    }\n\n    if (ch === ']' && bracket > 0) {\n      bracket--;\n      continue;\n    }\n\n    if (bracket > 0) {\n      continue;\n    }\n\n    if (ch === '(') {\n      paren++;\n      continue;\n    }\n\n    if (ch === ')') {\n      paren--;\n\n      if (paren === 0) {\n        if (requireEnd === true && i !== pattern.length - 1) {\n          return;\n        }\n\n        return {\n          type: pattern[0],\n          body: pattern.slice(2, i),\n          end: i\n        };\n      }\n    }\n  }\n};\n\nconst getStarExtglobSequenceOutput = pattern => {\n  let index = 0;\n  const chars = [];\n\n  while (index < pattern.length) {\n    const match = parseRepeatedExtglob(pattern.slice(index), false);\n\n    if (!match || match.type !== '*') {\n      return;\n    }\n\n    const branches = splitTopLevel(match.body).map(branch => branch.trim());\n    if (branches.length !== 1) {\n      return;\n    }\n\n    const branch = normalizeSimpleBranch(branches[0]);\n    if (!branch || branch.length !== 1) {\n      return;\n    }\n\n    chars.push(branch);\n    index += match.end + 1;\n  }\n\n  if (chars.length < 1) {\n    return;\n  }\n\n  const source = chars.length === 1\n    ? utils.escapeRegex(chars[0])\n    : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`;\n\n  return `${source}*`;\n};\n\nconst repeatedExtglobRecursion = pattern => {\n  let depth = 0;\n  let value = pattern.trim();\n  let match = parseRepeatedExtglob(value);\n\n  while (match) {\n    depth++;\n    value = match.body.trim();\n    match = parseRepeatedExtglob(value);\n  }\n\n  return depth;\n};\n\nconst analyzeRepeatedExtglob = (body, options) => {\n  if (options.maxExtglobRecursion === false) {\n    return { risky: false };\n  }\n\n  const max =\n    typeof options.maxExtglobRecursion === 'number'\n      ? options.maxExtglobRecursion\n      : constants.DEFAULT_MAX_EXTGLOB_RECURSION;\n\n  const branches = splitTopLevel(body).map(branch => branch.trim());\n\n  if (branches.length > 1) {\n    if (\n      branches.some(branch => branch === '') ||\n      branches.some(branch => /^[*?]+$/.test(branch)) ||\n      hasRepeatedCharPrefixOverlap(branches)\n    ) {\n      return { risky: true };\n    }\n  }\n\n  for (const branch of branches) {\n    const safeOutput = getStarExtglobSequenceOutput(branch);\n    if (safeOutput) {\n      return { risky: true, safeOutput };\n    }\n\n    if (repeatedExtglobRecursion(branch) > max) {\n      return { risky: true };\n    }\n  }\n\n  return { risky: false };\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(opts.windows);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = opts => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index] || '';\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren') {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.output = (prev.output || prev.value) + tok.value;\n      prev.value += tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    token.startIndex = state.index;\n    token.tokensIndex = tokens.length;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    const literal = input.slice(token.startIndex, state.index + 1);\n    const body = input.slice(token.startIndex + 2, state.index);\n    const analysis = analyzeRepeatedExtglob(body, opts);\n\n    if ((token.type === 'plus' || token.type === 'star') && analysis.risky) {\n      const safeOutput = analysis.safeOutput\n        ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput)\n        : undefined;\n      const open = tokens[token.tokensIndex];\n\n      open.type = 'text';\n      open.value = literal;\n      open.output = safeOutput || utils.escapeRegex(literal);\n\n      for (let i = token.tokensIndex + 1; i < tokens.length; i++) {\n        tokens[i].value = '';\n        tokens[i].output = '';\n        delete tokens[i].suffix;\n      }\n\n      state.output = token.output + open.output;\n      state.backtrack = true;\n\n      push({ type: 'paren', extglob: true, value, output: '' });\n      decrement('parens');\n      return;\n    }\n\n    let output = token.close + (opts.capture ? ')' : '');\n    let rest;\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n        // In this case, we need to parse the string and use it in the output of the original pattern.\n        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n        //\n        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n        output = token.close = `)${expression})${extglobStar})`;\n      }\n\n      if (token.prev.type === 'bos') {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance();\n      } else {\n        value += advance();\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(opts.windows);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = opts => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n", "'use strict';\n\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = opts.windows;\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(utils.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return state.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${state.output})${append}`;\n  if (state && state.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = state;\n  }\n\n  return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.makeRe(state[, options]);\n *\n * const result = picomatch.makeRe('*.js');\n * console.log(result);\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  let parsed = { negated: false, fastpaths: true };\n\n  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    parsed.output = parse.fastpaths(input, options);\n  }\n\n  if (!parsed.output) {\n    parsed = parse(input, options);\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n", "'use strict';\n\nconst pico = require('./lib/picomatch');\nconst utils = require('./lib/utils');\n\nfunction picomatch(glob, options, returnState = false) {\n  // default to os.platform()\n  if (options && (options.windows === null || options.windows === undefined)) {\n    // don't mutate the original options object\n    options = { ...options, windows: utils.isWindows() };\n  }\n\n  return pico(glob, options, returnState);\n}\n\nObject.assign(picomatch, pico);\nmodule.exports = picomatch;\n", "'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n  const index = v.indexOf('{');\n  return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} `list` List of strings to match.\n * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n  patterns = [].concat(patterns);\n  list = [].concat(list);\n\n  let omit = new Set();\n  let keep = new Set();\n  let items = new Set();\n  let negatives = 0;\n\n  let onResult = state => {\n    items.add(state.output);\n    if (options && options.onResult) {\n      options.onResult(state);\n    }\n  };\n\n  for (let i = 0; i < patterns.length; i++) {\n    let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n    let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n    if (negated) negatives++;\n\n    for (let item of list) {\n      let matched = isMatch(item, true);\n\n      let match = negated ? !matched.isMatch : matched.isMatch;\n      if (!match) continue;\n\n      if (negated) {\n        omit.add(matched.output);\n      } else {\n        omit.delete(matched.output);\n        keep.add(matched.output);\n      }\n    }\n  }\n\n  let result = negatives === patterns.length ? [...items] : [...keep];\n  let matches = result.filter(item => !omit.has(item));\n\n  if (options && matches.length === 0) {\n    if (options.failglob === true) {\n      throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n    }\n\n    if (options.nonull === true || options.nullglob === true) {\n      return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n    }\n  }\n\n  return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n  patterns = [].concat(patterns).map(String);\n  let result = new Set();\n  let items = [];\n\n  let onResult = state => {\n    if (options.onResult) options.onResult(state);\n    items.push(state.output);\n  };\n\n  let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n  for (let item of items) {\n    if (!matches.has(item)) {\n      result.add(item);\n    }\n  }\n  return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  if (Array.isArray(pattern)) {\n    return pattern.some(p => micromatch.contains(str, p, options));\n  }\n\n  if (typeof pattern === 'string') {\n    if (isEmptyString(str) || isEmptyString(pattern)) {\n      return false;\n    }\n\n    if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n      return true;\n    }\n  }\n\n  return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('Expected the first argument to be an object');\n  }\n  let keys = micromatch(Object.keys(obj), patterns, options);\n  let res = {};\n  for (let key of keys) res[key] = obj[key];\n  return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (items.some(item => isMatch(item))) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (!items.every(item => isMatch(item))) {\n      return false;\n    }\n  }\n  return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n  let posix = utils.isWindows(options);\n  let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n  let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n  if (match) {\n    return match.slice(1).map(v => v === void 0 ? '' : v);\n  }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n  let res = [];\n  for (let pattern of [].concat(patterns || [])) {\n    for (let str of braces(String(pattern), options)) {\n      res.push(picomatch.parse(str, options));\n    }\n  }\n  return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n    return [pattern];\n  }\n  return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchPathFilter = matchPathFilter;\nconst isGlob = require(\"is-glob\");\nconst micromatch = require(\"micromatch\");\nconst url = require(\"url\");\nconst errors_1 = require(\"./errors\");\nfunction matchPathFilter(pathFilter = '/', uri, req) {\n    // single path\n    if (isStringPath(pathFilter)) {\n        return matchSingleStringPath(pathFilter, uri);\n    }\n    // single glob path\n    if (isGlobPath(pathFilter)) {\n        return matchSingleGlobPath(pathFilter, uri);\n    }\n    // multi path\n    if (Array.isArray(pathFilter)) {\n        if (pathFilter.every(isStringPath)) {\n            return matchMultiPath(pathFilter, uri);\n        }\n        if (pathFilter.every(isGlobPath)) {\n            return matchMultiGlobPath(pathFilter, uri);\n        }\n        throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_INVALID_ARRAY);\n    }\n    // custom matching\n    if (typeof pathFilter === 'function') {\n        const pathname = getUrlPathName(uri);\n        return pathFilter(pathname, req);\n    }\n    throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_GENERIC);\n}\n/**\n * @param  {String} pathFilter '/api'\n * @param  {String} uri     'http://example.org/api/b/c/d.html'\n * @return {Boolean}\n */\nfunction matchSingleStringPath(pathFilter, uri) {\n    const pathname = getUrlPathName(uri);\n    return pathname?.indexOf(pathFilter) === 0;\n}\nfunction matchSingleGlobPath(pattern, uri) {\n    const pathname = getUrlPathName(uri);\n    const matches = micromatch([pathname], pattern);\n    return matches && matches.length > 0;\n}\nfunction matchMultiGlobPath(patternList, uri) {\n    return matchSingleGlobPath(patternList, uri);\n}\n/**\n * @param  {String} pathFilterList ['/api', '/ajax']\n * @param  {String} uri     'http://example.org/api/b/c/d.html'\n * @return {Boolean}\n */\nfunction matchMultiPath(pathFilterList, uri) {\n    let isMultiPath = false;\n    for (const context of pathFilterList) {\n        if (matchSingleStringPath(context, uri)) {\n            isMultiPath = true;\n            break;\n        }\n    }\n    return isMultiPath;\n}\n/**\n * Parses URI and returns RFC 3986 path\n *\n * @param  {String} uri from req.url\n * @return {String}     RFC 3986 path\n */\nfunction getUrlPathName(uri) {\n    return uri && url.parse(uri).pathname;\n}\nfunction isStringPath(pathFilter) {\n    return typeof pathFilter === 'string' && !isGlob(pathFilter);\n}\nfunction isGlobPath(pathFilter) {\n    return isGlob(pathFilter);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexports.isPlainObject = isPlainObject;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPathRewriter = createPathRewriter;\nconst is_plain_object_1 = require(\"is-plain-object\");\nconst errors_1 = require(\"./errors\");\nconst debug_1 = require(\"./debug\");\nconst debug = debug_1.Debug.extend('path-rewriter');\n/**\n * Create rewrite function, to cache parsed rewrite rules.\n *\n * @param {Object} rewriteConfig\n * @return {Function} Function to rewrite paths; This function should accept `path` (request.url) as parameter\n */\nfunction createPathRewriter(rewriteConfig) {\n    let rulesCache;\n    if (!isValidRewriteConfig(rewriteConfig)) {\n        return;\n    }\n    if (typeof rewriteConfig === 'function') {\n        const customRewriteFn = rewriteConfig;\n        return customRewriteFn;\n    }\n    else {\n        rulesCache = parsePathRewriteRules(rewriteConfig);\n        return rewritePath;\n    }\n    function rewritePath(path) {\n        let result = path;\n        for (const rule of rulesCache) {\n            if (rule.regex.test(path)) {\n                result = result.replace(rule.regex, rule.value);\n                debug('rewriting path from \"%s\" to \"%s\"', path, result);\n                break;\n            }\n        }\n        return result;\n    }\n}\nfunction isValidRewriteConfig(rewriteConfig) {\n    if (typeof rewriteConfig === 'function') {\n        return true;\n    }\n    else if ((0, is_plain_object_1.isPlainObject)(rewriteConfig)) {\n        return Object.keys(rewriteConfig).length !== 0;\n    }\n    else if (rewriteConfig === undefined || rewriteConfig === null) {\n        return false;\n    }\n    else {\n        throw new Error(errors_1.ERRORS.ERR_PATH_REWRITER_CONFIG);\n    }\n}\nfunction parsePathRewriteRules(rewriteConfig) {\n    const rules = [];\n    if ((0, is_plain_object_1.isPlainObject)(rewriteConfig)) {\n        for (const [key, value] of Object.entries(rewriteConfig)) {\n            rules.push({\n                regex: new RegExp(key),\n                value: value,\n            });\n            debug('rewrite rule created: \"%s\" ~> \"%s\"', key, value);\n        }\n    }\n    return rules;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTarget = getTarget;\nconst is_plain_object_1 = require(\"is-plain-object\");\nconst debug_1 = require(\"./debug\");\nconst debug = debug_1.Debug.extend('router');\nasync function getTarget(req, config) {\n    let newTarget;\n    const router = config.router;\n    if ((0, is_plain_object_1.isPlainObject)(router)) {\n        newTarget = getTargetFromProxyTable(req, router);\n    }\n    else if (typeof router === 'function') {\n        newTarget = await router(req);\n    }\n    return newTarget;\n}\nfunction getTargetFromProxyTable(req, table) {\n    let result;\n    const host = req.headers.host;\n    const path = req.url;\n    const hostAndPath = host + path;\n    for (const [key, value] of Object.entries(table)) {\n        if (containsPath(key)) {\n            if (hostAndPath.indexOf(key) > -1) {\n                // match 'localhost:3000/api'\n                result = value;\n                debug('match: \"%s\" -> \"%s\"', key, result);\n                break;\n            }\n        }\n        else {\n            if (key === host) {\n                // match 'localhost:3000'\n                result = value;\n                debug('match: \"%s\" -> \"%s\"', host, result);\n                break;\n            }\n        }\n    }\n    return result;\n}\nfunction containsPath(v) {\n    return v.indexOf('/') > -1;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpProxyMiddleware = void 0;\nconst httpProxy = require(\"http-proxy\");\nconst configuration_1 = require(\"./configuration\");\nconst get_plugins_1 = require(\"./get-plugins\");\nconst path_filter_1 = require(\"./path-filter\");\nconst PathRewriter = require(\"./path-rewriter\");\nconst Router = require(\"./router\");\nconst debug_1 = require(\"./debug\");\nconst function_1 = require(\"./utils/function\");\nconst logger_1 = require(\"./logger\");\nclass HttpProxyMiddleware {\n    constructor(options) {\n        this.wsInternalSubscribed = false;\n        this.serverOnCloseSubscribed = false;\n        // https://github.com/Microsoft/TypeScript/wiki/'this'-in-TypeScript#red-flags-for-this\n        this.middleware = (async (req, res, next) => {\n            if (this.shouldProxy(this.proxyOptions.pathFilter, req)) {\n                try {\n                    const activeProxyOptions = await this.prepareProxyRequest(req);\n                    (0, debug_1.Debug)(`proxy request to target: %O`, activeProxyOptions.target);\n                    this.proxy.web(req, res, activeProxyOptions);\n                }\n                catch (err) {\n                    next?.(err);\n                }\n            }\n            else {\n                next?.();\n            }\n            /**\n             * Get the server object to subscribe to server events;\n             * 'upgrade' for websocket and 'close' for graceful shutdown\n             *\n             * NOTE:\n             * req.socket: node >= 13\n             * req.connection: node < 13 (Remove this when node 12/13 support is dropped)\n             */\n            const server = (req.socket ?? req.connection)?.server;\n            if (server && !this.serverOnCloseSubscribed) {\n                server.on('close', () => {\n                    (0, debug_1.Debug)('server close signal received: closing proxy server');\n                    this.proxy.close();\n                });\n                this.serverOnCloseSubscribed = true;\n            }\n            if (this.proxyOptions.ws === true) {\n                // use initial request to access the server object to subscribe to http upgrade event\n                this.catchUpgradeRequest(server);\n            }\n        });\n        this.catchUpgradeRequest = (server) => {\n            if (!this.wsInternalSubscribed) {\n                (0, debug_1.Debug)('subscribing to server upgrade event');\n                server.on('upgrade', this.handleUpgrade);\n                // prevent duplicate upgrade handling;\n                // in case external upgrade is also configured\n                this.wsInternalSubscribed = true;\n            }\n        };\n        this.handleUpgrade = async (req, socket, head) => {\n            try {\n                if (this.shouldProxy(this.proxyOptions.pathFilter, req)) {\n                    const activeProxyOptions = await this.prepareProxyRequest(req);\n                    this.proxy.ws(req, socket, head, activeProxyOptions);\n                    (0, debug_1.Debug)('server upgrade event received. Proxying WebSocket');\n                }\n            }\n            catch (err) {\n                // This error does not include the URL as the fourth argument as we won't\n                // have the URL if `this.prepareProxyRequest` throws an error.\n                this.proxy.emit('error', err, req, socket);\n            }\n        };\n        /**\n         * Determine whether request should be proxied.\n         */\n        this.shouldProxy = (pathFilter, req) => {\n            try {\n                return (0, path_filter_1.matchPathFilter)(pathFilter, req.url, req);\n            }\n            catch (err) {\n                (0, debug_1.Debug)('Error: matchPathFilter() called with request url: ', `\"${req.url}\"`);\n                this.logger.error(err);\n                return false;\n            }\n        };\n        /**\n         * Apply option.router and option.pathRewrite\n         * Order matters:\n         *    Router uses original path for routing;\n         *    NOT the modified path, after it has been rewritten by pathRewrite\n         * @param {Object} req\n         * @return {Object} proxy options\n         */\n        this.prepareProxyRequest = async (req) => {\n            /**\n             * Incorrect usage confirmed: https://github.com/expressjs/express/issues/4854#issuecomment-1066171160\n             * Temporary restore req.url patch for {@link src/legacy/create-proxy-middleware.ts legacyCreateProxyMiddleware()}\n             * FIXME: remove this patch in future release\n             */\n            if (this.middleware.__LEGACY_HTTP_PROXY_MIDDLEWARE__) {\n                req.url = req.originalUrl || req.url;\n            }\n            const newProxyOptions = Object.assign({}, this.proxyOptions);\n            // Apply in order:\n            // 1. option.router\n            // 2. option.pathRewrite\n            await this.applyRouter(req, newProxyOptions);\n            await this.applyPathRewrite(req, this.pathRewriter);\n            return newProxyOptions;\n        };\n        // Modify option.target when router present.\n        this.applyRouter = async (req, options) => {\n            let newTarget;\n            if (options.router) {\n                newTarget = await Router.getTarget(req, options);\n                if (newTarget) {\n                    (0, debug_1.Debug)('router new target: \"%s\"', newTarget);\n                    options.target = newTarget;\n                }\n            }\n        };\n        // rewrite path\n        this.applyPathRewrite = async (req, pathRewriter) => {\n            if (pathRewriter) {\n                const path = await pathRewriter(req.url, req);\n                if (typeof path === 'string') {\n                    (0, debug_1.Debug)('pathRewrite new path: %s', req.url);\n                    req.url = path;\n                }\n                else {\n                    (0, debug_1.Debug)('pathRewrite: no rewritten path found: %s', req.url);\n                }\n            }\n        };\n        (0, configuration_1.verifyConfig)(options);\n        this.proxyOptions = options;\n        this.logger = (0, logger_1.getLogger)(options);\n        (0, debug_1.Debug)(`create proxy server`);\n        this.proxy = httpProxy.createProxyServer({});\n        this.registerPlugins(this.proxy, this.proxyOptions);\n        this.pathRewriter = PathRewriter.createPathRewriter(this.proxyOptions.pathRewrite); // returns undefined when \"pathRewrite\" is not provided\n        // https://github.com/chimurai/http-proxy-middleware/issues/19\n        // expose function to upgrade externally\n        this.middleware.upgrade = (req, socket, head) => {\n            if (!this.wsInternalSubscribed) {\n                this.handleUpgrade(req, socket, head);\n            }\n        };\n    }\n    registerPlugins(proxy, options) {\n        const plugins = (0, get_plugins_1.getPlugins)(options);\n        plugins.forEach((plugin) => {\n            (0, debug_1.Debug)(`register plugin: \"${(0, function_1.getFunctionName)(plugin)}\"`);\n            plugin(proxy, options);\n        });\n    }\n}\nexports.HttpProxyMiddleware = HttpProxyMiddleware;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProxyMiddleware = createProxyMiddleware;\nconst http_proxy_middleware_1 = require(\"./http-proxy-middleware\");\nfunction createProxyMiddleware(options) {\n    const { middleware } = new http_proxy_middleware_1.HttpProxyMiddleware(options);\n    return middleware;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.responseInterceptor = responseInterceptor;\nconst zlib = require(\"zlib\");\nconst debug_1 = require(\"../debug\");\nconst function_1 = require(\"../utils/function\");\nconst debug = debug_1.Debug.extend('response-interceptor');\n/**\n * Intercept responses from upstream.\n * Automatically decompress (deflate, gzip, brotli).\n * Give developer the opportunity to modify intercepted Buffer and http.ServerResponse\n *\n * NOTE: must set options.selfHandleResponse=true (prevent automatic call of res.end())\n */\nfunction responseInterceptor(interceptor) {\n    return async function proxyResResponseInterceptor(proxyRes, req, res) {\n        debug('intercept proxy response');\n        const originalProxyRes = proxyRes;\n        let buffer = Buffer.from('', 'utf8');\n        // decompress proxy response\n        const _proxyRes = decompress(proxyRes, proxyRes.headers['content-encoding']);\n        // concat data stream\n        _proxyRes.on('data', (chunk) => (buffer = Buffer.concat([buffer, chunk])));\n        _proxyRes.on('end', async () => {\n            // copy original headers\n            copyHeaders(proxyRes, res);\n            // call interceptor with intercepted response (buffer)\n            debug('call interceptor function: %s', (0, function_1.getFunctionName)(interceptor));\n            const interceptedBuffer = Buffer.from(await interceptor(buffer, originalProxyRes, req, res));\n            // set correct content-length (with double byte character support)\n            debug('set content-length: %s', Buffer.byteLength(interceptedBuffer, 'utf8'));\n            res.setHeader('content-length', Buffer.byteLength(interceptedBuffer, 'utf8'));\n            debug('write intercepted response');\n            res.write(interceptedBuffer);\n            res.end();\n        });\n        _proxyRes.on('error', (error) => {\n            res.end(`Error fetching proxied request: ${error.message}`);\n        });\n    };\n}\n/**\n * Streaming decompression of proxy response\n * source: https://github.com/apache/superset/blob/9773aba522e957ed9423045ca153219638a85d2f/superset-frontend/webpack.proxy-config.js#L116\n */\nfunction decompress(proxyRes, contentEncoding) {\n    let _proxyRes = proxyRes;\n    let decompress;\n    switch (contentEncoding) {\n        case 'gzip':\n            decompress = zlib.createGunzip();\n            break;\n        case 'br':\n            decompress = zlib.createBrotliDecompress();\n            break;\n        case 'deflate':\n            decompress = zlib.createInflate();\n            break;\n        default:\n            break;\n    }\n    if (decompress) {\n        debug(`decompress proxy response with 'content-encoding': %s`, contentEncoding);\n        _proxyRes.pipe(decompress);\n        _proxyRes = decompress;\n    }\n    return _proxyRes;\n}\n/**\n * Copy original headers\n * https://github.com/apache/superset/blob/9773aba522e957ed9423045ca153219638a85d2f/superset-frontend/webpack.proxy-config.js#L78\n */\nfunction copyHeaders(originalResponse, response) {\n    debug('copy original response headers');\n    response.statusCode = originalResponse.statusCode;\n    response.statusMessage = originalResponse.statusMessage;\n    if (response.setHeader) {\n        let keys = Object.keys(originalResponse.headers);\n        // ignore chunked, brotli, gzip, deflate headers\n        keys = keys.filter((key) => !['content-encoding', 'transfer-encoding'].includes(key));\n        keys.forEach((key) => {\n            let value = originalResponse.headers[key];\n            if (key === 'set-cookie') {\n                // remove cookie domain\n                value = Array.isArray(value) ? value : [value];\n                value = value.map((x) => x.replace(/Domain=[^;]+?/i, ''));\n            }\n            response.setHeader(key, value);\n        });\n    }\n    else {\n        response.headers = originalResponse.headers;\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fixRequestBody = fixRequestBody;\nconst querystring = require(\"querystring\");\n/**\n * Fix proxied body if bodyParser is involved.\n */\nfunction fixRequestBody(proxyReq, req) {\n    // skip fixRequestBody() when req.readableLength not 0 (bodyParser failure)\n    if (req.readableLength !== 0) {\n        return;\n    }\n    const requestBody = req.body;\n    if (!requestBody) {\n        return;\n    }\n    const contentType = proxyReq.getHeader('Content-Type');\n    if (!contentType) {\n        return;\n    }\n    const writeBody = (bodyData) => {\n        proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));\n        proxyReq.write(bodyData);\n    };\n    // Use if-elseif to prevent multiple writeBody/setHeader calls:\n    // Error: \"Cannot set headers after they are sent to the client\"\n    if (contentType.includes('application/json') || contentType.includes('+json')) {\n        writeBody(JSON.stringify(requestBody));\n    }\n    else if (contentType.includes('application/x-www-form-urlencoded')) {\n        writeBody(querystring.stringify(requestBody));\n    }\n    else if (contentType.includes('multipart/form-data')) {\n        writeBody(handlerFormDataBodyData(contentType, requestBody));\n    }\n}\n/**\n * format FormData data\n * @param contentType\n * @param data\n * @returns\n */\nfunction handlerFormDataBodyData(contentType, data) {\n    const boundary = contentType.replace(/^.*boundary=(.*)$/, '$1');\n    let str = '';\n    for (const [key, value] of Object.entries(data)) {\n        str += `--${boundary}\\r\\nContent-Disposition: form-data; name=\"${key}\"\\r\\n\\r\\n${value}\\r\\n`;\n    }\n    return str;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fixRequestBody = exports.responseInterceptor = void 0;\nvar response_interceptor_1 = require(\"./response-interceptor\");\nObject.defineProperty(exports, \"responseInterceptor\", { enumerable: true, get: function () { return response_interceptor_1.responseInterceptor; } });\nvar fix_request_body_1 = require(\"./fix-request-body\");\nObject.defineProperty(exports, \"fixRequestBody\", { enumerable: true, get: function () { return fix_request_body_1.fixRequestBody; } });\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./public\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.legacyOptionsAdapter = legacyOptionsAdapter;\nconst url = require(\"url\");\nconst debug_1 = require(\"../debug\");\nconst logger_1 = require(\"../logger\");\nconst debug = debug_1.Debug.extend('legacy-options-adapter');\n// https://github.com/chimurai/http-proxy-middleware/blob/7341704d0aa9d1606dfd37ebfdffddd34c894784/src/_handlers.ts#L20-L27\nconst proxyEventMap = {\n    onError: 'error',\n    onProxyReq: 'proxyReq',\n    onProxyRes: 'proxyRes',\n    onProxyReqWs: 'proxyReqWs',\n    onOpen: 'open',\n    onClose: 'close',\n};\n/**\n * Convert {@link LegacyOptions legacy Options} to new {@link Options}\n */\nfunction legacyOptionsAdapter(legacyContext, legacyOptions) {\n    let options = {};\n    let logger;\n    // https://github.com/chimurai/http-proxy-middleware/pull/716\n    if (typeof legacyContext === 'string' && !!url.parse(legacyContext).host) {\n        throw new Error(`Shorthand syntax is removed from legacyCreateProxyMiddleware().\n      Please use \"legacyCreateProxyMiddleware({ target: 'http://www.example.org' })\" instead.\n\n      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-shorthand-usage\n      `);\n    }\n    // detect old \"context\" argument and convert to \"options.pathFilter\"\n    // https://github.com/chimurai/http-proxy-middleware/pull/722/files#diff-a2a171449d862fe29692ce031981047d7ab755ae7f84c707aef80701b3ea0c80L4\n    if (legacyContext && legacyOptions) {\n        debug('map legacy context/filter to options.pathFilter');\n        options = { ...legacyOptions, pathFilter: legacyContext };\n        logger = getLegacyLogger(options);\n        logger.warn(`[http-proxy-middleware] Legacy \"context\" argument is deprecated. Migrate your \"context\" to \"options.pathFilter\":\n\n      const options = {\n        pathFilter: '${legacyContext}',\n      }\n\n      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-context-argument\n      `);\n    }\n    else if (legacyContext && !legacyOptions) {\n        options = { ...legacyContext };\n        logger = getLegacyLogger(options);\n    }\n    else {\n        logger = getLegacyLogger({});\n    }\n    // map old event names to new event names\n    // https://github.com/chimurai/http-proxy-middleware/pull/745/files#diff-c54113cf61ec99691748a3890bfbeb00e10efb3f0a76f03a0fd9ec49072e410aL48-L53\n    Object.entries(proxyEventMap).forEach(([legacyEventName, proxyEventName]) => {\n        if (options[legacyEventName]) {\n            options.on = { ...options.on };\n            options.on[proxyEventName] = options[legacyEventName];\n            debug('map legacy event \"%s\" to \"on.%s\"', legacyEventName, proxyEventName);\n            logger.warn(`[http-proxy-middleware] Legacy \"${legacyEventName}\" is deprecated. Migrate to \"options.on.${proxyEventName}\":\n\n        const options = {\n          on: {\n            ${proxyEventName}: () => {},\n          },\n        }\n\n        More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#refactored-proxy-events\n        `);\n        }\n    });\n    // map old logProvider to new logger\n    // https://github.com/chimurai/http-proxy-middleware/pull/749\n    const logProvider = options.logProvider && options.logProvider();\n    const logLevel = options.logLevel;\n    debug('legacy logLevel', logLevel);\n    debug('legacy logProvider: %O', logProvider);\n    if (typeof logLevel === 'string' && logLevel !== 'silent') {\n        debug('map \"logProvider\" to \"logger\"');\n        logger.warn(`[http-proxy-middleware] Legacy \"logLevel\" and \"logProvider\" are deprecated. Migrate to \"options.logger\":\n\n      const options = {\n        logger: console,\n      }\n\n      More details: https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md#removed-logprovider-and-loglevel-options\n      `);\n    }\n    return options;\n}\nfunction getLegacyLogger(options) {\n    const legacyLogger = options.logProvider && options.logProvider();\n    if (legacyLogger) {\n        options.logger = legacyLogger;\n    }\n    return (0, logger_1.getLogger)(options);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.legacyCreateProxyMiddleware = legacyCreateProxyMiddleware;\nconst factory_1 = require(\"../factory\");\nconst debug_1 = require(\"../debug\");\nconst options_adapter_1 = require(\"./options-adapter\");\nconst debug = debug_1.Debug.extend('legacy-create-proxy-middleware');\nfunction legacyCreateProxyMiddleware(legacyContext, legacyOptions) {\n    debug('init');\n    const options = (0, options_adapter_1.legacyOptionsAdapter)(legacyContext, legacyOptions);\n    const proxyMiddleware = (0, factory_1.createProxyMiddleware)(options);\n    // https://github.com/chimurai/http-proxy-middleware/pull/731/files#diff-07e6ad10bda0df091b737caed42767657cd0bd74a01246a1a0b7ab59c0f6e977L118\n    debug('add marker for patching req.url (old behavior)');\n    proxyMiddleware.__LEGACY_HTTP_PROXY_MIDDLEWARE__ = true;\n    return proxyMiddleware;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.legacyCreateProxyMiddleware = void 0;\nvar create_proxy_middleware_1 = require(\"./create-proxy-middleware\");\nObject.defineProperty(exports, \"legacyCreateProxyMiddleware\", { enumerable: true, get: function () { return create_proxy_middleware_1.legacyCreateProxyMiddleware; } });\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./public\"), exports);\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./factory\"), exports);\n__exportStar(require(\"./handlers\"), exports);\n/**\n * Default plugins\n */\n__exportStar(require(\"./plugins/default\"), exports);\n/**\n * Legacy exports\n */\n__exportStar(require(\"./legacy\"), exports);\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n  return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n  // camel-case\n  var prop = key\n    .substring(6)\n    .toLowerCase()\n    .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n  // coerce string value into JS value\n  var val = process.env[key];\n  if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n  else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n  else if (val === 'null') val = null;\n  else val = Number(val);\n\n  obj[prop] = val;\n  return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n *   $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n  util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n             2 === fd ? process.stderr :\n             createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n  return 'colors' in exports.inspectOpts\n    ? Boolean(exports.inspectOpts.colors)\n    : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts)\n    .split('\\n').map(function(str) {\n      return str.trim()\n    }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n  this.inspectOpts.colors = this.useColors;\n  return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var name = this.namespace;\n  var useColors = this.useColors;\n\n  if (useColors) {\n    var c = this.color;\n    var prefix = '  \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n    args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n    args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n  } else {\n    args[0] = new Date().toUTCString()\n      + ' ' + name + ' ' + args[0];\n  }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n  return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  if (null == namespaces) {\n    // If you set a process.env field to null or undefined, it gets cast to the\n    // string 'null' or 'undefined'. Just delete instead.\n    delete process.env.DEBUG;\n  } else {\n    process.env.DEBUG = namespaces;\n  }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n  var stream;\n  var tty_wrap = process.binding('tty_wrap');\n\n  // Note stream._type is used for test-module-load-list.js\n\n  switch (tty_wrap.guessHandleType(fd)) {\n    case 'TTY':\n      stream = new tty.WriteStream(fd);\n      stream._type = 'tty';\n\n      // Hack to have stream not keep the event loop alive.\n      // See https://github.com/joyent/node/issues/1726\n      if (stream._handle && stream._handle.unref) {\n        stream._handle.unref();\n      }\n      break;\n\n    case 'FILE':\n      var fs = require('fs');\n      stream = new fs.SyncWriteStream(fd, { autoClose: false });\n      stream._type = 'fs';\n      break;\n\n    case 'PIPE':\n    case 'TCP':\n      var net = require('net');\n      stream = new net.Socket({\n        fd: fd,\n        readable: false,\n        writable: true\n      });\n\n      // FIXME Should probably have an option in net.Socket to create a\n      // stream from an existing fd which is writable only. But for now\n      // we'll just add this hack and set the `readable` member to false.\n      // Test: ./node test/fixtures/echo.js < /etc/passwd\n      stream.readable = false;\n      stream.read = null;\n      stream._type = 'pipe';\n\n      // FIXME Hack to have stream not keep the event loop alive.\n      // See https://github.com/joyent/node/issues/1726\n      if (stream._handle && stream._handle.unref) {\n        stream._handle.unref();\n      }\n      break;\n\n    default:\n      // Probably an error on in uv_guess_handle()\n      throw new Error('Implement me. Unknown stream file type!');\n  }\n\n  // For supporting legacy API we put the FD here.\n  stream.fd = fd;\n\n  stream._isStdio = true;\n\n  return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n  debug.inspectOpts = {};\n\n  var keys = Object.keys(exports.inspectOpts);\n  for (var i = 0; i < keys.length; i++) {\n    debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n  }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n  module.exports = require('./browser.js');\n} else {\n  module.exports = require('./node.js');\n}\n", "/*!\n * on-headers\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onHeaders\n\nvar http = require('http')\n\n// older node versions don't have appendHeader\nvar isAppendHeaderSupported = typeof http.ServerResponse.prototype.appendHeader === 'function'\nvar set1dArray = isAppendHeaderSupported ? set1dArrayWithAppend : set1dArrayWithSet\n\n/**\n * Create a replacement writeHead method.\n *\n * @param {function} prevWriteHead\n * @param {function} listener\n * @private\n */\n\nfunction createWriteHead (prevWriteHead, listener) {\n  var fired = false\n\n  // return function with core name and argument list\n  return function writeHead (statusCode) {\n    // set headers from arguments\n    var args = setWriteHeadHeaders.apply(this, arguments)\n\n    // fire listener\n    if (!fired) {\n      fired = true\n      listener.call(this)\n\n      // pass-along an updated status code\n      if (typeof args[0] === 'number' && this.statusCode !== args[0]) {\n        args[0] = this.statusCode\n        args.length = 1\n      }\n    }\n\n    return prevWriteHead.apply(this, args)\n  }\n}\n\n/**\n * Execute a listener when a response is about to write headers.\n *\n * @param {object} res\n * @return {function} listener\n * @public\n */\n\nfunction onHeaders (res, listener) {\n  if (!res) {\n    throw new TypeError('argument res is required')\n  }\n\n  if (typeof listener !== 'function') {\n    throw new TypeError('argument listener must be a function')\n  }\n\n  res.writeHead = createWriteHead(res.writeHead, listener)\n}\n\n/**\n * Set headers contained in array on the response object.\n *\n * @param {object} res\n * @param {array} headers\n * @private\n */\n\nfunction setHeadersFromArray (res, headers) {\n  if (headers.length && Array.isArray(headers[0])) {\n    // 2D\n    set2dArray(res, headers)\n  } else {\n    // 1D\n    if (headers.length % 2 !== 0) {\n      throw new TypeError('headers array is malformed')\n    }\n\n    set1dArray(res, headers)\n  }\n}\n\n/**\n * Set headers contained in object on the response object.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeadersFromObject (res, headers) {\n  var keys = Object.keys(headers)\n  for (var i = 0; i < keys.length; i++) {\n    var k = keys[i]\n    if (k) res.setHeader(k, headers[k])\n  }\n}\n\n/**\n * Set headers and other properties on the response object.\n *\n * @param {number} statusCode\n * @private\n */\n\nfunction setWriteHeadHeaders (statusCode) {\n  var length = arguments.length\n  var headerIndex = length > 1 && typeof arguments[1] === 'string'\n    ? 2\n    : 1\n\n  var headers = length >= headerIndex + 1\n    ? arguments[headerIndex]\n    : undefined\n\n  this.statusCode = statusCode\n\n  if (Array.isArray(headers)) {\n    // handle array case\n    setHeadersFromArray(this, headers)\n  } else if (headers) {\n    // handle object case\n    setHeadersFromObject(this, headers)\n  }\n\n  // copy leading arguments\n  var args = new Array(Math.min(length, headerIndex))\n  for (var i = 0; i < args.length; i++) {\n    args[i] = arguments[i]\n  }\n\n  return args\n}\n\nfunction set2dArray (res, headers) {\n  var key\n  for (var i = 0; i < headers.length; i++) {\n    key = headers[i][0]\n    if (key) {\n      res.setHeader(key, headers[i][1])\n    }\n  }\n}\n\nfunction set1dArrayWithAppend (res, headers) {\n  for (var i = 0; i < headers.length; i += 2) {\n    res.removeHeader(headers[i])\n  }\n\n  var key\n  for (var j = 0; j < headers.length; j += 2) {\n    key = headers[j]\n    if (key) {\n      res.appendHeader(key, headers[j + 1])\n    }\n  }\n}\n\nfunction set1dArrayWithSet (res, headers) {\n  var key\n  for (var i = 0; i < headers.length; i += 2) {\n    key = headers[i]\n    if (key) {\n      res.setHeader(key, headers[i + 1])\n    }\n  }\n}\n", "/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto');\n\n/**\n * Sign the given `val` with `secret`.\n *\n * @param {String} val\n * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret\n * @return {String}\n * @api private\n */\n\nexports.sign = function(val, secret){\n  if ('string' !== typeof val) throw new TypeError(\"Cookie value must be provided as a string.\");\n  if (null == secret) throw new TypeError(\"Secret key must be provided.\");\n  return val + '.' + crypto\n    .createHmac('sha256', secret)\n    .update(val)\n    .digest('base64')\n    .replace(/\\=+$/, '');\n};\n\n/**\n * Unsign and decode the given `val` with `secret`,\n * returning `false` if the signature is invalid.\n *\n * @param {String} val\n * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret\n * @return {String|Boolean}\n * @api private\n */\n\nexports.unsign = function(val, secret){\n  if ('string' !== typeof val) throw new TypeError(\"Signed cookie string must be provided.\");\n  if (null == secret) throw new TypeError(\"Secret key must be provided.\");\n  var str = val.slice(0, val.lastIndexOf('.'))\n    , mac = exports.sign(str, secret);\n  \n  return sha1(mac) == sha1(val) ? str : false;\n};\n\n/**\n * Private\n */\n\nfunction sha1(str){\n  return crypto.createHash('sha1').update(str).digest('hex');\n}\n", "/*!\n * random-bytes\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar crypto = require('crypto')\n\n/**\n * Module variables.\n * @private\n */\n\nvar generateAttempts = crypto.randomBytes === crypto.pseudoRandomBytes ? 1 : 3\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = randomBytes\nmodule.exports.sync = randomBytesSync\n\n/**\n * Generates strong pseudo-random bytes.\n *\n * @param {number} size\n * @param {function} [callback]\n * @return {Promise}\n * @public\n */\n\nfunction randomBytes(size, callback) {\n  // validate callback is a function, if provided\n  if (callback !== undefined && typeof callback !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!callback && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  if (callback) {\n    // classic callback style\n    return generateRandomBytes(size, generateAttempts, callback)\n  }\n\n  return new Promise(function executor(resolve, reject) {\n    generateRandomBytes(size, generateAttempts, function onRandomBytes(err, str) {\n      if (err) return reject(err)\n      resolve(str)\n    })\n  })\n}\n\n/**\n * Generates strong pseudo-random bytes sync.\n *\n * @param {number} size\n * @return {Buffer}\n * @public\n */\n\nfunction randomBytesSync(size) {\n  var err = null\n\n  for (var i = 0; i < generateAttempts; i++) {\n    try {\n      return crypto.randomBytes(size)\n    } catch (e) {\n      err = e\n    }\n  }\n\n  throw err\n}\n\n/**\n * Generates strong pseudo-random bytes.\n *\n * @param {number} size\n * @param {number} attempts\n * @param {function} callback\n * @private\n */\n\nfunction generateRandomBytes(size, attempts, callback) {\n  crypto.randomBytes(size, function onRandomBytes(err, buf) {\n    if (!err) return callback(null, buf)\n    if (!--attempts) return callback(err)\n    setTimeout(generateRandomBytes.bind(null, size, attempts, callback), 10)\n  })\n}\n", "/*!\n * uid-safe\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar randomBytes = require('random-bytes')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EQUAL_END_REGEXP = /=+$/\nvar PLUS_GLOBAL_REGEXP = /\\+/g\nvar SLASH_GLOBAL_REGEXP = /\\//g\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = uid\nmodule.exports.sync = uidSync\n\n/**\n * Create a unique ID.\n *\n * @param {number} length\n * @param {function} [callback]\n * @return {Promise}\n * @public\n */\n\nfunction uid (length, callback) {\n  // validate callback is a function, if provided\n  if (callback !== undefined && typeof callback !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!callback && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  if (callback) {\n    // classic callback style\n    return generateUid(length, callback)\n  }\n\n  return new Promise(function executor (resolve, reject) {\n    generateUid(length, function onUid (err, str) {\n      if (err) return reject(err)\n      resolve(str)\n    })\n  })\n}\n\n/**\n * Create a unique ID sync.\n *\n * @param {number} length\n * @return {string}\n * @public\n */\n\nfunction uidSync (length) {\n  return toString(randomBytes.sync(length))\n}\n\n/**\n * Generate a unique ID string.\n *\n * @param {number} length\n * @param {function} callback\n * @private\n */\n\nfunction generateUid (length, callback) {\n  randomBytes(length, function (err, buf) {\n    if (err) return callback(err)\n    callback(null, toString(buf))\n  })\n}\n\n/**\n * Change a Buffer into a string.\n *\n * @param {Buffer} buf\n * @return {string}\n * @private\n */\n\nfunction toString (buf) {\n  return buf.toString('base64')\n    .replace(EQUAL_END_REGEXP, '')\n    .replace(PLUS_GLOBAL_REGEXP, '-')\n    .replace(SLASH_GLOBAL_REGEXP, '_')\n}\n", "/*!\n * Connect - session - Cookie\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar cookie = require('cookie')\nvar deprecate = require('depd')('express-session')\n\n/**\n * Initialize a new `Cookie` with the given `options`.\n *\n * @param {IncomingMessage} req\n * @param {Object} options\n * @api private\n */\n\nvar Cookie = module.exports = function Cookie(options) {\n  this.path = '/';\n  this.maxAge = null;\n  this.httpOnly = true;\n\n  if (options) {\n    if (typeof options !== 'object') {\n      throw new TypeError('argument options must be a object')\n    }\n\n    for (var key in options) {\n      if (key !== 'data') {\n        this[key] = options[key]\n      }\n    }\n  }\n\n  if (this.originalMaxAge === undefined || this.originalMaxAge === null) {\n    this.originalMaxAge = this.maxAge\n  }\n};\n\n/*!\n * Prototype.\n */\n\nCookie.prototype = {\n\n  /**\n   * Set expires `date`.\n   *\n   * @param {Date} date\n   * @api public\n   */\n\n  set expires(date) {\n    this._expires = date;\n    this.originalMaxAge = this.maxAge;\n  },\n\n  /**\n   * Get expires `date`.\n   *\n   * @return {Date}\n   * @api public\n   */\n\n  get expires() {\n    return this._expires;\n  },\n\n  /**\n   * Set expires via max-age in `ms`.\n   *\n   * @param {Number} ms\n   * @api public\n   */\n\n  set maxAge(ms) {\n    if (ms && typeof ms !== 'number' && !(ms instanceof Date)) {\n      throw new TypeError('maxAge must be a number or Date')\n    }\n\n    if (ms instanceof Date) {\n      deprecate('maxAge as Date; pass number of milliseconds instead')\n    }\n\n    this.expires = typeof ms === 'number'\n      ? new Date(Date.now() + ms)\n      : ms;\n  },\n\n  /**\n   * Get expires max-age in `ms`.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get maxAge() {\n    return this.expires instanceof Date\n      ? this.expires.valueOf() - Date.now()\n      : this.expires;\n  },\n\n  /**\n   * Return cookie data object.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  get data() {\n    return {\n      originalMaxAge: this.originalMaxAge,\n      partitioned: this.partitioned,\n      priority: this.priority\n      , expires: this._expires\n      , secure: this.secure\n      , httpOnly: this.httpOnly\n      , domain: this.domain\n      , path: this.path\n      , sameSite: this.sameSite\n    }\n  },\n\n  /**\n   * Return a serialized cookie string.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  serialize: function(name, val){\n    return cookie.serialize(name, val, this.data);\n  },\n\n  /**\n   * Return JSON representation of this cookie.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  toJSON: function(){\n    return this.data;\n  }\n};\n", "/*!\n * Connect - session - Session\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Expose Session.\n */\n\nmodule.exports = Session;\n\n/**\n * Create a new `Session` with the given request and `data`.\n *\n * @param {IncomingRequest} req\n * @param {Object} data\n * @api private\n */\n\nfunction Session(req, data) {\n  Object.defineProperty(this, 'req', { value: req });\n  Object.defineProperty(this, 'id', { value: req.sessionID });\n\n  if (typeof data === 'object' && data !== null) {\n    // merge data into this, ignoring prototype properties\n    for (var prop in data) {\n      if (!(prop in this)) {\n        this[prop] = data[prop]\n      }\n    }\n  }\n}\n\n/**\n * Update reset `.cookie.maxAge` to prevent\n * the cookie from expiring when the\n * session is still active.\n *\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'touch', function touch() {\n  return this.resetMaxAge();\n});\n\n/**\n * Reset `.maxAge` to `.originalMaxAge`.\n *\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'resetMaxAge', function resetMaxAge() {\n  this.cookie.maxAge = this.cookie.originalMaxAge;\n  return this;\n});\n\n/**\n * Save the session data with optional callback `fn(err)`.\n *\n * @param {Function} fn\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'save', function save(fn) {\n  this.req.sessionStore.set(this.id, this, fn || function(){});\n  return this;\n});\n\n/**\n * Re-loads the session data _without_ altering\n * the maxAge properties. Invokes the callback `fn(err)`,\n * after which time if no exception has occurred the\n * `req.session` property will be a new `Session` object,\n * although representing the same session.\n *\n * @param {Function} fn\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'reload', function reload(fn) {\n  var req = this.req\n  var store = this.req.sessionStore\n\n  store.get(this.id, function(err, sess){\n    if (err) return fn(err);\n    if (!sess) return fn(new Error('failed to load session'));\n    store.createSession(req, sess);\n    fn();\n  });\n  return this;\n});\n\n/**\n * Destroy `this` session.\n *\n * @param {Function} fn\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'destroy', function destroy(fn) {\n  delete this.req.session;\n  this.req.sessionStore.destroy(this.id, fn);\n  return this;\n});\n\n/**\n * Regenerate this request's session.\n *\n * @param {Function} fn\n * @return {Session} for chaining\n * @api public\n */\n\ndefineMethod(Session.prototype, 'regenerate', function regenerate(fn) {\n  this.req.sessionStore.regenerate(this.req, fn);\n  return this;\n});\n\n/**\n * Helper function for creating a method on a prototype.\n *\n * @param {Object} obj\n * @param {String} name\n * @param {Function} fn\n * @private\n */\nfunction defineMethod(obj, name, fn) {\n  Object.defineProperty(obj, name, {\n    configurable: true,\n    enumerable: false,\n    value: fn,\n    writable: true\n  });\n};\n", "/*!\n * Connect - session - Store\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Cookie = require('./cookie')\nvar EventEmitter = require('events').EventEmitter\nvar Session = require('./session')\nvar util = require('util')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Store\n\n/**\n * Abstract base class for session stores.\n * @public\n */\n\nfunction Store () {\n  EventEmitter.call(this)\n}\n\n/**\n * Inherit from EventEmitter.\n */\n\nutil.inherits(Store, EventEmitter)\n\n/**\n * Re-generate the given requests's session.\n *\n * @param {IncomingRequest} req\n * @return {Function} fn\n * @api public\n */\n\nStore.prototype.regenerate = function(req, fn){\n  var self = this;\n  this.destroy(req.sessionID, function(err){\n    self.generate(req);\n    fn(err);\n  });\n};\n\n/**\n * Load a `Session` instance via the given `sid`\n * and invoke the callback `fn(err, sess)`.\n *\n * @param {String} sid\n * @param {Function} fn\n * @api public\n */\n\nStore.prototype.load = function(sid, fn){\n  var self = this;\n  this.get(sid, function(err, sess){\n    if (err) return fn(err);\n    if (!sess) return fn();\n    var req = { sessionID: sid, sessionStore: self };\n    fn(null, self.createSession(req, sess))\n  });\n};\n\n/**\n * Create session from JSON `sess` data.\n *\n * @param {IncomingRequest} req\n * @param {Object} sess\n * @return {Session}\n * @api private\n */\n\nStore.prototype.createSession = function(req, sess){\n  var expires = sess.cookie.expires\n  var originalMaxAge = sess.cookie.originalMaxAge\n\n  sess.cookie = new Cookie(sess.cookie);\n\n  if (typeof expires === 'string') {\n    // convert expires to a Date object\n    sess.cookie.expires = new Date(expires)\n  }\n\n  // keep originalMaxAge intact\n  sess.cookie.originalMaxAge = originalMaxAge\n\n  req.session = new Session(req, sess);\n  return req.session;\n};\n", "/*!\n * express-session\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Store = require('./store')\nvar util = require('util')\n\n/**\n * Shim setImmediate for node.js < 0.10\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n  ? setImmediate\n  : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Module exports.\n */\n\nmodule.exports = MemoryStore\n\n/**\n * A session store in memory.\n * @public\n */\n\nfunction MemoryStore() {\n  Store.call(this)\n  this.sessions = Object.create(null)\n}\n\n/**\n * Inherit from Store.\n */\n\nutil.inherits(MemoryStore, Store)\n\n/**\n * Get all active sessions.\n *\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.all = function all(callback) {\n  var sessionIds = Object.keys(this.sessions)\n  var sessions = Object.create(null)\n\n  for (var i = 0; i < sessionIds.length; i++) {\n    var sessionId = sessionIds[i]\n    var session = getSession.call(this, sessionId)\n\n    if (session) {\n      sessions[sessionId] = session;\n    }\n  }\n\n  callback && defer(callback, null, sessions)\n}\n\n/**\n * Clear all sessions.\n *\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.clear = function clear(callback) {\n  this.sessions = Object.create(null)\n  callback && defer(callback)\n}\n\n/**\n * Destroy the session associated with the given session ID.\n *\n * @param {string} sessionId\n * @public\n */\n\nMemoryStore.prototype.destroy = function destroy(sessionId, callback) {\n  delete this.sessions[sessionId]\n  callback && defer(callback)\n}\n\n/**\n * Fetch session by the given session ID.\n *\n * @param {string} sessionId\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.get = function get(sessionId, callback) {\n  defer(callback, null, getSession.call(this, sessionId))\n}\n\n/**\n * Commit the given session associated with the given sessionId to the store.\n *\n * @param {string} sessionId\n * @param {object} session\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.set = function set(sessionId, session, callback) {\n  this.sessions[sessionId] = JSON.stringify(session)\n  callback && defer(callback)\n}\n\n/**\n * Get number of active sessions.\n *\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.length = function length(callback) {\n  this.all(function (err, sessions) {\n    if (err) return callback(err)\n    callback(null, Object.keys(sessions).length)\n  })\n}\n\n/**\n * Touch the given session object associated with the given session ID.\n *\n * @param {string} sessionId\n * @param {object} session\n * @param {function} callback\n * @public\n */\n\nMemoryStore.prototype.touch = function touch(sessionId, session, callback) {\n  var currentSession = getSession.call(this, sessionId)\n\n  if (currentSession) {\n    // update expiration\n    currentSession.cookie = session.cookie\n    this.sessions[sessionId] = JSON.stringify(currentSession)\n  }\n\n  callback && defer(callback)\n}\n\n/**\n * Get session from the store.\n * @private\n */\n\nfunction getSession(sessionId) {\n  var sess = this.sessions[sessionId]\n\n  if (!sess) {\n    return\n  }\n\n  // parse\n  sess = JSON.parse(sess)\n\n  if (sess.cookie) {\n    var expires = typeof sess.cookie.expires === 'string'\n      ? new Date(sess.cookie.expires)\n      : sess.cookie.expires\n\n    // destroy expired session\n    if (expires && expires <= Date.now()) {\n      delete this.sessions[sessionId]\n      return\n    }\n  }\n\n  return sess\n}\n", "/*!\n * express-session\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Buffer = require('safe-buffer').Buffer\nvar cookie = require('cookie');\nvar crypto = require('crypto')\nvar debug = require('debug')('express-session');\nvar deprecate = require('depd')('express-session');\nvar onHeaders = require('on-headers')\nvar parseUrl = require('parseurl');\nvar signature = require('cookie-signature')\nvar uid = require('uid-safe').sync\n\nvar Cookie = require('./session/cookie')\nvar MemoryStore = require('./session/memory')\nvar Session = require('./session/session')\nvar Store = require('./session/store')\n\n// environment\n\nvar env = process.env.NODE_ENV;\n\n/**\n * Expose the middleware.\n */\n\nexports = module.exports = session;\n\n/**\n * Expose constructors.\n */\n\nexports.Store = Store;\nexports.Cookie = Cookie;\nexports.Session = Session;\nexports.MemoryStore = MemoryStore;\n\n/**\n * Warning message for `MemoryStore` usage in production.\n * @private\n */\n\nvar warning = 'Warning: connect.session() MemoryStore is not\\n'\n  + 'designed for a production environment, as it will leak\\n'\n  + 'memory, and will not scale past a single process.';\n\n/**\n * Node.js 0.8+ async implementation.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n  ? setImmediate\n  : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Setup session store with the given `options`.\n *\n * @param {Object} [options]\n * @param {Object|Function} [options.cookie] Options for cookie\n * @param {Function} [options.genid]\n * @param {String} [options.name=connect.sid] Session ID cookie name\n * @param {Boolean} [options.proxy]\n * @param {Boolean} [options.resave] Resave unmodified sessions back to the store\n * @param {Boolean} [options.rolling] Enable/disable rolling session expiration\n * @param {Boolean} [options.saveUninitialized] Save uninitialized sessions to the store\n * @param {String|Array} [options.secret] Secret for signing session ID\n * @param {Object} [options.store=MemoryStore] Session store\n * @param {String} [options.unset]\n * @return {Function} middleware\n * @public\n */\n\nfunction session(options) {\n  var opts = options || {}\n\n  // get the cookie options\n  var cookieOptions = opts.cookie || {}\n\n  // get the session id generate function\n  var generateId = opts.genid || generateSessionId\n\n  // get the session cookie name\n  var name = opts.name || opts.key || 'connect.sid'\n\n  // get the session store\n  var store = opts.store || new MemoryStore()\n\n  // get the trust proxy setting\n  var trustProxy = opts.proxy\n\n  // get the resave session option\n  var resaveSession = opts.resave;\n\n  // get the rolling session option\n  var rollingSessions = Boolean(opts.rolling)\n\n  // get the save uninitialized session option\n  var saveUninitializedSession = opts.saveUninitialized\n\n  // get the cookie signing secret\n  var secret = opts.secret\n\n  if (typeof generateId !== 'function') {\n    throw new TypeError('genid option must be a function');\n  }\n\n  if (resaveSession === undefined) {\n    deprecate('undefined resave option; provide resave option');\n    resaveSession = true;\n  }\n\n  if (saveUninitializedSession === undefined) {\n    deprecate('undefined saveUninitialized option; provide saveUninitialized option');\n    saveUninitializedSession = true;\n  }\n\n  if (opts.unset && opts.unset !== 'destroy' && opts.unset !== 'keep') {\n    throw new TypeError('unset option must be \"destroy\" or \"keep\"');\n  }\n\n  // TODO: switch to \"destroy\" on next major\n  var unsetDestroy = opts.unset === 'destroy'\n\n  if (Array.isArray(secret) && secret.length === 0) {\n    throw new TypeError('secret option array must contain one or more strings');\n  }\n\n  if (secret && !Array.isArray(secret)) {\n    secret = [secret];\n  }\n\n  if (!secret) {\n    deprecate('req.secret; provide secret option');\n  }\n\n  // notify user that this store is not\n  // meant for a production environment\n  /* istanbul ignore next: not tested */\n  if (env === 'production' && store instanceof MemoryStore) {\n    console.warn(warning);\n  }\n\n  // generates the new session\n  store.generate = function(req){\n    req.sessionID = generateId(req);\n    req.session = new Session(req);\n    req.session.cookie = new Cookie(typeof cookieOptions === 'function' ? cookieOptions(req) : cookieOptions);\n\n    var isSecure = issecure(req, trustProxy);\n\n    if (cookieOptions.secure === 'auto') {\n      req.session.cookie.secure = isSecure;\n    }\n\n    if (cookieOptions.sameSite === 'auto') {\n      req.session.cookie.sameSite = isSecure ? 'none' : 'lax';\n    }\n  };\n\n  var storeImplementsTouch = typeof store.touch === 'function';\n\n  // register event listeners for the store to track readiness\n  var storeReady = true\n  store.on('disconnect', function ondisconnect() {\n    storeReady = false\n  })\n  store.on('connect', function onconnect() {\n    storeReady = true\n  })\n\n  return function session(req, res, next) {\n    // self-awareness\n    if (req.session) {\n      next()\n      return\n    }\n\n    // Handle connection as if there is no session if\n    // the store has temporarily disconnected etc\n    if (!storeReady) {\n      debug('store is disconnected')\n      next()\n      return\n    }\n\n    // pathname mismatch\n    var originalPath = parseUrl.original(req).pathname || '/'\n    var resolvedCookieOptions = typeof cookieOptions === 'function' ? cookieOptions(req) : cookieOptions\n    if (originalPath.indexOf(resolvedCookieOptions.path || '/') !== 0) {\n      debug('pathname mismatch')\n      next()\n      return\n    }\n\n    // ensure a secret is available or bail\n    if (!secret && !req.secret) {\n      next(new Error('secret option required for sessions'));\n      return;\n    }\n\n    // backwards compatibility for signed cookies\n    // req.secret is passed from the cookie parser middleware\n    var secrets = secret || [req.secret];\n\n    var originalHash;\n    var originalId;\n    var savedHash;\n    var touched = false\n\n    // expose store\n    req.sessionStore = store;\n\n    // get the session ID from the cookie\n    var cookieId = req.sessionID = getcookie(req, name, secrets);\n\n    // set-cookie\n    onHeaders(res, function(){\n      if (!req.session) {\n        debug('no session');\n        return;\n      }\n\n      if (!shouldSetCookie(req)) {\n        return;\n      }\n\n      // only send secure cookies via https\n      if (req.session.cookie.secure && !issecure(req, trustProxy)) {\n        debug('not secured');\n        return;\n      }\n\n      if (!touched) {\n        // touch session\n        req.session.touch()\n        touched = true\n      }\n\n      // set cookie\n      try {\n        setcookie(res, name, req.sessionID, secrets[0], req.session.cookie.data)\n      } catch (err) {\n        defer(next, err)\n      }\n    });\n\n    // proxy end() to commit the session\n    var _end = res.end;\n    var _write = res.write;\n    var ended = false;\n    res.end = function end(chunk, encoding) {\n      if (ended) {\n        return false;\n      }\n\n      ended = true;\n\n      var ret;\n      var sync = true;\n\n      function writeend() {\n        if (sync) {\n          ret = _end.call(res, chunk, encoding);\n          sync = false;\n          return;\n        }\n\n        _end.call(res);\n      }\n\n      function writetop() {\n        if (!sync) {\n          return ret;\n        }\n\n        if (!res._header) {\n          res._implicitHeader()\n        }\n\n        if (chunk == null) {\n          ret = true;\n          return ret;\n        }\n\n        var contentLength = Number(res.getHeader('Content-Length'));\n\n        if (!isNaN(contentLength) && contentLength > 0) {\n          // measure chunk\n          chunk = !Buffer.isBuffer(chunk)\n            ? Buffer.from(chunk, encoding)\n            : chunk;\n          encoding = undefined;\n\n          if (chunk.length !== 0) {\n            debug('split response');\n            ret = _write.call(res, chunk.slice(0, chunk.length - 1));\n            chunk = chunk.slice(chunk.length - 1, chunk.length);\n            return ret;\n          }\n        }\n\n        ret = _write.call(res, chunk, encoding);\n        sync = false;\n\n        return ret;\n      }\n\n      if (shouldDestroy(req)) {\n        // destroy session\n        debug('destroying');\n        store.destroy(req.sessionID, function ondestroy(err) {\n          if (err) {\n            defer(next, err);\n          }\n\n          debug('destroyed');\n          writeend();\n        });\n\n        return writetop();\n      }\n\n      // no session to save\n      if (!req.session) {\n        debug('no session');\n        return _end.call(res, chunk, encoding);\n      }\n\n      if (!touched) {\n        // touch session\n        req.session.touch()\n        touched = true\n      }\n\n      if (shouldSave(req)) {\n        req.session.save(function onsave(err) {\n          if (err) {\n            defer(next, err);\n          }\n\n          writeend();\n        });\n\n        return writetop();\n      } else if (storeImplementsTouch && shouldTouch(req)) {\n        // store implements touch method\n        debug('touching');\n        store.touch(req.sessionID, req.session, function ontouch(err) {\n          if (err) {\n            defer(next, err);\n          }\n\n          debug('touched');\n          writeend();\n        });\n\n        return writetop();\n      }\n\n      return _end.call(res, chunk, encoding);\n    };\n\n    // generate the session\n    function generate() {\n      store.generate(req);\n      originalId = req.sessionID;\n      originalHash = hash(req.session);\n      wrapmethods(req.session);\n    }\n\n    // inflate the session\n    function inflate (req, sess) {\n      store.createSession(req, sess)\n      originalId = req.sessionID\n      originalHash = hash(sess)\n\n      if (!resaveSession) {\n        savedHash = originalHash\n      }\n\n      wrapmethods(req.session)\n    }\n\n    function rewrapmethods (sess, callback) {\n      return function () {\n        if (req.session !== sess) {\n          wrapmethods(req.session)\n        }\n\n        callback.apply(this, arguments)\n      }\n    }\n\n    // wrap session methods\n    function wrapmethods(sess) {\n      var _reload = sess.reload\n      var _save = sess.save;\n\n      function reload(callback) {\n        debug('reloading %s', this.id)\n        _reload.call(this, rewrapmethods(this, callback))\n      }\n\n      function save() {\n        debug('saving %s', this.id);\n        savedHash = hash(this);\n        _save.apply(this, arguments);\n      }\n\n      Object.defineProperty(sess, 'reload', {\n        configurable: true,\n        enumerable: false,\n        value: reload,\n        writable: true\n      })\n\n      Object.defineProperty(sess, 'save', {\n        configurable: true,\n        enumerable: false,\n        value: save,\n        writable: true\n      });\n    }\n\n    // check if session has been modified\n    function isModified(sess) {\n      return originalId !== sess.id || originalHash !== hash(sess);\n    }\n\n    // check if session has been saved\n    function isSaved(sess) {\n      return originalId === sess.id && savedHash === hash(sess);\n    }\n\n    // determine if session should be destroyed\n    function shouldDestroy(req) {\n      return req.sessionID && unsetDestroy && req.session == null;\n    }\n\n    // determine if session should be saved to store\n    function shouldSave(req) {\n      // cannot set cookie without a session ID\n      if (typeof req.sessionID !== 'string') {\n        debug('session ignored because of bogus req.sessionID %o', req.sessionID);\n        return false;\n      }\n\n      return !saveUninitializedSession && !savedHash && cookieId !== req.sessionID\n        ? isModified(req.session)\n        : !isSaved(req.session)\n    }\n\n    // determine if session should be touched\n    function shouldTouch(req) {\n      // cannot set cookie without a session ID\n      if (typeof req.sessionID !== 'string') {\n        debug('session ignored because of bogus req.sessionID %o', req.sessionID);\n        return false;\n      }\n\n      return cookieId === req.sessionID && !shouldSave(req);\n    }\n\n    // determine if cookie should be set on response\n    function shouldSetCookie(req) {\n      // cannot set cookie without a session ID\n      if (typeof req.sessionID !== 'string') {\n        return false;\n      }\n\n      return cookieId !== req.sessionID\n        ? saveUninitializedSession || isModified(req.session)\n        : rollingSessions || req.session.cookie.expires != null && isModified(req.session);\n    }\n\n    // generate a session if the browser doesn't send a sessionID\n    if (!req.sessionID) {\n      debug('no SID sent, generating session');\n      generate();\n      next();\n      return;\n    }\n\n    // generate the session object\n    debug('fetching %s', req.sessionID);\n    store.get(req.sessionID, function(err, sess){\n      // error handling\n      if (err && err.code !== 'ENOENT') {\n        debug('error %j', err);\n        next(err)\n        return\n      }\n\n      try {\n        if (err || !sess) {\n          debug('no session found')\n          generate()\n        } else {\n          debug('session found')\n          inflate(req, sess)\n        }\n      } catch (e) {\n        next(e)\n        return\n      }\n\n      next()\n    });\n  };\n};\n\n/**\n * Generate a session ID for a new session.\n *\n * @return {String}\n * @private\n */\n\nfunction generateSessionId() {\n  return uid(24);\n}\n\n/**\n * Get the session ID cookie from request.\n *\n * @return {string}\n * @private\n */\n\nfunction getcookie(req, name, secrets) {\n  var header = req.headers.cookie;\n  var raw;\n  var val;\n\n  // read from cookie header\n  if (header) {\n    var cookies = cookie.parse(header);\n\n    raw = cookies[name];\n\n    if (raw) {\n      if (raw.substr(0, 2) === 's:') {\n        val = unsigncookie(raw.slice(2), secrets);\n\n        if (val === false) {\n          debug('cookie signature invalid');\n          val = undefined;\n        }\n      } else {\n        debug('cookie unsigned')\n      }\n    }\n  }\n\n  // back-compat read from cookieParser() signedCookies data\n  if (!val && req.signedCookies) {\n    val = req.signedCookies[name];\n\n    if (val) {\n      deprecate('cookie should be available in req.headers.cookie');\n    }\n  }\n\n  // back-compat read from cookieParser() cookies data\n  if (!val && req.cookies) {\n    raw = req.cookies[name];\n\n    if (raw) {\n      if (raw.substr(0, 2) === 's:') {\n        val = unsigncookie(raw.slice(2), secrets);\n\n        if (val) {\n          deprecate('cookie should be available in req.headers.cookie');\n        }\n\n        if (val === false) {\n          debug('cookie signature invalid');\n          val = undefined;\n        }\n      } else {\n        debug('cookie unsigned')\n      }\n    }\n  }\n\n  return val;\n}\n\n/**\n * Hash the given `sess` object omitting changes to `.cookie`.\n *\n * @param {Object} sess\n * @return {String}\n * @private\n */\n\nfunction hash(sess) {\n  // serialize\n  var str = JSON.stringify(sess, function (key, val) {\n    // ignore sess.cookie property\n    if (this === sess && key === 'cookie') {\n      return\n    }\n\n    return val\n  })\n\n  // hash\n  return crypto\n    .createHash('sha1')\n    .update(str, 'utf8')\n    .digest('hex')\n}\n\n/**\n * Determine if request is secure.\n *\n * @param {Object} req\n * @param {Boolean} [trustProxy]\n * @return {Boolean}\n * @private\n */\n\nfunction issecure(req, trustProxy) {\n  // socket is https server\n  if (req.connection && req.connection.encrypted) {\n    return true;\n  }\n\n  // do not trust proxy\n  if (trustProxy === false) {\n    return false;\n  }\n\n  // no explicit trust; try req.secure from express\n  if (trustProxy !== true) {\n    return req.secure === true\n  }\n\n  // read the proto from x-forwarded-proto header\n  var header = req.headers['x-forwarded-proto'] || '';\n  var index = header.indexOf(',');\n  var proto = index !== -1\n    ? header.substr(0, index).toLowerCase().trim()\n    : header.toLowerCase().trim()\n\n  return proto === 'https';\n}\n\n/**\n * Set cookie on response.\n *\n * @private\n */\n\nfunction setcookie(res, name, val, secret, options) {\n  var signed = 's:' + signature.sign(val, secret);\n  var data = cookie.serialize(name, signed, options);\n\n  debug('set-cookie %s', data);\n\n  var prev = res.getHeader('Set-Cookie') || []\n  var header = Array.isArray(prev) ? prev.concat(data) : [prev, data];\n\n  res.setHeader('Set-Cookie', header)\n}\n\n/**\n * Verify and decode the given `val` with `secrets`.\n *\n * @param {String} val\n * @param {Array} secrets\n * @returns {String|Boolean}\n * @private\n */\nfunction unsigncookie(val, secrets) {\n  for (var i = 0; i < secrets.length; i++) {\n    var result = signature.unsign(val, secrets[i]);\n\n    if (result !== false) {\n      return result;\n    }\n  }\n\n  return false;\n}\n", "'use strict'\n\nexports.parse = function (source, transform) {\n  return new ArrayParser(source, transform).parse()\n}\n\nclass ArrayParser {\n  constructor (source, transform) {\n    this.source = source\n    this.transform = transform || identity\n    this.position = 0\n    this.entries = []\n    this.recorded = []\n    this.dimension = 0\n  }\n\n  isEof () {\n    return this.position >= this.source.length\n  }\n\n  nextCharacter () {\n    var character = this.source[this.position++]\n    if (character === '\\\\') {\n      return {\n        value: this.source[this.position++],\n        escaped: true\n      }\n    }\n    return {\n      value: character,\n      escaped: false\n    }\n  }\n\n  record (character) {\n    this.recorded.push(character)\n  }\n\n  newEntry (includeEmpty) {\n    var entry\n    if (this.recorded.length > 0 || includeEmpty) {\n      entry = this.recorded.join('')\n      if (entry === 'NULL' && !includeEmpty) {\n        entry = null\n      }\n      if (entry !== null) entry = this.transform(entry)\n      this.entries.push(entry)\n      this.recorded = []\n    }\n  }\n\n  consumeDimensions () {\n    if (this.source[0] === '[') {\n      while (!this.isEof()) {\n        var char = this.nextCharacter()\n        if (char.value === '=') break\n      }\n    }\n  }\n\n  parse (nested) {\n    var character, parser, quote\n    this.consumeDimensions()\n    while (!this.isEof()) {\n      character = this.nextCharacter()\n      if (character.value === '{' && !quote) {\n        this.dimension++\n        if (this.dimension > 1) {\n          parser = new ArrayParser(this.source.substr(this.position - 1), this.transform)\n          this.entries.push(parser.parse(true))\n          this.position += parser.position - 2\n        }\n      } else if (character.value === '}' && !quote) {\n        this.dimension--\n        if (!this.dimension) {\n          this.newEntry()\n          if (nested) return this.entries\n        }\n      } else if (character.value === '\"' && !character.escaped) {\n        if (quote) this.newEntry(true)\n        quote = !quote\n      } else if (character.value === ',' && !quote) {\n        this.newEntry()\n      } else {\n        this.record(character.value)\n      }\n    }\n    if (this.dimension !== 0) {\n      throw new Error('array dimension not balanced')\n    }\n    return this.entries\n  }\n}\n\nfunction identity (value) {\n  return value\n}\n", "var array = require('postgres-array');\n\nmodule.exports = {\n  create: function (source, transform) {\n    return {\n      parse: function() {\n        return array.parse(source, transform);\n      }\n    };\n  }\n};\n", "'use strict'\n\nvar DATE_TIME = /(\\d{1,})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})(\\.\\d{1,})?.*?( BC)?$/\nvar DATE = /^(\\d{1,})-(\\d{2})-(\\d{2})( BC)?$/\nvar TIME_ZONE = /([Z+-])(\\d{2})?:?(\\d{2})?:?(\\d{2})?/\nvar INFINITY = /^-?infinity$/\n\nmodule.exports = function parseDate (isoDate) {\n  if (INFINITY.test(isoDate)) {\n    // Capitalize to Infinity before passing to Number\n    return Number(isoDate.replace('i', 'I'))\n  }\n  var matches = DATE_TIME.exec(isoDate)\n\n  if (!matches) {\n    // Force YYYY-MM-DD dates to be parsed as local time\n    return getDate(isoDate) || null\n  }\n\n  var isBC = !!matches[8]\n  var year = parseInt(matches[1], 10)\n  if (isBC) {\n    year = bcYearToNegativeYear(year)\n  }\n\n  var month = parseInt(matches[2], 10) - 1\n  var day = matches[3]\n  var hour = parseInt(matches[4], 10)\n  var minute = parseInt(matches[5], 10)\n  var second = parseInt(matches[6], 10)\n\n  var ms = matches[7]\n  ms = ms ? 1000 * parseFloat(ms) : 0\n\n  var date\n  var offset = timeZoneOffset(isoDate)\n  if (offset != null) {\n    date = new Date(Date.UTC(year, month, day, hour, minute, second, ms))\n\n    // Account for years from 0 to 99 being interpreted as 1900-1999\n    // by Date.UTC / the multi-argument form of the Date constructor\n    if (is0To99(year)) {\n      date.setUTCFullYear(year)\n    }\n\n    if (offset !== 0) {\n      date.setTime(date.getTime() - offset)\n    }\n  } else {\n    date = new Date(year, month, day, hour, minute, second, ms)\n\n    if (is0To99(year)) {\n      date.setFullYear(year)\n    }\n  }\n\n  return date\n}\n\nfunction getDate (isoDate) {\n  var matches = DATE.exec(isoDate)\n  if (!matches) {\n    return\n  }\n\n  var year = parseInt(matches[1], 10)\n  var isBC = !!matches[4]\n  if (isBC) {\n    year = bcYearToNegativeYear(year)\n  }\n\n  var month = parseInt(matches[2], 10) - 1\n  var day = matches[3]\n  // YYYY-MM-DD will be parsed as local time\n  var date = new Date(year, month, day)\n\n  if (is0To99(year)) {\n    date.setFullYear(year)\n  }\n\n  return date\n}\n\n// match timezones:\n// Z (UTC)\n// -05\n// +06:30\nfunction timeZoneOffset (isoDate) {\n  if (isoDate.endsWith('+00')) {\n    return 0\n  }\n\n  var zone = TIME_ZONE.exec(isoDate.split(' ')[1])\n  if (!zone) return\n  var type = zone[1]\n\n  if (type === 'Z') {\n    return 0\n  }\n  var sign = type === '-' ? -1 : 1\n  var offset = parseInt(zone[2], 10) * 3600 +\n    parseInt(zone[3] || 0, 10) * 60 +\n    parseInt(zone[4] || 0, 10)\n\n  return offset * sign * 1000\n}\n\nfunction bcYearToNegativeYear (year) {\n  // Account for numerical difference between representations of BC years\n  // See: https://github.com/bendrucker/postgres-date/issues/5\n  return -(year - 1)\n}\n\nfunction is0To99 (num) {\n  return num >= 0 && num < 100\n}\n", "module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend(target) {\n    for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n", "'use strict'\n\nvar extend = require('xtend/mutable')\n\nmodule.exports = PostgresInterval\n\nfunction PostgresInterval (raw) {\n  if (!(this instanceof PostgresInterval)) {\n    return new PostgresInterval(raw)\n  }\n  extend(this, parse(raw))\n}\nvar properties = ['seconds', 'minutes', 'hours', 'days', 'months', 'years']\nPostgresInterval.prototype.toPostgres = function () {\n  var filtered = properties.filter(this.hasOwnProperty, this)\n\n  // In addition to `properties`, we need to account for fractions of seconds.\n  if (this.milliseconds && filtered.indexOf('seconds') < 0) {\n    filtered.push('seconds')\n  }\n\n  if (filtered.length === 0) return '0'\n  return filtered\n    .map(function (property) {\n      var value = this[property] || 0\n\n      // Account for fractional part of seconds,\n      // remove trailing zeroes.\n      if (property === 'seconds' && this.milliseconds) {\n        value = (value + this.milliseconds / 1000).toFixed(6).replace(/\\.?0+$/, '')\n      }\n\n      return value + ' ' + property\n    }, this)\n    .join(' ')\n}\n\nvar propertiesISOEquivalent = {\n  years: 'Y',\n  months: 'M',\n  days: 'D',\n  hours: 'H',\n  minutes: 'M',\n  seconds: 'S'\n}\nvar dateProperties = ['years', 'months', 'days']\nvar timeProperties = ['hours', 'minutes', 'seconds']\n// according to ISO 8601\nPostgresInterval.prototype.toISOString = PostgresInterval.prototype.toISO = function () {\n  var datePart = dateProperties\n    .map(buildProperty, this)\n    .join('')\n\n  var timePart = timeProperties\n    .map(buildProperty, this)\n    .join('')\n\n  return 'P' + datePart + 'T' + timePart\n\n  function buildProperty (property) {\n    var value = this[property] || 0\n\n    // Account for fractional part of seconds,\n    // remove trailing zeroes.\n    if (property === 'seconds' && this.milliseconds) {\n      value = (value + this.milliseconds / 1000).toFixed(6).replace(/0+$/, '')\n    }\n\n    return value + propertiesISOEquivalent[property]\n  }\n}\n\nvar NUMBER = '([+-]?\\\\d+)'\nvar YEAR = NUMBER + '\\\\s+years?'\nvar MONTH = NUMBER + '\\\\s+mons?'\nvar DAY = NUMBER + '\\\\s+days?'\nvar TIME = '([+-])?([\\\\d]*):(\\\\d\\\\d):(\\\\d\\\\d)\\\\.?(\\\\d{1,6})?'\nvar INTERVAL = new RegExp([YEAR, MONTH, DAY, TIME].map(function (regexString) {\n  return '(' + regexString + ')?'\n})\n  .join('\\\\s*'))\n\n// Positions of values in regex match\nvar positions = {\n  years: 2,\n  months: 4,\n  days: 6,\n  hours: 9,\n  minutes: 10,\n  seconds: 11,\n  milliseconds: 12\n}\n// We can use negative time\nvar negatives = ['hours', 'minutes', 'seconds', 'milliseconds']\n\nfunction parseMilliseconds (fraction) {\n  // add omitted zeroes\n  var microseconds = fraction + '000000'.slice(fraction.length)\n  return parseInt(microseconds, 10) / 1000\n}\n\nfunction parse (interval) {\n  if (!interval) return {}\n  var matches = INTERVAL.exec(interval)\n  var isNegative = matches[8] === '-'\n  return Object.keys(positions)\n    .reduce(function (parsed, property) {\n      var position = positions[property]\n      var value = matches[position]\n      // no empty string\n      if (!value) return parsed\n      // milliseconds are actually microseconds (up to 6 digits)\n      // with omitted trailing zeroes.\n      value = property === 'milliseconds'\n        ? parseMilliseconds(value)\n        : parseInt(value, 10)\n      // no zeros\n      if (!value) return parsed\n      if (isNegative && ~negatives.indexOf(property)) {\n        value *= -1\n      }\n      parsed[property] = value\n      return parsed\n    }, {})\n}\n", "'use strict'\n\nvar bufferFrom = Buffer.from || Buffer\n\nmodule.exports = function parseBytea (input) {\n  if (/^\\\\x/.test(input)) {\n    // new 'hex' style response (pg >9.0)\n    return bufferFrom(input.substr(2), 'hex')\n  }\n  var output = ''\n  var i = 0\n  while (i < input.length) {\n    if (input[i] !== '\\\\') {\n      output += input[i]\n      ++i\n    } else {\n      if (/[0-7]{3}/.test(input.substr(i + 1, 3))) {\n        output += String.fromCharCode(parseInt(input.substr(i + 1, 3), 8))\n        i += 4\n      } else {\n        var backslashes = 1\n        while (i + backslashes < input.length && input[i + backslashes] === '\\\\') {\n          backslashes++\n        }\n        for (var k = 0; k < Math.floor(backslashes / 2); ++k) {\n          output += '\\\\'\n        }\n        i += Math.floor(backslashes / 2) * 2\n      }\n    }\n  }\n  return bufferFrom(output, 'binary')\n}\n", "var array = require('postgres-array')\nvar arrayParser = require('./arrayParser');\nvar parseDate = require('postgres-date');\nvar parseInterval = require('postgres-interval');\nvar parseByteA = require('postgres-bytea');\n\nfunction allowNull (fn) {\n  return function nullAllowed (value) {\n    if (value === null) return value\n    return fn(value)\n  }\n}\n\nfunction parseBool (value) {\n  if (value === null) return value\n  return value === 'TRUE' ||\n    value === 't' ||\n    value === 'true' ||\n    value === 'y' ||\n    value === 'yes' ||\n    value === 'on' ||\n    value === '1';\n}\n\nfunction parseBoolArray (value) {\n  if (!value) return null\n  return array.parse(value, parseBool)\n}\n\nfunction parseBaseTenInt (string) {\n  return parseInt(string, 10)\n}\n\nfunction parseIntegerArray (value) {\n  if (!value) return null\n  return array.parse(value, allowNull(parseBaseTenInt))\n}\n\nfunction parseBigIntegerArray (value) {\n  if (!value) return null\n  return array.parse(value, allowNull(function (entry) {\n    return parseBigInteger(entry).trim()\n  }))\n}\n\nvar parsePointArray = function(value) {\n  if(!value) { return null; }\n  var p = arrayParser.create(value, function(entry) {\n    if(entry !== null) {\n      entry = parsePoint(entry);\n    }\n    return entry;\n  });\n\n  return p.parse();\n};\n\nvar parseFloatArray = function(value) {\n  if(!value) { return null; }\n  var p = arrayParser.create(value, function(entry) {\n    if(entry !== null) {\n      entry = parseFloat(entry);\n    }\n    return entry;\n  });\n\n  return p.parse();\n};\n\nvar parseStringArray = function(value) {\n  if(!value) { return null; }\n\n  var p = arrayParser.create(value);\n  return p.parse();\n};\n\nvar parseDateArray = function(value) {\n  if (!value) { return null; }\n\n  var p = arrayParser.create(value, function(entry) {\n    if (entry !== null) {\n      entry = parseDate(entry);\n    }\n    return entry;\n  });\n\n  return p.parse();\n};\n\nvar parseIntervalArray = function(value) {\n  if (!value) { return null; }\n\n  var p = arrayParser.create(value, function(entry) {\n    if (entry !== null) {\n      entry = parseInterval(entry);\n    }\n    return entry;\n  });\n\n  return p.parse();\n};\n\nvar parseByteAArray = function(value) {\n  if (!value) { return null; }\n\n  return array.parse(value, allowNull(parseByteA));\n};\n\nvar parseInteger = function(value) {\n  return parseInt(value, 10);\n};\n\nvar parseBigInteger = function(value) {\n  var valStr = String(value);\n  if (/^\\d+$/.test(valStr)) { return valStr; }\n  return value;\n};\n\nvar parseJsonArray = function(value) {\n  if (!value) { return null; }\n\n  return array.parse(value, allowNull(JSON.parse));\n};\n\nvar parsePoint = function(value) {\n  if (value[0] !== '(') { return null; }\n\n  value = value.substring( 1, value.length - 1 ).split(',');\n\n  return {\n    x: parseFloat(value[0])\n  , y: parseFloat(value[1])\n  };\n};\n\nvar parseCircle = function(value) {\n  if (value[0] !== '<' && value[1] !== '(') { return null; }\n\n  var point = '(';\n  var radius = '';\n  var pointParsed = false;\n  for (var i = 2; i < value.length - 1; i++){\n    if (!pointParsed) {\n      point += value[i];\n    }\n\n    if (value[i] === ')') {\n      pointParsed = true;\n      continue;\n    } else if (!pointParsed) {\n      continue;\n    }\n\n    if (value[i] === ','){\n      continue;\n    }\n\n    radius += value[i];\n  }\n  var result = parsePoint(point);\n  result.radius = parseFloat(radius);\n\n  return result;\n};\n\nvar init = function(register) {\n  register(20, parseBigInteger); // int8\n  register(21, parseInteger); // int2\n  register(23, parseInteger); // int4\n  register(26, parseInteger); // oid\n  register(700, parseFloat); // float4/real\n  register(701, parseFloat); // float8/double\n  register(16, parseBool);\n  register(1082, parseDate); // date\n  register(1114, parseDate); // timestamp without timezone\n  register(1184, parseDate); // timestamp\n  register(600, parsePoint); // point\n  register(651, parseStringArray); // cidr[]\n  register(718, parseCircle); // circle\n  register(1000, parseBoolArray);\n  register(1001, parseByteAArray);\n  register(1005, parseIntegerArray); // _int2\n  register(1007, parseIntegerArray); // _int4\n  register(1028, parseIntegerArray); // oid[]\n  register(1016, parseBigIntegerArray); // _int8\n  register(1017, parsePointArray); // point[]\n  register(1021, parseFloatArray); // _float4\n  register(1022, parseFloatArray); // _float8\n  register(1231, parseFloatArray); // _numeric\n  register(1014, parseStringArray); //char\n  register(1015, parseStringArray); //varchar\n  register(1008, parseStringArray);\n  register(1009, parseStringArray);\n  register(1040, parseStringArray); // macaddr[]\n  register(1041, parseStringArray); // inet[]\n  register(1115, parseDateArray); // timestamp without time zone[]\n  register(1182, parseDateArray); // _date\n  register(1185, parseDateArray); // timestamp with time zone[]\n  register(1186, parseInterval);\n  register(1187, parseIntervalArray);\n  register(17, parseByteA);\n  register(114, JSON.parse.bind(JSON)); // json\n  register(3802, JSON.parse.bind(JSON)); // jsonb\n  register(199, parseJsonArray); // json[]\n  register(3807, parseJsonArray); // jsonb[]\n  register(3907, parseStringArray); // numrange[]\n  register(2951, parseStringArray); // uuid[]\n  register(791, parseStringArray); // money[]\n  register(1183, parseStringArray); // time[]\n  register(1270, parseStringArray); // timetz[]\n};\n\nmodule.exports = {\n  init: init\n};\n", "'use strict';\n\n// selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer\nvar BASE = 1000000;\n\nfunction readInt8(buffer) {\n\tvar high = buffer.readInt32BE(0);\n\tvar low = buffer.readUInt32BE(4);\n\tvar sign = '';\n\n\tif (high < 0) {\n\t\thigh = ~high + (low === 0);\n\t\tlow = (~low + 1) >>> 0;\n\t\tsign = '-';\n\t}\n\n\tvar result = '';\n\tvar carry;\n\tvar t;\n\tvar digits;\n\tvar pad;\n\tvar l;\n\tvar i;\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\tt = 0x100000000 * carry + low;\n\t\tdigits = '' + t % BASE;\n\n\t\treturn sign + digits + result;\n\t}\n}\n\nmodule.exports = readInt8;\n", "var parseInt64 = require('pg-int8');\n\nvar parseBits = function(data, bits, offset, invert, callback) {\n  offset = offset || 0;\n  invert = invert || false;\n  callback = callback || function(lastValue, newValue, bits) { return (lastValue * Math.pow(2, bits)) + newValue; };\n  var offsetBytes = offset >> 3;\n\n  var inv = function(value) {\n    if (invert) {\n      return ~value & 0xff;\n    }\n\n    return value;\n  };\n\n  // read first (maybe partial) byte\n  var mask = 0xff;\n  var firstBits = 8 - (offset % 8);\n  if (bits < firstBits) {\n    mask = (0xff << (8 - bits)) & 0xff;\n    firstBits = bits;\n  }\n\n  if (offset) {\n    mask = mask >> (offset % 8);\n  }\n\n  var result = 0;\n  if ((offset % 8) + bits >= 8) {\n    result = callback(0, inv(data[offsetBytes]) & mask, firstBits);\n  }\n\n  // read bytes\n  var bytes = (bits + offset) >> 3;\n  for (var i = offsetBytes + 1; i < bytes; i++) {\n    result = callback(result, inv(data[i]), 8);\n  }\n\n  // bits to read, that are not a complete byte\n  var lastBits = (bits + offset) % 8;\n  if (lastBits > 0) {\n    result = callback(result, inv(data[bytes]) >> (8 - lastBits), lastBits);\n  }\n\n  return result;\n};\n\nvar parseFloatFromBits = function(data, precisionBits, exponentBits) {\n  var bias = Math.pow(2, exponentBits - 1) - 1;\n  var sign = parseBits(data, 1);\n  var exponent = parseBits(data, exponentBits, 1);\n\n  if (exponent === 0) {\n    return 0;\n  }\n\n  // parse mantissa\n  var precisionBitsCounter = 1;\n  var parsePrecisionBits = function(lastValue, newValue, bits) {\n    if (lastValue === 0) {\n      lastValue = 1;\n    }\n\n    for (var i = 1; i <= bits; i++) {\n      precisionBitsCounter /= 2;\n      if ((newValue & (0x1 << (bits - i))) > 0) {\n        lastValue += precisionBitsCounter;\n      }\n    }\n\n    return lastValue;\n  };\n\n  var mantissa = parseBits(data, precisionBits, exponentBits + 1, false, parsePrecisionBits);\n\n  // special cases\n  if (exponent == (Math.pow(2, exponentBits + 1) - 1)) {\n    if (mantissa === 0) {\n      return (sign === 0) ? Infinity : -Infinity;\n    }\n\n    return NaN;\n  }\n\n  // normale number\n  return ((sign === 0) ? 1 : -1) * Math.pow(2, exponent - bias) * mantissa;\n};\n\nvar parseInt16 = function(value) {\n  if (parseBits(value, 1) == 1) {\n    return -1 * (parseBits(value, 15, 1, true) + 1);\n  }\n\n  return parseBits(value, 15, 1);\n};\n\nvar parseInt32 = function(value) {\n  if (parseBits(value, 1) == 1) {\n    return -1 * (parseBits(value, 31, 1, true) + 1);\n  }\n\n  return parseBits(value, 31, 1);\n};\n\nvar parseFloat32 = function(value) {\n  return parseFloatFromBits(value, 23, 8);\n};\n\nvar parseFloat64 = function(value) {\n  return parseFloatFromBits(value, 52, 11);\n};\n\nvar parseNumeric = function(value) {\n  var sign = parseBits(value, 16, 32);\n  if (sign == 0xc000) {\n    return NaN;\n  }\n\n  var weight = Math.pow(10000, parseBits(value, 16, 16));\n  var result = 0;\n\n  var digits = [];\n  var ndigits = parseBits(value, 16);\n  for (var i = 0; i < ndigits; i++) {\n    result += parseBits(value, 16, 64 + (16 * i)) * weight;\n    weight /= 10000;\n  }\n\n  var scale = Math.pow(10, parseBits(value, 16, 48));\n  return ((sign === 0) ? 1 : -1) * Math.round(result * scale) / scale;\n};\n\nvar parseDate = function(isUTC, value) {\n  var sign = parseBits(value, 1);\n  var rawValue = parseBits(value, 63, 1);\n\n  // discard usecs and shift from 2000 to 1970\n  var result = new Date((((sign === 0) ? 1 : -1) * rawValue / 1000) + 946684800000);\n\n  if (!isUTC) {\n    result.setTime(result.getTime() + result.getTimezoneOffset() * 60000);\n  }\n\n  // add microseconds to the date\n  result.usec = rawValue % 1000;\n  result.getMicroSeconds = function() {\n    return this.usec;\n  };\n  result.setMicroSeconds = function(value) {\n    this.usec = value;\n  };\n  result.getUTCMicroSeconds = function() {\n    return this.usec;\n  };\n\n  return result;\n};\n\nvar parseArray = function(value) {\n  var dim = parseBits(value, 32);\n\n  var flags = parseBits(value, 32, 32);\n  var elementType = parseBits(value, 32, 64);\n\n  var offset = 96;\n  var dims = [];\n  for (var i = 0; i < dim; i++) {\n    // parse dimension\n    dims[i] = parseBits(value, 32, offset);\n    offset += 32;\n\n    // ignore lower bounds\n    offset += 32;\n  }\n\n  var parseElement = function(elementType) {\n    // parse content length\n    var length = parseBits(value, 32, offset);\n    offset += 32;\n\n    // parse null values\n    if (length == 0xffffffff) {\n      return null;\n    }\n\n    var result;\n    if ((elementType == 0x17) || (elementType == 0x14)) {\n      // int/bigint\n      result = parseBits(value, length * 8, offset);\n      offset += length * 8;\n      return result;\n    }\n    else if (elementType == 0x19) {\n      // string\n      result = value.toString(this.encoding, offset >> 3, (offset += (length << 3)) >> 3);\n      return result;\n    }\n    else {\n      console.log(\"ERROR: ElementType not implemented: \" + elementType);\n    }\n  };\n\n  var parse = function(dimension, elementType) {\n    var array = [];\n    var i;\n\n    if (dimension.length > 1) {\n      var count = dimension.shift();\n      for (i = 0; i < count; i++) {\n        array[i] = parse(dimension, elementType);\n      }\n      dimension.unshift(count);\n    }\n    else {\n      for (i = 0; i < dimension[0]; i++) {\n        array[i] = parseElement(elementType);\n      }\n    }\n\n    return array;\n  };\n\n  return parse(dims, elementType);\n};\n\nvar parseText = function(value) {\n  return value.toString('utf8');\n};\n\nvar parseBool = function(value) {\n  if(value === null) return null;\n  return (parseBits(value, 8) > 0);\n};\n\nvar init = function(register) {\n  register(20, parseInt64);\n  register(21, parseInt16);\n  register(23, parseInt32);\n  register(26, parseInt32);\n  register(1700, parseNumeric);\n  register(700, parseFloat32);\n  register(701, parseFloat64);\n  register(16, parseBool);\n  register(1114, parseDate.bind(null, false));\n  register(1184, parseDate.bind(null, true));\n  register(1000, parseArray);\n  register(1007, parseArray);\n  register(1016, parseArray);\n  register(1008, parseArray);\n  register(1009, parseArray);\n  register(25, parseText);\n};\n\nmodule.exports = {\n  init: init\n};\n", "/**\n * Following query was used to generate this file:\n\n SELECT json_object_agg(UPPER(PT.typname), PT.oid::int4 ORDER BY pt.oid)\n FROM pg_type PT\n WHERE typnamespace = (SELECT pgn.oid FROM pg_namespace pgn WHERE nspname = 'pg_catalog') -- Take only builting Postgres types with stable OID (extension types are not guaranted to be stable)\n AND typtype = 'b' -- Only basic types\n AND typelem = 0 -- Ignore aliases\n AND typisdefined -- Ignore undefined types\n */\n\nmodule.exports = {\n    BOOL: 16,\n    BYTEA: 17,\n    CHAR: 18,\n    INT8: 20,\n    INT2: 21,\n    INT4: 23,\n    REGPROC: 24,\n    TEXT: 25,\n    OID: 26,\n    TID: 27,\n    XID: 28,\n    CID: 29,\n    JSON: 114,\n    XML: 142,\n    PG_NODE_TREE: 194,\n    SMGR: 210,\n    PATH: 602,\n    POLYGON: 604,\n    CIDR: 650,\n    FLOAT4: 700,\n    FLOAT8: 701,\n    ABSTIME: 702,\n    RELTIME: 703,\n    TINTERVAL: 704,\n    CIRCLE: 718,\n    MACADDR8: 774,\n    MONEY: 790,\n    MACADDR: 829,\n    INET: 869,\n    ACLITEM: 1033,\n    BPCHAR: 1042,\n    VARCHAR: 1043,\n    DATE: 1082,\n    TIME: 1083,\n    TIMESTAMP: 1114,\n    TIMESTAMPTZ: 1184,\n    INTERVAL: 1186,\n    TIMETZ: 1266,\n    BIT: 1560,\n    VARBIT: 1562,\n    NUMERIC: 1700,\n    REFCURSOR: 1790,\n    REGPROCEDURE: 2202,\n    REGOPER: 2203,\n    REGOPERATOR: 2204,\n    REGCLASS: 2205,\n    REGTYPE: 2206,\n    UUID: 2950,\n    TXID_SNAPSHOT: 2970,\n    PG_LSN: 3220,\n    PG_NDISTINCT: 3361,\n    PG_DEPENDENCIES: 3402,\n    TSVECTOR: 3614,\n    TSQUERY: 3615,\n    GTSVECTOR: 3642,\n    REGCONFIG: 3734,\n    REGDICTIONARY: 3769,\n    JSONB: 3802,\n    REGNAMESPACE: 4089,\n    REGROLE: 4096\n};\n", "var textParsers = require('./lib/textParsers');\nvar binaryParsers = require('./lib/binaryParsers');\nvar arrayParser = require('./lib/arrayParser');\nvar builtinTypes = require('./lib/builtins');\n\nexports.getTypeParser = getTypeParser;\nexports.setTypeParser = setTypeParser;\nexports.arrayParser = arrayParser;\nexports.builtins = builtinTypes;\n\nvar typeParsers = {\n  text: {},\n  binary: {}\n};\n\n//the empty parse function\nfunction noParse (val) {\n  return String(val);\n};\n\n//returns a function used to convert a specific type (specified by\n//oid) into a result javascript type\n//note: the oid can be obtained via the following sql query:\n//SELECT oid FROM pg_type WHERE typname = 'TYPE_NAME_HERE';\nfunction getTypeParser (oid, format) {\n  format = format || 'text';\n  if (!typeParsers[format]) {\n    return noParse;\n  }\n  return typeParsers[format][oid] || noParse;\n};\n\nfunction setTypeParser (oid, format, parseFn) {\n  if(typeof format == 'function') {\n    parseFn = format;\n    format = 'text';\n  }\n  typeParsers[format][oid] = parseFn;\n};\n\ntextParsers.init(function(oid, converter) {\n  typeParsers.text[oid] = converter;\n});\n\nbinaryParsers.init(function(oid, converter) {\n  typeParsers.binary[oid] = converter;\n});\n", "'use strict'\n\nlet user\ntry {\n  user = process.platform === 'win32' ? process.env.USERNAME : process.env.USER\n} catch {\n  // ignore, e.g., Deno without --allow-env\n}\n\nmodule.exports = {\n  // database host. defaults to localhost\n  host: 'localhost',\n\n  // database user's name\n  user,\n\n  // name of database to connect\n  database: undefined,\n\n  // database user's password\n  password: null,\n\n  // a Postgres connection string to be used instead of setting individual connection items\n  // NOTE:  Setting this value will cause it to override any other value (such as database or user) defined\n  // in the defaults object.\n  connectionString: undefined,\n\n  // database port\n  port: 5432,\n\n  // number of rows to return at a time from a prepared statement's\n  // portal. 0 will return all rows at once\n  rows: 0,\n\n  // binary result mode\n  binary: false,\n\n  // Connection pool options - see https://github.com/brianc/node-pg-pool\n\n  // number of connections to use in connection pool\n  // 0 will disable connection pooling\n  max: 10,\n\n  // max milliseconds a client can go unused before it is removed\n  // from the pool and destroyed\n  idleTimeoutMillis: 30000,\n\n  client_encoding: '',\n\n  ssl: false,\n\n  application_name: undefined,\n\n  fallback_application_name: undefined,\n\n  options: undefined,\n\n  parseInputDatesAsUTC: false,\n\n  // max milliseconds any query using this connection will execute for before timing out in error.\n  // false=unlimited\n  statement_timeout: false,\n\n  // Abort any statement that waits longer than the specified duration in milliseconds while attempting to acquire a lock.\n  // false=unlimited\n  lock_timeout: false,\n\n  // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds\n  // false=unlimited\n  idle_in_transaction_session_timeout: false,\n\n  // max milliseconds to wait for query to complete (client side)\n  query_timeout: false,\n\n  connect_timeout: 0,\n\n  keepalives: 1,\n\n  keepalives_idle: 0,\n}\n\nconst pgTypes = require('pg-types')\n// save default parsers\nconst parseBigInteger = pgTypes.getTypeParser(20, 'text')\nconst parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text')\n\n// parse int8 so you can get your count values as actual numbers\nmodule.exports.__defineSetter__('parseInt8', function (val) {\n  pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger)\n  pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray)\n})\n", "'use strict'\n\nconst defaults = require('./defaults')\n\nconst util = require('util')\nconst { isDate } = util.types || util // Node 8 doesn't have `util.types`\n\nfunction escapeElement(elementRepresentation) {\n  const escaped = elementRepresentation.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n\n  return '\"' + escaped + '\"'\n}\n\n// convert a JS array to a postgres array literal\n// uses comma separator so won't work for types like box that use\n// a different array separator.\nfunction arrayString(val) {\n  let result = '{'\n  for (let i = 0; i < val.length; i++) {\n    if (i > 0) {\n      result = result + ','\n    }\n    if (val[i] === null || typeof val[i] === 'undefined') {\n      result = result + 'NULL'\n    } else if (Array.isArray(val[i])) {\n      result = result + arrayString(val[i])\n    } else if (ArrayBuffer.isView(val[i])) {\n      let item = val[i]\n      if (!(item instanceof Buffer)) {\n        const buf = Buffer.from(item.buffer, item.byteOffset, item.byteLength)\n        if (buf.length === item.byteLength) {\n          item = buf\n        } else {\n          item = buf.slice(item.byteOffset, item.byteOffset + item.byteLength)\n        }\n      }\n      result += '\\\\\\\\x' + item.toString('hex')\n    } else {\n      result += escapeElement(prepareValue(val[i]))\n    }\n  }\n  result = result + '}'\n  return result\n}\n\n// converts values from javascript types\n// to their 'raw' counterparts for use as a postgres parameter\n// note: you can override this function to provide your own conversion mechanism\n// for complex types, etc...\nconst prepareValue = function (val, seen) {\n  // null and undefined are both null for postgres\n  if (val == null) {\n    return null\n  }\n  if (typeof val === 'object') {\n    if (val instanceof Buffer) {\n      return val\n    }\n    if (ArrayBuffer.isView(val)) {\n      const buf = Buffer.from(val.buffer, val.byteOffset, val.byteLength)\n      if (buf.length === val.byteLength) {\n        return buf\n      }\n      return buf.slice(val.byteOffset, val.byteOffset + val.byteLength) // Node.js v4 does not support those Buffer.from params\n    }\n    if (isDate(val)) {\n      if (defaults.parseInputDatesAsUTC) {\n        return dateToStringUTC(val)\n      } else {\n        return dateToString(val)\n      }\n    }\n    if (Array.isArray(val)) {\n      return arrayString(val)\n    }\n\n    return prepareObject(val, seen)\n  }\n  return val.toString()\n}\n\nfunction prepareObject(val, seen) {\n  if (val && typeof val.toPostgres === 'function') {\n    seen = seen || []\n    if (seen.indexOf(val) !== -1) {\n      throw new Error('circular reference detected while preparing \"' + val + '\" for query')\n    }\n    seen.push(val)\n\n    return prepareValue(val.toPostgres(prepareValue), seen)\n  }\n  return JSON.stringify(val)\n}\n\nfunction dateToString(date) {\n  let offset = -date.getTimezoneOffset()\n\n  let year = date.getFullYear()\n  const isBCYear = year < 1\n  if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n  let ret =\n    String(year).padStart(4, '0') +\n    '-' +\n    String(date.getMonth() + 1).padStart(2, '0') +\n    '-' +\n    String(date.getDate()).padStart(2, '0') +\n    'T' +\n    String(date.getHours()).padStart(2, '0') +\n    ':' +\n    String(date.getMinutes()).padStart(2, '0') +\n    ':' +\n    String(date.getSeconds()).padStart(2, '0') +\n    '.' +\n    String(date.getMilliseconds()).padStart(3, '0')\n\n  if (offset < 0) {\n    ret += '-'\n    offset *= -1\n  } else {\n    ret += '+'\n  }\n\n  ret += String(Math.floor(offset / 60)).padStart(2, '0') + ':' + String(offset % 60).padStart(2, '0')\n  if (isBCYear) ret += ' BC'\n  return ret\n}\n\nfunction dateToStringUTC(date) {\n  let year = date.getUTCFullYear()\n  const isBCYear = year < 1\n  if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n  let ret =\n    String(year).padStart(4, '0') +\n    '-' +\n    String(date.getUTCMonth() + 1).padStart(2, '0') +\n    '-' +\n    String(date.getUTCDate()).padStart(2, '0') +\n    'T' +\n    String(date.getUTCHours()).padStart(2, '0') +\n    ':' +\n    String(date.getUTCMinutes()).padStart(2, '0') +\n    ':' +\n    String(date.getUTCSeconds()).padStart(2, '0') +\n    '.' +\n    String(date.getUTCMilliseconds()).padStart(3, '0')\n\n  ret += '+00:00'\n  if (isBCYear) ret += ' BC'\n  return ret\n}\n\nfunction normalizeQueryConfig(config, values, callback) {\n  // can take in strings or config objects\n  config = typeof config === 'string' ? { text: config } : config\n  if (values) {\n    if (typeof values === 'function') {\n      config.callback = values\n    } else {\n      config.values = values\n    }\n  }\n  if (callback) {\n    config.callback = callback\n  }\n  return config\n}\n\n// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c\nconst escapeIdentifier = function (str) {\n  return '\"' + str.replace(/\"/g, '\"\"') + '\"'\n}\n\nconst escapeLiteral = function (str) {\n  let hasBackslash = false\n  let escaped = \"'\"\n\n  if (str == null) {\n    return \"''\"\n  }\n\n  if (typeof str !== 'string') {\n    return \"''\"\n  }\n\n  for (let i = 0; i < str.length; i++) {\n    const c = str[i]\n    if (c === \"'\") {\n      escaped += c + c\n    } else if (c === '\\\\') {\n      escaped += c + c\n      hasBackslash = true\n    } else {\n      escaped += c\n    }\n  }\n\n  escaped += \"'\"\n\n  if (hasBackslash === true) {\n    escaped = ' E' + escaped\n  }\n\n  return escaped\n}\n\nmodule.exports = {\n  prepareValue: function prepareValueWrapper(value) {\n    // this ensures that extra arguments do not get passed into prepareValue\n    // by accident, eg: from calling values.map(utils.prepareValue)\n    return prepareValue(value)\n  },\n  normalizeQueryConfig,\n  escapeIdentifier,\n  escapeLiteral,\n}\n", "'use strict'\n// This file contains crypto utility functions for versions of Node.js < 15.0.0,\n// which does not support the WebCrypto.subtle API.\n\nconst nodeCrypto = require('crypto')\n\nfunction md5(string) {\n  return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')\n}\n\n// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html\nfunction postgresMd5PasswordHash(user, password, salt) {\n  const inner = md5(password + user)\n  const outer = md5(Buffer.concat([Buffer.from(inner), salt]))\n  return 'md5' + outer\n}\n\nfunction sha256(text) {\n  return nodeCrypto.createHash('sha256').update(text).digest()\n}\n\nfunction hashByName(hashName, text) {\n  hashName = hashName.replace(/(\\D)-/, '$1') // e.g. SHA-256 -> SHA256\n  return nodeCrypto.createHash(hashName).update(text).digest()\n}\n\nfunction hmacSha256(key, msg) {\n  return nodeCrypto.createHmac('sha256', key).update(msg).digest()\n}\n\nasync function deriveKey(password, salt, iterations) {\n  return nodeCrypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256')\n}\n\nmodule.exports = {\n  postgresMd5PasswordHash,\n  randomBytes: nodeCrypto.randomBytes,\n  deriveKey,\n  sha256,\n  hashByName,\n  hmacSha256,\n  md5,\n}\n", "const nodeCrypto = require('crypto')\n\nmodule.exports = {\n  postgresMd5PasswordHash,\n  randomBytes,\n  deriveKey,\n  sha256,\n  hashByName,\n  hmacSha256,\n  md5,\n}\n\n/**\n * The Web Crypto API - grabbed from the Node.js library or the global\n * @type Crypto\n */\n// eslint-disable-next-line no-undef\nconst webCrypto = nodeCrypto.webcrypto || globalThis.crypto\n/**\n * The SubtleCrypto API for low level crypto operations.\n * @type SubtleCrypto\n */\nconst subtleCrypto = webCrypto.subtle\nconst textEncoder = new TextEncoder()\n\n/**\n *\n * @param {*} length\n * @returns\n */\nfunction randomBytes(length) {\n  return webCrypto.getRandomValues(Buffer.alloc(length))\n}\n\nasync function md5(string) {\n  try {\n    return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')\n  } catch (e) {\n    // `createHash()` failed so we are probably not in Node.js, use the WebCrypto API instead.\n    // Note that the MD5 algorithm on WebCrypto is not available in Node.js.\n    // This is why we cannot just use WebCrypto in all environments.\n    const data = typeof string === 'string' ? textEncoder.encode(string) : string\n    const hash = await subtleCrypto.digest('MD5', data)\n    return Array.from(new Uint8Array(hash))\n      .map((b) => b.toString(16).padStart(2, '0'))\n      .join('')\n  }\n}\n\n// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html\nasync function postgresMd5PasswordHash(user, password, salt) {\n  const inner = await md5(password + user)\n  const outer = await md5(Buffer.concat([Buffer.from(inner), salt]))\n  return 'md5' + outer\n}\n\n/**\n * Create a SHA-256 digest of the given data\n * @param {Buffer} data\n */\nasync function sha256(text) {\n  return await subtleCrypto.digest('SHA-256', text)\n}\n\nasync function hashByName(hashName, text) {\n  return await subtleCrypto.digest(hashName, text)\n}\n\n/**\n * Sign the message with the given key\n * @param {ArrayBuffer} keyBuffer\n * @param {string} msg\n */\nasync function hmacSha256(keyBuffer, msg) {\n  const key = await subtleCrypto.importKey('raw', keyBuffer, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])\n  return await subtleCrypto.sign('HMAC', key, textEncoder.encode(msg))\n}\n\n/**\n * Derive a key from the password and salt\n * @param {string} password\n * @param {Uint8Array} salt\n * @param {number} iterations\n */\nasync function deriveKey(password, salt, iterations) {\n  const key = await subtleCrypto.importKey('raw', textEncoder.encode(password), 'PBKDF2', false, ['deriveBits'])\n  const params = { name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations: iterations }\n  return await subtleCrypto.deriveBits(params, key, 32 * 8, ['deriveBits'])\n}\n", "'use strict'\n\nconst useLegacyCrypto = parseInt(process.versions && process.versions.node && process.versions.node.split('.')[0]) < 15\nif (useLegacyCrypto) {\n  // We are on an old version of Node.js that requires legacy crypto utilities.\n  module.exports = require('./utils-legacy')\n} else {\n  module.exports = require('./utils-webcrypto')\n}\n", "function x509Error(msg, cert) {\n  return new Error('SASL channel binding: ' + msg + ' when parsing public certificate ' + cert.toString('base64'))\n}\n\nfunction readASN1Length(data, index) {\n  let length = data[index++]\n  if (length < 0x80) return { length, index }\n\n  const lengthBytes = length & 0x7f\n  if (lengthBytes > 4) throw x509Error('bad length', data)\n\n  length = 0\n  for (let i = 0; i < lengthBytes; i++) {\n    length = (length << 8) | data[index++]\n  }\n\n  return { length, index }\n}\n\nfunction readASN1OID(data, index) {\n  if (data[index++] !== 0x6) throw x509Error('non-OID data', data) // 6 = OID\n\n  const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index)\n  index = indexAfterOIDLength\n  const lastIndex = index + OIDLength\n\n  const byte1 = data[index++]\n  let oid = ((byte1 / 40) >> 0) + '.' + (byte1 % 40)\n\n  while (index < lastIndex) {\n    // loop over numbers in OID\n    let value = 0\n    while (index < lastIndex) {\n      // loop over bytes in number\n      const nextByte = data[index++]\n      value = (value << 7) | (nextByte & 0x7f)\n      if (nextByte < 0x80) break\n    }\n    oid += '.' + value\n  }\n\n  return { oid, index }\n}\n\nfunction expectASN1Seq(data, index) {\n  if (data[index++] !== 0x30) throw x509Error('non-sequence data', data) // 30 = Sequence\n  return readASN1Length(data, index)\n}\n\nfunction signatureAlgorithmHashFromCertificate(data, index) {\n  // read this thread: https://www.postgresql.org/message-id/17760-b6c61e752ec07060%40postgresql.org\n  if (index === undefined) index = 0\n  index = expectASN1Seq(data, index).index\n  const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index)\n  index = indexAfterCertInfoLength + certInfoLength // skip over certificate info\n  index = expectASN1Seq(data, index).index // skip over signature length field\n  const { oid, index: indexAfterOID } = readASN1OID(data, index)\n  switch (oid) {\n    // RSA\n    case '1.2.840.113549.1.1.4':\n      return 'MD5'\n    case '1.2.840.113549.1.1.5':\n      return 'SHA-1'\n    case '1.2.840.113549.1.1.11':\n      return 'SHA-256'\n    case '1.2.840.113549.1.1.12':\n      return 'SHA-384'\n    case '1.2.840.113549.1.1.13':\n      return 'SHA-512'\n    case '1.2.840.113549.1.1.14':\n      return 'SHA-224'\n    case '1.2.840.113549.1.1.15':\n      return 'SHA512-224'\n    case '1.2.840.113549.1.1.16':\n      return 'SHA512-256'\n    // ECDSA\n    case '1.2.840.10045.4.1':\n      return 'SHA-1'\n    case '1.2.840.10045.4.3.1':\n      return 'SHA-224'\n    case '1.2.840.10045.4.3.2':\n      return 'SHA-256'\n    case '1.2.840.10045.4.3.3':\n      return 'SHA-384'\n    case '1.2.840.10045.4.3.4':\n      return 'SHA-512'\n    // RSASSA-PSS: hash is indicated separately\n    case '1.2.840.113549.1.1.10': {\n      index = indexAfterOID\n      index = expectASN1Seq(data, index).index\n      if (data[index++] !== 0xa0) throw x509Error('non-tag data', data) // a0 = constructed tag 0\n      index = readASN1Length(data, index).index // skip over tag length field\n      index = expectASN1Seq(data, index).index // skip over sequence length field\n      const { oid: hashOID } = readASN1OID(data, index)\n      switch (hashOID) {\n        // standalone hash OIDs\n        case '1.2.840.113549.2.5':\n          return 'MD5'\n        case '1.3.14.3.2.26':\n          return 'SHA-1'\n        case '2.16.840.1.101.3.4.2.1':\n          return 'SHA-256'\n        case '2.16.840.1.101.3.4.2.2':\n          return 'SHA-384'\n        case '2.16.840.1.101.3.4.2.3':\n          return 'SHA-512'\n      }\n      throw x509Error('unknown hash OID ' + hashOID, data)\n    }\n    // Ed25519 -- see https: return//github.com/openssl/openssl/issues/15477\n    case '1.3.101.110':\n    case '1.3.101.112': // ph\n      return 'SHA-512'\n    // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes)\n    case '1.3.101.111':\n    case '1.3.101.113': // ph\n      throw x509Error('Ed448 certificate channel binding is not currently supported by Postgres')\n  }\n  throw x509Error('unknown OID ' + oid, data)\n}\n\nmodule.exports = { signatureAlgorithmHashFromCertificate }\n", "'use strict'\nconst crypto = require('./utils')\nconst { signatureAlgorithmHashFromCertificate } = require('./cert-signatures')\n\nfunction startSession(mechanisms, stream) {\n  const candidates = ['SCRAM-SHA-256']\n  if (stream) candidates.unshift('SCRAM-SHA-256-PLUS') // higher-priority, so placed first\n\n  const mechanism = candidates.find((candidate) => mechanisms.includes(candidate))\n\n  if (!mechanism) {\n    throw new Error('SASL: Only mechanism(s) ' + candidates.join(' and ') + ' are supported')\n  }\n\n  if (mechanism === 'SCRAM-SHA-256-PLUS' && typeof stream.getPeerCertificate !== 'function') {\n    // this should never happen if we are really talking to a Postgres server\n    throw new Error('SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate')\n  }\n\n  const clientNonce = crypto.randomBytes(18).toString('base64')\n  const gs2Header = mechanism === 'SCRAM-SHA-256-PLUS' ? 'p=tls-server-end-point' : stream ? 'y' : 'n'\n\n  return {\n    mechanism,\n    clientNonce,\n    response: gs2Header + ',,n=*,r=' + clientNonce,\n    message: 'SASLInitialResponse',\n  }\n}\n\nasync function continueSession(session, password, serverData, stream) {\n  if (session.message !== 'SASLInitialResponse') {\n    throw new Error('SASL: Last message was not SASLInitialResponse')\n  }\n  if (typeof password !== 'string') {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string')\n  }\n  if (password === '') {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string')\n  }\n  if (typeof serverData !== 'string') {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string')\n  }\n\n  const sv = parseServerFirstMessage(serverData)\n\n  if (!sv.nonce.startsWith(session.clientNonce)) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce')\n  } else if (sv.nonce.length === session.clientNonce.length) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short')\n  }\n\n  const clientFirstMessageBare = 'n=*,r=' + session.clientNonce\n  const serverFirstMessage = 'r=' + sv.nonce + ',s=' + sv.salt + ',i=' + sv.iteration\n\n  // without channel binding:\n  let channelBinding = stream ? 'eSws' : 'biws' // 'y,,' or 'n,,', base64-encoded\n\n  // override if channel binding is in use:\n  if (session.mechanism === 'SCRAM-SHA-256-PLUS') {\n    const peerCert = stream.getPeerCertificate().raw\n    let hashName = signatureAlgorithmHashFromCertificate(peerCert)\n    if (hashName === 'MD5' || hashName === 'SHA-1') hashName = 'SHA-256'\n    const certHash = await crypto.hashByName(hashName, peerCert)\n    const bindingData = Buffer.concat([Buffer.from('p=tls-server-end-point,,'), Buffer.from(certHash)])\n    channelBinding = bindingData.toString('base64')\n  }\n\n  const clientFinalMessageWithoutProof = 'c=' + channelBinding + ',r=' + sv.nonce\n  const authMessage = clientFirstMessageBare + ',' + serverFirstMessage + ',' + clientFinalMessageWithoutProof\n\n  const saltBytes = Buffer.from(sv.salt, 'base64')\n  const saltedPassword = await crypto.deriveKey(password, saltBytes, sv.iteration)\n  const clientKey = await crypto.hmacSha256(saltedPassword, 'Client Key')\n  const storedKey = await crypto.sha256(clientKey)\n  const clientSignature = await crypto.hmacSha256(storedKey, authMessage)\n  const clientProof = xorBuffers(Buffer.from(clientKey), Buffer.from(clientSignature)).toString('base64')\n  const serverKey = await crypto.hmacSha256(saltedPassword, 'Server Key')\n  const serverSignatureBytes = await crypto.hmacSha256(serverKey, authMessage)\n\n  session.message = 'SASLResponse'\n  session.serverSignature = Buffer.from(serverSignatureBytes).toString('base64')\n  session.response = clientFinalMessageWithoutProof + ',p=' + clientProof\n}\n\nfunction finalizeSession(session, serverData) {\n  if (session.message !== 'SASLResponse') {\n    throw new Error('SASL: Last message was not SASLResponse')\n  }\n  if (typeof serverData !== 'string') {\n    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string')\n  }\n\n  const { serverSignature } = parseServerFinalMessage(serverData)\n\n  if (serverSignature !== session.serverSignature) {\n    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match')\n  }\n}\n\n/**\n * printable       = %x21-2B / %x2D-7E\n *                   ;; Printable ASCII except \",\".\n *                   ;; Note that any \"printable\" is also\n *                   ;; a valid \"value\".\n */\nfunction isPrintableChars(text) {\n  if (typeof text !== 'string') {\n    throw new TypeError('SASL: text must be a string')\n  }\n  return text\n    .split('')\n    .map((_, i) => text.charCodeAt(i))\n    .every((c) => (c >= 0x21 && c <= 0x2b) || (c >= 0x2d && c <= 0x7e))\n}\n\n/**\n * base64-char     = ALPHA / DIGIT / \"/\" / \"+\"\n *\n * base64-4        = 4base64-char\n *\n * base64-3        = 3base64-char \"=\"\n *\n * base64-2        = 2base64-char \"==\"\n *\n * base64          = *base64-4 [base64-3 / base64-2]\n */\nfunction isBase64(text) {\n  return /^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(text)\n}\n\nfunction parseAttributePairs(text) {\n  if (typeof text !== 'string') {\n    throw new TypeError('SASL: attribute pairs text must be a string')\n  }\n\n  return new Map(\n    text.split(',').map((attrValue) => {\n      if (!/^.=/.test(attrValue)) {\n        throw new Error('SASL: Invalid attribute pair entry')\n      }\n      const name = attrValue[0]\n      const value = attrValue.substring(2)\n      return [name, value]\n    })\n  )\n}\n\nfunction parseServerFirstMessage(data) {\n  const attrPairs = parseAttributePairs(data)\n\n  const nonce = attrPairs.get('r')\n  if (!nonce) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing')\n  } else if (!isPrintableChars(nonce)) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters')\n  }\n  const salt = attrPairs.get('s')\n  if (!salt) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing')\n  } else if (!isBase64(salt)) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64')\n  }\n  const iterationText = attrPairs.get('i')\n  if (!iterationText) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing')\n  } else if (!/^[1-9][0-9]*$/.test(iterationText)) {\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count')\n  }\n  const iteration = parseInt(iterationText, 10)\n\n  return {\n    nonce,\n    salt,\n    iteration,\n  }\n}\n\nfunction parseServerFinalMessage(serverData) {\n  const attrPairs = parseAttributePairs(serverData)\n  const serverSignature = attrPairs.get('v')\n  if (!serverSignature) {\n    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing')\n  } else if (!isBase64(serverSignature)) {\n    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64')\n  }\n  return {\n    serverSignature,\n  }\n}\n\nfunction xorBuffers(a, b) {\n  if (!Buffer.isBuffer(a)) {\n    throw new TypeError('first argument must be a Buffer')\n  }\n  if (!Buffer.isBuffer(b)) {\n    throw new TypeError('second argument must be a Buffer')\n  }\n  if (a.length !== b.length) {\n    throw new Error('Buffer lengths must match')\n  }\n  if (a.length === 0) {\n    throw new Error('Buffers cannot be empty')\n  }\n  return Buffer.from(a.map((_, i) => a[i] ^ b[i]))\n}\n\nmodule.exports = {\n  startSession,\n  continueSession,\n  finalizeSession,\n}\n", "'use strict'\n\nconst types = require('pg-types')\n\nfunction TypeOverrides(userTypes) {\n  this._types = userTypes || types\n  this.text = {}\n  this.binary = {}\n}\n\nTypeOverrides.prototype.getOverrides = function (format) {\n  switch (format) {\n    case 'text':\n      return this.text\n    case 'binary':\n      return this.binary\n    default:\n      return {}\n  }\n}\n\nTypeOverrides.prototype.setTypeParser = function (oid, format, parseFn) {\n  if (typeof format === 'function') {\n    parseFn = format\n    format = 'text'\n  }\n  this.getOverrides(format)[oid] = parseFn\n}\n\nTypeOverrides.prototype.getTypeParser = function (oid, format) {\n  format = format || 'text'\n  return this.getOverrides(format)[oid] || this._types.getTypeParser(oid, format)\n}\n\nmodule.exports = TypeOverrides\n", "'use strict'\n\n//Parse method copied from https://github.com/brianc/node-postgres\n//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n//MIT License\n\n//parses a connection string\nfunction parse(str, options = {}) {\n  //unix socket\n  if (str.charAt(0) === '/') {\n    const config = str.split(' ')\n    return { host: config[0], database: config[1] }\n  }\n\n  // Check for empty host in URL\n\n  const config = {}\n  let result\n  let dummyHost = false\n  if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n    // Ensure spaces are encoded as %20\n    str = encodeURI(str).replace(/%25(\\d\\d)/g, '%$1')\n  }\n\n  try {\n    try {\n      result = new URL(str, 'postgres://base')\n    } catch (e) {\n      // The URL is invalid so try again with a dummy host\n      result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base')\n      dummyHost = true\n    }\n  } catch (err) {\n    // Remove the input from the error message to avoid leaking sensitive information\n    err.input && (err.input = '*****REDACTED*****')\n    throw err\n  }\n\n  // We'd like to use Object.fromEntries() here but Node.js 10 does not support it\n  for (const entry of result.searchParams.entries()) {\n    config[entry[0]] = entry[1]\n  }\n\n  config.user = config.user || decodeURIComponent(result.username)\n  config.password = config.password || decodeURIComponent(result.password)\n\n  if (result.protocol == 'socket:') {\n    config.host = decodeURI(result.pathname)\n    config.database = result.searchParams.get('db')\n    config.client_encoding = result.searchParams.get('encoding')\n    return config\n  }\n  const hostname = dummyHost ? '' : result.hostname\n  if (!config.host) {\n    // Only set the host if there is no equivalent query param.\n    config.host = decodeURIComponent(hostname)\n  } else if (hostname && /^%2f/i.test(hostname)) {\n    // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host.\n    result.pathname = hostname + result.pathname\n  }\n  if (!config.port) {\n    // Only set the port if there is no equivalent query param.\n    config.port = result.port\n  }\n\n  const pathname = result.pathname.slice(1) || null\n  config.database = pathname ? decodeURI(pathname) : null\n\n  if (config.ssl === 'true' || config.ssl === '1') {\n    config.ssl = true\n  }\n\n  if (config.ssl === '0') {\n    config.ssl = false\n  }\n\n  if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) {\n    config.ssl = {}\n  }\n\n  // Only try to load fs if we expect to read from the disk\n  const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null\n\n  if (config.sslcert) {\n    config.ssl.cert = fs.readFileSync(config.sslcert).toString()\n  }\n\n  if (config.sslkey) {\n    config.ssl.key = fs.readFileSync(config.sslkey).toString()\n  }\n\n  if (config.sslrootcert) {\n    config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()\n  }\n\n  if (options.useLibpqCompat && config.uselibpqcompat) {\n    throw new Error('Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.')\n  }\n\n  if (config.uselibpqcompat === 'true' || options.useLibpqCompat) {\n    switch (config.sslmode) {\n      case 'disable': {\n        config.ssl = false\n        break\n      }\n      case 'prefer': {\n        config.ssl.rejectUnauthorized = false\n        break\n      }\n      case 'require': {\n        if (config.sslrootcert) {\n          // If a root CA is specified, behavior of `sslmode=require` will be the same as that of `verify-ca`\n          config.ssl.checkServerIdentity = function () {}\n        } else {\n          config.ssl.rejectUnauthorized = false\n        }\n        break\n      }\n      case 'verify-ca': {\n        if (!config.ssl.ca) {\n          throw new Error(\n            'SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.'\n          )\n        }\n        config.ssl.checkServerIdentity = function () {}\n        break\n      }\n      case 'verify-full': {\n        break\n      }\n    }\n  } else {\n    switch (config.sslmode) {\n      case 'disable': {\n        config.ssl = false\n        break\n      }\n      case 'prefer':\n      case 'require':\n      case 'verify-ca':\n      case 'verify-full': {\n        if (config.sslmode !== 'verify-full') {\n          deprecatedSslModeWarning(config.sslmode)\n        }\n        break\n      }\n      case 'no-verify': {\n        config.ssl.rejectUnauthorized = false\n        break\n      }\n    }\n  }\n\n  return config\n}\n\n// convert pg-connection-string ssl config to a ClientConfig.ConnectionOptions\nfunction toConnectionOptions(sslConfig) {\n  const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => {\n    // we explicitly check for undefined and null instead of `if (value)` because some\n    // options accept falsy values. Example: `ssl.rejectUnauthorized = false`\n    if (value !== undefined && value !== null) {\n      c[key] = value\n    }\n\n    return c\n  }, {})\n\n  return connectionOptions\n}\n\n// convert pg-connection-string config to a ClientConfig\nfunction toClientConfig(config) {\n  const poolConfig = Object.entries(config).reduce((c, [key, value]) => {\n    if (key === 'ssl') {\n      const sslConfig = value\n\n      if (typeof sslConfig === 'boolean') {\n        c[key] = sslConfig\n      }\n\n      if (typeof sslConfig === 'object') {\n        c[key] = toConnectionOptions(sslConfig)\n      }\n    } else if (value !== undefined && value !== null) {\n      if (key === 'port') {\n        // when port is not specified, it is converted into an empty string\n        // we want to avoid NaN or empty string as a values in ClientConfig\n        if (value !== '') {\n          const v = parseInt(value, 10)\n          if (isNaN(v)) {\n            throw new Error(`Invalid ${key}: ${value}`)\n          }\n\n          c[key] = v\n        }\n      } else {\n        c[key] = value\n      }\n    }\n\n    return c\n  }, {})\n\n  return poolConfig\n}\n\n// parses a connection string into ClientConfig\nfunction parseIntoClientConfig(str) {\n  return toClientConfig(parse(str))\n}\n\nfunction deprecatedSslModeWarning(sslmode) {\n  if (!deprecatedSslModeWarning.warned && typeof process !== 'undefined' && process.emitWarning) {\n    deprecatedSslModeWarning.warned = true\n    process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'.\nIn the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees.\n\nTo prepare for this change:\n- If you want the current behavior, explicitly use 'sslmode=verify-full'\n- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${sslmode}'\n\nSee https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`)\n  }\n}\n\nmodule.exports = parse\n\nparse.parse = parse\nparse.toClientConfig = toClientConfig\nparse.parseIntoClientConfig = parseIntoClientConfig\n", "'use strict'\n\nconst dns = require('dns')\n\nconst defaults = require('./defaults')\n\nconst parse = require('pg-connection-string').parse // parses a connection string\n\nconst val = function (key, config, envVar) {\n  if (config[key]) {\n    return config[key]\n  }\n\n  if (envVar === undefined) {\n    envVar = process.env['PG' + key.toUpperCase()]\n  } else if (envVar === false) {\n    // do nothing ... use false\n  } else {\n    envVar = process.env[envVar]\n  }\n\n  return envVar || defaults[key]\n}\n\nconst readSSLConfigFromEnvironment = function () {\n  switch (process.env.PGSSLMODE) {\n    case 'disable':\n      return false\n    case 'prefer':\n    case 'require':\n    case 'verify-ca':\n    case 'verify-full':\n      return true\n    case 'no-verify':\n      return { rejectUnauthorized: false }\n  }\n  return defaults.ssl\n}\n\n// Convert arg to a string, surround in single quotes, and escape single quotes and backslashes\nconst quoteParamValue = function (value) {\n  return \"'\" + ('' + value).replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\") + \"'\"\n}\n\nconst add = function (params, config, paramName) {\n  const value = config[paramName]\n  if (value !== undefined && value !== null) {\n    params.push(paramName + '=' + quoteParamValue(value))\n  }\n}\n\nclass ConnectionParameters {\n  constructor(config) {\n    // if a string is passed, it is a raw connection string so we parse it into a config\n    config = typeof config === 'string' ? parse(config) : config || {}\n\n    // if the config has a connectionString defined, parse IT into the config we use\n    // this will override other default values with what is stored in connectionString\n    if (config.connectionString) {\n      config = Object.assign({}, config, parse(config.connectionString))\n    }\n\n    this.user = val('user', config)\n    this.database = val('database', config)\n\n    if (this.database === undefined) {\n      this.database = this.user\n    }\n\n    this.port = parseInt(val('port', config), 10)\n    this.host = val('host', config)\n\n    // \"hiding\" the password so it doesn't show up in stack traces\n    // or if the client is console.logged\n    Object.defineProperty(this, 'password', {\n      configurable: true,\n      enumerable: false,\n      writable: true,\n      value: val('password', config),\n    })\n\n    this.binary = val('binary', config)\n    this.options = val('options', config)\n\n    this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl\n\n    if (typeof this.ssl === 'string') {\n      if (this.ssl === 'true') {\n        this.ssl = true\n      }\n    }\n    // support passing in ssl=no-verify via connection string\n    if (this.ssl === 'no-verify') {\n      this.ssl = { rejectUnauthorized: false }\n    }\n    if (this.ssl && this.ssl.key) {\n      Object.defineProperty(this.ssl, 'key', {\n        enumerable: false,\n      })\n    }\n\n    this.client_encoding = val('client_encoding', config)\n    this.replication = val('replication', config)\n    // a domain socket begins with '/'\n    this.isDomainSocket = !(this.host || '').indexOf('/')\n\n    this.application_name = val('application_name', config, 'PGAPPNAME')\n    this.fallback_application_name = val('fallback_application_name', config, false)\n    this.statement_timeout = val('statement_timeout', config, false)\n    this.lock_timeout = val('lock_timeout', config, false)\n    this.idle_in_transaction_session_timeout = val('idle_in_transaction_session_timeout', config, false)\n    this.query_timeout = val('query_timeout', config, false)\n\n    if (config.connectionTimeoutMillis === undefined) {\n      this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0\n    } else {\n      this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1000)\n    }\n\n    if (config.keepAlive === false) {\n      this.keepalives = 0\n    } else if (config.keepAlive === true) {\n      this.keepalives = 1\n    }\n\n    if (typeof config.keepAliveInitialDelayMillis === 'number') {\n      this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1000)\n    }\n  }\n\n  getLibpqConnectionString(cb) {\n    const params = []\n    add(params, this, 'user')\n    add(params, this, 'password')\n    add(params, this, 'port')\n    add(params, this, 'application_name')\n    add(params, this, 'fallback_application_name')\n    add(params, this, 'connect_timeout')\n    add(params, this, 'options')\n\n    const ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {}\n    add(params, ssl, 'sslmode')\n    add(params, ssl, 'sslca')\n    add(params, ssl, 'sslkey')\n    add(params, ssl, 'sslcert')\n    add(params, ssl, 'sslrootcert')\n\n    if (this.database) {\n      params.push('dbname=' + quoteParamValue(this.database))\n    }\n    if (this.replication) {\n      params.push('replication=' + quoteParamValue(this.replication))\n    }\n    if (this.host) {\n      params.push('host=' + quoteParamValue(this.host))\n    }\n    if (this.isDomainSocket) {\n      return cb(null, params.join(' '))\n    }\n    if (this.client_encoding) {\n      params.push('client_encoding=' + quoteParamValue(this.client_encoding))\n    }\n    dns.lookup(this.host, function (err, address) {\n      if (err) return cb(err, null)\n      params.push('hostaddr=' + quoteParamValue(address))\n      return cb(null, params.join(' '))\n    })\n  }\n}\n\nmodule.exports = ConnectionParameters\n", "'use strict'\n\nconst types = require('pg-types')\n\nconst matchRegexp = /^([A-Za-z]+)(?: (\\d+))?(?: (\\d+))?/\n\n// result object returned from query\n// in the 'end' event and also\n// passed as second argument to provided callback\nclass Result {\n  constructor(rowMode, types) {\n    this.command = null\n    this.rowCount = null\n    this.oid = null\n    this.rows = []\n    this.fields = []\n    this._parsers = undefined\n    this._types = types\n    this.RowCtor = null\n    this.rowAsArray = rowMode === 'array'\n    if (this.rowAsArray) {\n      this.parseRow = this._parseRowAsArray\n    }\n    this._prebuiltEmptyResultObject = null\n  }\n\n  // adds a command complete message\n  addCommandComplete(msg) {\n    let match\n    if (msg.text) {\n      // pure javascript\n      match = matchRegexp.exec(msg.text)\n    } else {\n      // native bindings\n      match = matchRegexp.exec(msg.command)\n    }\n    if (match) {\n      this.command = match[1]\n      if (match[3]) {\n        // COMMAND OID ROWS\n        this.oid = parseInt(match[2], 10)\n        this.rowCount = parseInt(match[3], 10)\n      } else if (match[2]) {\n        // COMMAND ROWS\n        this.rowCount = parseInt(match[2], 10)\n      }\n    }\n  }\n\n  _parseRowAsArray(rowData) {\n    const row = new Array(rowData.length)\n    for (let i = 0, len = rowData.length; i < len; i++) {\n      const rawValue = rowData[i]\n      if (rawValue !== null) {\n        row[i] = this._parsers[i](rawValue)\n      } else {\n        row[i] = null\n      }\n    }\n    return row\n  }\n\n  parseRow(rowData) {\n    const row = { ...this._prebuiltEmptyResultObject }\n    for (let i = 0, len = rowData.length; i < len; i++) {\n      const rawValue = rowData[i]\n      const field = this.fields[i].name\n      if (rawValue !== null) {\n        const v = this.fields[i].format === 'binary' ? Buffer.from(rawValue) : rawValue\n        row[field] = this._parsers[i](v)\n      } else {\n        row[field] = null\n      }\n    }\n    return row\n  }\n\n  addRow(row) {\n    this.rows.push(row)\n  }\n\n  addFields(fieldDescriptions) {\n    // clears field definitions\n    // multiple query statements in 1 action can result in multiple sets\n    // of rowDescriptions...eg: 'select NOW(); select 1::int;'\n    // you need to reset the fields\n    this.fields = fieldDescriptions\n    if (this.fields.length) {\n      this._parsers = new Array(fieldDescriptions.length)\n    }\n\n    const row = {}\n\n    for (let i = 0; i < fieldDescriptions.length; i++) {\n      const desc = fieldDescriptions[i]\n      row[desc.name] = null\n\n      if (this._types) {\n        this._parsers[i] = this._types.getTypeParser(desc.dataTypeID, desc.format || 'text')\n      } else {\n        this._parsers[i] = types.getTypeParser(desc.dataTypeID, desc.format || 'text')\n      }\n    }\n\n    this._prebuiltEmptyResultObject = { ...row }\n  }\n}\n\nmodule.exports = Result\n", "'use strict'\n\nconst { EventEmitter } = require('events')\n\nconst Result = require('./result')\nconst utils = require('./utils')\n\nclass Query extends EventEmitter {\n  constructor(config, values, callback) {\n    super()\n\n    config = utils.normalizeQueryConfig(config, values, callback)\n\n    this.text = config.text\n    this.values = config.values\n    this.rows = config.rows\n    this.types = config.types\n    this.name = config.name\n    this.queryMode = config.queryMode\n    this.binary = config.binary\n    // use unique portal name each time\n    this.portal = config.portal || ''\n    this.callback = config.callback\n    this._rowMode = config.rowMode\n    if (process.domain && config.callback) {\n      this.callback = process.domain.bind(config.callback)\n    }\n    this._result = new Result(this._rowMode, this.types)\n\n    // potential for multiple results\n    this._results = this._result\n    this._canceledDueToError = false\n  }\n\n  requiresPreparation() {\n    if (this.queryMode === 'extended') {\n      return true\n    }\n\n    // named queries must always be prepared\n    if (this.name) {\n      return true\n    }\n    // always prepare if there are max number of rows expected per\n    // portal execution\n    if (this.rows) {\n      return true\n    }\n    // don't prepare empty text queries\n    if (!this.text) {\n      return false\n    }\n    // prepare if there are values\n    if (!this.values) {\n      return false\n    }\n    return this.values.length > 0\n  }\n\n  _checkForMultirow() {\n    // if we already have a result with a command property\n    // then we've already executed one query in a multi-statement simple query\n    // turn our results into an array of results\n    if (this._result.command) {\n      if (!Array.isArray(this._results)) {\n        this._results = [this._result]\n      }\n      this._result = new Result(this._rowMode, this._result._types)\n      this._results.push(this._result)\n    }\n  }\n\n  // associates row metadata from the supplied\n  // message with this query object\n  // metadata used when parsing row results\n  handleRowDescription(msg) {\n    this._checkForMultirow()\n    this._result.addFields(msg.fields)\n    this._accumulateRows = this.callback || !this.listeners('row').length\n  }\n\n  handleDataRow(msg) {\n    let row\n\n    if (this._canceledDueToError) {\n      return\n    }\n\n    try {\n      row = this._result.parseRow(msg.fields)\n    } catch (err) {\n      this._canceledDueToError = err\n      return\n    }\n\n    this.emit('row', row, this._result)\n    if (this._accumulateRows) {\n      this._result.addRow(row)\n    }\n  }\n\n  handleCommandComplete(msg, connection) {\n    this._checkForMultirow()\n    this._result.addCommandComplete(msg)\n    // need to sync after each command complete of a prepared statement\n    // if we were using a row count which results in multiple calls to _getRows\n    if (this.rows) {\n      connection.sync()\n    }\n  }\n\n  // if a named prepared statement is created with empty query text\n  // the backend will send an emptyQuery message but *not* a command complete message\n  // since we pipeline sync immediately after execute we don't need to do anything here\n  // unless we have rows specified, in which case we did not pipeline the initial sync call\n  handleEmptyQuery(connection) {\n    if (this.rows) {\n      connection.sync()\n    }\n  }\n\n  handleError(err, connection) {\n    // need to sync after error during a prepared statement\n    if (this._canceledDueToError) {\n      err = this._canceledDueToError\n      this._canceledDueToError = false\n    }\n    // if callback supplied do not emit error event as uncaught error\n    // events will bubble up to node process\n    if (this.callback) {\n      return this.callback(err)\n    }\n    this.emit('error', err)\n  }\n\n  handleReadyForQuery(con) {\n    if (this._canceledDueToError) {\n      return this.handleError(this._canceledDueToError, con)\n    }\n    if (this.callback) {\n      try {\n        this.callback(null, this._results)\n      } catch (err) {\n        process.nextTick(() => {\n          throw err\n        })\n      }\n    }\n    this.emit('end', this._results)\n  }\n\n  submit(connection) {\n    if (typeof this.text !== 'string' && typeof this.name !== 'string') {\n      return new Error('A query must have either text or a name. Supplying neither is unsupported.')\n    }\n    const previous = connection.parsedStatements[this.name]\n    if (this.text && previous && this.text !== previous) {\n      return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)\n    }\n    if (this.values && !Array.isArray(this.values)) {\n      return new Error('Query values must be an array')\n    }\n    if (this.requiresPreparation()) {\n      // If we're using the extended query protocol we fire off several separate commands\n      // to the backend. On some versions of node & some operating system versions\n      // the network stack writes each message separately instead of buffering them together\n      // causing the client & network to send more slowly. Corking & uncorking the stream\n      // allows node to buffer up the messages internally before sending them all off at once.\n      // note: we're checking for existence of cork/uncork because some versions of streams\n      // might not have this (cloudflare?)\n      connection.stream.cork && connection.stream.cork()\n      try {\n        this.prepare(connection)\n      } finally {\n        // while unlikely for this.prepare to throw, if it does & we don't uncork this stream\n        // this client becomes unresponsive, so put in finally block \"just in case\"\n        connection.stream.uncork && connection.stream.uncork()\n      }\n    } else {\n      connection.query(this.text)\n    }\n    return null\n  }\n\n  hasBeenParsed(connection) {\n    return this.name && connection.parsedStatements[this.name]\n  }\n\n  handlePortalSuspended(connection) {\n    this._getRows(connection, this.rows)\n  }\n\n  _getRows(connection, rows) {\n    connection.execute({\n      portal: this.portal,\n      rows: rows,\n    })\n    // if we're not reading pages of rows send the sync command\n    // to indicate the pipeline is finished\n    if (!rows) {\n      connection.sync()\n    } else {\n      // otherwise flush the call out to read more rows\n      connection.flush()\n    }\n  }\n\n  // http://developer.postgresql.org/pgdocs/postgres/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY\n  prepare(connection) {\n    // TODO refactor this poor encapsulation\n    if (!this.hasBeenParsed(connection)) {\n      connection.parse({\n        text: this.text,\n        name: this.name,\n        types: this.types,\n      })\n    }\n\n    // because we're mapping user supplied values to\n    // postgres wire protocol compatible values it could\n    // throw an exception, so try/catch this section\n    try {\n      connection.bind({\n        portal: this.portal,\n        statement: this.name,\n        values: this.values,\n        binary: this.binary,\n        valueMapper: utils.prepareValue,\n      })\n    } catch (err) {\n      this.handleError(err, connection)\n      return\n    }\n\n    connection.describe({\n      type: 'P',\n      name: this.portal || '',\n    })\n\n    this._getRows(connection, this.rows)\n  }\n\n  handleCopyInResponse(connection) {\n    connection.sendCopyFail('No source stream defined')\n  }\n\n  handleCopyData(msg, connection) {\n    // noop\n  }\n}\n\nmodule.exports = Query\n", "export type Mode = 'text' | 'binary'\n\nexport type MessageName =\n  | 'parseComplete'\n  | 'bindComplete'\n  | 'closeComplete'\n  | 'noData'\n  | 'portalSuspended'\n  | 'replicationStart'\n  | 'emptyQuery'\n  | 'copyDone'\n  | 'copyData'\n  | 'rowDescription'\n  | 'parameterDescription'\n  | 'parameterStatus'\n  | 'backendKeyData'\n  | 'notification'\n  | 'readyForQuery'\n  | 'commandComplete'\n  | 'dataRow'\n  | 'copyInResponse'\n  | 'copyOutResponse'\n  | 'authenticationOk'\n  | 'authenticationMD5Password'\n  | 'authenticationCleartextPassword'\n  | 'authenticationSASL'\n  | 'authenticationSASLContinue'\n  | 'authenticationSASLFinal'\n  | 'error'\n  | 'notice'\n\nexport interface BackendMessage {\n  name: MessageName\n  length: number\n}\n\nexport const parseComplete: BackendMessage = {\n  name: 'parseComplete',\n  length: 5,\n}\n\nexport const bindComplete: BackendMessage = {\n  name: 'bindComplete',\n  length: 5,\n}\n\nexport const closeComplete: BackendMessage = {\n  name: 'closeComplete',\n  length: 5,\n}\n\nexport const noData: BackendMessage = {\n  name: 'noData',\n  length: 5,\n}\n\nexport const portalSuspended: BackendMessage = {\n  name: 'portalSuspended',\n  length: 5,\n}\n\nexport const replicationStart: BackendMessage = {\n  name: 'replicationStart',\n  length: 4,\n}\n\nexport const emptyQuery: BackendMessage = {\n  name: 'emptyQuery',\n  length: 4,\n}\n\nexport const copyDone: BackendMessage = {\n  name: 'copyDone',\n  length: 4,\n}\n\ninterface NoticeOrError {\n  message: string | undefined\n  severity: string | undefined\n  code: string | undefined\n  detail: string | undefined\n  hint: string | undefined\n  position: string | undefined\n  internalPosition: string | undefined\n  internalQuery: string | undefined\n  where: string | undefined\n  schema: string | undefined\n  table: string | undefined\n  column: string | undefined\n  dataType: string | undefined\n  constraint: string | undefined\n  file: string | undefined\n  line: string | undefined\n  routine: string | undefined\n}\n\nexport class DatabaseError extends Error implements NoticeOrError {\n  public severity: string | undefined\n  public code: string | undefined\n  public detail: string | undefined\n  public hint: string | undefined\n  public position: string | undefined\n  public internalPosition: string | undefined\n  public internalQuery: string | undefined\n  public where: string | undefined\n  public schema: string | undefined\n  public table: string | undefined\n  public column: string | undefined\n  public dataType: string | undefined\n  public constraint: string | undefined\n  public file: string | undefined\n  public line: string | undefined\n  public routine: string | undefined\n  constructor(\n    message: string,\n    public readonly length: number,\n    public readonly name: MessageName\n  ) {\n    super(message)\n  }\n}\n\nexport class CopyDataMessage {\n  public readonly name = 'copyData'\n  constructor(\n    public readonly length: number,\n    public readonly chunk: Buffer\n  ) {}\n}\n\nexport class CopyResponse {\n  public readonly columnTypes: number[]\n  constructor(\n    public readonly length: number,\n    public readonly name: MessageName,\n    public readonly binary: boolean,\n    columnCount: number\n  ) {\n    this.columnTypes = new Array(columnCount)\n  }\n}\n\nexport class Field {\n  constructor(\n    public readonly name: string,\n    public readonly tableID: number,\n    public readonly columnID: number,\n    public readonly dataTypeID: number,\n    public readonly dataTypeSize: number,\n    public readonly dataTypeModifier: number,\n    public readonly format: Mode\n  ) {}\n}\n\nexport class RowDescriptionMessage {\n  public readonly name: MessageName = 'rowDescription'\n  public readonly fields: Field[]\n  constructor(\n    public readonly length: number,\n    public readonly fieldCount: number\n  ) {\n    this.fields = new Array(this.fieldCount)\n  }\n}\n\nexport class ParameterDescriptionMessage {\n  public readonly name: MessageName = 'parameterDescription'\n  public readonly dataTypeIDs: number[]\n  constructor(\n    public readonly length: number,\n    public readonly parameterCount: number\n  ) {\n    this.dataTypeIDs = new Array(this.parameterCount)\n  }\n}\n\nexport class ParameterStatusMessage {\n  public readonly name: MessageName = 'parameterStatus'\n  constructor(\n    public readonly length: number,\n    public readonly parameterName: string,\n    public readonly parameterValue: string\n  ) {}\n}\n\nexport class AuthenticationMD5Password implements BackendMessage {\n  public readonly name: MessageName = 'authenticationMD5Password'\n  constructor(\n    public readonly length: number,\n    public readonly salt: Buffer\n  ) {}\n}\n\nexport class BackendKeyDataMessage {\n  public readonly name: MessageName = 'backendKeyData'\n  constructor(\n    public readonly length: number,\n    public readonly processID: number,\n    public readonly secretKey: number\n  ) {}\n}\n\nexport class NotificationResponseMessage {\n  public readonly name: MessageName = 'notification'\n  constructor(\n    public readonly length: number,\n    public readonly processId: number,\n    public readonly channel: string,\n    public readonly payload: string\n  ) {}\n}\n\nexport class ReadyForQueryMessage {\n  public readonly name: MessageName = 'readyForQuery'\n  constructor(\n    public readonly length: number,\n    public readonly status: string\n  ) {}\n}\n\nexport class CommandCompleteMessage {\n  public readonly name: MessageName = 'commandComplete'\n  constructor(\n    public readonly length: number,\n    public readonly text: string\n  ) {}\n}\n\nexport class DataRowMessage {\n  public readonly fieldCount: number\n  public readonly name: MessageName = 'dataRow'\n  constructor(\n    public length: number,\n    public fields: any[]\n  ) {\n    this.fieldCount = fields.length\n  }\n}\n\nexport class NoticeMessage implements BackendMessage, NoticeOrError {\n  constructor(\n    public readonly length: number,\n    public readonly message: string | undefined\n  ) {}\n  public readonly name = 'notice'\n  public severity: string | undefined\n  public code: string | undefined\n  public detail: string | undefined\n  public hint: string | undefined\n  public position: string | undefined\n  public internalPosition: string | undefined\n  public internalQuery: string | undefined\n  public where: string | undefined\n  public schema: string | undefined\n  public table: string | undefined\n  public column: string | undefined\n  public dataType: string | undefined\n  public constraint: string | undefined\n  public file: string | undefined\n  public line: string | undefined\n  public routine: string | undefined\n}\n", "//binary data writer tuned for encoding binary specific to the postgres binary protocol\n\nexport class Writer {\n  private buffer: Buffer\n  private offset: number = 5\n  private headerPosition: number = 0\n  constructor(private size = 256) {\n    this.buffer = Buffer.allocUnsafe(size)\n  }\n\n  private ensure(size: number): void {\n    const remaining = this.buffer.length - this.offset\n    if (remaining < size) {\n      const oldBuffer = this.buffer\n      // exponential growth factor of around ~ 1.5\n      // https://stackoverflow.com/questions/2269063/buffer-growth-strategy\n      const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size\n      this.buffer = Buffer.allocUnsafe(newSize)\n      oldBuffer.copy(this.buffer)\n    }\n  }\n\n  public addInt32(num: number): Writer {\n    this.ensure(4)\n    this.buffer[this.offset++] = (num >>> 24) & 0xff\n    this.buffer[this.offset++] = (num >>> 16) & 0xff\n    this.buffer[this.offset++] = (num >>> 8) & 0xff\n    this.buffer[this.offset++] = (num >>> 0) & 0xff\n    return this\n  }\n\n  public addInt16(num: number): Writer {\n    this.ensure(2)\n    this.buffer[this.offset++] = (num >>> 8) & 0xff\n    this.buffer[this.offset++] = (num >>> 0) & 0xff\n    return this\n  }\n\n  public addCString(string: string): Writer {\n    if (!string) {\n      this.ensure(1)\n    } else {\n      const len = Buffer.byteLength(string)\n      this.ensure(len + 1) // +1 for null terminator\n      this.buffer.write(string, this.offset, 'utf-8')\n      this.offset += len\n    }\n\n    this.buffer[this.offset++] = 0 // null terminator\n    return this\n  }\n\n  public addString(string: string = ''): Writer {\n    const len = Buffer.byteLength(string)\n    this.ensure(len)\n    this.buffer.write(string, this.offset)\n    this.offset += len\n    return this\n  }\n\n  public add(otherBuffer: Buffer): Writer {\n    this.ensure(otherBuffer.length)\n    otherBuffer.copy(this.buffer, this.offset)\n    this.offset += otherBuffer.length\n    return this\n  }\n\n  private join(code?: number): Buffer {\n    if (code) {\n      this.buffer[this.headerPosition] = code\n      //length is everything in this packet minus the code\n      const length = this.offset - (this.headerPosition + 1)\n      this.buffer.writeInt32BE(length, this.headerPosition + 1)\n    }\n    return this.buffer.slice(code ? 0 : 5, this.offset)\n  }\n\n  public flush(code?: number): Buffer {\n    const result = this.join(code)\n    this.offset = 5\n    this.headerPosition = 0\n    this.buffer = Buffer.allocUnsafe(this.size)\n    return result\n  }\n}\n", "import { Writer } from './buffer-writer'\n\nconst enum code {\n  startup = 0x70,\n  query = 0x51,\n  parse = 0x50,\n  bind = 0x42,\n  execute = 0x45,\n  flush = 0x48,\n  sync = 0x53,\n  end = 0x58,\n  close = 0x43,\n  describe = 0x44,\n  copyFromChunk = 0x64,\n  copyDone = 0x63,\n  copyFail = 0x66,\n}\n\nconst writer = new Writer()\n\nconst startup = (opts: Record<string, string>): Buffer => {\n  // protocol version\n  writer.addInt16(3).addInt16(0)\n  for (const key of Object.keys(opts)) {\n    writer.addCString(key).addCString(opts[key])\n  }\n\n  writer.addCString('client_encoding').addCString('UTF8')\n\n  const bodyBuffer = writer.addCString('').flush()\n  // this message is sent without a code\n\n  const length = bodyBuffer.length + 4\n\n  return new Writer().addInt32(length).add(bodyBuffer).flush()\n}\n\nconst requestSsl = (): Buffer => {\n  const response = Buffer.allocUnsafe(8)\n  response.writeInt32BE(8, 0)\n  response.writeInt32BE(80877103, 4)\n  return response\n}\n\nconst password = (password: string): Buffer => {\n  return writer.addCString(password).flush(code.startup)\n}\n\nconst sendSASLInitialResponseMessage = function (mechanism: string, initialResponse: string): Buffer {\n  // 0x70 = 'p'\n  writer.addCString(mechanism).addInt32(Buffer.byteLength(initialResponse)).addString(initialResponse)\n\n  return writer.flush(code.startup)\n}\n\nconst sendSCRAMClientFinalMessage = function (additionalData: string): Buffer {\n  return writer.addString(additionalData).flush(code.startup)\n}\n\nconst query = (text: string): Buffer => {\n  return writer.addCString(text).flush(code.query)\n}\n\ntype ParseOpts = {\n  name?: string\n  types?: number[]\n  text: string\n}\n\nconst emptyArray: any[] = []\n\nconst parse = (query: ParseOpts): Buffer => {\n  // expect something like this:\n  // { name: 'queryName',\n  //   text: 'select * from blah',\n  //   types: ['int8', 'bool'] }\n\n  // normalize missing query names to allow for null\n  const name = query.name || ''\n  if (name.length > 63) {\n    console.error('Warning! Postgres only supports 63 characters for query names.')\n    console.error('You supplied %s (%s)', name, name.length)\n    console.error('This can cause conflicts and silent errors executing queries')\n  }\n\n  const types = query.types || emptyArray\n\n  const len = types.length\n\n  const buffer = writer\n    .addCString(name) // name of query\n    .addCString(query.text) // actual query text\n    .addInt16(len)\n\n  for (let i = 0; i < len; i++) {\n    buffer.addInt32(types[i])\n  }\n\n  return writer.flush(code.parse)\n}\n\ntype ValueMapper = (param: any, index: number) => any\n\ntype BindOpts = {\n  portal?: string\n  binary?: boolean\n  statement?: string\n  values?: any[]\n  // optional map from JS value to postgres value per parameter\n  valueMapper?: ValueMapper\n}\n\nconst paramWriter = new Writer()\n\n// make this a const enum so typescript will inline the value\nconst enum ParamType {\n  STRING = 0,\n  BINARY = 1,\n}\n\nconst writeValues = function (values: any[], valueMapper?: ValueMapper): void {\n  for (let i = 0; i < values.length; i++) {\n    const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i]\n    if (mappedVal == null) {\n      // add the param type (string) to the writer\n      writer.addInt16(ParamType.STRING)\n      // write -1 to the param writer to indicate null\n      paramWriter.addInt32(-1)\n    } else if (mappedVal instanceof Buffer) {\n      // add the param type (binary) to the writer\n      writer.addInt16(ParamType.BINARY)\n      // add the buffer to the param writer\n      paramWriter.addInt32(mappedVal.length)\n      paramWriter.add(mappedVal)\n    } else {\n      // add the param type (string) to the writer\n      writer.addInt16(ParamType.STRING)\n      paramWriter.addInt32(Buffer.byteLength(mappedVal))\n      paramWriter.addString(mappedVal)\n    }\n  }\n}\n\nconst bind = (config: BindOpts = {}): Buffer => {\n  // normalize config\n  const portal = config.portal || ''\n  const statement = config.statement || ''\n  const binary = config.binary || false\n  const values = config.values || emptyArray\n  const len = values.length\n\n  writer.addCString(portal).addCString(statement)\n  writer.addInt16(len)\n\n  writeValues(values, config.valueMapper)\n\n  writer.addInt16(len)\n  writer.add(paramWriter.flush())\n\n  // all results use the same format code\n  writer.addInt16(1)\n  // format code\n  writer.addInt16(binary ? ParamType.BINARY : ParamType.STRING)\n  return writer.flush(code.bind)\n}\n\ntype ExecOpts = {\n  portal?: string\n  rows?: number\n}\n\nconst emptyExecute = Buffer.from([code.execute, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00])\n\nconst execute = (config?: ExecOpts): Buffer => {\n  // this is the happy path for most queries\n  if (!config || (!config.portal && !config.rows)) {\n    return emptyExecute\n  }\n\n  const portal = config.portal || ''\n  const rows = config.rows || 0\n\n  const portalLength = Buffer.byteLength(portal)\n  const len = 4 + portalLength + 1 + 4\n  // one extra bit for code\n  const buff = Buffer.allocUnsafe(1 + len)\n  buff[0] = code.execute\n  buff.writeInt32BE(len, 1)\n  buff.write(portal, 5, 'utf-8')\n  buff[portalLength + 5] = 0 // null terminate portal cString\n  buff.writeUInt32BE(rows, buff.length - 4)\n  return buff\n}\n\nconst cancel = (processID: number, secretKey: number): Buffer => {\n  const buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32BE(16, 0)\n  buffer.writeInt16BE(1234, 4)\n  buffer.writeInt16BE(5678, 6)\n  buffer.writeInt32BE(processID, 8)\n  buffer.writeInt32BE(secretKey, 12)\n  return buffer\n}\n\ntype PortalOpts = {\n  type: 'S' | 'P'\n  name?: string\n}\n\nconst cstringMessage = (code: code, string: string): Buffer => {\n  const stringLen = Buffer.byteLength(string)\n  const len = 4 + stringLen + 1\n  // one extra bit for code\n  const buffer = Buffer.allocUnsafe(1 + len)\n  buffer[0] = code\n  buffer.writeInt32BE(len, 1)\n  buffer.write(string, 5, 'utf-8')\n  buffer[len] = 0 // null terminate cString\n  return buffer\n}\n\nconst emptyDescribePortal = writer.addCString('P').flush(code.describe)\nconst emptyDescribeStatement = writer.addCString('S').flush(code.describe)\n\nconst describe = (msg: PortalOpts): Buffer => {\n  return msg.name\n    ? cstringMessage(code.describe, `${msg.type}${msg.name || ''}`)\n    : msg.type === 'P'\n    ? emptyDescribePortal\n    : emptyDescribeStatement\n}\n\nconst close = (msg: PortalOpts): Buffer => {\n  const text = `${msg.type}${msg.name || ''}`\n  return cstringMessage(code.close, text)\n}\n\nconst copyData = (chunk: Buffer): Buffer => {\n  return writer.add(chunk).flush(code.copyFromChunk)\n}\n\nconst copyFail = (message: string): Buffer => {\n  return cstringMessage(code.copyFail, message)\n}\n\nconst codeOnlyBuffer = (code: code): Buffer => Buffer.from([code, 0x00, 0x00, 0x00, 0x04])\n\nconst flushBuffer = codeOnlyBuffer(code.flush)\nconst syncBuffer = codeOnlyBuffer(code.sync)\nconst endBuffer = codeOnlyBuffer(code.end)\nconst copyDoneBuffer = codeOnlyBuffer(code.copyDone)\n\nconst serialize = {\n  startup,\n  password,\n  requestSsl,\n  sendSASLInitialResponseMessage,\n  sendSCRAMClientFinalMessage,\n  query,\n  parse,\n  bind,\n  execute,\n  describe,\n  close,\n  flush: () => flushBuffer,\n  sync: () => syncBuffer,\n  end: () => endBuffer,\n  copyData,\n  copyDone: () => copyDoneBuffer,\n  copyFail,\n  cancel,\n}\n\nexport { serialize }\n", "export class BufferReader {\n  private buffer: Buffer = Buffer.allocUnsafe(0)\n\n  // TODO(bmc): support non-utf8 encoding?\n  private encoding: string = 'utf-8'\n\n  constructor(private offset: number = 0) {}\n\n  public setBuffer(offset: number, buffer: Buffer): void {\n    this.offset = offset\n    this.buffer = buffer\n  }\n\n  public int16(): number {\n    const result = this.buffer.readInt16BE(this.offset)\n    this.offset += 2\n    return result\n  }\n\n  public byte(): number {\n    const result = this.buffer[this.offset]\n    this.offset++\n    return result\n  }\n\n  public int32(): number {\n    const result = this.buffer.readInt32BE(this.offset)\n    this.offset += 4\n    return result\n  }\n\n  public uint32(): number {\n    const result = this.buffer.readUInt32BE(this.offset)\n    this.offset += 4\n    return result\n  }\n\n  public string(length: number): string {\n    const result = this.buffer.toString(this.encoding, this.offset, this.offset + length)\n    this.offset += length\n    return result\n  }\n\n  public cstring(): string {\n    const start = this.offset\n    let end = start\n    // eslint-disable-next-line no-empty\n    while (this.buffer[end++] !== 0) {}\n    this.offset = end\n    return this.buffer.toString(this.encoding, start, end - 1)\n  }\n\n  public bytes(length: number): Buffer {\n    const result = this.buffer.slice(this.offset, this.offset + length)\n    this.offset += length\n    return result\n  }\n}\n", "import { TransformOptions } from 'stream'\nimport {\n  Mode,\n  bindComplete,\n  parseComplete,\n  closeComplete,\n  noData,\n  portalSuspended,\n  copyDone,\n  replicationStart,\n  emptyQuery,\n  ReadyForQueryMessage,\n  CommandCompleteMessage,\n  CopyDataMessage,\n  CopyResponse,\n  NotificationResponseMessage,\n  RowDescriptionMessage,\n  ParameterDescriptionMessage,\n  Field,\n  DataRowMessage,\n  ParameterStatusMessage,\n  BackendKeyDataMessage,\n  DatabaseError,\n  BackendMessage,\n  MessageName,\n  AuthenticationMD5Password,\n  NoticeMessage,\n} from './messages'\nimport { BufferReader } from './buffer-reader'\n\n// every message is prefixed with a single bye\nconst CODE_LENGTH = 1\n// every message has an int32 length which includes itself but does\n// NOT include the code in the length\nconst LEN_LENGTH = 4\n\nconst HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH\n\n// A placeholder for a `BackendMessage`\u2019s length value that will be set after construction.\nconst LATEINIT_LENGTH = -1\n\nexport type Packet = {\n  code: number\n  packet: Buffer\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\ntype StreamOptions = TransformOptions & {\n  mode: Mode\n}\n\nconst enum MessageCodes {\n  DataRow = 0x44, // D\n  ParseComplete = 0x31, // 1\n  BindComplete = 0x32, // 2\n  CloseComplete = 0x33, // 3\n  CommandComplete = 0x43, // C\n  ReadyForQuery = 0x5a, // Z\n  NoData = 0x6e, // n\n  NotificationResponse = 0x41, // A\n  AuthenticationResponse = 0x52, // R\n  ParameterStatus = 0x53, // S\n  BackendKeyData = 0x4b, // K\n  ErrorMessage = 0x45, // E\n  NoticeMessage = 0x4e, // N\n  RowDescriptionMessage = 0x54, // T\n  ParameterDescriptionMessage = 0x74, // t\n  PortalSuspended = 0x73, // s\n  ReplicationStart = 0x57, // W\n  EmptyQuery = 0x49, // I\n  CopyIn = 0x47, // G\n  CopyOut = 0x48, // H\n  CopyDone = 0x63, // c\n  CopyData = 0x64, // d\n}\n\nexport type MessageCallback = (msg: BackendMessage) => void\n\nexport class Parser {\n  private buffer: Buffer = emptyBuffer\n  private bufferLength: number = 0\n  private bufferOffset: number = 0\n  private reader = new BufferReader()\n  private mode: Mode\n\n  constructor(opts?: StreamOptions) {\n    if (opts?.mode === 'binary') {\n      throw new Error('Binary mode not supported yet')\n    }\n    this.mode = opts?.mode || 'text'\n  }\n\n  public parse(buffer: Buffer, callback: MessageCallback) {\n    this.mergeBuffer(buffer)\n    const bufferFullLength = this.bufferOffset + this.bufferLength\n    let offset = this.bufferOffset\n    while (offset + HEADER_LENGTH <= bufferFullLength) {\n      // code is 1 byte long - it identifies the message type\n      const code = this.buffer[offset]\n      // length is 1 Uint32BE - it is the length of the message EXCLUDING the code\n      const length = this.buffer.readUInt32BE(offset + CODE_LENGTH)\n      const fullMessageLength = CODE_LENGTH + length\n      if (fullMessageLength + offset <= bufferFullLength) {\n        const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer)\n        callback(message)\n        offset += fullMessageLength\n      } else {\n        break\n      }\n    }\n    if (offset === bufferFullLength) {\n      // No more use for the buffer\n      this.buffer = emptyBuffer\n      this.bufferLength = 0\n      this.bufferOffset = 0\n    } else {\n      // Adjust the cursors of remainingBuffer\n      this.bufferLength = bufferFullLength - offset\n      this.bufferOffset = offset\n    }\n  }\n\n  private mergeBuffer(buffer: Buffer): void {\n    if (this.bufferLength > 0) {\n      const newLength = this.bufferLength + buffer.byteLength\n      const newFullLength = newLength + this.bufferOffset\n      if (newFullLength > this.buffer.byteLength) {\n        // We can't concat the new buffer with the remaining one\n        let newBuffer: Buffer\n        if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) {\n          // We can move the relevant part to the beginning of the buffer instead of allocating a new buffer\n          newBuffer = this.buffer\n        } else {\n          // Allocate a new larger buffer\n          let newBufferLength = this.buffer.byteLength * 2\n          while (newLength >= newBufferLength) {\n            newBufferLength *= 2\n          }\n          newBuffer = Buffer.allocUnsafe(newBufferLength)\n        }\n        // Move the remaining buffer to the new one\n        this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength)\n        this.buffer = newBuffer\n        this.bufferOffset = 0\n      }\n      // Concat the new buffer with the remaining one\n      buffer.copy(this.buffer, this.bufferOffset + this.bufferLength)\n      this.bufferLength = newLength\n    } else {\n      this.buffer = buffer\n      this.bufferOffset = 0\n      this.bufferLength = buffer.byteLength\n    }\n  }\n\n  private handlePacket(offset: number, code: number, length: number, bytes: Buffer): BackendMessage {\n    const { reader } = this\n\n    // NOTE: This undesirably retains the buffer in `this.reader` if the `parse*Message` calls below throw. However, those should only throw in the case of a protocol error, which normally results in the reader being discarded.\n    reader.setBuffer(offset, bytes)\n\n    let message: BackendMessage\n\n    switch (code) {\n      case MessageCodes.BindComplete:\n        message = bindComplete\n        break\n      case MessageCodes.ParseComplete:\n        message = parseComplete\n        break\n      case MessageCodes.CloseComplete:\n        message = closeComplete\n        break\n      case MessageCodes.NoData:\n        message = noData\n        break\n      case MessageCodes.PortalSuspended:\n        message = portalSuspended\n        break\n      case MessageCodes.CopyDone:\n        message = copyDone\n        break\n      case MessageCodes.ReplicationStart:\n        message = replicationStart\n        break\n      case MessageCodes.EmptyQuery:\n        message = emptyQuery\n        break\n      case MessageCodes.DataRow:\n        message = parseDataRowMessage(reader)\n        break\n      case MessageCodes.CommandComplete:\n        message = parseCommandCompleteMessage(reader)\n        break\n      case MessageCodes.ReadyForQuery:\n        message = parseReadyForQueryMessage(reader)\n        break\n      case MessageCodes.NotificationResponse:\n        message = parseNotificationMessage(reader)\n        break\n      case MessageCodes.AuthenticationResponse:\n        message = parseAuthenticationResponse(reader, length)\n        break\n      case MessageCodes.ParameterStatus:\n        message = parseParameterStatusMessage(reader)\n        break\n      case MessageCodes.BackendKeyData:\n        message = parseBackendKeyData(reader)\n        break\n      case MessageCodes.ErrorMessage:\n        message = parseErrorMessage(reader, 'error')\n        break\n      case MessageCodes.NoticeMessage:\n        message = parseErrorMessage(reader, 'notice')\n        break\n      case MessageCodes.RowDescriptionMessage:\n        message = parseRowDescriptionMessage(reader)\n        break\n      case MessageCodes.ParameterDescriptionMessage:\n        message = parseParameterDescriptionMessage(reader)\n        break\n      case MessageCodes.CopyIn:\n        message = parseCopyInMessage(reader)\n        break\n      case MessageCodes.CopyOut:\n        message = parseCopyOutMessage(reader)\n        break\n      case MessageCodes.CopyData:\n        message = parseCopyData(reader, length)\n        break\n      default:\n        return new DatabaseError('received invalid response: ' + code.toString(16), length, 'error')\n    }\n\n    reader.setBuffer(0, emptyBuffer)\n\n    message.length = length\n    return message\n  }\n}\n\nconst parseReadyForQueryMessage = (reader: BufferReader) => {\n  const status = reader.string(1)\n  return new ReadyForQueryMessage(LATEINIT_LENGTH, status)\n}\n\nconst parseCommandCompleteMessage = (reader: BufferReader) => {\n  const text = reader.cstring()\n  return new CommandCompleteMessage(LATEINIT_LENGTH, text)\n}\n\nconst parseCopyData = (reader: BufferReader, length: number) => {\n  const chunk = reader.bytes(length - 4)\n  return new CopyDataMessage(LATEINIT_LENGTH, chunk)\n}\n\nconst parseCopyInMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyInResponse')\n\nconst parseCopyOutMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyOutResponse')\n\nconst parseCopyMessage = (reader: BufferReader, messageName: MessageName) => {\n  const isBinary = reader.byte() !== 0\n  const columnCount = reader.int16()\n  const message = new CopyResponse(LATEINIT_LENGTH, messageName, isBinary, columnCount)\n  for (let i = 0; i < columnCount; i++) {\n    message.columnTypes[i] = reader.int16()\n  }\n  return message\n}\n\nconst parseNotificationMessage = (reader: BufferReader) => {\n  const processId = reader.int32()\n  const channel = reader.cstring()\n  const payload = reader.cstring()\n  return new NotificationResponseMessage(LATEINIT_LENGTH, processId, channel, payload)\n}\n\nconst parseRowDescriptionMessage = (reader: BufferReader) => {\n  const fieldCount = reader.int16()\n  const message = new RowDescriptionMessage(LATEINIT_LENGTH, fieldCount)\n  for (let i = 0; i < fieldCount; i++) {\n    message.fields[i] = parseField(reader)\n  }\n  return message\n}\n\nconst parseField = (reader: BufferReader) => {\n  const name = reader.cstring()\n  const tableID = reader.uint32()\n  const columnID = reader.int16()\n  const dataTypeID = reader.uint32()\n  const dataTypeSize = reader.int16()\n  const dataTypeModifier = reader.int32()\n  const mode = reader.int16() === 0 ? 'text' : 'binary'\n  return new Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode)\n}\n\nconst parseParameterDescriptionMessage = (reader: BufferReader) => {\n  const parameterCount = reader.int16()\n  const message = new ParameterDescriptionMessage(LATEINIT_LENGTH, parameterCount)\n  for (let i = 0; i < parameterCount; i++) {\n    message.dataTypeIDs[i] = reader.int32()\n  }\n  return message\n}\n\nconst parseDataRowMessage = (reader: BufferReader) => {\n  const fieldCount = reader.int16()\n  const fields: any[] = new Array(fieldCount)\n  for (let i = 0; i < fieldCount; i++) {\n    const len = reader.int32()\n    // a -1 for length means the value of the field is null\n    fields[i] = len === -1 ? null : reader.string(len)\n  }\n  return new DataRowMessage(LATEINIT_LENGTH, fields)\n}\n\nconst parseParameterStatusMessage = (reader: BufferReader) => {\n  const name = reader.cstring()\n  const value = reader.cstring()\n  return new ParameterStatusMessage(LATEINIT_LENGTH, name, value)\n}\n\nconst parseBackendKeyData = (reader: BufferReader) => {\n  const processID = reader.int32()\n  const secretKey = reader.int32()\n  return new BackendKeyDataMessage(LATEINIT_LENGTH, processID, secretKey)\n}\n\nconst parseAuthenticationResponse = (reader: BufferReader, length: number) => {\n  const code = reader.int32()\n  // TODO(bmc): maybe better types here\n  const message: BackendMessage & any = {\n    name: 'authenticationOk',\n    length,\n  }\n\n  switch (code) {\n    case 0: // AuthenticationOk\n      break\n    case 3: // AuthenticationCleartextPassword\n      if (message.length === 8) {\n        message.name = 'authenticationCleartextPassword'\n      }\n      break\n    case 5: // AuthenticationMD5Password\n      if (message.length === 12) {\n        message.name = 'authenticationMD5Password'\n        const salt = reader.bytes(4)\n        return new AuthenticationMD5Password(LATEINIT_LENGTH, salt)\n      }\n      break\n    case 10: // AuthenticationSASL\n      {\n        message.name = 'authenticationSASL'\n        message.mechanisms = []\n        let mechanism: string\n        do {\n          mechanism = reader.cstring()\n          if (mechanism) {\n            message.mechanisms.push(mechanism)\n          }\n        } while (mechanism)\n      }\n      break\n    case 11: // AuthenticationSASLContinue\n      message.name = 'authenticationSASLContinue'\n      message.data = reader.string(length - 8)\n      break\n    case 12: // AuthenticationSASLFinal\n      message.name = 'authenticationSASLFinal'\n      message.data = reader.string(length - 8)\n      break\n    default:\n      throw new Error('Unknown authenticationOk message type ' + code)\n  }\n  return message\n}\n\nconst parseErrorMessage = (reader: BufferReader, name: MessageName) => {\n  const fields: Record<string, string> = {}\n  let fieldType = reader.string(1)\n  while (fieldType !== '\\0') {\n    fields[fieldType] = reader.cstring()\n    fieldType = reader.string(1)\n  }\n\n  const messageValue = fields.M\n\n  const message =\n    name === 'notice'\n      ? new NoticeMessage(LATEINIT_LENGTH, messageValue)\n      : new DatabaseError(messageValue, LATEINIT_LENGTH, name)\n\n  message.severity = fields.S\n  message.code = fields.C\n  message.detail = fields.D\n  message.hint = fields.H\n  message.position = fields.P\n  message.internalPosition = fields.p\n  message.internalQuery = fields.q\n  message.where = fields.W\n  message.schema = fields.s\n  message.table = fields.t\n  message.column = fields.c\n  message.dataType = fields.d\n  message.constraint = fields.n\n  message.file = fields.F\n  message.line = fields.L\n  message.routine = fields.R\n  return message\n}\n", "import { DatabaseError } from './messages'\nimport { serialize } from './serializer'\nimport { Parser, MessageCallback } from './parser'\n\nexport function parse(stream: NodeJS.ReadableStream, callback: MessageCallback): Promise<void> {\n  const parser = new Parser()\n  stream.on('data', (buffer: Buffer) => parser.parse(buffer, callback))\n  return new Promise((resolve) => stream.on('end', () => resolve()))\n}\n\nexport { serialize, DatabaseError }\n", "// This is an empty module that is served up when outside of a workerd environment\n// See the `exports` field in package.json\nexport default {}\n", "const { getStream, getSecureStream } = getStreamFuncs()\n\nmodule.exports = {\n  /**\n   * Get a socket stream compatible with the current runtime environment.\n   * @returns {Duplex}\n   */\n  getStream,\n  /**\n   * Get a TLS secured socket, compatible with the current environment,\n   * using the socket and other settings given in `options`.\n   * @returns {Duplex}\n   */\n  getSecureStream,\n}\n\n/**\n * The stream functions that work in Node.js\n */\nfunction getNodejsStreamFuncs() {\n  function getStream(ssl) {\n    const net = require('net')\n    return new net.Socket()\n  }\n\n  function getSecureStream(options) {\n    const tls = require('tls')\n    return tls.connect(options)\n  }\n  return {\n    getStream,\n    getSecureStream,\n  }\n}\n\n/**\n * The stream functions that work in Cloudflare Workers\n */\nfunction getCloudflareStreamFuncs() {\n  function getStream(ssl) {\n    const { CloudflareSocket } = require('pg-cloudflare')\n    return new CloudflareSocket(ssl)\n  }\n\n  function getSecureStream(options) {\n    options.socket.startTls(options)\n    return options.socket\n  }\n  return {\n    getStream,\n    getSecureStream,\n  }\n}\n\n/**\n * Are we running in a Cloudflare Worker?\n *\n * @returns true if the code is currently running inside a Cloudflare Worker.\n */\nfunction isCloudflareRuntime() {\n  // Since 2022-03-21 the `global_navigator` compatibility flag is on for Cloudflare Workers\n  // which means that `navigator.userAgent` will be defined.\n  // eslint-disable-next-line no-undef\n  if (typeof navigator === 'object' && navigator !== null && typeof navigator.userAgent === 'string') {\n    // eslint-disable-next-line no-undef\n    return navigator.userAgent === 'Cloudflare-Workers'\n  }\n  // In case `navigator` or `navigator.userAgent` is not defined then try a more sneaky approach\n  if (typeof Response === 'function') {\n    const resp = new Response(null, { cf: { thing: true } })\n    if (typeof resp.cf === 'object' && resp.cf !== null && resp.cf.thing) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction getStreamFuncs() {\n  if (isCloudflareRuntime()) {\n    return getCloudflareStreamFuncs()\n  }\n  return getNodejsStreamFuncs()\n}\n", "'use strict'\n\nconst EventEmitter = require('events').EventEmitter\n\nconst { parse, serialize } = require('pg-protocol')\nconst { getStream, getSecureStream } = require('./stream')\n\nconst flushBuffer = serialize.flush()\nconst syncBuffer = serialize.sync()\nconst endBuffer = serialize.end()\n\n// TODO(bmc) support binary mode at some point\nclass Connection extends EventEmitter {\n  constructor(config) {\n    super()\n    config = config || {}\n\n    this.stream = config.stream || getStream(config.ssl)\n    if (typeof this.stream === 'function') {\n      this.stream = this.stream(config)\n    }\n\n    this._keepAlive = config.keepAlive\n    this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis\n    this.parsedStatements = {}\n    this.ssl = config.ssl || false\n    this._ending = false\n    this._emitMessage = false\n    const self = this\n    this.on('newListener', function (eventName) {\n      if (eventName === 'message') {\n        self._emitMessage = true\n      }\n    })\n  }\n\n  connect(port, host) {\n    const self = this\n\n    this._connecting = true\n    this.stream.setNoDelay(true)\n    this.stream.connect(port, host)\n\n    this.stream.once('connect', function () {\n      if (self._keepAlive) {\n        self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis)\n      }\n      self.emit('connect')\n    })\n\n    const reportStreamError = function (error) {\n      // errors about disconnections should be ignored during disconnect\n      if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) {\n        return\n      }\n      self.emit('error', error)\n    }\n    this.stream.on('error', reportStreamError)\n\n    this.stream.on('close', function () {\n      self.emit('end')\n    })\n\n    if (!this.ssl) {\n      return this.attachListeners(this.stream)\n    }\n\n    this.stream.once('data', function (buffer) {\n      const responseCode = buffer.toString('utf8')\n      switch (responseCode) {\n        case 'S': // Server supports SSL connections, continue with a secure connection\n          break\n        case 'N': // Server does not support SSL connections\n          self.stream.end()\n          return self.emit('error', new Error('The server does not support SSL connections'))\n        default:\n          // Any other response byte, including 'E' (ErrorResponse) indicating a server error\n          self.stream.end()\n          return self.emit('error', new Error('There was an error establishing an SSL connection'))\n      }\n      const options = {\n        socket: self.stream,\n      }\n\n      if (self.ssl !== true) {\n        Object.assign(options, self.ssl)\n\n        if ('key' in self.ssl) {\n          options.key = self.ssl.key\n        }\n      }\n\n      const net = require('net')\n      if (net.isIP && net.isIP(host) === 0) {\n        options.servername = host\n      }\n      try {\n        self.stream = getSecureStream(options)\n      } catch (err) {\n        return self.emit('error', err)\n      }\n      self.attachListeners(self.stream)\n      self.stream.on('error', reportStreamError)\n\n      self.emit('sslconnect')\n    })\n  }\n\n  attachListeners(stream) {\n    parse(stream, (msg) => {\n      const eventName = msg.name === 'error' ? 'errorMessage' : msg.name\n      if (this._emitMessage) {\n        this.emit('message', msg)\n      }\n      this.emit(eventName, msg)\n    })\n  }\n\n  requestSsl() {\n    this.stream.write(serialize.requestSsl())\n  }\n\n  startup(config) {\n    this.stream.write(serialize.startup(config))\n  }\n\n  cancel(processID, secretKey) {\n    this._send(serialize.cancel(processID, secretKey))\n  }\n\n  password(password) {\n    this._send(serialize.password(password))\n  }\n\n  sendSASLInitialResponseMessage(mechanism, initialResponse) {\n    this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse))\n  }\n\n  sendSCRAMClientFinalMessage(additionalData) {\n    this._send(serialize.sendSCRAMClientFinalMessage(additionalData))\n  }\n\n  _send(buffer) {\n    if (!this.stream.writable) {\n      return false\n    }\n    return this.stream.write(buffer)\n  }\n\n  query(text) {\n    this._send(serialize.query(text))\n  }\n\n  // send parse message\n  parse(query) {\n    this._send(serialize.parse(query))\n  }\n\n  // send bind message\n  bind(config) {\n    this._send(serialize.bind(config))\n  }\n\n  // send execute message\n  execute(config) {\n    this._send(serialize.execute(config))\n  }\n\n  flush() {\n    if (this.stream.writable) {\n      this.stream.write(flushBuffer)\n    }\n  }\n\n  sync() {\n    this._ending = true\n    this._send(syncBuffer)\n  }\n\n  ref() {\n    this.stream.ref()\n  }\n\n  unref() {\n    this.stream.unref()\n  }\n\n  end() {\n    // 0x58 = 'X'\n    this._ending = true\n    if (!this._connecting || !this.stream.writable) {\n      this.stream.end()\n      return\n    }\n    return this.stream.write(endBuffer, () => {\n      this.stream.end()\n    })\n  }\n\n  close(msg) {\n    this._send(serialize.close(msg))\n  }\n\n  describe(msg) {\n    this._send(serialize.describe(msg))\n  }\n\n  sendCopyFromChunk(chunk) {\n    this._send(serialize.copyData(chunk))\n  }\n\n  endCopyFrom() {\n    this._send(serialize.copyDone())\n  }\n\n  sendCopyFail(msg) {\n    this._send(serialize.copyFail(msg))\n  }\n}\n\nmodule.exports = Connection\n", "/*\nCopyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\n'use strict'\n\nconst { Transform } = require('stream')\nconst { StringDecoder } = require('string_decoder')\nconst kLast = Symbol('last')\nconst kDecoder = Symbol('decoder')\n\nfunction transform (chunk, enc, cb) {\n  let list\n  if (this.overflow) { // Line buffer is full. Skip to start of next line.\n    const buf = this[kDecoder].write(chunk)\n    list = buf.split(this.matcher)\n\n    if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.\n\n    // Line ending found. Discard trailing fragment of previous line and reset overflow state.\n    list.shift()\n    this.overflow = false\n  } else {\n    this[kLast] += this[kDecoder].write(chunk)\n    list = this[kLast].split(this.matcher)\n  }\n\n  this[kLast] = list.pop()\n\n  for (let i = 0; i < list.length; i++) {\n    try {\n      push(this, this.mapper(list[i]))\n    } catch (error) {\n      return cb(error)\n    }\n  }\n\n  this.overflow = this[kLast].length > this.maxLength\n  if (this.overflow && !this.skipOverflow) {\n    cb(new Error('maximum buffer reached'))\n    return\n  }\n\n  cb()\n}\n\nfunction flush (cb) {\n  // forward any gibberish left in there\n  this[kLast] += this[kDecoder].end()\n\n  if (this[kLast]) {\n    try {\n      push(this, this.mapper(this[kLast]))\n    } catch (error) {\n      return cb(error)\n    }\n  }\n\n  cb()\n}\n\nfunction push (self, val) {\n  if (val !== undefined) {\n    self.push(val)\n  }\n}\n\nfunction noop (incoming) {\n  return incoming\n}\n\nfunction split (matcher, mapper, options) {\n  // Set defaults for any arguments not supplied.\n  matcher = matcher || /\\r?\\n/\n  mapper = mapper || noop\n  options = options || {}\n\n  // Test arguments explicitly.\n  switch (arguments.length) {\n    case 1:\n      // If mapper is only argument.\n      if (typeof matcher === 'function') {\n        mapper = matcher\n        matcher = /\\r?\\n/\n      // If options is only argument.\n      } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {\n        options = matcher\n        matcher = /\\r?\\n/\n      }\n      break\n\n    case 2:\n      // If mapper and options are arguments.\n      if (typeof matcher === 'function') {\n        options = mapper\n        mapper = matcher\n        matcher = /\\r?\\n/\n      // If matcher and options are arguments.\n      } else if (typeof mapper === 'object') {\n        options = mapper\n        mapper = noop\n      }\n  }\n\n  options = Object.assign({}, options)\n  options.autoDestroy = true\n  options.transform = transform\n  options.flush = flush\n  options.readableObjectMode = true\n\n  const stream = new Transform(options)\n\n  stream[kLast] = ''\n  stream[kDecoder] = new StringDecoder('utf8')\n  stream.matcher = matcher\n  stream.mapper = mapper\n  stream.maxLength = options.maxLength\n  stream.skipOverflow = options.skipOverflow || false\n  stream.overflow = false\n  stream._destroy = function (err, cb) {\n    // Weird Node v12 bug that we need to work around\n    this._writableState.errorEmitted = false\n    cb(err)\n  }\n\n  return stream\n}\n\nmodule.exports = split\n", "'use strict';\n\nvar path = require('path')\n  , Stream = require('stream').Stream\n  , split = require('split2')\n  , util = require('util')\n  , defaultPort = 5432\n  , isWin = (process.platform === 'win32')\n  , warnStream = process.stderr\n;\n\n\nvar S_IRWXG = 56     //    00070(8)\n  , S_IRWXO = 7      //    00007(8)\n  , S_IFMT  = 61440  // 00170000(8)\n  , S_IFREG = 32768  //  0100000(8)\n;\nfunction isRegFile(mode) {\n    return ((mode & S_IFMT) == S_IFREG);\n}\n\nvar fieldNames = [ 'host', 'port', 'database', 'user', 'password' ];\nvar nrOfFields = fieldNames.length;\nvar passKey = fieldNames[ nrOfFields -1 ];\n\n\nfunction warn() {\n    var isWritable = (\n        warnStream instanceof Stream &&\n          true === warnStream.writable\n    );\n\n    if (isWritable) {\n        var args = Array.prototype.slice.call(arguments).concat(\"\\n\");\n        warnStream.write( util.format.apply(util, args) );\n    }\n}\n\n\nObject.defineProperty(module.exports, 'isWin', {\n    get : function() {\n        return isWin;\n    } ,\n    set : function(val) {\n        isWin = val;\n    }\n});\n\n\nmodule.exports.warnTo = function(stream) {\n    var old = warnStream;\n    warnStream = stream;\n    return old;\n};\n\nmodule.exports.getFileName = function(rawEnv){\n    var env = rawEnv || process.env;\n    var file = env.PGPASSFILE || (\n        isWin ?\n          path.join( env.APPDATA || './' , 'postgresql', 'pgpass.conf' ) :\n          path.join( env.HOME || './', '.pgpass' )\n    );\n    return file;\n};\n\nmodule.exports.usePgPass = function(stats, fname) {\n    if (Object.prototype.hasOwnProperty.call(process.env, 'PGPASSWORD')) {\n        return false;\n    }\n\n    if (isWin) {\n        return true;\n    }\n\n    fname = fname || '<unkn>';\n\n    if (! isRegFile(stats.mode)) {\n        warn('WARNING: password file \"%s\" is not a plain file', fname);\n        return false;\n    }\n\n    if (stats.mode & (S_IRWXG | S_IRWXO)) {\n        /* If password file is insecure, alert the user and ignore it. */\n        warn('WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less', fname);\n        return false;\n    }\n\n    return true;\n};\n\n\nvar matcher = module.exports.match = function(connInfo, entry) {\n    return fieldNames.slice(0, -1).reduce(function(prev, field, idx){\n        if (idx == 1) {\n            // the port\n            if ( Number( connInfo[field] || defaultPort ) === Number( entry[field] ) ) {\n                return prev && true;\n            }\n        }\n        return prev && (\n            entry[field] === '*' ||\n              entry[field] === connInfo[field]\n        );\n    }, true);\n};\n\n\nmodule.exports.getPassword = function(connInfo, stream, cb) {\n    var pass;\n    var lineStream = stream.pipe(split());\n\n    function onLine(line) {\n        var entry = parseLine(line);\n        if (entry && isValidEntry(entry) && matcher(connInfo, entry)) {\n            pass = entry[passKey];\n            lineStream.end(); // -> calls onEnd(), but pass is set now\n        }\n    }\n\n    var onEnd = function() {\n        stream.destroy();\n        cb(pass);\n    };\n\n    var onErr = function(err) {\n        stream.destroy();\n        warn('WARNING: error on reading file: %s', err);\n        cb(undefined);\n    };\n\n    stream.on('error', onErr);\n    lineStream\n        .on('data', onLine)\n        .on('end', onEnd)\n        .on('error', onErr)\n    ;\n\n};\n\n\nvar parseLine = module.exports.parseLine = function(line) {\n    if (line.length < 11 || line.match(/^\\s+#/)) {\n        return null;\n    }\n\n    var curChar = '';\n    var prevChar = '';\n    var fieldIdx = 0;\n    var startIdx = 0;\n    var endIdx = 0;\n    var obj = {};\n    var isLastField = false;\n    var addToObj = function(idx, i0, i1) {\n        var field = line.substring(i0, i1);\n\n        if (! Object.hasOwnProperty.call(process.env, 'PGPASS_NO_DEESCAPE')) {\n            field = field.replace(/\\\\([:\\\\])/g, '$1');\n        }\n\n        obj[ fieldNames[idx] ] = field;\n    };\n\n    for (var i = 0 ; i < line.length-1 ; i += 1) {\n        curChar = line.charAt(i+1);\n        prevChar = line.charAt(i);\n\n        isLastField = (fieldIdx == nrOfFields-1);\n\n        if (isLastField) {\n            addToObj(fieldIdx, startIdx);\n            break;\n        }\n\n        if (i >= 0 && curChar == ':' && prevChar !== '\\\\') {\n            addToObj(fieldIdx, startIdx, i+1);\n\n            startIdx = i+2;\n            fieldIdx += 1;\n        }\n    }\n\n    obj = ( Object.keys(obj).length === nrOfFields ) ? obj : null;\n\n    return obj;\n};\n\n\nvar isValidEntry = module.exports.isValidEntry = function(entry){\n    var rules = {\n        // host\n        0 : function(x){\n            return x.length > 0;\n        } ,\n        // port\n        1 : function(x){\n            if (x === '*') {\n                return true;\n            }\n            x = Number(x);\n            return (\n                isFinite(x) &&\n                  x > 0 &&\n                  x < 9007199254740992 &&\n                  Math.floor(x) === x\n            );\n        } ,\n        // database\n        2 : function(x){\n            return x.length > 0;\n        } ,\n        // username\n        3 : function(x){\n            return x.length > 0;\n        } ,\n        // password\n        4 : function(x){\n            return x.length > 0;\n        }\n    };\n\n    for (var idx = 0 ; idx < fieldNames.length ; idx += 1) {\n        var rule = rules[idx];\n        var value = entry[ fieldNames[idx] ] || '';\n\n        var res = rule(value);\n        if (!res) {\n            return false;\n        }\n    }\n\n    return true;\n};\n\n", "'use strict';\n\nvar path = require('path')\n  , fs = require('fs')\n  , helper = require('./helper.js')\n;\n\n\nmodule.exports = function(connInfo, cb) {\n    var file = helper.getFileName();\n    \n    fs.stat(file, function(err, stat){\n        if (err || !helper.usePgPass(stat, file)) {\n            return cb(undefined);\n        }\n\n        var st = fs.createReadStream(file);\n\n        helper.getPassword(connInfo, st, cb);\n    });\n};\n\nmodule.exports.warnTo = helper.warnTo;\n", "const EventEmitter = require('events').EventEmitter\nconst utils = require('./utils')\nconst nodeUtils = require('util')\nconst sasl = require('./crypto/sasl')\nconst TypeOverrides = require('./type-overrides')\n\nconst ConnectionParameters = require('./connection-parameters')\nconst Query = require('./query')\nconst defaults = require('./defaults')\nconst Connection = require('./connection')\nconst crypto = require('./crypto/utils')\n\nconst activeQueryDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'Client.activeQuery is deprecated and will be removed in pg@9.0'\n)\n\nconst queryQueueDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'Client.queryQueue is deprecated and will be removed in pg@9.0.'\n)\n\nconst pgPassDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'pgpass support is deprecated and will be removed in pg@9.0. ' +\n    'You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code.'\n)\n\nconst byoPromiseDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0.'\n)\n\nconst queryQueueLengthDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.'\n)\n\nclass Client extends EventEmitter {\n  constructor(config) {\n    super()\n\n    this.connectionParameters = new ConnectionParameters(config)\n    this.user = this.connectionParameters.user\n    this.database = this.connectionParameters.database\n    this.port = this.connectionParameters.port\n    this.host = this.connectionParameters.host\n\n    // \"hiding\" the password so it doesn't show up in stack traces\n    // or if the client is console.logged\n    Object.defineProperty(this, 'password', {\n      configurable: true,\n      enumerable: false,\n      writable: true,\n      value: this.connectionParameters.password,\n    })\n\n    this.replication = this.connectionParameters.replication\n\n    const c = config || {}\n\n    if (c.Promise) {\n      byoPromiseDeprecationNotice()\n    }\n    this._Promise = c.Promise || global.Promise\n    this._types = new TypeOverrides(c.types)\n    this._ending = false\n    this._ended = false\n    this._connecting = false\n    this._connected = false\n    this._connectionError = false\n    this._queryable = true\n    this._activeQuery = null\n\n    this.enableChannelBinding = Boolean(c.enableChannelBinding) // set true to use SCRAM-SHA-256-PLUS when offered\n    this.connection =\n      c.connection ||\n      new Connection({\n        stream: c.stream,\n        ssl: this.connectionParameters.ssl,\n        keepAlive: c.keepAlive || false,\n        keepAliveInitialDelayMillis: c.keepAliveInitialDelayMillis || 0,\n        encoding: this.connectionParameters.client_encoding || 'utf8',\n      })\n    this._queryQueue = []\n    this.binary = c.binary || defaults.binary\n    this.processID = null\n    this.secretKey = null\n    this.ssl = this.connectionParameters.ssl || false\n    // As with Password, make SSL->Key (the private key) non-enumerable.\n    // It won't show up in stack traces\n    // or if the client is console.logged\n    if (this.ssl && this.ssl.key) {\n      Object.defineProperty(this.ssl, 'key', {\n        enumerable: false,\n      })\n    }\n\n    this._connectionTimeoutMillis = c.connectionTimeoutMillis || 0\n  }\n\n  get activeQuery() {\n    activeQueryDeprecationNotice()\n    return this._activeQuery\n  }\n\n  set activeQuery(val) {\n    activeQueryDeprecationNotice()\n    this._activeQuery = val\n  }\n\n  _getActiveQuery() {\n    return this._activeQuery\n  }\n\n  _errorAllQueries(err) {\n    const enqueueError = (query) => {\n      process.nextTick(() => {\n        query.handleError(err, this.connection)\n      })\n    }\n\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery) {\n      enqueueError(activeQuery)\n      this._activeQuery = null\n    }\n\n    this._queryQueue.forEach(enqueueError)\n    this._queryQueue.length = 0\n  }\n\n  _connect(callback) {\n    const self = this\n    const con = this.connection\n    this._connectionCallback = callback\n\n    if (this._connecting || this._connected) {\n      const err = new Error('Client has already been connected. You cannot reuse a client.')\n      process.nextTick(() => {\n        callback(err)\n      })\n      return\n    }\n    this._connecting = true\n\n    if (this._connectionTimeoutMillis > 0) {\n      this.connectionTimeoutHandle = setTimeout(() => {\n        con._ending = true\n        con.stream.destroy(new Error('timeout expired'))\n      }, this._connectionTimeoutMillis)\n\n      if (this.connectionTimeoutHandle.unref) {\n        this.connectionTimeoutHandle.unref()\n      }\n    }\n\n    if (this.host && this.host.indexOf('/') === 0) {\n      con.connect(this.host + '/.s.PGSQL.' + this.port)\n    } else {\n      con.connect(this.port, this.host)\n    }\n\n    // once connection is established send startup message\n    con.on('connect', function () {\n      if (self.ssl) {\n        con.requestSsl()\n      } else {\n        con.startup(self.getStartupConf())\n      }\n    })\n\n    con.on('sslconnect', function () {\n      con.startup(self.getStartupConf())\n    })\n\n    this._attachListeners(con)\n\n    con.once('end', () => {\n      const error = this._ending ? new Error('Connection terminated') : new Error('Connection terminated unexpectedly')\n\n      clearTimeout(this.connectionTimeoutHandle)\n      this._errorAllQueries(error)\n      this._ended = true\n\n      if (!this._ending) {\n        // if the connection is ended without us calling .end()\n        // on this client then we have an unexpected disconnection\n        // treat this as an error unless we've already emitted an error\n        // during connection.\n        if (this._connecting && !this._connectionError) {\n          if (this._connectionCallback) {\n            this._connectionCallback(error)\n          } else {\n            this._handleErrorEvent(error)\n          }\n        } else if (!this._connectionError) {\n          this._handleErrorEvent(error)\n        }\n      }\n\n      process.nextTick(() => {\n        this.emit('end')\n      })\n    })\n  }\n\n  connect(callback) {\n    if (callback) {\n      this._connect(callback)\n      return\n    }\n\n    return new this._Promise((resolve, reject) => {\n      this._connect((error) => {\n        if (error) {\n          reject(error)\n        } else {\n          resolve(this)\n        }\n      })\n    })\n  }\n\n  _attachListeners(con) {\n    // password request handling\n    con.on('authenticationCleartextPassword', this._handleAuthCleartextPassword.bind(this))\n    // password request handling\n    con.on('authenticationMD5Password', this._handleAuthMD5Password.bind(this))\n    // password request handling (SASL)\n    con.on('authenticationSASL', this._handleAuthSASL.bind(this))\n    con.on('authenticationSASLContinue', this._handleAuthSASLContinue.bind(this))\n    con.on('authenticationSASLFinal', this._handleAuthSASLFinal.bind(this))\n    con.on('backendKeyData', this._handleBackendKeyData.bind(this))\n    con.on('error', this._handleErrorEvent.bind(this))\n    con.on('errorMessage', this._handleErrorMessage.bind(this))\n    con.on('readyForQuery', this._handleReadyForQuery.bind(this))\n    con.on('notice', this._handleNotice.bind(this))\n    con.on('rowDescription', this._handleRowDescription.bind(this))\n    con.on('dataRow', this._handleDataRow.bind(this))\n    con.on('portalSuspended', this._handlePortalSuspended.bind(this))\n    con.on('emptyQuery', this._handleEmptyQuery.bind(this))\n    con.on('commandComplete', this._handleCommandComplete.bind(this))\n    con.on('parseComplete', this._handleParseComplete.bind(this))\n    con.on('copyInResponse', this._handleCopyInResponse.bind(this))\n    con.on('copyData', this._handleCopyData.bind(this))\n    con.on('notification', this._handleNotification.bind(this))\n  }\n\n  _getPassword(cb) {\n    const con = this.connection\n    if (typeof this.password === 'function') {\n      this._Promise\n        .resolve()\n        .then(() => this.password(this.connectionParameters))\n        .then((pass) => {\n          if (pass !== undefined) {\n            if (typeof pass !== 'string') {\n              con.emit('error', new TypeError('Password must be a string'))\n              return\n            }\n            this.connectionParameters.password = this.password = pass\n          } else {\n            this.connectionParameters.password = this.password = null\n          }\n          cb()\n        })\n        .catch((err) => {\n          con.emit('error', err)\n        })\n    } else if (this.password !== null) {\n      cb()\n    } else {\n      try {\n        const pgPass = require('pgpass')\n        pgPass(this.connectionParameters, (pass) => {\n          if (undefined !== pass) {\n            pgPassDeprecationNotice()\n            this.connectionParameters.password = this.password = pass\n          }\n          cb()\n        })\n      } catch (e) {\n        this.emit('error', e)\n      }\n    }\n  }\n\n  _handleAuthCleartextPassword(msg) {\n    this._getPassword(() => {\n      this.connection.password(this.password)\n    })\n  }\n\n  _handleAuthMD5Password(msg) {\n    this._getPassword(async () => {\n      try {\n        const hashedPassword = await crypto.postgresMd5PasswordHash(this.user, this.password, msg.salt)\n        this.connection.password(hashedPassword)\n      } catch (e) {\n        this.emit('error', e)\n      }\n    })\n  }\n\n  _handleAuthSASL(msg) {\n    this._getPassword(() => {\n      try {\n        this.saslSession = sasl.startSession(msg.mechanisms, this.enableChannelBinding && this.connection.stream)\n        this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism, this.saslSession.response)\n      } catch (err) {\n        this.connection.emit('error', err)\n      }\n    })\n  }\n\n  async _handleAuthSASLContinue(msg) {\n    try {\n      await sasl.continueSession(\n        this.saslSession,\n        this.password,\n        msg.data,\n        this.enableChannelBinding && this.connection.stream\n      )\n      this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)\n    } catch (err) {\n      this.connection.emit('error', err)\n    }\n  }\n\n  _handleAuthSASLFinal(msg) {\n    try {\n      sasl.finalizeSession(this.saslSession, msg.data)\n      this.saslSession = null\n    } catch (err) {\n      this.connection.emit('error', err)\n    }\n  }\n\n  _handleBackendKeyData(msg) {\n    this.processID = msg.processID\n    this.secretKey = msg.secretKey\n  }\n\n  _handleReadyForQuery(msg) {\n    if (this._connecting) {\n      this._connecting = false\n      this._connected = true\n      clearTimeout(this.connectionTimeoutHandle)\n\n      // process possible callback argument to Client#connect\n      if (this._connectionCallback) {\n        this._connectionCallback(null, this)\n        // remove callback for proper error handling\n        // after the connect event\n        this._connectionCallback = null\n      }\n      this.emit('connect')\n    }\n    const activeQuery = this._getActiveQuery()\n    this._activeQuery = null\n    this.readyForQuery = true\n    if (activeQuery) {\n      activeQuery.handleReadyForQuery(this.connection)\n    }\n    this._pulseQueryQueue()\n  }\n\n  // if we receive an error event or error message\n  // during the connection process we handle it here\n  _handleErrorWhileConnecting(err) {\n    if (this._connectionError) {\n      // TODO(bmc): this is swallowing errors - we shouldn't do this\n      return\n    }\n    this._connectionError = true\n    clearTimeout(this.connectionTimeoutHandle)\n    if (this._connectionCallback) {\n      return this._connectionCallback(err)\n    }\n    this.emit('error', err)\n  }\n\n  // if we're connected and we receive an error event from the connection\n  // this means the socket is dead - do a hard abort of all queries and emit\n  // the socket error on the client as well\n  _handleErrorEvent(err) {\n    if (this._connecting) {\n      return this._handleErrorWhileConnecting(err)\n    }\n    this._queryable = false\n    this._errorAllQueries(err)\n    this.emit('error', err)\n  }\n\n  // handle error messages from the postgres backend\n  _handleErrorMessage(msg) {\n    if (this._connecting) {\n      return this._handleErrorWhileConnecting(msg)\n    }\n    const activeQuery = this._getActiveQuery()\n\n    if (!activeQuery) {\n      this._handleErrorEvent(msg)\n      return\n    }\n\n    this._activeQuery = null\n    activeQuery.handleError(msg, this.connection)\n  }\n\n  _handleRowDescription(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected rowDescription message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // delegate rowDescription to active query\n    activeQuery.handleRowDescription(msg)\n  }\n\n  _handleDataRow(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected dataRow message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // delegate dataRow to active query\n    activeQuery.handleDataRow(msg)\n  }\n\n  _handlePortalSuspended(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected portalSuspended message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // delegate portalSuspended to active query\n    activeQuery.handlePortalSuspended(this.connection)\n  }\n\n  _handleEmptyQuery(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected emptyQuery message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // delegate emptyQuery to active query\n    activeQuery.handleEmptyQuery(this.connection)\n  }\n\n  _handleCommandComplete(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected commandComplete message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // delegate commandComplete to active query\n    activeQuery.handleCommandComplete(msg, this.connection)\n  }\n\n  _handleParseComplete() {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected parseComplete message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    // if a prepared statement has a name and properly parses\n    // we track that its already been executed so we don't parse\n    // it again on the same client\n    if (activeQuery.name) {\n      this.connection.parsedStatements[activeQuery.name] = activeQuery.text\n    }\n  }\n\n  _handleCopyInResponse(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected copyInResponse message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    activeQuery.handleCopyInResponse(this.connection)\n  }\n\n  _handleCopyData(msg) {\n    const activeQuery = this._getActiveQuery()\n    if (activeQuery == null) {\n      const error = new Error('Received unexpected copyData message from backend.')\n      this._handleErrorEvent(error)\n      return\n    }\n    activeQuery.handleCopyData(msg, this.connection)\n  }\n\n  _handleNotification(msg) {\n    this.emit('notification', msg)\n  }\n\n  _handleNotice(msg) {\n    this.emit('notice', msg)\n  }\n\n  getStartupConf() {\n    const params = this.connectionParameters\n\n    const data = {\n      user: params.user,\n      database: params.database,\n    }\n\n    const appName = params.application_name || params.fallback_application_name\n    if (appName) {\n      data.application_name = appName\n    }\n    if (params.replication) {\n      data.replication = '' + params.replication\n    }\n    if (params.statement_timeout) {\n      data.statement_timeout = String(parseInt(params.statement_timeout, 10))\n    }\n    if (params.lock_timeout) {\n      data.lock_timeout = String(parseInt(params.lock_timeout, 10))\n    }\n    if (params.idle_in_transaction_session_timeout) {\n      data.idle_in_transaction_session_timeout = String(parseInt(params.idle_in_transaction_session_timeout, 10))\n    }\n    if (params.options) {\n      data.options = params.options\n    }\n\n    return data\n  }\n\n  cancel(client, query) {\n    if (client.activeQuery === query) {\n      const con = this.connection\n\n      if (this.host && this.host.indexOf('/') === 0) {\n        con.connect(this.host + '/.s.PGSQL.' + this.port)\n      } else {\n        con.connect(this.port, this.host)\n      }\n\n      // once connection is established send cancel message\n      con.on('connect', function () {\n        con.cancel(client.processID, client.secretKey)\n      })\n    } else if (client._queryQueue.indexOf(query) !== -1) {\n      client._queryQueue.splice(client._queryQueue.indexOf(query), 1)\n    }\n  }\n\n  setTypeParser(oid, format, parseFn) {\n    return this._types.setTypeParser(oid, format, parseFn)\n  }\n\n  getTypeParser(oid, format) {\n    return this._types.getTypeParser(oid, format)\n  }\n\n  // escapeIdentifier and escapeLiteral moved to utility functions & exported\n  // on PG\n  // re-exported here for backwards compatibility\n  escapeIdentifier(str) {\n    return utils.escapeIdentifier(str)\n  }\n\n  escapeLiteral(str) {\n    return utils.escapeLiteral(str)\n  }\n\n  _pulseQueryQueue() {\n    if (this.readyForQuery === true) {\n      this._activeQuery = this._queryQueue.shift()\n      const activeQuery = this._getActiveQuery()\n      if (activeQuery) {\n        this.readyForQuery = false\n        this.hasExecuted = true\n\n        const queryError = activeQuery.submit(this.connection)\n        if (queryError) {\n          process.nextTick(() => {\n            activeQuery.handleError(queryError, this.connection)\n            this.readyForQuery = true\n            this._pulseQueryQueue()\n          })\n        }\n      } else if (this.hasExecuted) {\n        this._activeQuery = null\n        this.emit('drain')\n      }\n    }\n  }\n\n  query(config, values, callback) {\n    // can take in strings, config object or query object\n    let query\n    let result\n    let readTimeout\n    let readTimeoutTimer\n    let queryCallback\n\n    if (config === null || config === undefined) {\n      throw new TypeError('Client was passed a null or undefined query')\n    } else if (typeof config.submit === 'function') {\n      readTimeout = config.query_timeout || this.connectionParameters.query_timeout\n      result = query = config\n      if (!query.callback) {\n        if (typeof values === 'function') {\n          query.callback = values\n        } else if (callback) {\n          query.callback = callback\n        }\n      }\n    } else {\n      readTimeout = config.query_timeout || this.connectionParameters.query_timeout\n      query = new Query(config, values, callback)\n      if (!query.callback) {\n        result = new this._Promise((resolve, reject) => {\n          query.callback = (err, res) => (err ? reject(err) : resolve(res))\n        }).catch((err) => {\n          // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the\n          // application that created the query\n          Error.captureStackTrace(err)\n          throw err\n        })\n      }\n    }\n\n    if (readTimeout) {\n      queryCallback = query.callback || (() => {})\n\n      readTimeoutTimer = setTimeout(() => {\n        const error = new Error('Query read timeout')\n\n        process.nextTick(() => {\n          query.handleError(error, this.connection)\n        })\n\n        queryCallback(error)\n\n        // we already returned an error,\n        // just do nothing if query completes\n        query.callback = () => {}\n\n        // Remove from queue\n        const index = this._queryQueue.indexOf(query)\n        if (index > -1) {\n          this._queryQueue.splice(index, 1)\n        }\n\n        this._pulseQueryQueue()\n      }, readTimeout)\n\n      query.callback = (err, res) => {\n        clearTimeout(readTimeoutTimer)\n        queryCallback(err, res)\n      }\n    }\n\n    if (this.binary && !query.binary) {\n      query.binary = true\n    }\n\n    if (query._result && !query._result._types) {\n      query._result._types = this._types\n    }\n\n    if (!this._queryable) {\n      process.nextTick(() => {\n        query.handleError(new Error('Client has encountered a connection error and is not queryable'), this.connection)\n      })\n      return result\n    }\n\n    if (this._ending) {\n      process.nextTick(() => {\n        query.handleError(new Error('Client was closed and is not queryable'), this.connection)\n      })\n      return result\n    }\n\n    if (this._queryQueue.length > 0) {\n      queryQueueLengthDeprecationNotice()\n    }\n    this._queryQueue.push(query)\n    this._pulseQueryQueue()\n    return result\n  }\n\n  ref() {\n    this.connection.ref()\n  }\n\n  unref() {\n    this.connection.unref()\n  }\n\n  end(cb) {\n    this._ending = true\n\n    // if we have never connected, then end is a noop, callback immediately\n    if (!this.connection._connecting || this._ended) {\n      if (cb) {\n        cb()\n      } else {\n        return this._Promise.resolve()\n      }\n    }\n\n    if (this._getActiveQuery() || !this._queryable) {\n      // if we have an active query we need to force a disconnect\n      // on the socket - otherwise a hung query could block end forever\n      this.connection.stream.destroy()\n    } else {\n      this.connection.end()\n    }\n\n    if (cb) {\n      this.connection.once('end', cb)\n    } else {\n      return new this._Promise((resolve) => {\n        this.connection.once('end', resolve)\n      })\n    }\n  }\n  get queryQueue() {\n    queryQueueDeprecationNotice()\n    return this._queryQueue\n  }\n}\n\n// expose a Query constructor\nClient.Query = Query\n\nmodule.exports = Client\n", "'use strict'\nconst EventEmitter = require('events').EventEmitter\n\nconst NOOP = function () {}\n\nconst removeWhere = (list, predicate) => {\n  const i = list.findIndex(predicate)\n\n  return i === -1 ? undefined : list.splice(i, 1)[0]\n}\n\nclass IdleItem {\n  constructor(client, idleListener, timeoutId) {\n    this.client = client\n    this.idleListener = idleListener\n    this.timeoutId = timeoutId\n  }\n}\n\nclass PendingItem {\n  constructor(callback) {\n    this.callback = callback\n  }\n}\n\nfunction throwOnDoubleRelease() {\n  throw new Error('Release called on client which has already been released to the pool.')\n}\n\nfunction promisify(Promise, callback) {\n  if (callback) {\n    return { callback: callback, result: undefined }\n  }\n  let rej\n  let res\n  const cb = function (err, client) {\n    err ? rej(err) : res(client)\n  }\n  const result = new Promise(function (resolve, reject) {\n    res = resolve\n    rej = reject\n  }).catch((err) => {\n    // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the\n    // application that created the query\n    Error.captureStackTrace(err)\n    throw err\n  })\n  return { callback: cb, result: result }\n}\n\nfunction makeIdleListener(pool, client) {\n  return function idleListener(err) {\n    err.client = client\n\n    client.removeListener('error', idleListener)\n    client.on('error', () => {\n      pool.log('additional client error after disconnection due to error', err)\n    })\n    pool._remove(client)\n    // TODO - document that once the pool emits an error\n    // the client has already been closed & purged and is unusable\n    pool.emit('error', err, client)\n  }\n}\n\nclass Pool extends EventEmitter {\n  constructor(options, Client) {\n    super()\n    this.options = Object.assign({}, options)\n\n    if (options != null && 'password' in options) {\n      // \"hiding\" the password so it doesn't show up in stack traces\n      // or if the client is console.logged\n      Object.defineProperty(this.options, 'password', {\n        configurable: true,\n        enumerable: false,\n        writable: true,\n        value: options.password,\n      })\n    }\n    if (options != null && options.ssl && options.ssl.key) {\n      // \"hiding\" the ssl->key so it doesn't show up in stack traces\n      // or if the client is console.logged\n      Object.defineProperty(this.options.ssl, 'key', {\n        enumerable: false,\n      })\n    }\n\n    this.options.max = this.options.max || this.options.poolSize || 10\n    this.options.min = this.options.min || 0\n    this.options.maxUses = this.options.maxUses || Infinity\n    this.options.allowExitOnIdle = this.options.allowExitOnIdle || false\n    this.options.maxLifetimeSeconds = this.options.maxLifetimeSeconds || 0\n    this.log = this.options.log || function () {}\n    this.Client = this.options.Client || Client || require('pg').Client\n    this.Promise = this.options.Promise || global.Promise\n\n    if (typeof this.options.idleTimeoutMillis === 'undefined') {\n      this.options.idleTimeoutMillis = 10000\n    }\n\n    this._clients = []\n    this._idle = []\n    this._expired = new WeakSet()\n    this._pendingQueue = []\n    this._endCallback = undefined\n    this.ending = false\n    this.ended = false\n  }\n\n  _promiseTry(f) {\n    const Promise = this.Promise\n    if (typeof Promise.try === 'function') {\n      return Promise.try(f)\n    }\n    return new Promise((resolve) => resolve(f()))\n  }\n\n  _isFull() {\n    return this._clients.length >= this.options.max\n  }\n\n  _isAboveMin() {\n    return this._clients.length > this.options.min\n  }\n\n  _pulseQueue() {\n    this.log('pulse queue')\n    if (this.ended) {\n      this.log('pulse queue ended')\n      return\n    }\n    if (this.ending) {\n      this.log('pulse queue on ending')\n      if (this._idle.length) {\n        this._idle.slice().map((item) => {\n          this._remove(item.client)\n        })\n      }\n      if (!this._clients.length) {\n        this.ended = true\n        this._endCallback()\n      }\n      return\n    }\n\n    // if we don't have any waiting, do nothing\n    if (!this._pendingQueue.length) {\n      this.log('no queued requests')\n      return\n    }\n    // if we don't have any idle clients and we have no more room do nothing\n    if (!this._idle.length && this._isFull()) {\n      return\n    }\n    const pendingItem = this._pendingQueue.shift()\n    if (this._idle.length) {\n      const idleItem = this._idle.pop()\n      clearTimeout(idleItem.timeoutId)\n      const client = idleItem.client\n      client.ref && client.ref()\n      const idleListener = idleItem.idleListener\n\n      return this._acquireClient(client, pendingItem, idleListener, false)\n    }\n    if (!this._isFull()) {\n      return this.newClient(pendingItem)\n    }\n    throw new Error('unexpected condition')\n  }\n\n  _remove(client, callback) {\n    const removed = removeWhere(this._idle, (item) => item.client === client)\n\n    if (removed !== undefined) {\n      clearTimeout(removed.timeoutId)\n    }\n\n    this._clients = this._clients.filter((c) => c !== client)\n    const context = this\n    client.end(() => {\n      context.emit('remove', client)\n\n      if (typeof callback === 'function') {\n        callback()\n      }\n    })\n  }\n\n  connect(cb) {\n    if (this.ending) {\n      const err = new Error('Cannot use a pool after calling end on the pool')\n      return cb ? cb(err) : this.Promise.reject(err)\n    }\n\n    const response = promisify(this.Promise, cb)\n    const result = response.result\n\n    // if we don't have to connect a new client, don't do so\n    if (this._isFull() || this._idle.length) {\n      // if we have idle clients schedule a pulse immediately\n      if (this._idle.length) {\n        process.nextTick(() => this._pulseQueue())\n      }\n\n      if (!this.options.connectionTimeoutMillis) {\n        this._pendingQueue.push(new PendingItem(response.callback))\n        return result\n      }\n\n      const queueCallback = (err, res, done) => {\n        clearTimeout(tid)\n        response.callback(err, res, done)\n      }\n\n      const pendingItem = new PendingItem(queueCallback)\n\n      // set connection timeout on checking out an existing client\n      const tid = setTimeout(() => {\n        // remove the callback from pending waiters because\n        // we're going to call it with a timeout error\n        removeWhere(this._pendingQueue, (i) => i.callback === queueCallback)\n        pendingItem.timedOut = true\n        response.callback(new Error('timeout exceeded when trying to connect'))\n      }, this.options.connectionTimeoutMillis)\n\n      if (tid.unref) {\n        tid.unref()\n      }\n\n      this._pendingQueue.push(pendingItem)\n      return result\n    }\n\n    this.newClient(new PendingItem(response.callback))\n\n    return result\n  }\n\n  newClient(pendingItem) {\n    const client = new this.Client(this.options)\n    this._clients.push(client)\n    const idleListener = makeIdleListener(this, client)\n\n    this.log('checking client timeout')\n\n    // connection timeout logic\n    let tid\n    let timeoutHit = false\n    if (this.options.connectionTimeoutMillis) {\n      tid = setTimeout(() => {\n        if (client.connection) {\n          this.log('ending client due to timeout')\n          timeoutHit = true\n          client.connection.stream.destroy()\n        } else if (!client.isConnected()) {\n          this.log('ending client due to timeout')\n          timeoutHit = true\n          // force kill the node driver, and let libpq do its teardown\n          client.end()\n        }\n      }, this.options.connectionTimeoutMillis)\n    }\n\n    this.log('connecting new client')\n    client.connect((err) => {\n      if (tid) {\n        clearTimeout(tid)\n      }\n      client.on('error', idleListener)\n      if (err) {\n        this.log('client failed to connect', err)\n        // remove the dead client from our list of clients\n        this._clients = this._clients.filter((c) => c !== client)\n        if (timeoutHit) {\n          err = new Error('Connection terminated due to connection timeout', { cause: err })\n        }\n\n        // this client won\u2019t be released, so move on immediately\n        this._pulseQueue()\n\n        if (!pendingItem.timedOut) {\n          pendingItem.callback(err, undefined, NOOP)\n        }\n      } else {\n        this.log('new client connected')\n\n        if (this.options.onConnect) {\n          this._promiseTry(() => this.options.onConnect(client)).then(\n            () => {\n              this._afterConnect(client, pendingItem, idleListener)\n            },\n            (hookErr) => {\n              this._clients = this._clients.filter((c) => c !== client)\n              client.end(() => {\n                this._pulseQueue()\n                if (!pendingItem.timedOut) {\n                  pendingItem.callback(hookErr, undefined, NOOP)\n                }\n              })\n            }\n          )\n          return\n        }\n\n        return this._afterConnect(client, pendingItem, idleListener)\n      }\n    })\n  }\n\n  _afterConnect(client, pendingItem, idleListener) {\n    if (this.options.maxLifetimeSeconds !== 0) {\n      const maxLifetimeTimeout = setTimeout(() => {\n        this.log('ending client due to expired lifetime')\n        this._expired.add(client)\n        const idleIndex = this._idle.findIndex((idleItem) => idleItem.client === client)\n        if (idleIndex !== -1) {\n          this._acquireClient(\n            client,\n            new PendingItem((err, client, clientRelease) => clientRelease()),\n            idleListener,\n            false\n          )\n        }\n      }, this.options.maxLifetimeSeconds * 1000)\n\n      maxLifetimeTimeout.unref()\n      client.once('end', () => clearTimeout(maxLifetimeTimeout))\n    }\n\n    return this._acquireClient(client, pendingItem, idleListener, true)\n  }\n\n  // acquire a client for a pending work item\n  _acquireClient(client, pendingItem, idleListener, isNew) {\n    if (isNew) {\n      this.emit('connect', client)\n    }\n\n    this.emit('acquire', client)\n\n    client.release = this._releaseOnce(client, idleListener)\n\n    client.removeListener('error', idleListener)\n\n    if (!pendingItem.timedOut) {\n      if (isNew && this.options.verify) {\n        this.options.verify(client, (err) => {\n          if (err) {\n            client.release(err)\n            return pendingItem.callback(err, undefined, NOOP)\n          }\n\n          pendingItem.callback(undefined, client, client.release)\n        })\n      } else {\n        pendingItem.callback(undefined, client, client.release)\n      }\n    } else {\n      if (isNew && this.options.verify) {\n        this.options.verify(client, client.release)\n      } else {\n        client.release()\n      }\n    }\n  }\n\n  // returns a function that wraps _release and throws if called more than once\n  _releaseOnce(client, idleListener) {\n    let released = false\n\n    return (err) => {\n      if (released) {\n        throwOnDoubleRelease()\n      }\n\n      released = true\n      this._release(client, idleListener, err)\n    }\n  }\n\n  // release a client back to the poll, include an error\n  // to remove it from the pool\n  _release(client, idleListener, err) {\n    client.on('error', idleListener)\n\n    client._poolUseCount = (client._poolUseCount || 0) + 1\n\n    this.emit('release', err, client)\n\n    // TODO(bmc): expose a proper, public interface _queryable and _ending\n    if (err || this.ending || !client._queryable || client._ending || client._poolUseCount >= this.options.maxUses) {\n      if (client._poolUseCount >= this.options.maxUses) {\n        this.log('remove expended client')\n      }\n\n      return this._remove(client, this._pulseQueue.bind(this))\n    }\n\n    const isExpired = this._expired.has(client)\n    if (isExpired) {\n      this.log('remove expired client')\n      this._expired.delete(client)\n      return this._remove(client, this._pulseQueue.bind(this))\n    }\n\n    // idle timeout\n    let tid\n    if (this.options.idleTimeoutMillis && this._isAboveMin()) {\n      tid = setTimeout(() => {\n        if (this._isAboveMin()) {\n          this.log('remove idle client')\n          this._remove(client, this._pulseQueue.bind(this))\n        }\n      }, this.options.idleTimeoutMillis)\n\n      if (this.options.allowExitOnIdle) {\n        // allow Node to exit if this is all that's left\n        tid.unref()\n      }\n    }\n\n    if (this.options.allowExitOnIdle) {\n      client.unref()\n    }\n\n    this._idle.push(new IdleItem(client, idleListener, tid))\n    this._pulseQueue()\n  }\n\n  query(text, values, cb) {\n    // guard clause against passing a function as the first parameter\n    if (typeof text === 'function') {\n      const response = promisify(this.Promise, text)\n      setImmediate(function () {\n        return response.callback(new Error('Passing a function as the first parameter to pool.query is not supported'))\n      })\n      return response.result\n    }\n\n    // allow plain text query without values\n    if (typeof values === 'function') {\n      cb = values\n      values = undefined\n    }\n    const response = promisify(this.Promise, cb)\n    cb = response.callback\n\n    this.connect((err, client) => {\n      if (err) {\n        return cb(err)\n      }\n\n      let clientReleased = false\n      const onError = (err) => {\n        if (clientReleased) {\n          return\n        }\n        clientReleased = true\n        client.release(err)\n        cb(err)\n      }\n\n      client.once('error', onError)\n      this.log('dispatching query')\n      try {\n        client.query(text, values, (err, res) => {\n          this.log('query dispatched')\n          client.removeListener('error', onError)\n          if (clientReleased) {\n            return\n          }\n          clientReleased = true\n          client.release(err)\n          if (err) {\n            return cb(err)\n          }\n          return cb(undefined, res)\n        })\n      } catch (err) {\n        client.release(err)\n        return cb(err)\n      }\n    })\n    return response.result\n  }\n\n  end(cb) {\n    this.log('ending')\n    if (this.ending) {\n      const err = new Error('Called end on pool more than once')\n      return cb ? cb(err) : this.Promise.reject(err)\n    }\n    this.ending = true\n    const promised = promisify(this.Promise, cb)\n    this._endCallback = promised.callback\n    this._pulseQueue()\n    return promised.result\n  }\n\n  get waitingCount() {\n    return this._pendingQueue.length\n  }\n\n  get idleCount() {\n    return this._idle.length\n  }\n\n  get expiredCount() {\n    return this._clients.reduce((acc, client) => acc + (this._expired.has(client) ? 1 : 0), 0)\n  }\n\n  get totalCount() {\n    return this._clients.length\n  }\n}\nmodule.exports = Pool\n", "'use strict'\n\nconst EventEmitter = require('events').EventEmitter\nconst util = require('util')\nconst utils = require('../utils')\n\nconst NativeQuery = (module.exports = function (config, values, callback) {\n  EventEmitter.call(this)\n  config = utils.normalizeQueryConfig(config, values, callback)\n  this.text = config.text\n  this.values = config.values\n  this.name = config.name\n  this.queryMode = config.queryMode\n  this.callback = config.callback\n  this.state = 'new'\n  this._arrayMode = config.rowMode === 'array'\n\n  // if the 'row' event is listened for\n  // then emit them as they come in\n  // without setting singleRowMode to true\n  // this has almost no meaning because libpq\n  // reads all rows into memory before returning any\n  this._emitRowEvents = false\n  this.on(\n    'newListener',\n    function (event) {\n      if (event === 'row') this._emitRowEvents = true\n    }.bind(this)\n  )\n})\n\nutil.inherits(NativeQuery, EventEmitter)\n\nconst errorFieldMap = {\n  sqlState: 'code',\n  statementPosition: 'position',\n  messagePrimary: 'message',\n  context: 'where',\n  schemaName: 'schema',\n  tableName: 'table',\n  columnName: 'column',\n  dataTypeName: 'dataType',\n  constraintName: 'constraint',\n  sourceFile: 'file',\n  sourceLine: 'line',\n  sourceFunction: 'routine',\n}\n\nNativeQuery.prototype.handleError = function (err) {\n  // copy pq error fields into the error object\n  const fields = this.native.pq.resultErrorFields()\n  if (fields) {\n    for (const key in fields) {\n      const normalizedFieldName = errorFieldMap[key] || key\n      err[normalizedFieldName] = fields[key]\n    }\n  }\n  if (this.callback) {\n    this.callback(err)\n  } else {\n    this.emit('error', err)\n  }\n  this.state = 'error'\n}\n\nNativeQuery.prototype.then = function (onSuccess, onFailure) {\n  return this._getPromise().then(onSuccess, onFailure)\n}\n\nNativeQuery.prototype.catch = function (callback) {\n  return this._getPromise().catch(callback)\n}\n\nNativeQuery.prototype._getPromise = function () {\n  if (this._promise) return this._promise\n  this._promise = new Promise(\n    function (resolve, reject) {\n      this._once('end', resolve)\n      this._once('error', reject)\n    }.bind(this)\n  )\n  return this._promise\n}\n\nNativeQuery.prototype.submit = function (client) {\n  this.state = 'running'\n  const self = this\n  this.native = client.native\n  client.native.arrayMode = this._arrayMode\n\n  let after = function (err, rows, results) {\n    client.native.arrayMode = false\n    setImmediate(function () {\n      self.emit('_done')\n    })\n\n    // handle possible query error\n    if (err) {\n      return self.handleError(err)\n    }\n\n    // emit row events for each row in the result\n    if (self._emitRowEvents) {\n      if (results.length > 1) {\n        rows.forEach((rowOfRows, i) => {\n          rowOfRows.forEach((row) => {\n            self.emit('row', row, results[i])\n          })\n        })\n      } else {\n        rows.forEach(function (row) {\n          self.emit('row', row, results)\n        })\n      }\n    }\n\n    // handle successful result\n    self.state = 'end'\n    self.emit('end', results)\n    if (self.callback) {\n      self.callback(null, results)\n    }\n  }\n\n  if (process.domain) {\n    after = process.domain.bind(after)\n  }\n\n  // named query\n  if (this.name) {\n    if (this.name.length > 63) {\n      console.error('Warning! Postgres only supports 63 characters for query names.')\n      console.error('You supplied %s (%s)', this.name, this.name.length)\n      console.error('This can cause conflicts and silent errors executing queries')\n    }\n    const values = (this.values || []).map(utils.prepareValue)\n\n    // check if the client has already executed this named query\n    // if so...just execute it again - skip the planning phase\n    if (client.namedQueries[this.name]) {\n      if (this.text && client.namedQueries[this.name] !== this.text) {\n        const err = new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)\n        return after(err)\n      }\n      return client.native.execute(this.name, values, after)\n    }\n    // plan the named query the first time, then execute it\n    return client.native.prepare(this.name, this.text, values.length, function (err) {\n      if (err) return after(err)\n      client.namedQueries[self.name] = self.text\n      return self.native.execute(self.name, values, after)\n    })\n  } else if (this.values) {\n    if (!Array.isArray(this.values)) {\n      const err = new Error('Query values must be an array')\n      return after(err)\n    }\n    const vals = this.values.map(utils.prepareValue)\n    client.native.query(this.text, vals, after)\n  } else if (this.queryMode === 'extended') {\n    client.native.query(this.text, [], after)\n  } else {\n    client.native.query(this.text, after)\n  }\n}\n", "const nodeUtils = require('util')\n// eslint-disable-next-line\nvar Native\n// eslint-disable-next-line no-useless-catch\ntry {\n  // Wrap this `require()` in a try-catch to avoid upstream bundlers from complaining that this might not be available since it is an optional import\n  Native = require('pg-native')\n} catch (e) {\n  throw e\n}\nconst TypeOverrides = require('../type-overrides')\nconst EventEmitter = require('events').EventEmitter\nconst util = require('util')\nconst ConnectionParameters = require('../connection-parameters')\n\nconst NativeQuery = require('./query')\n\nconst queryQueueLengthDeprecationNotice = nodeUtils.deprecate(\n  () => {},\n  'Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.'\n)\n\nconst Client = (module.exports = function (config) {\n  EventEmitter.call(this)\n  config = config || {}\n\n  this._Promise = config.Promise || global.Promise\n  this._types = new TypeOverrides(config.types)\n\n  this.native = new Native({\n    types: this._types,\n  })\n\n  this._queryQueue = []\n  this._ending = false\n  this._connecting = false\n  this._connected = false\n  this._queryable = true\n\n  // keep these on the object for legacy reasons\n  // for the time being. TODO: deprecate all this jazz\n  const cp = (this.connectionParameters = new ConnectionParameters(config))\n  if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString\n  this.user = cp.user\n\n  // \"hiding\" the password so it doesn't show up in stack traces\n  // or if the client is console.logged\n  Object.defineProperty(this, 'password', {\n    configurable: true,\n    enumerable: false,\n    writable: true,\n    value: cp.password,\n  })\n  this.database = cp.database\n  this.host = cp.host\n  this.port = cp.port\n\n  // a hash to hold named queries\n  this.namedQueries = {}\n})\n\nClient.Query = NativeQuery\n\nutil.inherits(Client, EventEmitter)\n\nClient.prototype._errorAllQueries = function (err) {\n  const enqueueError = (query) => {\n    process.nextTick(() => {\n      query.native = this.native\n      query.handleError(err)\n    })\n  }\n\n  if (this._hasActiveQuery()) {\n    enqueueError(this._activeQuery)\n    this._activeQuery = null\n  }\n\n  this._queryQueue.forEach(enqueueError)\n  this._queryQueue.length = 0\n}\n\n// connect to the backend\n// pass an optional callback to be called once connected\n// or with an error if there was a connection error\nClient.prototype._connect = function (cb) {\n  const self = this\n\n  if (this._connecting) {\n    process.nextTick(() => cb(new Error('Client has already been connected. You cannot reuse a client.')))\n    return\n  }\n\n  this._connecting = true\n\n  this.connectionParameters.getLibpqConnectionString(function (err, conString) {\n    if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString\n    if (err) return cb(err)\n    self.native.connect(conString, function (err) {\n      if (err) {\n        self.native.end()\n        return cb(err)\n      }\n\n      // set internal states to connected\n      self._connected = true\n\n      // handle connection errors from the native layer\n      self.native.on('error', function (err) {\n        self._queryable = false\n        self._errorAllQueries(err)\n        self.emit('error', err)\n      })\n\n      self.native.on('notification', function (msg) {\n        self.emit('notification', {\n          channel: msg.relname,\n          payload: msg.extra,\n        })\n      })\n\n      // signal we are connected now\n      self.emit('connect')\n      self._pulseQueryQueue(true)\n\n      cb(null, this)\n    })\n  })\n}\n\nClient.prototype.connect = function (callback) {\n  if (callback) {\n    this._connect(callback)\n    return\n  }\n\n  return new this._Promise((resolve, reject) => {\n    this._connect((error) => {\n      if (error) {\n        reject(error)\n      } else {\n        resolve(this)\n      }\n    })\n  })\n}\n\n// send a query to the server\n// this method is highly overloaded to take\n// 1) string query, optional array of parameters, optional function callback\n// 2) object query with {\n//    string query\n//    optional array values,\n//    optional function callback instead of as a separate parameter\n//    optional string name to name & cache the query plan\n//    optional string rowMode = 'array' for an array of results\n//  }\nClient.prototype.query = function (config, values, callback) {\n  let query\n  let result\n  let readTimeout\n  let readTimeoutTimer\n  let queryCallback\n\n  if (config === null || config === undefined) {\n    throw new TypeError('Client was passed a null or undefined query')\n  } else if (typeof config.submit === 'function') {\n    readTimeout = config.query_timeout || this.connectionParameters.query_timeout\n    result = query = config\n    // accept query(new Query(...), (err, res) => { }) style\n    if (typeof values === 'function') {\n      config.callback = values\n    }\n  } else {\n    readTimeout = config.query_timeout || this.connectionParameters.query_timeout\n    query = new NativeQuery(config, values, callback)\n    if (!query.callback) {\n      let resolveOut, rejectOut\n      result = new this._Promise((resolve, reject) => {\n        resolveOut = resolve\n        rejectOut = reject\n      }).catch((err) => {\n        Error.captureStackTrace(err)\n        throw err\n      })\n      query.callback = (err, res) => (err ? rejectOut(err) : resolveOut(res))\n    }\n  }\n\n  if (readTimeout) {\n    queryCallback = query.callback || (() => {})\n\n    readTimeoutTimer = setTimeout(() => {\n      const error = new Error('Query read timeout')\n\n      process.nextTick(() => {\n        query.handleError(error, this.connection)\n      })\n\n      queryCallback(error)\n\n      // we already returned an error,\n      // just do nothing if query completes\n      query.callback = () => {}\n\n      // Remove from queue\n      const index = this._queryQueue.indexOf(query)\n      if (index > -1) {\n        this._queryQueue.splice(index, 1)\n      }\n\n      this._pulseQueryQueue()\n    }, readTimeout)\n\n    query.callback = (err, res) => {\n      clearTimeout(readTimeoutTimer)\n      queryCallback(err, res)\n    }\n  }\n\n  if (!this._queryable) {\n    query.native = this.native\n    process.nextTick(() => {\n      query.handleError(new Error('Client has encountered a connection error and is not queryable'))\n    })\n    return result\n  }\n\n  if (this._ending) {\n    query.native = this.native\n    process.nextTick(() => {\n      query.handleError(new Error('Client was closed and is not queryable'))\n    })\n    return result\n  }\n\n  if (this._queryQueue.length > 0) {\n    queryQueueLengthDeprecationNotice()\n  }\n\n  this._queryQueue.push(query)\n  this._pulseQueryQueue()\n  return result\n}\n\n// disconnect from the backend server\nClient.prototype.end = function (cb) {\n  const self = this\n\n  this._ending = true\n\n  if (!this._connected) {\n    this.once('connect', this.end.bind(this, cb))\n  }\n  let result\n  if (!cb) {\n    result = new this._Promise(function (resolve, reject) {\n      cb = (err) => (err ? reject(err) : resolve())\n    })\n  }\n\n  this.native.end(function () {\n    self._connected = false\n\n    self._errorAllQueries(new Error('Connection terminated'))\n\n    process.nextTick(() => {\n      self.emit('end')\n      if (cb) cb()\n    })\n  })\n  return result\n}\n\nClient.prototype._hasActiveQuery = function () {\n  return this._activeQuery && this._activeQuery.state !== 'error' && this._activeQuery.state !== 'end'\n}\n\nClient.prototype._pulseQueryQueue = function (initialConnection) {\n  if (!this._connected) {\n    return\n  }\n  if (this._hasActiveQuery()) {\n    return\n  }\n  const query = this._queryQueue.shift()\n  if (!query) {\n    if (!initialConnection) {\n      this.emit('drain')\n    }\n    return\n  }\n  this._activeQuery = query\n  query.submit(this)\n  const self = this\n  query.once('_done', function () {\n    self._pulseQueryQueue()\n  })\n}\n\n// attempt to cancel an in-progress query\nClient.prototype.cancel = function (query) {\n  if (this._activeQuery === query) {\n    this.native.cancel(function () {})\n  } else if (this._queryQueue.indexOf(query) !== -1) {\n    this._queryQueue.splice(this._queryQueue.indexOf(query), 1)\n  }\n}\n\nClient.prototype.ref = function () {}\nClient.prototype.unref = function () {}\n\nClient.prototype.setTypeParser = function (oid, format, parseFn) {\n  return this._types.setTypeParser(oid, format, parseFn)\n}\n\nClient.prototype.getTypeParser = function (oid, format) {\n  return this._types.getTypeParser(oid, format)\n}\n\nClient.prototype.isConnected = function () {\n  return this._connected\n}\n", "'use strict'\nmodule.exports = require('./client')\n", "'use strict'\n\nconst Client = require('./client')\nconst defaults = require('./defaults')\nconst Connection = require('./connection')\nconst Result = require('./result')\nconst utils = require('./utils')\nconst Pool = require('pg-pool')\nconst TypeOverrides = require('./type-overrides')\nconst { DatabaseError } = require('pg-protocol')\nconst { escapeIdentifier, escapeLiteral } = require('./utils')\n\nconst poolFactory = (Client) => {\n  return class BoundPool extends Pool {\n    constructor(options) {\n      super(options, Client)\n    }\n  }\n}\n\nconst PG = function (clientConstructor) {\n  this.defaults = defaults\n  this.Client = clientConstructor\n  this.Query = this.Client.Query\n  this.Pool = poolFactory(this.Client)\n  this._pools = []\n  this.Connection = Connection\n  this.types = require('pg-types')\n  this.DatabaseError = DatabaseError\n  this.TypeOverrides = TypeOverrides\n  this.escapeIdentifier = escapeIdentifier\n  this.escapeLiteral = escapeLiteral\n  this.Result = Result\n  this.utils = utils\n}\n\nlet clientConstructor = Client\n\nlet forceNative = false\ntry {\n  forceNative = !!process.env.NODE_PG_FORCE_NATIVE\n} catch {\n  // ignore, e.g., Deno without --allow-env\n}\n\nif (forceNative) {\n  clientConstructor = require('./native')\n}\n\nmodule.exports = new PG(clientConstructor)\n\n// lazy require native module...the native module may not have installed\nObject.defineProperty(module.exports, 'native', {\n  configurable: true,\n  enumerable: false,\n  get() {\n    let native = null\n    try {\n      native = new PG(require('./native'))\n    } catch (err) {\n      if (err.code !== 'MODULE_NOT_FOUND') {\n        throw err\n      }\n    }\n\n    // overwrite module.exports.native so that getter is never called again\n    Object.defineProperty(module.exports, 'native', {\n      value: native,\n    })\n\n    return native\n  },\n})\n", "// @ts-check\n/// <reference types=\"node\" />\n\n'use strict';\n\nconst DEFAULT_PRUNE_INTERVAL_IN_SECONDS = 60 * 15;\nconst ONE_DAY = 86400;\n\n/** @typedef {*} ExpressSession */\n/** @typedef {*} ExpressSessionStore */\n\n/**\n * Inspired by util.callbackify()\n *\n * Never throws, even if callback is left out, as that's how it was\n *\n * @template T\n * @param {Promise<T>} value\n * @param {((err: Error|null, result: T) => void)|undefined} cb\n * @returns {void}\n */\nconst callbackifyPromiseResolution = (value, cb) => {\n  if (!cb) {\n    // eslint-disable-next-line promise/prefer-await-to-then\n    value.catch(() => {});\n  } else {\n    // eslint-disable-next-line promise/catch-or-return, promise/prefer-await-to-then\n    value.then(\n      // eslint-disable-next-line unicorn/no-null\n      (ret) => process.nextTick(cb, null, ret),\n      (err) => process.nextTick(cb, err || new Error('Promise was rejected with falsy value'))\n    );\n  }\n};\n\n/** @returns {number} */\nconst currentTimestamp = () => Math.ceil(Date.now() / 1000);\n\n/**\n * @see https://www.postgresql.org/docs/9.5/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS\n * @param {string} value\n * @returns {string}\n */\nconst escapePgIdentifier = (value) => value.replaceAll('\"', '\"\"');\n\n/** @typedef {(err: Error|null) => void} SimpleErrorCallback */\n\n/** @typedef {{ cookie: { maxAge?: number, expire?: number, [property: string]: any }, [property: string]: any }} SessionObject */\n\n/** @typedef {(delay: number) => number} PGStorePruneDelayRandomizer */\n/** @typedef {Object<string, any>} PGStoreQueryResult */\n/** @typedef {(err: Error|null, firstRow?: PGStoreQueryResult) => void} PGStoreQueryCallback */\n\n/**\n * @typedef PGStoreOptions\n * @property {string} [schemaName]\n * @property {string} [tableName]\n * @property {boolean} [createTableIfMissing]\n * @property {number} [ttl]\n * @property {boolean} [disableTouch]\n * @property {typeof console.error} [errorLog]\n * @property {import('pg').Pool} [pool]\n * @property {*} [pgPromise]\n * @property {string} [conString]\n * @property {*} [conObject]\n * @property {false|number} [pruneSessionInterval]\n * @property {false|PGStorePruneDelayRandomizer} [pruneSessionRandomizedInterval]\n */\n\n/**\n * @param {ExpressSession} session\n * @returns {ExpressSessionStore}\n */\nmodule.exports = function connectPgSimple (session) {\n  /** @type {ExpressSessionStore} */\n  const Store = session.Store ||\n    // @ts-ignore\n    session.session.Store;\n\n  class PGStore extends Store {\n    /** @type {boolean} */\n    #createTableIfMissing;\n    /** @type {boolean} */\n    #disableTouch;\n    /** @type {typeof console.error} */\n    #errorLog;\n    /** @type {boolean} */\n    #ownsPg;\n    /** @type {*} */\n    #pgPromise;\n    /** @type {import('pg').Pool|undefined} */\n    #pool;\n    /** @type {false|number} */\n    #pruneSessionInterval;\n    /** @type {PGStorePruneDelayRandomizer|undefined} */\n    #pruneSessionRandomizedInterval;\n    /** @type {string|undefined} */\n    #schemaName;\n    /** @type {Promise<void>|undefined} */\n    #tableCreationPromise;\n    /** @type {string} */\n    #tableName;\n\n    /** @param {PGStoreOptions} options */\n    constructor (options = {}) {\n      super(options);\n\n      this.#schemaName = options.schemaName ? escapePgIdentifier(options.schemaName) : undefined;\n      this.#tableName = options.tableName ? escapePgIdentifier(options.tableName) : 'session';\n\n      if (!this.#schemaName && this.#tableName.includes('\".\"')) {\n        // eslint-disable-next-line no-console\n        console.warn('DEPRECATION WARNING: Schema should be provided through its dedicated \"schemaName\" option rather than through \"tableName\"');\n        this.#tableName = this.#tableName.replace(/^([^\"]+)\"\"\\.\"\"([^\"]+)$/, '$1\".\"$2');\n      }\n\n      this.#createTableIfMissing = !!options.createTableIfMissing;\n      this.#tableCreationPromise = undefined;\n\n      this.ttl = options.ttl; // TODO: Make this private as well, some bug in at least TS 4.6.4 stops that\n      this.#disableTouch = !!options.disableTouch;\n\n      // eslint-disable-next-line no-console\n      this.#errorLog = options.errorLog || console.error.bind(console);\n\n      if (options.pool !== undefined) {\n        this.#pool = options.pool;\n        this.#ownsPg = false;\n      } else if (options.pgPromise !== undefined) {\n        if (typeof options.pgPromise.any !== 'function') {\n          throw new TypeError('`pgPromise` config must point to an existing and configured instance of pg-promise pointing at your database');\n        }\n        this.#pgPromise = options.pgPromise;\n        this.#ownsPg = false;\n      } else {\n        // eslint-disable-next-line n/no-process-env\n        const conString = options.conString || process.env['DATABASE_URL'];\n        let conObject = options.conObject;\n\n        if (!conObject) {\n          conObject = {};\n\n          if (conString) {\n            conObject.connectionString = conString;\n          }\n        }\n        this.#pool = new (require('pg')).Pool(conObject);\n        this.#pool.on('error', err => {\n          this.#errorLog('PG Pool error:', err);\n        });\n        this.#ownsPg = true;\n      }\n\n      if (options.pruneSessionInterval === false) {\n        this.#pruneSessionInterval = false;\n      } else {\n        this.#pruneSessionInterval = (options.pruneSessionInterval || DEFAULT_PRUNE_INTERVAL_IN_SECONDS) * 1000;\n        if (options.pruneSessionRandomizedInterval !== false) {\n          this.#pruneSessionRandomizedInterval = (\n            options.pruneSessionRandomizedInterval ||\n            // Results in at least 50% of the specified interval and at most 150%. Makes it so that multiple instances doesn't all prune at the same time.\n            (delay => Math.ceil(delay / 2 + delay * Math.random()))\n          );\n        }\n      }\n    }\n\n    /**\n     * Ensures the session store table exists, creating it if its missing\n     *\n     * @access private\n     * @returns {Promise<void>}\n     */\n    async _rawEnsureSessionStoreTable () {\n      const quotedTable = this.quotedTable();\n\n      const res = await this._asyncQuery('SELECT to_regclass($1::text)', [quotedTable], true);\n\n      if (res && res['to_regclass'] === null) {\n        const pathModule = require('node:path');\n        const fs = require('node:fs').promises;\n\n        const tableDefString = await fs.readFile(pathModule.resolve(__dirname, './table.sql'), 'utf8');\n        const tableDefModified = tableDefString.replaceAll('\"session\"', quotedTable);\n\n        await this._asyncQuery(tableDefModified, [], true);\n      }\n    }\n\n    /**\n     * Ensures the session store table exists, creating it if its missing\n     *\n     * @access private\n     * @param {boolean|undefined} noTableCreation\n     * @returns {Promise<void>}\n     */\n    async _ensureSessionStoreTable (noTableCreation) {\n      if (noTableCreation || this.#createTableIfMissing === false) return;\n\n      if (!this.#tableCreationPromise) {\n        this.#tableCreationPromise = this._rawEnsureSessionStoreTable();\n      }\n\n      return this.#tableCreationPromise;\n    }\n\n    /**\n     * Closes the session store\n     *\n     * Currently only stops the automatic pruning, if any, from continuing\n     *\n     * @access public\n     * @returns {Promise<void>}\n     */\n    async close () {\n      this.closed = true;\n\n      this.#clearPruneTimer();\n\n      if (this.#ownsPg && this.#pool) {\n        await this.#pool.end();\n      }\n    }\n\n    #initPruneTimer () {\n      if (this.#pruneSessionInterval && !this.closed && !this.pruneTimer) {\n        const delay = this.#pruneSessionRandomizedInterval\n          ? this.#pruneSessionRandomizedInterval(this.#pruneSessionInterval)\n          : this.#pruneSessionInterval;\n\n        this.pruneTimer = setTimeout(\n          () => { this.pruneSessions(); },\n          delay\n        );\n        this.pruneTimer.unref();\n      }\n    }\n\n    #clearPruneTimer () {\n      if (this.pruneTimer) {\n        clearTimeout(this.pruneTimer);\n        this.pruneTimer = undefined;\n      }\n    }\n\n    /**\n     * Does garbage collection for expired session in the database\n     *\n     * @param {SimpleErrorCallback} [fn] - standard Node.js callback called on completion\n     * @returns {void}\n     * @access public\n     */\n    pruneSessions (fn) {\n      this.query('DELETE FROM ' + this.quotedTable() + ' WHERE expire < to_timestamp($1)', [currentTimestamp()], err => {\n        if (fn && typeof fn === 'function') {\n          return fn(err);\n        }\n\n        if (err) {\n          this.#errorLog('Failed to prune sessions:', err);\n        }\n\n        this.#clearPruneTimer();\n        this.#initPruneTimer();\n      });\n    }\n\n    /**\n     * Get the quoted table.\n     *\n     * @returns {string} the quoted schema + table for use in queries\n     * @access private\n     */\n    quotedTable () {\n      let result = '\"' + this.#tableName + '\"';\n\n      if (this.#schemaName) {\n        result = '\"' + this.#schemaName + '\".' + result;\n      }\n\n      return result;\n    }\n\n    /**\n     * Figure out when a session should expire\n     *\n     * @param {SessionObject} sess \u2013 the session object to store\n     * @returns {number} the unix timestamp, in seconds\n     * @access private\n     */\n    #getExpireTime (sess) {\n      let expire;\n\n      if (sess && sess.cookie && sess.cookie['expires']) {\n        const expireDate = new Date(sess.cookie['expires']);\n        expire = Math.ceil(expireDate.valueOf() / 1000);\n      } else {\n        const ttl = this.ttl || ONE_DAY;\n        expire = Math.ceil(Date.now() / 1000 + ttl);\n      }\n\n      return expire;\n    }\n\n    /**\n     * Query the database.\n     *\n     * @param {string} query - the database query to perform\n     * @param {any[]} [params] - the parameters of the query\n     * @param {boolean} [noTableCreation]\n     * @returns {Promise<PGStoreQueryResult|undefined>}\n     * @access private\n     */\n    async _asyncQuery (query, params, noTableCreation) {\n      await this._ensureSessionStoreTable(noTableCreation);\n\n      if (this.#pgPromise) {\n        const res = await this.#pgPromise.any(query, params);\n        return res && res[0] ? res[0] : undefined;\n      } else {\n        if (!this.#pool) throw new Error('Pool missing for some reason');\n        const res = await this.#pool.query(query, params);\n        return res && res.rows && res.rows[0] ? res.rows[0] : undefined;\n      }\n    }\n\n    /**\n     * Query the database.\n     *\n     * @param {string} query - the database query to perform\n     * @param {any[]|PGStoreQueryCallback} [params] - the parameters of the query or the callback function\n     * @param {PGStoreQueryCallback} [fn] - standard Node.js callback returning the resulting rows\n     * @param {boolean} [noTableCreation]\n     * @returns {void}\n     * @access private\n     */\n    query (query, params, fn, noTableCreation) {\n      /** @type {any[]} */\n      let resolvedParams;\n\n      if (typeof params === 'function') {\n        if (fn) throw new Error('Two callback functions set at once');\n        fn = params;\n        resolvedParams = [];\n      } else {\n        resolvedParams = params || [];\n      }\n\n      const result = this._asyncQuery(query, resolvedParams, noTableCreation);\n\n      callbackifyPromiseResolution(result, fn);\n    }\n\n    /**\n     * Attempt to fetch session by the given `sid`.\n     *\n     * @param {string} sid \u2013 the session id\n     * @param {(err: Error|null, firstRow?: PGStoreQueryResult) => void} fn \u2013 a standard Node.js callback returning the parsed session object\n     * @access public\n     */\n    get (sid, fn) {\n      this.#initPruneTimer();\n\n      this.query('SELECT sess FROM ' + this.quotedTable() + ' WHERE sid = $1 AND expire >= to_timestamp($2)', [sid, currentTimestamp()], (err, data) => {\n        if (err) { return fn(err); }\n        // eslint-disable-next-line unicorn/no-null\n        if (!data) { return fn(null); }\n        try {\n          // eslint-disable-next-line unicorn/no-null\n          return fn(null, (typeof data['sess'] === 'string') ? JSON.parse(data['sess']) : data['sess']);\n        } catch {\n          return this.destroy(sid, fn);\n        }\n      });\n    }\n\n    /**\n     * Commit the given `sess` object associated with the given `sid`.\n     *\n     * @param {string} sid \u2013 the session id\n     * @param {SessionObject} sess \u2013 the session object to store\n     * @param {SimpleErrorCallback} fn \u2013 a standard Node.js callback returning the parsed session object\n     * @access public\n     */\n    set (sid, sess, fn) {\n      this.#initPruneTimer();\n\n      const expireTime = this.#getExpireTime(sess);\n      const query = 'INSERT INTO ' + this.quotedTable() + ' (sess, expire, sid) SELECT $1, to_timestamp($2), $3 ON CONFLICT (sid) DO UPDATE SET sess=$1, expire=to_timestamp($2) RETURNING sid';\n\n      this.query(\n        query,\n        [sess, expireTime, sid],\n        err => { fn && fn(err); }\n      );\n    }\n\n    /**\n     * Destroy the session associated with the given `sid`.\n     *\n     * @param {string} sid \u2013 the session id\n     * @param {SimpleErrorCallback} fn \u2013 a standard Node.js callback returning the parsed session object\n     * @access public\n     */\n    destroy (sid, fn) {\n      this.#initPruneTimer();\n\n      this.query(\n        'DELETE FROM ' + this.quotedTable() + ' WHERE sid = $1',\n        [sid],\n        err => { fn && fn(err); }\n      );\n    }\n\n    /**\n     * Touch the given session object associated with the given session ID.\n     *\n     * @param {string} sid \u2013 the session id\n     * @param {SessionObject} sess \u2013 the session object to store\n     * @param {SimpleErrorCallback} fn \u2013 a standard Node.js callback returning the parsed session object\n     * @access public\n     */\n    touch (sid, sess, fn) {\n      this.#initPruneTimer();\n\n      if (this.#disableTouch) {\n        // eslint-disable-next-line unicorn/no-null\n        fn && fn(null);\n        return;\n      }\n\n      const expireTime = this.#getExpireTime(sess);\n\n      this.query(\n        'UPDATE ' + this.quotedTable() + ' SET expire = to_timestamp($1) WHERE sid = $2 RETURNING sid',\n        [expireTime, sid],\n        err => { fn && fn(err); }\n      );\n    }\n  }\n\n  return PGStore;\n};\n", "'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there                         *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n  return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n  if (!err) return\n\n  /** @type {unknown} */\n  // @ts-ignore\n  const cause = err.cause\n\n  // VError / NError style causes\n  if (typeof cause === 'function') {\n    // @ts-ignore\n    const causeResult = err.cause()\n\n    return isErrorLike(causeResult)\n      ? causeResult\n      : undefined\n  } else {\n    return isErrorLike(cause)\n      ? cause\n      : undefined\n  }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n  if (!isErrorLike(err)) return ''\n\n  const stack = err.stack || ''\n\n  // Ensure we don't go circular or crazily deep\n  if (seen.has(err)) {\n    return stack + '\\ncauses have become circular...'\n  }\n\n  const cause = getErrorCause(err)\n\n  if (cause) {\n    seen.add(err)\n    return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n  } else {\n    return stack\n  }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n  if (!isErrorLike(err)) return ''\n\n  const message = skip ? '' : (err.message || '')\n\n  // Ensure we don't go circular or crazily deep\n  if (seen.has(err)) {\n    return message + ': ...'\n  }\n\n  const cause = getErrorCause(err)\n\n  if (cause) {\n    seen.add(err)\n\n    // @ts-ignore\n    const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n    return (message +\n      (skipIfVErrorStyleCause ? '' : ': ') +\n      _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n  } else {\n    return message\n  }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n  isErrorLike,\n  getErrorCause,\n  stackWithCauses,\n  messageWithCauses\n}\n", "'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n  type: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  message: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  stack: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  aggregateErrors: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nmodule.exports = {\n  pinoErrProto,\n  pinoErrorSymbols: {\n    seen,\n    rawSymbol\n  }\n}\n", "'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n  if (!isErrorLike(err)) {\n    return err\n  }\n\n  err[seen] = undefined // tag to prevent re-looking at this\n  const _err = Object.create(pinoErrProto)\n  _err.type = toString.call(err.constructor) === '[object Function]'\n    ? err.constructor.name\n    : err.name\n  _err.message = messageWithCauses(err)\n  _err.stack = stackWithCauses(err)\n\n  if (Array.isArray(err.errors)) {\n    _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n  }\n\n  for (const key in err) {\n    if (_err[key] === undefined) {\n      const val = err[key]\n      if (isErrorLike(val)) {\n        // We append cause messages and stacks to _err, therefore skipping causes here\n        if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n          _err[key] = errSerializer(val)\n        }\n      } else {\n        _err[key] = val\n      }\n    }\n  }\n\n  delete err[seen] // clean up tag in case err is serialized again later\n  _err.raw = err\n  return _err\n}\n", "'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n  if (!isErrorLike(err)) {\n    return err\n  }\n\n  err[seen] = undefined // tag to prevent re-looking at this\n  const _err = Object.create(pinoErrProto)\n  _err.type = toString.call(err.constructor) === '[object Function]'\n    ? err.constructor.name\n    : err.name\n  _err.message = err.message\n  _err.stack = err.stack\n\n  if (Array.isArray(err.errors)) {\n    _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n  }\n\n  if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n    _err.cause = errWithCauseSerializer(err.cause)\n  }\n\n  for (const key in err) {\n    if (_err[key] === undefined) {\n      const val = err[key]\n      if (isErrorLike(val)) {\n        if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n          _err[key] = errWithCauseSerializer(val)\n        }\n      } else {\n        _err[key] = val\n      }\n    }\n  }\n\n  delete err[seen] // clean up tag in case err is serialized again later\n  _err.raw = err\n  return _err\n}\n", "'use strict'\n\nmodule.exports = {\n  mapHttpRequest,\n  reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n  id: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  method: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  url: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  query: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  params: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  headers: {\n    enumerable: true,\n    writable: true,\n    value: {}\n  },\n  remoteAddress: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  remotePort: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nfunction reqSerializer (req) {\n  // req.info is for hapi compat.\n  const connection = req.info || req.socket\n  const _req = Object.create(pinoReqProto)\n  _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n  _req.method = req.method\n  // req.originalUrl is for expressjs compat.\n  if (req.originalUrl) {\n    _req.url = req.originalUrl\n  } else {\n    const path = req.path\n    // path for safe hapi compat.\n    _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n  }\n\n  if (req.query) {\n    _req.query = req.query\n  }\n\n  if (req.params) {\n    _req.params = req.params\n  }\n\n  _req.headers = req.headers\n  _req.remoteAddress = connection && connection.remoteAddress\n  _req.remotePort = connection && connection.remotePort\n  // req.raw is  for hapi compat/equivalence\n  _req.raw = req.raw || req\n  return _req\n}\n\nfunction mapHttpRequest (req) {\n  return {\n    req: reqSerializer(req)\n  }\n}\n", "'use strict'\n\nmodule.exports = {\n  mapHttpResponse,\n  resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n  statusCode: {\n    enumerable: true,\n    writable: true,\n    value: 0\n  },\n  headers: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nfunction resSerializer (res) {\n  const _res = Object.create(pinoResProto)\n  _res.statusCode = res.headersSent ? res.statusCode : null\n  _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n  _res.raw = res\n  return _res\n}\n\nfunction mapHttpResponse (res) {\n  return {\n    res: resSerializer(res)\n  }\n}\n", "'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n  err: errSerializer,\n  errWithCause: errWithCauseSerializer,\n  mapHttpRequest: reqSerializers.mapHttpRequest,\n  mapHttpResponse: resSerializers.mapHttpResponse,\n  req: reqSerializers.reqSerializer,\n  res: resSerializers.resSerializer,\n\n  wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n    if (customSerializer === errSerializer) return customSerializer\n    return function wrapErrSerializer (err) {\n      return customSerializer(errSerializer(err))\n    }\n  },\n\n  wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n    if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n    return function wrappedReqSerializer (req) {\n      return customSerializer(reqSerializers.reqSerializer(req))\n    }\n  },\n\n  wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n    if (customSerializer === resSerializers.resSerializer) return customSerializer\n    return function wrappedResSerializer (res) {\n      return customSerializer(resSerializers.resSerializer(res))\n    }\n  }\n}\n", "'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n  return stack\n}\n\nmodule.exports = function getCallers () {\n  const originalPrepare = Error.prepareStackTrace\n  Error.prepareStackTrace = noOpPrepareStackTrace\n  const stack = new Error().stack\n  Error.prepareStackTrace = originalPrepare\n\n  if (!Array.isArray(stack)) {\n    return undefined\n  }\n\n  const entries = stack.slice(2)\n\n  const fileNames = []\n\n  for (const entry of entries) {\n    if (!entry) {\n      continue\n    }\n\n    fileNames.push(entry.getFileName())\n  }\n\n  return fileNames\n}\n", "'use strict'\n\nfunction deepClone (obj) {\n  if (obj === null || typeof obj !== 'object') {\n    return obj\n  }\n\n  if (obj instanceof Date) {\n    return new Date(obj.getTime())\n  }\n\n  if (obj instanceof Array) {\n    const cloned = []\n    for (let i = 0; i < obj.length; i++) {\n      cloned[i] = deepClone(obj[i])\n    }\n    return cloned\n  }\n\n  if (typeof obj === 'object') {\n    const cloned = Object.create(Object.getPrototypeOf(obj))\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        cloned[key] = deepClone(obj[key])\n      }\n    }\n    return cloned\n  }\n\n  return obj\n}\n\nfunction parsePath (path) {\n  const parts = []\n  let current = ''\n  let inBrackets = false\n  let inQuotes = false\n  let quoteChar = ''\n\n  for (let i = 0; i < path.length; i++) {\n    const char = path[i]\n\n    if (!inBrackets && char === '.') {\n      if (current) {\n        parts.push(current)\n        current = ''\n      }\n    } else if (char === '[') {\n      if (current) {\n        parts.push(current)\n        current = ''\n      }\n      inBrackets = true\n    } else if (char === ']' && inBrackets) {\n      // Always push the current value when closing brackets, even if it's an empty string\n      parts.push(current)\n      current = ''\n      inBrackets = false\n      inQuotes = false\n    } else if ((char === '\"' || char === \"'\") && inBrackets) {\n      if (!inQuotes) {\n        inQuotes = true\n        quoteChar = char\n      } else if (char === quoteChar) {\n        inQuotes = false\n        quoteChar = ''\n      } else {\n        current += char\n      }\n    } else {\n      current += char\n    }\n  }\n\n  if (current) {\n    parts.push(current)\n  }\n\n  return parts\n}\n\nfunction setValue (obj, parts, value) {\n  let current = obj\n\n  for (let i = 0; i < parts.length - 1; i++) {\n    const key = parts[i]\n    // Type safety: Check if current is an object before using 'in' operator\n    if (typeof current !== 'object' || current === null || !(key in current)) {\n      return false // Path doesn't exist, don't create it\n    }\n    if (typeof current[key] !== 'object' || current[key] === null) {\n      return false // Path doesn't exist properly\n    }\n    current = current[key]\n  }\n\n  const lastKey = parts[parts.length - 1]\n  if (lastKey === '*') {\n    if (Array.isArray(current)) {\n      for (let i = 0; i < current.length; i++) {\n        current[i] = value\n      }\n    } else if (typeof current === 'object' && current !== null) {\n      for (const key in current) {\n        if (Object.prototype.hasOwnProperty.call(current, key)) {\n          current[key] = value\n        }\n      }\n    }\n  } else {\n    // Type safety: Check if current is an object before using 'in' operator\n    if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n      current[lastKey] = value\n    }\n  }\n  return true\n}\n\nfunction removeKey (obj, parts) {\n  let current = obj\n\n  for (let i = 0; i < parts.length - 1; i++) {\n    const key = parts[i]\n    // Type safety: Check if current is an object before using 'in' operator\n    if (typeof current !== 'object' || current === null || !(key in current)) {\n      return false // Path doesn't exist, don't create it\n    }\n    if (typeof current[key] !== 'object' || current[key] === null) {\n      return false // Path doesn't exist properly\n    }\n    current = current[key]\n  }\n\n  const lastKey = parts[parts.length - 1]\n  if (lastKey === '*') {\n    if (Array.isArray(current)) {\n      // For arrays, we can't really \"remove\" all items as that would change indices\n      // Instead, we set them to undefined which will be omitted by JSON.stringify\n      for (let i = 0; i < current.length; i++) {\n        current[i] = undefined\n      }\n    } else if (typeof current === 'object' && current !== null) {\n      for (const key in current) {\n        if (Object.prototype.hasOwnProperty.call(current, key)) {\n          delete current[key]\n        }\n      }\n    }\n  } else {\n    // Type safety: Check if current is an object before using 'in' operator\n    if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n      delete current[lastKey]\n    }\n  }\n  return true\n}\n\n// Sentinel object to distinguish between undefined value and non-existent path\nconst PATH_NOT_FOUND = Symbol('PATH_NOT_FOUND')\n\nfunction getValueIfExists (obj, parts) {\n  let current = obj\n\n  for (const part of parts) {\n    if (current === null || current === undefined) {\n      return PATH_NOT_FOUND\n    }\n    // Type safety: Check if current is an object before property access\n    if (typeof current !== 'object' || current === null) {\n      return PATH_NOT_FOUND\n    }\n    // Check if the property exists before accessing it\n    if (!(part in current)) {\n      return PATH_NOT_FOUND\n    }\n    current = current[part]\n  }\n\n  return current\n}\n\nfunction getValue (obj, parts) {\n  let current = obj\n\n  for (const part of parts) {\n    if (current === null || current === undefined) {\n      return undefined\n    }\n    // Type safety: Check if current is an object before property access\n    if (typeof current !== 'object' || current === null) {\n      return undefined\n    }\n    current = current[part]\n  }\n\n  return current\n}\n\nfunction redactPaths (obj, paths, censor, remove = false) {\n  for (const path of paths) {\n    const parts = parsePath(path)\n\n    if (parts.includes('*')) {\n      redactWildcardPath(obj, parts, censor, path, remove)\n    } else {\n      if (remove) {\n        removeKey(obj, parts)\n      } else {\n        // Get value only if path exists - single traversal\n        const value = getValueIfExists(obj, parts)\n        if (value === PATH_NOT_FOUND) {\n          continue\n        }\n\n        const actualCensor = typeof censor === 'function'\n          ? censor(value, parts)\n          : censor\n        setValue(obj, parts, actualCensor)\n      }\n    }\n  }\n}\n\nfunction redactWildcardPath (obj, parts, censor, originalPath, remove = false) {\n  const wildcardIndex = parts.indexOf('*')\n\n  if (wildcardIndex === parts.length - 1) {\n    const parentParts = parts.slice(0, -1)\n    let current = obj\n\n    for (const part of parentParts) {\n      if (current === null || current === undefined) return\n      // Type safety: Check if current is an object before property access\n      if (typeof current !== 'object' || current === null) return\n      current = current[part]\n    }\n\n    if (Array.isArray(current)) {\n      if (remove) {\n        // For arrays, set all items to undefined which will be omitted by JSON.stringify\n        for (let i = 0; i < current.length; i++) {\n          current[i] = undefined\n        }\n      } else {\n        for (let i = 0; i < current.length; i++) {\n          const indexPath = [...parentParts, i.toString()]\n          const actualCensor = typeof censor === 'function'\n            ? censor(current[i], indexPath)\n            : censor\n          current[i] = actualCensor\n        }\n      }\n    } else if (typeof current === 'object' && current !== null) {\n      if (remove) {\n        // Collect keys to delete to avoid issues with deleting during iteration\n        const keysToDelete = []\n        for (const key in current) {\n          if (Object.prototype.hasOwnProperty.call(current, key)) {\n            keysToDelete.push(key)\n          }\n        }\n        for (const key of keysToDelete) {\n          delete current[key]\n        }\n      } else {\n        for (const key in current) {\n          const keyPath = [...parentParts, key]\n          const actualCensor = typeof censor === 'function'\n            ? censor(current[key], keyPath)\n            : censor\n          current[key] = actualCensor\n        }\n      }\n    }\n  } else {\n    redactIntermediateWildcard(obj, parts, censor, wildcardIndex, originalPath, remove)\n  }\n}\n\nfunction redactIntermediateWildcard (obj, parts, censor, wildcardIndex, originalPath, remove = false) {\n  const beforeWildcard = parts.slice(0, wildcardIndex)\n  const afterWildcard = parts.slice(wildcardIndex + 1)\n  const pathArray = [] // Cached array to avoid allocations\n\n  function traverse (current, pathLength) {\n    if (pathLength === beforeWildcard.length) {\n      if (Array.isArray(current)) {\n        for (let i = 0; i < current.length; i++) {\n          pathArray[pathLength] = i.toString()\n          traverse(current[i], pathLength + 1)\n        }\n      } else if (typeof current === 'object' && current !== null) {\n        for (const key in current) {\n          pathArray[pathLength] = key\n          traverse(current[key], pathLength + 1)\n        }\n      }\n    } else if (pathLength < beforeWildcard.length) {\n      const nextKey = beforeWildcard[pathLength]\n      // Type safety: Check if current is an object before using 'in' operator\n      if (current && typeof current === 'object' && current !== null && nextKey in current) {\n        pathArray[pathLength] = nextKey\n        traverse(current[nextKey], pathLength + 1)\n      }\n    } else {\n      // Check if afterWildcard contains more wildcards\n      if (afterWildcard.includes('*')) {\n        // Recursively handle remaining wildcards\n        // Wrap censor to prepend current path context\n        const wrappedCensor = typeof censor === 'function'\n          ? (value, path) => {\n              const fullPath = [...pathArray.slice(0, pathLength), ...path]\n              return censor(value, fullPath)\n            }\n          : censor\n        redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove)\n      } else {\n        // No more wildcards, apply the redaction directly\n        if (remove) {\n          removeKey(current, afterWildcard)\n        } else {\n          const actualCensor = typeof censor === 'function'\n            ? censor(getValue(current, afterWildcard), [...pathArray.slice(0, pathLength), ...afterWildcard])\n            : censor\n          setValue(current, afterWildcard, actualCensor)\n        }\n      }\n    }\n  }\n\n  if (beforeWildcard.length === 0) {\n    traverse(obj, 0)\n  } else {\n    let current = obj\n    for (let i = 0; i < beforeWildcard.length; i++) {\n      const part = beforeWildcard[i]\n      if (current === null || current === undefined) return\n      // Type safety: Check if current is an object before property access\n      if (typeof current !== 'object' || current === null) return\n      current = current[part]\n      pathArray[i] = part\n    }\n    if (current !== null && current !== undefined) {\n      traverse(current, beforeWildcard.length)\n    }\n  }\n}\n\nfunction buildPathStructure (pathsToClone) {\n  if (pathsToClone.length === 0) {\n    return null // No paths to redact\n  }\n\n  // Parse all paths and organize by depth\n  const pathStructure = new Map()\n  for (const path of pathsToClone) {\n    const parts = parsePath(path)\n    let current = pathStructure\n    for (let i = 0; i < parts.length; i++) {\n      const part = parts[i]\n      if (!current.has(part)) {\n        current.set(part, new Map())\n      }\n      current = current.get(part)\n    }\n  }\n  return pathStructure\n}\n\nfunction selectiveClone (obj, pathStructure) {\n  if (!pathStructure) {\n    return obj // No paths to redact, return original\n  }\n\n  function cloneSelectively (source, pathMap, depth = 0) {\n    if (!pathMap || pathMap.size === 0) {\n      return source // No more paths to clone, return reference\n    }\n\n    if (source === null || typeof source !== 'object') {\n      return source\n    }\n\n    if (source instanceof Date) {\n      return new Date(source.getTime())\n    }\n\n    if (Array.isArray(source)) {\n      const cloned = []\n      for (let i = 0; i < source.length; i++) {\n        const indexStr = i.toString()\n        if (pathMap.has(indexStr) || pathMap.has('*')) {\n          cloned[i] = cloneSelectively(source[i], pathMap.get(indexStr) || pathMap.get('*'))\n        } else {\n          cloned[i] = source[i] // Share reference for non-redacted items\n        }\n      }\n      return cloned\n    }\n\n    // Handle objects\n    const cloned = Object.create(Object.getPrototypeOf(source))\n    for (const key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        if (pathMap.has(key) || pathMap.has('*')) {\n          cloned[key] = cloneSelectively(source[key], pathMap.get(key) || pathMap.get('*'))\n        } else {\n          cloned[key] = source[key] // Share reference for non-redacted properties\n        }\n      }\n    }\n    return cloned\n  }\n\n  return cloneSelectively(obj, pathStructure)\n}\n\nfunction validatePath (path) {\n  if (typeof path !== 'string') {\n    throw new Error('Paths must be (non-empty) strings')\n  }\n\n  if (path === '') {\n    throw new Error('Invalid redaction path ()')\n  }\n\n  // Check for double dots\n  if (path.includes('..')) {\n    throw new Error(`Invalid redaction path (${path})`)\n  }\n\n  // Check for comma-separated paths (invalid syntax)\n  if (path.includes(',')) {\n    throw new Error(`Invalid redaction path (${path})`)\n  }\n\n  // Check for unmatched brackets\n  let bracketCount = 0\n  let inQuotes = false\n  let quoteChar = ''\n\n  for (let i = 0; i < path.length; i++) {\n    const char = path[i]\n\n    if ((char === '\"' || char === \"'\") && bracketCount > 0) {\n      if (!inQuotes) {\n        inQuotes = true\n        quoteChar = char\n      } else if (char === quoteChar) {\n        inQuotes = false\n        quoteChar = ''\n      }\n    } else if (char === '[' && !inQuotes) {\n      bracketCount++\n    } else if (char === ']' && !inQuotes) {\n      bracketCount--\n      if (bracketCount < 0) {\n        throw new Error(`Invalid redaction path (${path})`)\n      }\n    }\n  }\n\n  if (bracketCount !== 0) {\n    throw new Error(`Invalid redaction path (${path})`)\n  }\n}\n\nfunction validatePaths (paths) {\n  if (!Array.isArray(paths)) {\n    throw new TypeError('paths must be an array')\n  }\n\n  for (const path of paths) {\n    validatePath(path)\n  }\n}\n\nfunction slowRedact (options = {}) {\n  const {\n    paths = [],\n    censor = '[REDACTED]',\n    serialize = JSON.stringify,\n    strict = true,\n    remove = false\n  } = options\n\n  // Validate paths upfront to match fast-redact behavior\n  validatePaths(paths)\n\n  // Build path structure once during setup, not on every call\n  const pathStructure = buildPathStructure(paths)\n\n  return function redact (obj) {\n    if (strict && (obj === null || typeof obj !== 'object')) {\n      if (obj === null || obj === undefined) {\n        return serialize ? serialize(obj) : obj\n      }\n      if (typeof obj !== 'object') {\n        return serialize ? serialize(obj) : obj\n      }\n    }\n\n    // Only clone paths that need redaction\n    const cloned = selectiveClone(obj, pathStructure)\n    const original = obj // Keep reference to original for restore\n\n    let actualCensor = censor\n    if (typeof censor === 'function') {\n      actualCensor = censor\n    }\n\n    redactPaths(cloned, paths, actualCensor, remove)\n\n    if (serialize === false) {\n      cloned.restore = function () {\n        return deepClone(original) // Full clone only when restore is called\n      }\n      return cloned\n    }\n\n    if (typeof serialize === 'function') {\n      return serialize(cloned)\n    }\n\n    return JSON.stringify(cloned)\n  }\n}\n\nmodule.exports = slowRedact\n", "'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst levelCompSym = Symbol('pino.levelComp')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n  setLevelSym,\n  getLevelSym,\n  levelValSym,\n  levelCompSym,\n  useLevelLabelsSym,\n  mixinSym,\n  lsCacheSym,\n  chindingsSym,\n  asJsonSym,\n  writeSym,\n  serializersSym,\n  redactFmtSym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  stringifySym,\n  stringifySafeSym,\n  stringifiersSym,\n  endSym,\n  formatOptsSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeySym,\n  wildcardFirstSym,\n  needsMetadataGsym,\n  useOnlyCustomLevelsSym,\n  formattersSym,\n  hooksSym,\n  nestedKeyStrSym,\n  mixinMergeStrategySym,\n  msgPrefixSym\n}\n", "'use strict'\n\nconst Redact = require('@pinojs/redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\n\n// Custom rx regex equivalent to fast-redact's rx\nconst rx = /[^.[\\]]+|\\[([^[\\]]*?)\\]/g\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n  const { paths, censor, remove } = handle(opts)\n\n  const shape = paths.reduce((o, str) => {\n    rx.lastIndex = 0\n    const first = rx.exec(str)\n    const next = rx.exec(str)\n\n    // ns is the top-level path segment, brackets + quoting removed.\n    let ns = first[1] !== undefined\n      ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n      : first[0]\n\n    if (ns === '*') {\n      ns = wildcardFirstSym\n    }\n\n    // top level key:\n    if (next === null) {\n      o[ns] = null\n      return o\n    }\n\n    // path with at least two segments:\n    // if ns is already redacted at the top level, ignore lower level redactions\n    if (o[ns] === null) {\n      return o\n    }\n\n    const { index } = next\n    const nextPath = `${str.substr(index, str.length - 1)}`\n\n    o[ns] = o[ns] || []\n\n    // shape is a mix of paths beginning with literal values and wildcard\n    // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n    // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n    // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n    // (* entry has wildcardFirstSym as key)\n    if (ns !== wildcardFirstSym && o[ns].length === 0) {\n      // first time ns's get all '*' redactions so far\n      o[ns].push(...(o[wildcardFirstSym] || []))\n    }\n\n    if (ns === wildcardFirstSym) {\n      // new * path gets added to all previously registered literal ns's.\n      Object.keys(o).forEach(function (k) {\n        if (o[k]) {\n          o[k].push(nextPath)\n        }\n      })\n    }\n\n    o[ns].push(nextPath)\n    return o\n  }, {})\n\n  // the redactor assigned to the format symbol key\n  // provides top level redaction for instances where\n  // an object is interpolated into the msg string\n  const result = {\n    [redactFmtSym]: Redact({ paths, censor, serialize, strict, remove })\n  }\n\n  const topCensor = (...args) => {\n    return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n  }\n\n  return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n    // top level key:\n    if (shape[k] === null) {\n      o[k] = (value) => topCensor(value, [k])\n    } else {\n      const wrappedCensor = typeof censor === 'function'\n        ? (value, path) => {\n            return censor(value, [k, ...path])\n          }\n        : censor\n      o[k] = Redact({\n        paths: shape[k],\n        censor: wrappedCensor,\n        serialize,\n        strict,\n        remove\n      })\n    }\n    return o\n  }, result)\n}\n\nfunction handle (opts) {\n  if (Array.isArray(opts)) {\n    opts = { paths: opts, censor: CENSOR }\n    return opts\n  }\n  let { paths, censor = CENSOR, remove } = opts\n  if (Array.isArray(paths) === false) { throw Error('pino \u2013 redact must contain an array of strings') }\n  if (remove === true) censor = undefined\n\n  return { paths, censor, remove }\n}\n\nmodule.exports = redaction\n", "'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nconst NS_PER_MS = 1_000_000n\nconst NS_PER_SEC = 1_000_000_000n\n\nconst startWallTimeNs = BigInt(Date.now()) * NS_PER_MS\nconst startHrTime = process.hrtime.bigint()\n\nconst isoTimeNano = () => {\n  const elapsedNs = process.hrtime.bigint() - startHrTime\n  const currentTimeNs = startWallTimeNs + elapsedNs\n\n  const secondsSinceEpoch = currentTimeNs / NS_PER_SEC\n  const nanosWithinSecond = currentTimeNs % NS_PER_SEC\n\n  const msSinceEpoch = Number(secondsSinceEpoch * 1000n + nanosWithinSecond / 1_000_000n)\n  const date = new Date(msSinceEpoch)\n\n  const year = date.getUTCFullYear()\n  const month = (date.getUTCMonth() + 1).toString().padStart(2, '0')\n  const day = date.getUTCDate().toString().padStart(2, '0')\n  const hours = date.getUTCHours().toString().padStart(2, '0')\n  const minutes = date.getUTCMinutes().toString().padStart(2, '0')\n  const seconds = date.getUTCSeconds().toString().padStart(2, '0')\n\n  return `,\"time\":\"${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${nanosWithinSecond\n    .toString()\n    .padStart(9, '0')}Z\"`\n}\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime, isoTimeNano }\n", "'use strict'\nfunction tryStringify (o) {\n  try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n  var ss = (opts && opts.stringify) || tryStringify\n  var offset = 1\n  if (typeof f === 'object' && f !== null) {\n    var len = args.length + offset\n    if (len === 1) return f\n    var objects = new Array(len)\n    objects[0] = ss(f)\n    for (var index = 1; index < len; index++) {\n      objects[index] = ss(args[index])\n    }\n    return objects.join(' ')\n  }\n  if (typeof f !== 'string') {\n    return f\n  }\n  var argLen = args.length\n  if (argLen === 0) return f\n  var str = ''\n  var a = 1 - offset\n  var lastPos = -1\n  var flen = (f && f.length) || 0\n  for (var i = 0; i < flen;) {\n    if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n      lastPos = lastPos > -1 ? lastPos : 0\n      switch (f.charCodeAt(i + 1)) {\n        case 100: // 'd'\n        case 102: // 'f'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Number(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 105: // 'i'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Math.floor(Number(args[a]))\n          lastPos = i + 2\n          i++\n          break\n        case 79: // 'O'\n        case 111: // 'o'\n        case 106: // 'j'\n          if (a >= argLen)\n            break\n          if (args[a] === undefined) break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          var type = typeof args[a]\n          if (type === 'string') {\n            str += '\\'' + args[a] + '\\''\n            lastPos = i + 2\n            i++\n            break\n          }\n          if (type === 'function') {\n            str += args[a].name || '<anonymous>'\n            lastPos = i + 2\n            i++\n            break\n          }\n          str += ss(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 115: // 's'\n          if (a >= argLen)\n            break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += String(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 37: // '%'\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += '%'\n          lastPos = i + 2\n          i++\n          a--\n          break\n      }\n      ++a\n    }\n    ++i\n  }\n  if (lastPos === -1)\n    return f\n  else if (lastPos < flen) {\n    str += f.slice(lastPos)\n  }\n\n  return str\n}\n", "'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n  const nil = new Int32Array(new SharedArrayBuffer(4))\n\n  function sleep (ms) {\n    // also filters out NaN, non-number types, including empty strings, but allows bigints\n    const valid = ms > 0 && ms < Infinity \n    if (valid === false) {\n      if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n        throw TypeError('sleep: ms must be a number')\n      }\n      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n    }\n\n    Atomics.wait(nil, 0, 0, Number(ms))\n  }\n  module.exports = sleep\n} else {\n\n  function sleep (ms) {\n    // also filters out NaN, non-number types, including empty strings, but allows bigints\n    const valid = ms > 0 && ms < Infinity \n    if (valid === false) {\n      if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n        throw TypeError('sleep: ms must be a number')\n      }\n      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n    }\n    const target = Date.now() + Number(ms)\n    while (target > Date.now()){}\n  }\n\n  module.exports = sleep\n\n}\n", "'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\nconst assert = require('assert')\n\nconst BUSY_WRITE_TIMEOUT = 100\nconst kEmptyBuffer = Buffer.allocUnsafe(0)\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nconst kContentModeBuffer = 'buffer'\nconst kContentModeUtf8 = 'utf8'\n\nconst [major, minor] = (process.versions.node || '0.0').split('.').map(Number)\nconst kCopyBuffer = major >= 22 && minor >= 7\n\nfunction openFile (file, sonic) {\n  sonic._opening = true\n  sonic._writing = true\n  sonic._asyncDrainScheduled = false\n\n  // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n  // for sync mode, there is no way to add a listener that will receive these\n\n  function fileOpened (err, fd) {\n    if (err) {\n      sonic._reopening = false\n      sonic._writing = false\n      sonic._opening = false\n\n      if (sonic.sync) {\n        process.nextTick(() => {\n          if (sonic.listenerCount('error') > 0) {\n            sonic.emit('error', err)\n          }\n        })\n      } else {\n        sonic.emit('error', err)\n      }\n      return\n    }\n\n    const reopening = sonic._reopening\n\n    sonic.fd = fd\n    sonic.file = file\n    sonic._reopening = false\n    sonic._opening = false\n    sonic._writing = false\n\n    if (sonic.sync) {\n      process.nextTick(() => sonic.emit('ready'))\n    } else {\n      sonic.emit('ready')\n    }\n\n    if (sonic.destroyed) {\n      return\n    }\n\n    // start\n    if ((!sonic._writing && sonic._len > sonic.minLength) || sonic._flushPending) {\n      sonic._actualWrite()\n    } else if (reopening) {\n      process.nextTick(() => sonic.emit('drain'))\n    }\n  }\n\n  const flags = sonic.append ? 'a' : 'w'\n  const mode = sonic.mode\n\n  if (sonic.sync) {\n    try {\n      if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n      const fd = fs.openSync(file, flags, mode)\n      fileOpened(null, fd)\n    } catch (err) {\n      fileOpened(err)\n      throw err\n    }\n  } else if (sonic.mkdir) {\n    fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n      if (err) return fileOpened(err)\n      fs.open(file, flags, mode, fileOpened)\n    })\n  } else {\n    fs.open(file, flags, mode, fileOpened)\n  }\n}\n\nfunction SonicBoom (opts) {\n  if (!(this instanceof SonicBoom)) {\n    return new SonicBoom(opts)\n  }\n\n  let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir, retryEAGAIN, fsync, contentMode, mode } = opts || {}\n\n  fd = fd || dest\n\n  this._len = 0\n  this.fd = -1\n  this._bufs = []\n  this._lens = []\n  this._writing = false\n  this._ending = false\n  this._reopening = false\n  this._asyncDrainScheduled = false\n  this._flushPending = false\n  this._hwm = Math.max(minLength || 0, 16387)\n  this.file = null\n  this.destroyed = false\n  this.minLength = minLength || 0\n  this.maxLength = maxLength || 0\n  this.maxWrite = maxWrite || MAX_WRITE\n  this._periodicFlush = periodicFlush || 0\n  this._periodicFlushTimer = undefined\n  this.sync = sync || false\n  this.writable = true\n  this._fsync = fsync || false\n  this.append = append || false\n  this.mode = mode\n  this.retryEAGAIN = retryEAGAIN || (() => true)\n  this.mkdir = mkdir || false\n\n  let fsWriteSync\n  let fsWrite\n  if (contentMode === kContentModeBuffer) {\n    this._writingBuf = kEmptyBuffer\n    this.write = writeBuffer\n    this.flush = flushBuffer\n    this.flushSync = flushBufferSync\n    this._actualWrite = actualWriteBuffer\n    fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf)\n    fsWrite = () => fs.write(this.fd, this._writingBuf, this.release)\n  } else if (contentMode === undefined || contentMode === kContentModeUtf8) {\n    this._writingBuf = ''\n    this.write = write\n    this.flush = flush\n    this.flushSync = flushSync\n    this._actualWrite = actualWrite\n    fsWriteSync = () => {\n      if (Buffer.isBuffer(this._writingBuf)) {\n        return fs.writeSync(this.fd, this._writingBuf)\n      }\n      return fs.writeSync(this.fd, this._writingBuf, 'utf8')\n    }\n    fsWrite = () => {\n      if (Buffer.isBuffer(this._writingBuf)) {\n        return fs.write(this.fd, this._writingBuf, this.release)\n      }\n      return fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n    }\n  } else {\n    throw new Error(`SonicBoom supports \"${kContentModeUtf8}\" and \"${kContentModeBuffer}\", but passed ${contentMode}`)\n  }\n\n  if (typeof fd === 'number') {\n    this.fd = fd\n    process.nextTick(() => this.emit('ready'))\n  } else if (typeof fd === 'string') {\n    openFile(fd, this)\n  } else {\n    throw new Error('SonicBoom supports only file descriptors and files')\n  }\n  if (this.minLength >= this.maxWrite) {\n    throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n  }\n\n  this.release = (err, n) => {\n    if (err) {\n      if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n        if (this.sync) {\n          // This error code should not happen in sync mode, because it is\n          // not using the underlining operating system asynchronous functions.\n          // However it happens, and so we handle it.\n          // Ref: https://github.com/pinojs/pino/issues/783\n          try {\n            sleep(BUSY_WRITE_TIMEOUT)\n            this.release(undefined, 0)\n          } catch (err) {\n            this.release(err)\n          }\n        } else {\n          // Let's give the destination some time to process the chunk.\n          setTimeout(fsWrite, BUSY_WRITE_TIMEOUT)\n        }\n      } else {\n        this._writing = false\n\n        this.emit('error', err)\n      }\n      return\n    }\n\n    this.emit('write', n)\n    const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n    this._len = releasedBufObj.len\n    this._writingBuf = releasedBufObj.writingBuf\n\n    if (this._writingBuf.length) {\n      if (!this.sync) {\n        fsWrite()\n        return\n      }\n\n      try {\n        do {\n          const n = fsWriteSync()\n          const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n          this._len = releasedBufObj.len\n          this._writingBuf = releasedBufObj.writingBuf\n        } while (this._writingBuf.length)\n      } catch (err) {\n        this.release(err)\n        return\n      }\n    }\n\n    if (this._fsync) {\n      fs.fsyncSync(this.fd)\n    }\n\n    const len = this._len\n    if (this._reopening) {\n      this._writing = false\n      this._reopening = false\n      this.reopen()\n    } else if (len > this.minLength) {\n      this._actualWrite()\n    } else if (this._ending) {\n      if (len > 0) {\n        this._actualWrite()\n      } else {\n        this._writing = false\n        actualClose(this)\n      }\n    } else {\n      this._writing = false\n      if (this.sync) {\n        if (!this._asyncDrainScheduled) {\n          this._asyncDrainScheduled = true\n          process.nextTick(emitDrain, this)\n        }\n      } else {\n        this.emit('drain')\n      }\n    }\n  }\n\n  this.on('newListener', function (name) {\n    if (name === 'drain') {\n      this._asyncDrainScheduled = false\n    }\n  })\n\n  if (this._periodicFlush !== 0) {\n    this._periodicFlushTimer = setInterval(() => this.flush(null), this._periodicFlush)\n    this._periodicFlushTimer.unref()\n  }\n}\n\n/**\n * Release the writingBuf after fs.write n bytes data\n * @param {string | Buffer} writingBuf - currently writing buffer, usually be instance._writingBuf.\n * @param {number} len - currently buffer length, usually be instance._len.\n * @param {number} n - number of bytes fs already written\n * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length\n */\nfunction releaseWritingBuf (writingBuf, len, n) {\n  if (typeof writingBuf === 'string') {\n    writingBuf = Buffer.from(writingBuf)\n  }\n\n  len = Math.max(len - n, 0)\n  writingBuf = writingBuf.subarray(n)\n  return { writingBuf, len }\n}\n\nfunction emitDrain (sonic) {\n  const hasListeners = sonic.listenerCount('drain') > 0\n  if (!hasListeners) return\n  sonic._asyncDrainScheduled = false\n  sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nfunction mergeBuf (bufs, len) {\n  if (bufs.length === 0) {\n    return kEmptyBuffer\n  }\n\n  if (bufs.length === 1) {\n    return bufs[0]\n  }\n\n  return Buffer.concat(bufs, len)\n}\n\nfunction write (data) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  data = '' + data\n  const dataLen = Buffer.byteLength(data)\n  const len = this._len + dataLen\n  const bufs = this._bufs\n\n  if (this.maxLength && len > this.maxLength) {\n    this.emit('drop', data)\n    return this._len < this._hwm\n  }\n\n  if (\n    bufs.length === 0 ||\n    Buffer.byteLength(bufs[bufs.length - 1]) + dataLen > this.maxWrite\n  ) {\n    bufs.push(data)\n  } else {\n    bufs[bufs.length - 1] += data\n  }\n\n  this._len = len\n\n  if (!this._writing && this._len >= this.minLength) {\n    this._actualWrite()\n  }\n\n  return this._len < this._hwm\n}\n\nfunction writeBuffer (data) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  const len = this._len + data.length\n  const bufs = this._bufs\n  const lens = this._lens\n\n  if (this.maxLength && len > this.maxLength) {\n    this.emit('drop', data)\n    return this._len < this._hwm\n  }\n\n  if (\n    bufs.length === 0 ||\n    lens[lens.length - 1] + data.length > this.maxWrite\n  ) {\n    bufs.push([data])\n    lens.push(data.length)\n  } else {\n    bufs[bufs.length - 1].push(data)\n    lens[lens.length - 1] += data.length\n  }\n\n  this._len = len\n\n  if (!this._writing && this._len >= this.minLength) {\n    this._actualWrite()\n  }\n\n  return this._len < this._hwm\n}\n\nfunction callFlushCallbackOnDrain (cb) {\n  this._flushPending = true\n  const onDrain = () => {\n    // only if _fsync is false to avoid double fsync\n    if (!this._fsync) {\n      try {\n        fs.fsync(this.fd, (err) => {\n          this._flushPending = false\n          cb(err)\n        })\n      } catch (err) {\n        cb(err)\n      }\n    } else {\n      this._flushPending = false\n      cb()\n    }\n    this.off('error', onError)\n  }\n  const onError = (err) => {\n    this._flushPending = false\n    cb(err)\n    this.off('drain', onDrain)\n  }\n\n  this.once('drain', onDrain)\n  this.once('error', onError)\n}\n\nfunction flush (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw new Error('flush cb must be a function')\n  }\n\n  if (this.destroyed) {\n    const error = new Error('SonicBoom destroyed')\n    if (cb) {\n      cb(error)\n      return\n    }\n\n    throw error\n  }\n\n  if (this.minLength <= 0) {\n    cb?.()\n    return\n  }\n\n  if (cb) {\n    callFlushCallbackOnDrain.call(this, cb)\n  }\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._bufs.length === 0) {\n    this._bufs.push('')\n  }\n\n  this._actualWrite()\n}\n\nfunction flushBuffer (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw new Error('flush cb must be a function')\n  }\n\n  if (this.destroyed) {\n    const error = new Error('SonicBoom destroyed')\n    if (cb) {\n      cb(error)\n      return\n    }\n\n    throw error\n  }\n\n  if (this.minLength <= 0) {\n    cb?.()\n    return\n  }\n\n  if (cb) {\n    callFlushCallbackOnDrain.call(this, cb)\n  }\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._bufs.length === 0) {\n    this._bufs.push([])\n    this._lens.push(0)\n  }\n\n  this._actualWrite()\n}\n\nSonicBoom.prototype.reopen = function (file) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this._opening) {\n    this.once('ready', () => {\n      this.reopen(file)\n    })\n    return\n  }\n\n  if (this._ending) {\n    return\n  }\n\n  if (!this.file) {\n    throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n  }\n\n  if (file) {\n    this.file = file\n  }\n  this._reopening = true\n\n  if (this._writing) {\n    return\n  }\n\n  const fd = this.fd\n  this.once('ready', () => {\n    if (fd !== this.fd) {\n      fs.close(fd, (err) => {\n        if (err) {\n          return this.emit('error', err)\n        }\n      })\n    }\n  })\n\n  openFile(this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this._opening) {\n    this.once('ready', () => {\n      this.end()\n    })\n    return\n  }\n\n  if (this._ending) {\n    return\n  }\n\n  this._ending = true\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._len > 0 && this.fd >= 0) {\n    this._actualWrite()\n  } else {\n    actualClose(this)\n  }\n}\n\nfunction flushSync () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this.fd < 0) {\n    throw new Error('sonic boom is not ready yet')\n  }\n\n  if (!this._writing && this._writingBuf.length > 0) {\n    this._bufs.unshift(this._writingBuf)\n    this._writingBuf = ''\n  }\n\n  let buf = ''\n  while (this._bufs.length || buf.length) {\n    if (buf.length <= 0) {\n      buf = this._bufs[0]\n    }\n    try {\n      const n = Buffer.isBuffer(buf)\n        ? fs.writeSync(this.fd, buf)\n        : fs.writeSync(this.fd, buf, 'utf8')\n      const releasedBufObj = releaseWritingBuf(buf, this._len, n)\n      buf = releasedBufObj.writingBuf\n      this._len = releasedBufObj.len\n      if (buf.length <= 0) {\n        this._bufs.shift()\n      }\n    } catch (err) {\n      const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n      if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n        throw err\n      }\n\n      sleep(BUSY_WRITE_TIMEOUT)\n    }\n  }\n\n  try {\n    fs.fsyncSync(this.fd)\n  } catch {\n    // Skip the error. The fd might not support fsync.\n  }\n}\n\nfunction flushBufferSync () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this.fd < 0) {\n    throw new Error('sonic boom is not ready yet')\n  }\n\n  if (!this._writing && this._writingBuf.length > 0) {\n    this._bufs.unshift([this._writingBuf])\n    this._writingBuf = kEmptyBuffer\n  }\n\n  let buf = kEmptyBuffer\n  while (this._bufs.length || buf.length) {\n    if (buf.length <= 0) {\n      buf = mergeBuf(this._bufs[0], this._lens[0])\n    }\n    try {\n      const n = fs.writeSync(this.fd, buf)\n      buf = buf.subarray(n)\n      this._len = Math.max(this._len - n, 0)\n      if (buf.length <= 0) {\n        this._bufs.shift()\n        this._lens.shift()\n      }\n    } catch (err) {\n      const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n      if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n        throw err\n      }\n\n      sleep(BUSY_WRITE_TIMEOUT)\n    }\n  }\n}\n\nSonicBoom.prototype.destroy = function () {\n  if (this.destroyed) {\n    return\n  }\n  actualClose(this)\n}\n\nfunction actualWrite () {\n  const release = this.release\n  this._writing = true\n  this._writingBuf = this._writingBuf.length ? this._writingBuf : this._bufs.shift() || ''\n\n  if (this.sync) {\n    try {\n      const written = Buffer.isBuffer(this._writingBuf)\n        ? fs.writeSync(this.fd, this._writingBuf)\n        : fs.writeSync(this.fd, this._writingBuf, 'utf8')\n      release(null, written)\n    } catch (err) {\n      release(err)\n    }\n  } else {\n    fs.write(this.fd, this._writingBuf, release)\n  }\n}\n\nfunction actualWriteBuffer () {\n  const release = this.release\n  this._writing = true\n  this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift())\n\n  if (this.sync) {\n    try {\n      const written = fs.writeSync(this.fd, this._writingBuf)\n      release(null, written)\n    } catch (err) {\n      release(err)\n    }\n  } else {\n    // fs.write will need to copy string to buffer anyway so\n    // we do it here to avoid the overhead of calculating the buffer size\n    // in releaseWritingBuf.\n    if (kCopyBuffer) {\n      this._writingBuf = Buffer.from(this._writingBuf)\n    }\n    fs.write(this.fd, this._writingBuf, release)\n  }\n}\n\nfunction actualClose (sonic) {\n  if (sonic.fd === -1) {\n    sonic.once('ready', actualClose.bind(null, sonic))\n    return\n  }\n\n  if (sonic._periodicFlushTimer !== undefined) {\n    clearInterval(sonic._periodicFlushTimer)\n  }\n\n  sonic.destroyed = true\n  sonic._bufs = []\n  sonic._lens = []\n\n  assert(typeof sonic.fd === 'number', `sonic.fd must be a number, got ${typeof sonic.fd}`)\n  try {\n    fs.fsync(sonic.fd, closeWrapped)\n  } catch {\n  }\n\n  function closeWrapped () {\n    // We skip errors in fsync\n\n    if (sonic.fd !== 1 && sonic.fd !== 2) {\n      fs.close(sonic.fd, done)\n    } else {\n      done()\n    }\n  }\n\n  function done (err) {\n    if (err) {\n      sonic.emit('error', err)\n      return\n    }\n\n    if (sonic._ending && !sonic._writing) {\n      sonic.emit('finish')\n    }\n    sonic.emit('close')\n  }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n", "'use strict'\n\nconst refs = {\n  exit: [],\n  beforeExit: []\n}\nconst functions = {\n  exit: onExit,\n  beforeExit: onBeforeExit\n}\n\nlet registry\n\nfunction ensureRegistry () {\n  if (registry === undefined) {\n    registry = new FinalizationRegistry(clear)\n  }\n}\n\nfunction install (event) {\n  if (refs[event].length > 0) {\n    return\n  }\n\n  process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n  if (refs[event].length > 0) {\n    return\n  }\n  process.removeListener(event, functions[event])\n  if (refs.exit.length === 0 && refs.beforeExit.length === 0) {\n    registry = undefined\n  }\n}\n\nfunction onExit () {\n  callRefs('exit')\n}\n\nfunction onBeforeExit () {\n  callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n  for (const ref of refs[event]) {\n    const obj = ref.deref()\n    const fn = ref.fn\n\n    // This should always happen, however GC is\n    // undeterministic so it might not happen.\n    /* istanbul ignore else */\n    if (obj !== undefined) {\n      fn(obj, event)\n    }\n  }\n  refs[event] = []\n}\n\nfunction clear (ref) {\n  for (const event of ['exit', 'beforeExit']) {\n    const index = refs[event].indexOf(ref)\n    refs[event].splice(index, index + 1)\n    uninstall(event)\n  }\n}\n\nfunction _register (event, obj, fn) {\n  if (obj === undefined) {\n    throw new Error('the object can\\'t be undefined')\n  }\n  install(event)\n  const ref = new WeakRef(obj)\n  ref.fn = fn\n\n  ensureRegistry()\n  registry.register(obj, ref)\n  refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n  _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n  _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n  if (registry === undefined) {\n    return\n  }\n  registry.unregister(obj)\n  for (const event of ['exit', 'beforeExit']) {\n    refs[event] = refs[event].filter((ref) => {\n      const _obj = ref.deref()\n      return _obj && _obj !== obj\n    })\n    uninstall(event)\n  }\n}\n\nmodule.exports = {\n  register,\n  registerBeforeExit,\n  unregister\n}\n", "{\n  \"name\": \"thread-stream\",\n  \"version\": \"3.1.0\",\n  \"description\": \"A streaming way to send data to a Node.js Worker Thread\",\n  \"main\": \"index.js\",\n  \"types\": \"index.d.ts\",\n  \"dependencies\": {\n    \"real-require\": \"^0.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.1.0\",\n    \"@types/tap\": \"^15.0.0\",\n    \"@yao-pkg/pkg\": \"^5.11.5\",\n    \"desm\": \"^1.3.0\",\n    \"fastbench\": \"^1.0.1\",\n    \"husky\": \"^9.0.6\",\n    \"pino-elasticsearch\": \"^8.0.0\",\n    \"sonic-boom\": \"^4.0.1\",\n    \"standard\": \"^17.0.0\",\n    \"tap\": \"^16.2.0\",\n    \"ts-node\": \"^10.8.0\",\n    \"typescript\": \"^5.3.2\",\n    \"why-is-node-running\": \"^2.2.2\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc --noEmit\",\n    \"test\": \"standard && npm run build && npm run transpile && tap \\\"test/**/*.test.*js\\\" && tap --ts test/*.test.*ts\",\n    \"test:ci\": \"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts\",\n    \"test:ci:js\": \"tap --no-check-coverage --timeout=120 --coverage-report=lcovonly \\\"test/**/*.test.*js\\\"\",\n    \"test:ci:ts\": \"tap --ts --no-check-coverage --coverage-report=lcovonly \\\"test/**/*.test.*ts\\\"\",\n    \"test:yarn\": \"npm run transpile && tap \\\"test/**/*.test.js\\\" --no-check-coverage\",\n    \"transpile\": \"sh ./test/ts/transpile.sh\",\n    \"prepare\": \"husky install\"\n  },\n  \"standard\": {\n    \"ignore\": [\n      \"test/ts/**/*\",\n      \"test/syntax-error.mjs\"\n    ]\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mcollina/thread-stream.git\"\n  },\n  \"keywords\": [\n    \"worker\",\n    \"thread\",\n    \"threads\",\n    \"stream\"\n  ],\n  \"author\": \"Matteo Collina <hello@matteocollina.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mcollina/thread-stream/issues\"\n  },\n  \"homepage\": \"https://github.com/mcollina/thread-stream#readme\"\n}\n", "'use strict'\n\nconst MAX_TIMEOUT = 1000\n\nfunction wait (state, index, expected, timeout, done) {\n  const max = Date.now() + timeout\n  let current = Atomics.load(state, index)\n  if (current === expected) {\n    done(null, 'ok')\n    return\n  }\n  let prior = current\n  const check = (backoff) => {\n    if (Date.now() > max) {\n      done(null, 'timed-out')\n    } else {\n      setTimeout(() => {\n        prior = current\n        current = Atomics.load(state, index)\n        if (current === prior) {\n          check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n        } else {\n          if (current === expected) done(null, 'ok')\n          else done(null, 'not-equal')\n        }\n      }, backoff)\n    }\n  }\n  check(1)\n}\n\n// let waitDiffCount = 0\nfunction waitDiff (state, index, expected, timeout, done) {\n  // const id = waitDiffCount++\n  // process._rawDebug(`>>> waitDiff ${id}`)\n  const max = Date.now() + timeout\n  let current = Atomics.load(state, index)\n  if (current !== expected) {\n    done(null, 'ok')\n    return\n  }\n  const check = (backoff) => {\n    // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)\n    // process._rawDebug('' + backoff)\n    if (Date.now() > max) {\n      done(null, 'timed-out')\n    } else {\n      setTimeout(() => {\n        current = Atomics.load(state, index)\n        if (current !== expected) {\n          done(null, 'ok')\n        } else {\n          check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n        }\n      }, backoff)\n    }\n  }\n  check(1)\n}\n\nmodule.exports = { wait, waitDiff }\n", "'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n  WRITE_INDEX,\n  READ_INDEX\n}\n", "'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n  WRITE_INDEX,\n  READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n  constructor (value) {\n    this._value = value\n  }\n\n  deref () {\n    return this._value\n  }\n}\n\nclass FakeFinalizationRegistry {\n  register () {}\n\n  unregister () {}\n}\n\n// Currently using FinalizationRegistry with code coverage breaks the world\n// Ref: https://github.com/nodejs/node/issues/49344\nconst FinalizationRegistry = process.env.NODE_V8_COVERAGE ? FakeFinalizationRegistry : global.FinalizationRegistry || FakeFinalizationRegistry\nconst WeakRef = process.env.NODE_V8_COVERAGE ? FakeWeakRef : global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n  if (worker.exited) {\n    return\n  }\n  worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n  const { filename, workerData } = opts\n\n  const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n  const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n  const worker = new Worker(toExecute, {\n    ...opts.workerOpts,\n    trackUnmanagedFds: false,\n    workerData: {\n      filename: filename.indexOf('file://') === 0\n        ? filename\n        : pathToFileURL(filename).href,\n      dataBuf: stream[kImpl].dataBuf,\n      stateBuf: stream[kImpl].stateBuf,\n      workerData: {\n        $context: {\n          threadStreamVersion: version\n        },\n        ...workerData\n      }\n    }\n  })\n\n  // We keep a strong reference for now,\n  // we need to start writing first\n  worker.stream = new FakeWeakRef(stream)\n\n  worker.on('message', onWorkerMessage)\n  worker.on('exit', onWorkerExit)\n  registry.register(stream, worker)\n\n  return worker\n}\n\nfunction drain (stream) {\n  assert(!stream[kImpl].sync)\n  if (stream[kImpl].needDrain) {\n    stream[kImpl].needDrain = false\n    stream.emit('drain')\n  }\n}\n\nfunction nextFlush (stream) {\n  const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n  let leftover = stream[kImpl].data.length - writeIndex\n\n  if (leftover > 0) {\n    if (stream[kImpl].buf.length === 0) {\n      stream[kImpl].flushing = false\n\n      if (stream[kImpl].ending) {\n        end(stream)\n      } else if (stream[kImpl].needDrain) {\n        process.nextTick(drain, stream)\n      }\n\n      return\n    }\n\n    let toWrite = stream[kImpl].buf.slice(0, leftover)\n    let toWriteBytes = Buffer.byteLength(toWrite)\n    if (toWriteBytes <= leftover) {\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      // process._rawDebug('writing ' + toWrite.length)\n      write(stream, toWrite, nextFlush.bind(null, stream))\n    } else {\n      // multi-byte utf-8\n      stream.flush(() => {\n        // err is already handled in flush()\n        if (stream.destroyed) {\n          return\n        }\n\n        Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n        Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n        // Find a toWrite length that fits the buffer\n        // it must exists as the buffer is at least 4 bytes length\n        // and the max utf-8 length for a char is 4 bytes.\n        while (toWriteBytes > stream[kImpl].data.length) {\n          leftover = leftover / 2\n          toWrite = stream[kImpl].buf.slice(0, leftover)\n          toWriteBytes = Buffer.byteLength(toWrite)\n        }\n        stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n        write(stream, toWrite, nextFlush.bind(null, stream))\n      })\n    }\n  } else if (leftover === 0) {\n    if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n      // we had a flushSync in the meanwhile\n      return\n    }\n    stream.flush(() => {\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n      nextFlush(stream)\n    })\n  } else {\n    // This should never happen\n    destroy(stream, new Error('overwritten'))\n  }\n}\n\nfunction onWorkerMessage (msg) {\n  const stream = this.stream.deref()\n  if (stream === undefined) {\n    this.exited = true\n    // Terminate the worker.\n    this.terminate()\n    return\n  }\n\n  switch (msg.code) {\n    case 'READY':\n      // Replace the FakeWeakRef with a\n      // proper one.\n      this.stream = new WeakRef(stream)\n\n      stream.flush(() => {\n        stream[kImpl].ready = true\n        stream.emit('ready')\n      })\n      break\n    case 'ERROR':\n      destroy(stream, msg.err)\n      break\n    case 'EVENT':\n      if (Array.isArray(msg.args)) {\n        stream.emit(msg.name, ...msg.args)\n      } else {\n        stream.emit(msg.name, msg.args)\n      }\n      break\n    case 'WARNING':\n      process.emitWarning(msg.err)\n      break\n    default:\n      destroy(stream, new Error('this should not happen: ' + msg.code))\n  }\n}\n\nfunction onWorkerExit (code) {\n  const stream = this.stream.deref()\n  if (stream === undefined) {\n    // Nothing to do, the worker already exit\n    return\n  }\n  registry.unregister(stream)\n  stream.worker.exited = true\n  stream.worker.off('exit', onWorkerExit)\n  destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n  constructor (opts = {}) {\n    super()\n\n    if (opts.bufferSize < 4) {\n      throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n    }\n\n    this[kImpl] = {}\n    this[kImpl].stateBuf = new SharedArrayBuffer(128)\n    this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n    this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n    this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n    this[kImpl].sync = opts.sync || false\n    this[kImpl].ending = false\n    this[kImpl].ended = false\n    this[kImpl].needDrain = false\n    this[kImpl].destroyed = false\n    this[kImpl].flushing = false\n    this[kImpl].ready = false\n    this[kImpl].finished = false\n    this[kImpl].errored = null\n    this[kImpl].closed = false\n    this[kImpl].buf = ''\n\n    // TODO (fix): Make private?\n    this.worker = createWorker(this, opts) // TODO (fix): make private\n    this.on('message', (message, transferList) => {\n      this.worker.postMessage(message, transferList)\n    })\n  }\n\n  write (data) {\n    if (this[kImpl].destroyed) {\n      error(this, new Error('the worker has exited'))\n      return false\n    }\n\n    if (this[kImpl].ending) {\n      error(this, new Error('the worker is ending'))\n      return false\n    }\n\n    if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n      try {\n        writeSync(this)\n        this[kImpl].flushing = true\n      } catch (err) {\n        destroy(this, err)\n        return false\n      }\n    }\n\n    this[kImpl].buf += data\n\n    if (this[kImpl].sync) {\n      try {\n        writeSync(this)\n        return true\n      } catch (err) {\n        destroy(this, err)\n        return false\n      }\n    }\n\n    if (!this[kImpl].flushing) {\n      this[kImpl].flushing = true\n      setImmediate(nextFlush, this)\n    }\n\n    this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n    return !this[kImpl].needDrain\n  }\n\n  end () {\n    if (this[kImpl].destroyed) {\n      return\n    }\n\n    this[kImpl].ending = true\n    end(this)\n  }\n\n  flush (cb) {\n    if (this[kImpl].destroyed) {\n      if (typeof cb === 'function') {\n        process.nextTick(cb, new Error('the worker has exited'))\n      }\n      return\n    }\n\n    // TODO write all .buf\n    const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n    // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n    wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n      if (err) {\n        destroy(this, err)\n        process.nextTick(cb, err)\n        return\n      }\n      if (res === 'not-equal') {\n        // TODO handle deadlock\n        this.flush(cb)\n        return\n      }\n      process.nextTick(cb)\n    })\n  }\n\n  flushSync () {\n    if (this[kImpl].destroyed) {\n      return\n    }\n\n    writeSync(this)\n    flushSync(this)\n  }\n\n  unref () {\n    this.worker.unref()\n  }\n\n  ref () {\n    this.worker.ref()\n  }\n\n  get ready () {\n    return this[kImpl].ready\n  }\n\n  get destroyed () {\n    return this[kImpl].destroyed\n  }\n\n  get closed () {\n    return this[kImpl].closed\n  }\n\n  get writable () {\n    return !this[kImpl].destroyed && !this[kImpl].ending\n  }\n\n  get writableEnded () {\n    return this[kImpl].ending\n  }\n\n  get writableFinished () {\n    return this[kImpl].finished\n  }\n\n  get writableNeedDrain () {\n    return this[kImpl].needDrain\n  }\n\n  get writableObjectMode () {\n    return false\n  }\n\n  get writableErrored () {\n    return this[kImpl].errored\n  }\n}\n\nfunction error (stream, err) {\n  setImmediate(() => {\n    stream.emit('error', err)\n  })\n}\n\nfunction destroy (stream, err) {\n  if (stream[kImpl].destroyed) {\n    return\n  }\n  stream[kImpl].destroyed = true\n\n  if (err) {\n    stream[kImpl].errored = err\n    error(stream, err)\n  }\n\n  if (!stream.worker.exited) {\n    stream.worker.terminate()\n      .catch(() => {})\n      .then(() => {\n        stream[kImpl].closed = true\n        stream.emit('close')\n      })\n  } else {\n    setImmediate(() => {\n      stream[kImpl].closed = true\n      stream.emit('close')\n    })\n  }\n}\n\nfunction write (stream, data, cb) {\n  // data is smaller than the shared buffer length\n  const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n  const length = Buffer.byteLength(data)\n  stream[kImpl].data.write(data, current)\n  Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n  Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n  cb()\n  return true\n}\n\nfunction end (stream) {\n  if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n    return\n  }\n  stream[kImpl].ended = true\n\n  try {\n    stream.flushSync()\n\n    let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n    // process._rawDebug('writing index')\n    Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n    // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n    Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n    // Wait for the process to complete\n    let spins = 0\n    while (readIndex !== -1) {\n      // process._rawDebug(`read = ${read}`)\n      Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n      readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n      if (readIndex === -2) {\n        destroy(stream, new Error('end() failed'))\n        return\n      }\n\n      if (++spins === 10) {\n        destroy(stream, new Error('end() took too long (10s)'))\n        return\n      }\n    }\n\n    process.nextTick(() => {\n      stream[kImpl].finished = true\n      stream.emit('finish')\n    })\n  } catch (err) {\n    destroy(stream, err)\n  }\n  // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n  const cb = () => {\n    if (stream[kImpl].ending) {\n      end(stream)\n    } else if (stream[kImpl].needDrain) {\n      process.nextTick(drain, stream)\n    }\n  }\n  stream[kImpl].flushing = false\n\n  while (stream[kImpl].buf.length !== 0) {\n    const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n    let leftover = stream[kImpl].data.length - writeIndex\n    if (leftover === 0) {\n      flushSync(stream)\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n      continue\n    } else if (leftover < 0) {\n      // stream should never happen\n      throw new Error('overwritten')\n    }\n\n    let toWrite = stream[kImpl].buf.slice(0, leftover)\n    let toWriteBytes = Buffer.byteLength(toWrite)\n    if (toWriteBytes <= leftover) {\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      // process._rawDebug('writing ' + toWrite.length)\n      write(stream, toWrite, cb)\n    } else {\n      // multi-byte utf-8\n      flushSync(stream)\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n      // Find a toWrite length that fits the buffer\n      // it must exists as the buffer is at least 4 bytes length\n      // and the max utf-8 length for a char is 4 bytes.\n      while (toWriteBytes > stream[kImpl].buf.length) {\n        leftover = leftover / 2\n        toWrite = stream[kImpl].buf.slice(0, leftover)\n        toWriteBytes = Buffer.byteLength(toWrite)\n      }\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      write(stream, toWrite, cb)\n    }\n  }\n}\n\nfunction flushSync (stream) {\n  if (stream[kImpl].flushing) {\n    throw new Error('unable to flush while flushing')\n  }\n\n  // process._rawDebug('flushSync started')\n\n  const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n  let spins = 0\n\n  // TODO handle deadlock\n  while (true) {\n    const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n    if (readIndex === -2) {\n      throw Error('_flushSync failed')\n    }\n\n    // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n    if (readIndex !== writeIndex) {\n      // TODO stream timeouts for some reason.\n      Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n    } else {\n      break\n    }\n\n    if (++spins === 10) {\n      throw new Error('_flushSync took too long (10s)')\n    }\n  }\n  // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n", "'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('node:path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n  // This is leak free, it does not leave event handlers\n  onExit.register(stream, autoEnd)\n  onExit.registerBeforeExit(stream, flush)\n\n  stream.on('close', function () {\n    onExit.unregister(stream)\n  })\n}\n\nfunction buildStream (filename, workerData, workerOpts, sync) {\n  const stream = new ThreadStream({\n    filename,\n    workerData,\n    workerOpts,\n    sync\n  })\n\n  stream.on('ready', onReady)\n  stream.on('close', function () {\n    process.removeListener('exit', onExit)\n  })\n\n  process.on('exit', onExit)\n\n  function onReady () {\n    process.removeListener('exit', onExit)\n    stream.unref()\n\n    if (workerOpts.autoEnd !== false) {\n      setupOnExit(stream)\n    }\n  }\n\n  function onExit () {\n    /* istanbul ignore next */\n    if (stream.closed) {\n      return\n    }\n    stream.flushSync()\n    // Apparently there is a very sporadic race condition\n    // that in certain OS would prevent the messages to be flushed\n    // because the thread might not have been created still.\n    // Unfortunately we need to sleep(100) in this case.\n    sleep(100)\n    stream.end()\n  }\n\n  return stream\n}\n\nfunction autoEnd (stream) {\n  stream.ref()\n  stream.flushSync()\n  stream.end()\n  stream.once('close', function () {\n    stream.unref()\n  })\n}\n\nfunction flush (stream) {\n  stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n  const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions\n\n  const options = {\n    ...fullOptions.options\n  }\n\n  // Backwards compatibility\n  const callers = typeof caller === 'string' ? [caller] : caller\n\n  // This will be eventually modified by bundlers\n  const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n\n  let target = fullOptions.target\n\n  if (target && targets) {\n    throw new Error('only one of target or targets can be specified')\n  }\n\n  if (targets) {\n    target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n    options.targets = targets.filter(dest => dest.target).map((dest) => {\n      return {\n        ...dest,\n        target: fixTarget(dest.target)\n      }\n    })\n    options.pipelines = targets.filter(dest => dest.pipeline).map((dest) => {\n      return dest.pipeline.map((t) => {\n        return {\n          ...t,\n          level: dest.level, // duplicate the pipeline `level` property defined in the upper level\n          target: fixTarget(t.target)\n        }\n      })\n    })\n  } else if (pipeline) {\n    target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n    options.pipelines = [pipeline.map((dest) => {\n      return {\n        ...dest,\n        target: fixTarget(dest.target)\n      }\n    })]\n  }\n\n  if (levels) {\n    options.levels = levels\n  }\n\n  if (dedupe) {\n    options.dedupe = dedupe\n  }\n\n  options.pinoWillSendConfig = true\n\n  return buildStream(fixTarget(target), options, worker, sync)\n\n  function fixTarget (origin) {\n    origin = bundlerOverrides[origin] || origin\n\n    if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n      return origin\n    }\n\n    if (origin === 'pino/file') {\n      return join(__dirname, '..', 'file.js')\n    }\n\n    let fixTarget\n\n    for (const filePath of callers) {\n      try {\n        const context = filePath === 'node:repl'\n          ? process.cwd() + sep\n          : filePath\n\n        fixTarget = createRequire(context).resolve(origin)\n        break\n      } catch (err) {\n        // Silent catch\n        continue\n      }\n    }\n\n    if (!fixTarget) {\n      throw new Error(`unable to determine transport target for \"${origin}\"`)\n    }\n\n    return fixTarget\n  }\n}\n\nmodule.exports = transport\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst diagChan = require('node:diagnostics_channel')\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n  lsCacheSym,\n  chindingsSym,\n  writeSym,\n  serializersSym,\n  formatOptsSym,\n  endSym,\n  stringifiersSym,\n  stringifySym,\n  stringifySafeSym,\n  wildcardFirstSym,\n  nestedKeySym,\n  formattersSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeyStrSym,\n  msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\n\nlet asJsonChan\n// Node >= 18.19 supports diagnostics_channel.tracingChannel\nif (typeof diagChan.tracingChannel === 'function') {\n  asJsonChan = diagChan.tracingChannel('pino_asJson')\n} else {\n  // Older Node 18.x (e.g. 18.18), provided a no-op fallback\n  asJsonChan = {\n    hasSubscribers: false,\n    traceSync (fn, store, thisArg, ...args) {\n      return fn.call(thisArg, ...args)\n    }\n  }\n}\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n  if (!hook) return LOG\n\n  return function hookWrappedLog (...args) {\n    hook.call(this, args, LOG, level)\n  }\n\n  function LOG (o, ...n) {\n    if (typeof o === 'object') {\n      let msg = o\n      if (o !== null) {\n        if (o.method && o.headers && o.socket) {\n          o = mapHttpRequest(o)\n        } else if (typeof o.setHeader === 'function') {\n          o = mapHttpResponse(o)\n        }\n      }\n      let formatParams\n      if (msg === null && n.length === 0) {\n        formatParams = [null]\n      } else {\n        msg = n.shift()\n        formatParams = n\n      }\n      // We do not use a coercive check for `msg` as it is\n      // measurably slower than the explicit checks.\n      if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n        msg = this[msgPrefixSym] + msg\n      }\n      this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n    } else {\n      let msg = o === undefined ? n.shift() : o\n\n      // We do not use a coercive check for `msg` as it is\n      // measurably slower than the explicit checks.\n      if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n        msg = this[msgPrefixSym] + msg\n      }\n      this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n    }\n  }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n  let result = ''\n  let last = 0\n  let found = false\n  let point = 255\n  const l = str.length\n  if (l > 100) {\n    return JSON.stringify(str)\n  }\n  for (var i = 0; i < l && point >= 32; i++) {\n    point = str.charCodeAt(i)\n    if (point === 34 || point === 92) {\n      result += str.slice(last, i) + '\\\\'\n      last = i\n      found = true\n    }\n  }\n  if (!found) {\n    result = str\n  } else {\n    result += str.slice(last)\n  }\n  return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\n/**\n * `asJson` wraps `_asJson` in order to facilitate generating diagnostics.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string}\n */\nfunction asJson (obj, msg, num, time) {\n  if (asJsonChan.hasSubscribers === false) {\n    return _asJson.call(this, obj, msg, num, time)\n  }\n\n  const store = { instance: this, arguments }\n  return asJsonChan.traceSync(_asJson, store, this, obj, msg, num, time)\n}\n\n/**\n * `_asJson` parses all collected data and generates the finalized newline\n * delimited JSON string.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string} The finalized log string terminated with a newline.\n * @private\n */\nfunction _asJson (obj, msg, num, time) {\n  const stringify = this[stringifySym]\n  const stringifySafe = this[stringifySafeSym]\n  const stringifiers = this[stringifiersSym]\n  const end = this[endSym]\n  const chindings = this[chindingsSym]\n  const serializers = this[serializersSym]\n  const formatters = this[formattersSym]\n  const messageKey = this[messageKeySym]\n  const errorKey = this[errorKeySym]\n  let data = this[lsCacheSym][num] + time\n\n  // we need the child bindings added to the output first so instance logged\n  // objects can take precedence when JSON.parse-ing the resulting log line\n  data = data + chindings\n\n  let value\n  if (formatters.log) {\n    obj = formatters.log(obj)\n  }\n  const wildcardStringifier = stringifiers[wildcardFirstSym]\n  let propStr = ''\n  for (const key in obj) {\n    value = obj[key]\n    if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n      if (serializers[key]) {\n        value = serializers[key](value)\n      } else if (key === errorKey && serializers.err) {\n        value = serializers.err(value)\n      }\n\n      const stringifier = stringifiers[key] || wildcardStringifier\n\n      switch (typeof value) {\n        case 'undefined':\n        case 'function':\n          continue\n        case 'number':\n          /* eslint no-fallthrough: \"off\" */\n          if (Number.isFinite(value) === false) {\n            value = null\n          }\n        // this case explicitly falls through to the next one\n        case 'boolean':\n          if (stringifier) value = stringifier(value)\n          break\n        case 'string':\n          value = (stringifier || asString)(value)\n          break\n        default:\n          value = (stringifier || stringify)(value, stringifySafe)\n      }\n      if (value === undefined) continue\n      const strKey = asString(key)\n      propStr += ',' + strKey + ':' + value\n    }\n  }\n\n  let msgStr = ''\n  if (msg !== undefined) {\n    value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n    const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n    switch (typeof value) {\n      case 'function':\n        break\n      case 'number':\n        /* eslint no-fallthrough: \"off\" */\n        if (Number.isFinite(value) === false) {\n          value = null\n        }\n      // this case explicitly falls through to the next one\n      case 'boolean':\n        if (stringifier) value = stringifier(value)\n        msgStr = ',\"' + messageKey + '\":' + value\n        break\n      case 'string':\n        value = (stringifier || asString)(value)\n        msgStr = ',\"' + messageKey + '\":' + value\n        break\n      default:\n        value = (stringifier || stringify)(value, stringifySafe)\n        msgStr = ',\"' + messageKey + '\":' + value\n    }\n  }\n\n  if (this[nestedKeySym] && propStr) {\n    // place all the obj properties under the specified key\n    // the nested key is already formatted from the constructor\n    return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n  } else {\n    return data + propStr + msgStr + end\n  }\n}\n\nfunction asChindings (instance, bindings) {\n  let value\n  let data = instance[chindingsSym]\n  const stringify = instance[stringifySym]\n  const stringifySafe = instance[stringifySafeSym]\n  const stringifiers = instance[stringifiersSym]\n  const wildcardStringifier = stringifiers[wildcardFirstSym]\n  const serializers = instance[serializersSym]\n  const formatter = instance[formattersSym].bindings\n  bindings = formatter(bindings)\n\n  for (const key in bindings) {\n    value = bindings[key]\n    const valid = (key.length < 5 || (key !== 'level' &&\n      key !== 'serializers' &&\n      key !== 'formatters' &&\n      key !== 'customLevels')) &&\n      bindings.hasOwnProperty(key) &&\n      value !== undefined\n    if (valid === true) {\n      value = serializers[key] ? serializers[key](value) : value\n      value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n      if (value === undefined) continue\n      data += ',\"' + key + '\":' + value\n    }\n  }\n  return data\n}\n\nfunction hasBeenTampered (stream) {\n  return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n  const stream = new SonicBoom(opts)\n  stream.on('error', filterBrokenPipe)\n  // If we are sync: false, we must flush on exit\n  if (!opts.sync && isMainThread) {\n    onExit.register(stream, autoEnd)\n\n    stream.on('close', function () {\n      onExit.unregister(stream)\n    })\n  }\n  return stream\n\n  function filterBrokenPipe (err) {\n    // Impossible to replicate across all operating systems\n    /* istanbul ignore next */\n    if (err.code === 'EPIPE') {\n      // If we get EPIPE, we should stop logging here\n      // however we have no control to the consumer of\n      // SonicBoom, so we just overwrite the write method\n      stream.write = noop\n      stream.end = noop\n      stream.flushSync = noop\n      stream.destroy = noop\n      return\n    }\n    stream.removeListener('error', filterBrokenPipe)\n    stream.emit('error', err)\n  }\n}\n\nfunction autoEnd (stream, eventName) {\n  // This check is needed only on some platforms\n  /* istanbul ignore next */\n  if (stream.destroyed) {\n    return\n  }\n\n  if (eventName === 'beforeExit') {\n    // We still have an event loop, let's use it\n    stream.flush()\n    stream.on('drain', function () {\n      stream.end()\n    })\n  } else {\n    // For some reason istanbul is not detecting this, but it's there\n    /* istanbul ignore next */\n    // We do not have an event loop, so flush synchronously\n    stream.flushSync()\n  }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n  return function normalizeArgs (instance, caller, opts = {}, stream) {\n    // support stream as a string\n    if (typeof opts === 'string') {\n      stream = buildSafeSonicBoom({ dest: opts })\n      opts = {}\n    } else if (typeof stream === 'string') {\n      if (opts && opts.transport) {\n        throw Error('only one of option.transport or stream can be specified')\n      }\n      stream = buildSafeSonicBoom({ dest: stream })\n    } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n      stream = opts\n      opts = {}\n    } else if (opts.transport) {\n      if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n        throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n      }\n      if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n        throw Error('option.transport.targets do not allow custom level formatters')\n      }\n\n      let customLevels\n      if (opts.customLevels) {\n        customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n      }\n      stream = transport({ caller, ...opts.transport, levels: customLevels })\n    }\n    opts = Object.assign({}, defaultOptions, opts)\n    opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n    opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n    if (opts.prettyPrint) {\n      throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n    }\n\n    const { enabled, onChild } = opts\n    if (enabled === false) opts.level = 'silent'\n    if (!onChild) opts.onChild = noop\n    if (!stream) {\n      if (!hasBeenTampered(process.stdout)) {\n        // If process.stdout.fd is undefined, it means that we are running\n        // in a worker thread. Let's assume we are logging to file descriptor 1.\n        stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n      } else {\n        stream = process.stdout\n      }\n    }\n    return { opts, stream }\n  }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n  try {\n    return JSON.stringify(obj)\n  } catch (_) {\n    try {\n      const stringify = stringifySafeFn || this[stringifySafeSym]\n      return stringify(obj)\n    } catch (_) {\n      return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n    }\n  }\n}\n\nfunction buildFormatters (level, bindings, log) {\n  return {\n    level,\n    bindings,\n    log\n  }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n  const fd = Number(destination)\n  if (typeof destination === 'string' && Number.isFinite(fd)) {\n    return fd\n  }\n  // destination could be undefined if we are in a worker\n  if (destination === undefined) {\n    // This is stdout in UNIX systems\n    return 1\n  }\n  return destination\n}\n\nmodule.exports = {\n  noop,\n  buildSafeSonicBoom,\n  asChindings,\n  asJson,\n  genLog,\n  createArgsNormalizer,\n  stringify,\n  buildFormatters,\n  normalizeDestFileDescriptor\n}\n", "/**\n * Represents default log level values\n *\n * @enum {number}\n */\nconst DEFAULT_LEVELS = {\n  trace: 10,\n  debug: 20,\n  info: 30,\n  warn: 40,\n  error: 50,\n  fatal: 60\n}\n\n/**\n * Represents sort order direction: `ascending` or `descending`\n *\n * @enum {string}\n */\nconst SORTING_ORDER = {\n  ASC: 'ASC',\n  DESC: 'DESC'\n}\n\nmodule.exports = {\n  DEFAULT_LEVELS,\n  SORTING_ORDER\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n  lsCacheSym,\n  levelValSym,\n  useOnlyCustomLevelsSym,\n  streamSym,\n  formattersSym,\n  hooksSym,\n  levelCompSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')\n\nconst levelMethods = {\n  fatal: (hook) => {\n    const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)\n    return function (...args) {\n      const stream = this[streamSym]\n      logFatal.call(this, ...args)\n      if (typeof stream.flushSync === 'function') {\n        try {\n          stream.flushSync()\n        } catch (e) {\n          // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n        }\n      }\n    }\n  },\n  error: (hook) => genLog(DEFAULT_LEVELS.error, hook),\n  warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),\n  info: (hook) => genLog(DEFAULT_LEVELS.info, hook),\n  debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),\n  trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)\n}\n\nconst nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {\n  o[DEFAULT_LEVELS[k]] = k\n  return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n  o[k] = '{\"level\":' + Number(k)\n  return o\n}, {})\n\nfunction genLsCache (instance) {\n  const formatter = instance[formattersSym].level\n  const { labels } = instance.levels\n  const cache = {}\n  for (const label in labels) {\n    const level = formatter(labels[label], Number(label))\n    cache[label] = JSON.stringify(level).slice(0, -1)\n  }\n  instance[lsCacheSym] = cache\n  return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n  if (useOnlyCustomLevels) {\n    return false\n  }\n\n  switch (level) {\n    case 'fatal':\n    case 'error':\n    case 'warn':\n    case 'info':\n    case 'debug':\n    case 'trace':\n      return true\n    default:\n      return false\n  }\n}\n\nfunction setLevel (level) {\n  const { labels, values } = this.levels\n  if (typeof level === 'number') {\n    if (labels[level] === undefined) throw Error('unknown level value' + level)\n    level = labels[level]\n  }\n  if (values[level] === undefined) throw Error('unknown level ' + level)\n  const preLevelVal = this[levelValSym]\n  const levelVal = this[levelValSym] = values[level]\n  const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n  const levelComparison = this[levelCompSym]\n  const hook = this[hooksSym].logMethod\n\n  for (const key in values) {\n    if (levelComparison(values[key], levelVal) === false) {\n      this[key] = noop\n      continue\n    }\n    this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n  }\n\n  this.emit(\n    'level-change',\n    level,\n    levelVal,\n    labels[preLevelVal],\n    preLevelVal,\n    this\n  )\n}\n\nfunction getLevel (level) {\n  const { levels, levelVal } = this\n  // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n  return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n  const { values } = this.levels\n  const logLevelVal = values[logLevel]\n  return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])\n}\n\n/**\n * Determine if the given `current` level is enabled by comparing it\n * against the current threshold (`expected`).\n *\n * @param {SORTING_ORDER} direction comparison direction \"ASC\" or \"DESC\"\n * @param {number} current current log level number representation\n * @param {number} expected threshold value to compare with\n * @returns {boolean}\n */\nfunction compareLevel (direction, current, expected) {\n  if (direction === SORTING_ORDER.DESC) {\n    return current <= expected\n  }\n\n  return current >= expected\n}\n\n/**\n * Create a level comparison function based on `levelComparison`\n * it could a default function which compares levels either in \"ascending\" or \"descending\" order or custom comparison function\n *\n * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function\n * @returns Function\n */\nfunction genLevelComparison (levelComparison) {\n  if (typeof levelComparison === 'string') {\n    return compareLevel.bind(null, levelComparison)\n  }\n\n  return levelComparison\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n  const customNums = customLevels\n    /* eslint-disable */\n    ? Object.keys(customLevels).reduce((o, k) => {\n        o[customLevels[k]] = k\n        return o\n      }, {})\n    : null\n    /* eslint-enable */\n\n  const labels = Object.assign(\n    Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n    useOnlyCustomLevels ? null : nums,\n    customNums\n  )\n  const values = Object.assign(\n    Object.create(Object.prototype, { silent: { value: Infinity } }),\n    useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n    customLevels\n  )\n  return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n  if (typeof defaultLevel === 'number') {\n    const values = [].concat(\n      Object.keys(customLevels || {}).map(key => customLevels[key]),\n      useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n      Infinity\n    )\n    if (!values.includes(defaultLevel)) {\n      throw Error(`default level:${defaultLevel} must be included in custom levels`)\n    }\n    return\n  }\n\n  const labels = Object.assign(\n    Object.create(Object.prototype, { silent: { value: Infinity } }),\n    useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n    customLevels\n  )\n  if (!(defaultLevel in labels)) {\n    throw Error(`default level:${defaultLevel} must be included in custom levels`)\n  }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n  const { labels, values } = levels\n  for (const k in customLevels) {\n    if (k in values) {\n      throw Error('levels cannot be overridden')\n    }\n    if (customLevels[k] in labels) {\n      throw Error('pre-existing level values cannot be used for new levels')\n    }\n  }\n}\n\n/**\n * Validates whether `levelComparison` is correct\n *\n * @throws Error\n * @param {SORTING_ORDER | Function} levelComparison - value to validate\n * @returns\n */\nfunction assertLevelComparison (levelComparison) {\n  if (typeof levelComparison === 'function') {\n    return\n  }\n\n  if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {\n    return\n  }\n\n  throw new Error('Levels comparison should be one of \"ASC\", \"DESC\" or \"function\" type')\n}\n\nmodule.exports = {\n  initialLsCache,\n  genLsCache,\n  levelMethods,\n  getLevel,\n  setLevel,\n  isLevelEnabled,\n  mappings,\n  assertNoLevelCollisions,\n  assertDefaultLevelFound,\n  genLevelComparison,\n  assertLevelComparison\n}\n", "'use strict'\n\nmodule.exports = { version: '9.14.0' }\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('node:events')\nconst {\n  lsCacheSym,\n  levelValSym,\n  setLevelSym,\n  getLevelSym,\n  chindingsSym,\n  parsedChindingsSym,\n  mixinSym,\n  asJsonSym,\n  writeSym,\n  mixinMergeStrategySym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  serializersSym,\n  formattersSym,\n  errorKeySym,\n  messageKeySym,\n  useOnlyCustomLevelsSym,\n  needsMetadataGsym,\n  redactFmtSym,\n  stringifySym,\n  formatOptsSym,\n  stringifiersSym,\n  msgPrefixSym,\n  hooksSym\n} = require('./symbols')\nconst {\n  getLevel,\n  setLevel,\n  isLevelEnabled,\n  mappings,\n  initialLsCache,\n  genLsCache,\n  assertNoLevelCollisions\n} = require('./levels')\nconst {\n  asChindings,\n  asJson,\n  buildFormatters,\n  stringify,\n  noop\n} = require('./tools')\nconst {\n  version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n  constructor,\n  child,\n  bindings,\n  setBindings,\n  flush,\n  isLevelEnabled,\n  version,\n  get level () { return this[getLevelSym]() },\n  set level (lvl) { this[setLevelSym](lvl) },\n  get levelVal () { return this[levelValSym] },\n  set levelVal (n) { throw Error('levelVal is read-only') },\n  get msgPrefix () { return this[msgPrefixSym] },\n  get [Symbol.toStringTag] () { return 'Pino' },\n  [lsCacheSym]: initialLsCache,\n  [writeSym]: write,\n  [asJsonSym]: asJson,\n  [getLevelSym]: getLevel,\n  [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n  return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n  if (!bindings) {\n    throw Error('missing bindings for child Pino')\n  }\n  const serializers = this[serializersSym]\n  const formatters = this[formattersSym]\n  const instance = Object.create(this)\n\n  // If an `options` object was not supplied, we can improve\n  // the performance of child creation by skipping\n  // the checks for set options and simply return\n  // a baseline instance.\n  if (options == null) {\n    if (instance[formattersSym].bindings !== resetChildingsFormatter) {\n      instance[formattersSym] = buildFormatters(\n        formatters.level,\n        resetChildingsFormatter,\n        formatters.log\n      )\n    }\n\n    instance[chindingsSym] = asChindings(instance, bindings)\n\n    // Always call setLevel to ensure child gets own method references\n    // This prevents issues when parent methods are wrapped (e.g., by Sinon)\n    instance[setLevelSym](this.level)\n\n    if (this.onChild !== noop) {\n      this.onChild(instance)\n    }\n\n    return instance\n  }\n\n  if (options.hasOwnProperty('serializers') === true) {\n    instance[serializersSym] = Object.create(null)\n\n    for (const k in serializers) {\n      instance[serializersSym][k] = serializers[k]\n    }\n    const parentSymbols = Object.getOwnPropertySymbols(serializers)\n    /* eslint no-var: off */\n    for (var i = 0; i < parentSymbols.length; i++) {\n      const ks = parentSymbols[i]\n      instance[serializersSym][ks] = serializers[ks]\n    }\n\n    for (const bk in options.serializers) {\n      instance[serializersSym][bk] = options.serializers[bk]\n    }\n    const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n    for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n      const bks = bindingsSymbols[bi]\n      instance[serializersSym][bks] = options.serializers[bks]\n    }\n  } else instance[serializersSym] = serializers\n  if (options.hasOwnProperty('formatters')) {\n    const { level, bindings: chindings, log } = options.formatters\n    instance[formattersSym] = buildFormatters(\n      level || formatters.level,\n      chindings || resetChildingsFormatter,\n      log || formatters.log\n    )\n  } else {\n    instance[formattersSym] = buildFormatters(\n      formatters.level,\n      resetChildingsFormatter,\n      formatters.log\n    )\n  }\n  if (options.hasOwnProperty('customLevels') === true) {\n    assertNoLevelCollisions(this.levels, options.customLevels)\n    instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n    genLsCache(instance)\n  }\n\n  // redact must place before asChindings and only replace if exist\n  if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n    instance.redact = options.redact // replace redact directly\n    const stringifiers = redaction(instance.redact, stringify)\n    const formatOpts = { stringify: stringifiers[redactFmtSym] }\n    instance[stringifySym] = stringify\n    instance[stringifiersSym] = stringifiers\n    instance[formatOptsSym] = formatOpts\n  }\n\n  if (typeof options.msgPrefix === 'string') {\n    instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n  }\n\n  instance[chindingsSym] = asChindings(instance, bindings)\n  const childLevel = options.level || this.level\n  instance[setLevelSym](childLevel)\n  this.onChild(instance)\n  return instance\n}\n\nfunction bindings () {\n  const chindings = this[chindingsSym]\n  const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n  const bindingsFromJson = JSON.parse(chindingsJson)\n  delete bindingsFromJson.pid\n  delete bindingsFromJson.hostname\n  return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n  const chindings = asChindings(this, newBindings)\n  this[chindingsSym] = chindings\n  delete this[parsedChindingsSym]\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n  return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n  const t = this[timeSym]()\n  const mixin = this[mixinSym]\n  const errorKey = this[errorKeySym]\n  const messageKey = this[messageKeySym]\n  const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n  let obj\n  const streamWriteHook = this[hooksSym].streamWrite\n\n  if (_obj === undefined || _obj === null) {\n    obj = {}\n  } else if (_obj instanceof Error) {\n    obj = { [errorKey]: _obj }\n    if (msg === undefined) {\n      msg = _obj.message\n    }\n  } else {\n    obj = _obj\n    if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n      msg = _obj[errorKey].message\n    }\n  }\n\n  if (mixin) {\n    obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n  }\n\n  const s = this[asJsonSym](obj, msg, num, t)\n\n  const stream = this[streamSym]\n  if (stream[needsMetadataGsym] === true) {\n    stream.lastLevel = num\n    stream.lastObj = obj\n    stream.lastMsg = msg\n    stream.lastTime = t.slice(this[timeSliceIndexSym])\n    stream.lastLogger = this // for child loggers\n  }\n  stream.write(streamWriteHook ? streamWriteHook(s) : s)\n}\n\nfunction flush (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw Error('callback must be a function')\n  }\n\n  const stream = this[streamSym]\n\n  if (typeof stream.flush === 'function') {\n    stream.flush(cb || noop)\n  } else if (cb) cb()\n}\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n  // Some magic numbers that worked out fine while benchmarking with v8 8.0\n  if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n    return `\"${str}\"`\n  }\n  return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n  // Insertion sort is very efficient for small input sizes, but it has a bad\n  // worst case complexity. Thus, use native array sort for bigger values.\n  if (array.length > 2e2 || comparator) {\n    return array.sort(comparator)\n  }\n  for (let i = 1; i < array.length; i++) {\n    const currentValue = array[i]\n    let position = i\n    while (position !== 0 && array[position - 1] > currentValue) {\n      array[position] = array[position - 1]\n      position--\n    }\n    array[position] = currentValue\n  }\n  return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n  Object.getOwnPropertyDescriptor(\n    Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        new Int8Array()\n      )\n    ),\n    Symbol.toStringTag\n  ).get\n\nfunction isTypedArrayWithEntries (value) {\n  return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n  if (array.length < maximumBreadth) {\n    maximumBreadth = array.length\n  }\n  const whitespace = separator === ',' ? '' : ' '\n  let res = `\"0\":${whitespace}${array[0]}`\n  for (let i = 1; i < maximumBreadth; i++) {\n    res += `${separator}\"${i}\":${whitespace}${array[i]}`\n  }\n  return res\n}\n\nfunction getCircularValueOption (options) {\n  if (hasOwnProperty.call(options, 'circularValue')) {\n    const circularValue = options.circularValue\n    if (typeof circularValue === 'string') {\n      return `\"${circularValue}\"`\n    }\n    if (circularValue == null) {\n      return circularValue\n    }\n    if (circularValue === Error || circularValue === TypeError) {\n      return {\n        toString () {\n          throw new TypeError('Converting circular structure to JSON')\n        }\n      }\n    }\n    throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n  }\n  return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n  let value\n  if (hasOwnProperty.call(options, 'deterministic')) {\n    value = options.deterministic\n    if (typeof value !== 'boolean' && typeof value !== 'function') {\n      throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'boolean') {\n      throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'number') {\n      throw new TypeError(`The \"${key}\" argument must be of type number`)\n    }\n    if (!Number.isInteger(value)) {\n      throw new TypeError(`The \"${key}\" argument must be an integer`)\n    }\n    if (value < 1) {\n      throw new RangeError(`The \"${key}\" argument must be >= 1`)\n    }\n  }\n  return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n  if (number === 1) {\n    return '1 item'\n  }\n  return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n  const replacerSet = new Set()\n  for (const value of replacerArray) {\n    if (typeof value === 'string' || typeof value === 'number') {\n      replacerSet.add(String(value))\n    }\n  }\n  return replacerSet\n}\n\nfunction getStrictOption (options) {\n  if (hasOwnProperty.call(options, 'strict')) {\n    const value = options.strict\n    if (typeof value !== 'boolean') {\n      throw new TypeError('The \"strict\" argument must be of type boolean')\n    }\n    if (value) {\n      return (value) => {\n        let message = `Object can not safely be stringified. Received type ${typeof value}`\n        if (typeof value !== 'function') message += ` (${value.toString()})`\n        throw new Error(message)\n      }\n    }\n  }\n}\n\nfunction configure (options) {\n  options = { ...options }\n  const fail = getStrictOption(options)\n  if (fail) {\n    if (options.bigint === undefined) {\n      options.bigint = false\n    }\n    if (!('circularValue' in options)) {\n      options.circularValue = Error\n    }\n  }\n  const circularValue = getCircularValueOption(options)\n  const bigint = getBooleanOption(options, 'bigint')\n  const deterministic = getDeterministicOption(options)\n  const comparator = typeof deterministic === 'function' ? deterministic : undefined\n  const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n  const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n  function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n    let value = parent[key]\n\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n    value = replacer.call(parent, key, value)\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n        let join = ','\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let whitespace = ''\n        let separator = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (deterministic && !isTypedArrayWithEntries(value)) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        const originalIndentation = indentation\n        let res = ''\n        let join = ','\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n        stack.push(value)\n        let whitespace = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        let separator = ''\n        for (const key of replacer) {\n          const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyIndent (key, value, stack, spacer, indentation) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again.\n          if (typeof value !== 'object') {\n            return stringifyIndent(key, value, stack, spacer, indentation)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          indentation += spacer\n          let res = `\\n${indentation}`\n          const join = `,\\n${indentation}`\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          res += `\\n${originalIndentation}`\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        indentation += spacer\n        const join = `,\\n${indentation}`\n        let res = ''\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, join, maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = join\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}: ${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (separator !== '') {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifySimple (key, value, stack) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again\n          if (typeof value !== 'object') {\n            return stringifySimple(key, value, stack)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n\n        const hasLength = value.length !== undefined\n        if (hasLength && Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifySimple(String(i), value[i], stack)\n            res += tmp !== undefined ? tmp : 'null'\n            res += ','\n          }\n          const tmp = stringifySimple(String(i), value[i], stack)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (hasLength && isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, ',', maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = ','\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifySimple(key, value[key], stack)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${tmp}`\n            separator = ','\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringify (value, replacer, space) {\n    if (arguments.length > 1) {\n      let spacer = ''\n      if (typeof space === 'number') {\n        spacer = ' '.repeat(Math.min(space, 10))\n      } else if (typeof space === 'string') {\n        spacer = space.slice(0, 10)\n      }\n      if (replacer != null) {\n        if (typeof replacer === 'function') {\n          return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n        }\n        if (Array.isArray(replacer)) {\n          return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n        }\n      }\n      if (spacer.length !== 0) {\n        return stringifyIndent('', value, [], spacer, '')\n      }\n    }\n    return stringifySimple('', value, [])\n  }\n\n  return stringify\n}\n", "'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { DEFAULT_LEVELS } = require('./constants')\n\nconst DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info\n\nfunction multistream (streamsArray, opts) {\n  streamsArray = streamsArray || []\n  opts = opts || { dedupe: false }\n\n  const streamLevels = Object.create(DEFAULT_LEVELS)\n  streamLevels.silent = Infinity\n  if (opts.levels && typeof opts.levels === 'object') {\n    Object.keys(opts.levels).forEach(i => {\n      streamLevels[i] = opts.levels[i]\n    })\n  }\n\n  const res = {\n    write,\n    add,\n    remove,\n    emit,\n    flushSync,\n    end,\n    minLevel: 0,\n    lastId: 0,\n    streams: [],\n    clone,\n    [metadata]: true,\n    streamLevels\n  }\n\n  if (Array.isArray(streamsArray)) {\n    streamsArray.forEach(add, res)\n  } else {\n    add.call(res, streamsArray)\n  }\n\n  // clean this object up\n  // or it will stay allocated forever\n  // as it is closed on the following closures\n  streamsArray = null\n\n  return res\n\n  // we can exit early because the streams are ordered by level\n  function write (data) {\n    let dest\n    const level = this.lastLevel\n    const { streams } = this\n    // for handling situation when several streams has the same level\n    let recordedLevel = 0\n    let stream\n\n    // if dedupe set to true we send logs to the stream with the highest level\n    // therefore, we have to change sorting order\n    for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n      dest = streams[i]\n      if (dest.level <= level) {\n        if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n          break\n        }\n        stream = dest.stream\n        if (stream[metadata]) {\n          const { lastTime, lastMsg, lastObj, lastLogger } = this\n          stream.lastLevel = level\n          stream.lastTime = lastTime\n          stream.lastMsg = lastMsg\n          stream.lastObj = lastObj\n          stream.lastLogger = lastLogger\n        }\n        stream.write(data)\n        if (opts.dedupe) {\n          recordedLevel = dest.level\n        }\n      } else if (!opts.dedupe) {\n        break\n      }\n    }\n  }\n\n  function emit (...args) {\n    for (const { stream } of this.streams) {\n      if (typeof stream.emit === 'function') {\n        stream.emit(...args)\n      }\n    }\n  }\n\n  function flushSync () {\n    for (const { stream } of this.streams) {\n      if (typeof stream.flushSync === 'function') {\n        stream.flushSync()\n      }\n    }\n  }\n\n  function add (dest) {\n    if (!dest) {\n      return res\n    }\n\n    // Check that dest implements either StreamEntry or DestinationStream\n    const isStream = typeof dest.write === 'function' || dest.stream\n    const stream_ = dest.write ? dest : dest.stream\n    // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n    if (!isStream) {\n      throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n    }\n\n    const { streams, streamLevels } = this\n\n    let level\n    if (typeof dest.levelVal === 'number') {\n      level = dest.levelVal\n    } else if (typeof dest.level === 'string') {\n      level = streamLevels[dest.level]\n    } else if (typeof dest.level === 'number') {\n      level = dest.level\n    } else {\n      level = DEFAULT_INFO_LEVEL\n    }\n\n    const dest_ = {\n      stream: stream_,\n      level,\n      levelVal: undefined,\n      id: ++res.lastId\n    }\n\n    streams.unshift(dest_)\n    streams.sort(compareByLevel)\n\n    this.minLevel = streams[0].level\n\n    return res\n  }\n\n  function remove (id) {\n    const { streams } = this\n    const index = streams.findIndex(s => s.id === id)\n\n    if (index >= 0) {\n      streams.splice(index, 1)\n      streams.sort(compareByLevel)\n      this.minLevel = streams.length > 0 ? streams[0].level : -1\n    }\n\n    return res\n  }\n\n  function end () {\n    for (const { stream } of this.streams) {\n      if (typeof stream.flushSync === 'function') {\n        stream.flushSync()\n      }\n      stream.end()\n    }\n  }\n\n  function clone (level) {\n    const streams = new Array(this.streams.length)\n\n    for (let i = 0; i < streams.length; i++) {\n      streams[i] = {\n        level,\n        stream: this.streams[i].stream\n      }\n    }\n\n    return {\n      write,\n      add,\n      remove,\n      minLevel: level,\n      streams,\n      clone,\n      emit,\n      flushSync,\n      [metadata]: true\n    }\n  }\n}\n\nfunction compareByLevel (a, b) {\n  return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n  return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n  return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n  return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n", "\n          function pinoBundlerAbsolutePath(p) {\n            try {\n              const path = require('path');\n              // Always resolve to the absolute output directory where worker files are located\n              const outputDir = \"/home/runner/workspace/artifacts/api-server/dist\";\n              return path.resolve(outputDir, p.replace(/^\\.\\//, ''));\n            } catch(e) {\n              // ESM fallback: resolve relative to this bundle's location  \n              const f = new Function('p', 'return new URL(p, import.meta.url).pathname');\n              return f(p);\n            }\n          }\n        \n          globalThis.__bundlerPathsOverrides = { ...(globalThis.__bundlerPathsOverrides || {}), 'thread-stream-worker': pinoBundlerAbsolutePath('./thread-stream-worker.mjs'),'pino-worker': pinoBundlerAbsolutePath('./pino-worker.mjs'),'pino/file': pinoBundlerAbsolutePath('./pino-file.mjs'),'pino-pretty': pinoBundlerAbsolutePath('./pino-pretty.mjs')}\n        'use strict'\n\nconst os = require('node:os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')\nconst {\n  createArgsNormalizer,\n  asChindings,\n  buildSafeSonicBoom,\n  buildFormatters,\n  stringify,\n  normalizeDestFileDescriptor,\n  noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n  chindingsSym,\n  redactFmtSym,\n  serializersSym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  stringifySym,\n  stringifySafeSym,\n  stringifiersSym,\n  setLevelSym,\n  endSym,\n  formatOptsSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeySym,\n  mixinSym,\n  levelCompSym,\n  useOnlyCustomLevelsSym,\n  formattersSym,\n  hooksSym,\n  nestedKeyStrSym,\n  mixinMergeStrategySym,\n  msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n  level: 'info',\n  levelComparison: SORTING_ORDER.ASC,\n  levels: DEFAULT_LEVELS,\n  messageKey: 'msg',\n  errorKey: 'err',\n  nestedKey: null,\n  enabled: true,\n  base: { pid, hostname },\n  serializers: Object.assign(Object.create(null), {\n    err: defaultErrorSerializer\n  }),\n  formatters: Object.assign(Object.create(null), {\n    bindings (bindings) {\n      return bindings\n    },\n    level (label, number) {\n      return { level: number }\n    }\n  }),\n  hooks: {\n    logMethod: undefined,\n    streamWrite: undefined\n  },\n  timestamp: epochTime,\n  name: undefined,\n  redact: null,\n  customLevels: null,\n  useOnlyCustomLevels: false,\n  depthLimit: 5,\n  edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n  const instance = {}\n  const { opts, stream } = normalize(instance, caller(), ...args)\n\n  if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()\n\n  const {\n    redact,\n    crlf,\n    serializers,\n    timestamp,\n    messageKey,\n    errorKey,\n    nestedKey,\n    base,\n    name,\n    level,\n    customLevels,\n    levelComparison,\n    mixin,\n    mixinMergeStrategy,\n    useOnlyCustomLevels,\n    formatters,\n    hooks,\n    depthLimit,\n    edgeLimit,\n    onChild,\n    msgPrefix\n  } = opts\n\n  const stringifySafe = configure({\n    maximumDepth: depthLimit,\n    maximumBreadth: edgeLimit\n  })\n\n  const allFormatters = buildFormatters(\n    formatters.level,\n    formatters.bindings,\n    formatters.log\n  )\n\n  const stringifyFn = stringify.bind({\n    [stringifySafeSym]: stringifySafe\n  })\n  const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n  const formatOpts = redact\n    ? { stringify: stringifiers[redactFmtSym] }\n    : { stringify: stringifyFn }\n  const end = '}' + (crlf ? '\\r\\n' : '\\n')\n  const coreChindings = asChindings.bind(null, {\n    [chindingsSym]: '',\n    [serializersSym]: serializers,\n    [stringifiersSym]: stringifiers,\n    [stringifySym]: stringify,\n    [stringifySafeSym]: stringifySafe,\n    [formattersSym]: allFormatters\n  })\n\n  let chindings = ''\n  if (base !== null) {\n    if (name === undefined) {\n      chindings = coreChindings(base)\n    } else {\n      chindings = coreChindings(Object.assign({}, base, { name }))\n    }\n  }\n\n  const time = (timestamp instanceof Function)\n    ? timestamp\n    : (timestamp ? epochTime : nullTime)\n  const timeSliceIndex = time().indexOf(':') + 1\n\n  if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n  if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n  if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n  assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n  const levels = mappings(customLevels, useOnlyCustomLevels)\n\n  if (typeof stream.emit === 'function') {\n    stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })\n  }\n\n  assertLevelComparison(levelComparison)\n  const levelCompFunc = genLevelComparison(levelComparison)\n\n  Object.assign(instance, {\n    levels,\n    [levelCompSym]: levelCompFunc,\n    [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n    [streamSym]: stream,\n    [timeSym]: time,\n    [timeSliceIndexSym]: timeSliceIndex,\n    [stringifySym]: stringify,\n    [stringifySafeSym]: stringifySafe,\n    [stringifiersSym]: stringifiers,\n    [endSym]: end,\n    [formatOptsSym]: formatOpts,\n    [messageKeySym]: messageKey,\n    [errorKeySym]: errorKey,\n    [nestedKeySym]: nestedKey,\n    // protect against injection\n    [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n    [serializersSym]: serializers,\n    [mixinSym]: mixin,\n    [mixinMergeStrategySym]: mixinMergeStrategy,\n    [chindingsSym]: chindings,\n    [formattersSym]: allFormatters,\n    [hooksSym]: hooks,\n    silent: noop,\n    onChild,\n    [msgPrefixSym]: msgPrefix\n  })\n\n  Object.setPrototypeOf(instance, proto())\n\n  genLsCache(instance)\n\n  instance[setLevelSym](level)\n\n  return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n  if (typeof dest === 'object') {\n    dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n    return buildSafeSonicBoom(dest)\n  } else {\n    return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n  }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", null, "'use strict'\n\nconst { pino, symbols: { stringifySym, chindingsSym } } = require('pino')\nconst serializers = require('pino-std-serializers')\nconst getCallerFile = require('get-caller-file')\nconst startTime = Symbol('startTime')\nconst reqObject = Symbol('reqObject')\n\nfunction pinoLogger (opts, stream) {\n  if (opts && opts._writableState) {\n    stream = opts\n    opts = null\n  }\n\n  opts = Object.assign({}, opts)\n\n  opts.customAttributeKeys = opts.customAttributeKeys || {}\n  const reqKey = opts.customAttributeKeys.req || 'req'\n  const resKey = opts.customAttributeKeys.res || 'res'\n  const errKey = opts.customAttributeKeys.err || 'err'\n  const requestIdKey = opts.customAttributeKeys.reqId || 'reqId'\n  const responseTimeKey = opts.customAttributeKeys.responseTime || 'responseTime'\n  delete opts.customAttributeKeys\n\n  const customProps = opts.customProps || undefined\n\n  opts.wrapSerializers = 'wrapSerializers' in opts ? opts.wrapSerializers : true\n  if (opts.wrapSerializers) {\n    opts.serializers = Object.assign({}, opts.serializers)\n    const requestSerializer = opts.serializers[reqKey] || opts.serializers.req || serializers.req\n    const responseSerializer = opts.serializers[resKey] || opts.serializers.res || serializers.res\n    const errorSerializer = opts.serializers[errKey] || opts.serializers.err || serializers.err\n    opts.serializers[reqKey] = serializers.wrapRequestSerializer(requestSerializer)\n    opts.serializers[resKey] = serializers.wrapResponseSerializer(responseSerializer)\n    opts.serializers[errKey] = serializers.wrapErrorSerializer(errorSerializer)\n  }\n  delete opts.wrapSerializers\n\n  if (opts.useLevel && opts.customLogLevel) {\n    throw new Error('You can\\'t pass \\'useLevel\\' and \\'customLogLevel\\' together')\n  }\n\n  function getValidLogLevel (level, defaultValue = 'info') {\n    if (level && typeof level === 'string') {\n      const logLevel = level.trim()\n      if (validLogLevels.includes(logLevel) === true) {\n        return logLevel\n      }\n    }\n    return defaultValue\n  }\n\n  function getLogLevelFromCustomLogLevel (customLogLevel, useLevel, res, err, req) {\n    return customLogLevel ? getValidLogLevel(customLogLevel(req, res, err), useLevel) : useLevel\n  }\n\n  const customLogLevel = opts.customLogLevel\n  delete opts.customLogLevel\n\n  const theStream = opts.stream || stream\n  delete opts.stream\n\n  const autoLogging = (opts.autoLogging !== false)\n  const autoLoggingIgnore = opts.autoLogging && opts.autoLogging.ignore ? opts.autoLogging.ignore : null\n  delete opts.autoLogging\n\n  const onRequestReceivedObject = getFunctionOrDefault(opts.customReceivedObject, undefined)\n  const receivedMessage = getFunctionOrDefault(opts.customReceivedMessage, undefined)\n\n  const onRequestSuccessObject = getFunctionOrDefault(opts.customSuccessObject, defaultSuccessfulRequestObjectProvider)\n  const successMessage = getFunctionOrDefault(opts.customSuccessMessage, defaultSuccessfulRequestMessageProvider)\n\n  const onRequestErrorObject = getFunctionOrDefault(opts.customErrorObject, defaultFailedRequestObjectProvider)\n  const errorMessage = getFunctionOrDefault(opts.customErrorMessage, defaultFailedRequestMessageProvider)\n\n  delete opts.customSuccessfulMessage\n  delete opts.customErroredMessage\n\n  const quietReqLogger = !!opts.quietReqLogger\n  const quietResLogger = !!opts.quietResLogger\n\n  const logger = wrapChild(opts, theStream)\n\n  const validLogLevels = Object.keys(logger.levels.values).concat('silent')\n  const useLevel = getValidLogLevel(opts.useLevel)\n  delete opts.useLevel\n\n  const genReqId = reqIdGenFactory(opts.genReqId)\n  const result = (req, res, next) => {\n    return loggingMiddleware(logger, req, res, next)\n  }\n  result.logger = logger\n  return result\n\n  function onResFinished (res, logger, err) {\n    let log = logger\n    const responseTime = Date.now() - res[startTime]\n    const req = res[reqObject]\n    const level = getLogLevelFromCustomLogLevel(customLogLevel, useLevel, res, err, req)\n\n    if (level === 'silent') {\n      return\n    }\n\n    const customPropBindings = (typeof customProps === 'function') ? customProps(req, res) : customProps\n    if (customPropBindings) {\n      const customPropBindingStr = logger[stringifySym](customPropBindings).replace(/[{}]/g, '')\n      const customPropBindingsStr = logger[chindingsSym]\n      if (!customPropBindingsStr.includes(customPropBindingStr)) {\n        log = logger.child(customPropBindings)\n      }\n    }\n\n    if (err || res.err || res.statusCode >= 500) {\n      const error = err || res.err || new Error('failed with status code ' + res.statusCode)\n\n      log[level](\n        onRequestErrorObject(req, res, error, {\n          [resKey]: res,\n          [errKey]: error,\n          [responseTimeKey]: responseTime\n        }),\n        errorMessage(req, res, error, responseTime)\n      )\n\n      return\n    }\n\n    log[level](\n      onRequestSuccessObject(req, res, {\n        [resKey]: res,\n        [responseTimeKey]: responseTime\n      }),\n      successMessage(req, res, responseTime)\n    )\n  }\n\n  function loggingMiddleware (logger, req, res, next) {\n    let shouldLogSuccess = true\n\n    req.id = req.id || genReqId(req, res)\n\n    const log = quietReqLogger ? logger.child({ [requestIdKey]: req.id }) : logger\n\n    let fullReqLogger = log.child({ [reqKey]: req })\n    const customPropBindings = (typeof customProps === 'function') ? customProps(req, res) : customProps\n    if (customPropBindings) {\n      fullReqLogger = fullReqLogger.child(customPropBindings)\n    }\n\n    const responseLogger = quietResLogger ? log : fullReqLogger\n    const requestLogger = quietReqLogger ? log : fullReqLogger\n\n    if (!res.log) {\n      res.log = responseLogger\n    }\n    if (Array.isArray(res.allLogs) === false) {\n      res.allLogs = []\n    }\n    res.allLogs.push(responseLogger)\n\n    if (!req.log) {\n      req.log = requestLogger\n    }\n    if (!req.allLogs) {\n      req.allLogs = []\n    }\n    req.allLogs.push(requestLogger)\n\n    res[startTime] = res[startTime] || Date.now()\n    // carry request to be executed when response is finished\n    res[reqObject] = req\n\n    const onResponseComplete = (err) => {\n      res.removeListener('close', onResponseComplete)\n      res.removeListener('finish', onResponseComplete)\n      res.removeListener('error', onResponseComplete)\n      return onResFinished(res, responseLogger, err)\n    }\n\n    if (autoLogging) {\n      if (autoLoggingIgnore !== null && shouldLogSuccess === true) {\n        const isIgnored = autoLoggingIgnore(req)\n        shouldLogSuccess = !isIgnored\n      }\n\n      if (shouldLogSuccess) {\n        const shouldLogReceived = receivedMessage !== undefined || onRequestReceivedObject !== undefined\n\n        if (shouldLogReceived) {\n          const level = getLogLevelFromCustomLogLevel(customLogLevel, useLevel, res, undefined, req)\n          const receivedObjectResult = onRequestReceivedObject !== undefined ? onRequestReceivedObject(req, res, undefined) : {}\n          const receivedStringResult = receivedMessage !== undefined ? receivedMessage(req, res) : undefined\n\n          requestLogger[level](receivedObjectResult, receivedStringResult)\n        }\n\n        res.on('close', onResponseComplete)\n        res.on('finish', onResponseComplete)\n      }\n\n      res.on('error', onResponseComplete)\n    }\n\n    if (next) {\n      next()\n    }\n  }\n}\n\nfunction wrapChild (opts, stream) {\n  const prevLogger = opts.logger\n  const prevGenReqId = opts.genReqId\n  let logger = null\n\n  if (prevLogger) {\n    opts.logger = undefined\n    opts.genReqId = undefined\n    logger = prevLogger.child({}, opts)\n    opts.logger = prevLogger\n    opts.genReqId = prevGenReqId\n  } else {\n    if (opts.transport && !opts.transport.caller) {\n      opts.transport.caller = getCallerFile()\n    }\n\n    logger = pino(opts, stream)\n  }\n\n  return logger\n}\n\nfunction reqIdGenFactory (func) {\n  if (typeof func === 'function') return func\n  const maxInt = 2147483647\n  let nextReqId = 0\n  return function genReqId (req, res) {\n    return req.id || (nextReqId = (nextReqId + 1) & maxInt)\n  }\n}\n\nfunction getFunctionOrDefault (value, defaultValue) {\n  if (value && typeof value === 'function') {\n    return value\n  }\n\n  return defaultValue\n}\n\nfunction defaultSuccessfulRequestObjectProvider (req, res, successObject) {\n  return successObject\n}\n\nfunction defaultFailedRequestObjectProvider (req, res, error, errorObject) {\n  return errorObject\n}\n\nfunction defaultFailedRequestMessageProvider () {\n  return 'request errored'\n}\n\nfunction defaultSuccessfulRequestMessageProvider (req, res) {\n  /* istanbul ignore next */\n  return !req.readableAborted && res.writableEnded ? 'request completed' : 'request aborted'\n}\n\nmodule.exports = pinoLogger\nmodule.exports.stdSerializers = {\n  err: serializers.err,\n  req: serializers.req,\n  res: serializers.res\n}\nmodule.exports.startTime = startTime\nmodule.exports.default = pinoLogger\nmodule.exports.pinoHttp = pinoLogger\n", "/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter     = token \"=\" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *               | \",\" | \";\" | \":\" | \"\\\" | <\">\n *               | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *               | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext        = <any TEXT except <\">>\n * quoted-pair   = \"\\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * SHT           = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !typeNameRegExp.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !subtypeNameRegExp.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!typeNameRegExp.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!tokenRegExp.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  if (typeof string === 'object') {\n    string = getcontenttype(string)\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = string.indexOf(';')\n  var type = index !== -1\n    ? string.substr(0, index)\n    : string\n\n  var key\n  var match\n  var obj = splitType(type)\n  var params = {}\n  var value\n\n  paramRegExp.lastIndex = index\n\n  while (match = paramRegExp.exec(string)) {\n    if (match.index !== index) {\n      throw new TypeError('invalid parameter format')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (value[0] === '\"') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(qescRegExp, '$1')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError('invalid parameter format')\n  }\n\n  obj.parameters = params\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    return obj.getHeader('content-type')\n  }\n\n  if (typeof obj.headers === 'object') {\n    // req-like\n    return obj.headers && obj.headers['content-type']\n  }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (tokenRegExp.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !textRegExp.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n  var match = typeRegExp.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  var obj = {\n    type: type,\n    subtype: subtype,\n    suffix: suffix\n  }\n\n  return obj\n}\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\"\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/ecmascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es\",\"ecma\"]\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\",\"sig\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"iana\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\"\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hl7cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/hsj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hsj2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/news\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"iana\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\"\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"iana\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"markdown\",\"md\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1\n    ? exports.lookup(str)\n    : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .substr(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  // source preference (least -> most)\n  var preference = ['nginx', 'apache', undefined, 'iana']\n\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n\n      if (types[extension]) {\n        var from = preference.indexOf(db[types[extension]].source)\n        var to = preference.indexOf(mime.source)\n\n        if (types[extension] !== 'application/octet-stream' &&\n          (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n          // skip the remapping\n          continue\n        }\n      }\n\n      // set the extension -> mime\n      types[extension] = type\n    }\n  })\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = require('media-typer')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  var types = types_\n\n  // no body\n  if (!hasbody(req)) {\n    return null\n  }\n\n  // support flattened arguments\n  if (arguments.length > 2) {\n    types = new Array(arguments.length - 1)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].substr(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n  // parse the type\n  var type = typer.parse(value)\n\n  // remove the parameters\n  type.parameters = undefined\n\n  // reformat it\n  return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n  if (!value) {\n    return null\n  }\n\n  try {\n    return normalizeType(value)\n  } catch (err) {\n    return null\n  }\n}\n", "'use strict';\n\nfunction parseContentType(str) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  // Parse type\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (code !== 47/* '/' */ || i === 0)\n        return;\n      break;\n    }\n  }\n  // Check for type without subtype\n  if (i === str.length)\n    return;\n\n  const type = str.slice(0, i).toLowerCase();\n\n  // Parse subtype\n  const subtypeStart = ++i;\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      // Make sure we have a subtype\n      if (i === subtypeStart)\n        return;\n\n      if (parseContentTypeParams(str, i, params) === undefined)\n        return;\n      break;\n    }\n  }\n  // Make sure we have a subtype\n  if (i === subtypeStart)\n    return;\n\n  const subtype = str.slice(subtypeStart, i).toLowerCase();\n\n  return { type, subtype, params };\n}\n\nfunction parseContentTypeParams(str, i, params) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code !== 61/* '=' */)\n          return;\n        break;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    name = str.slice(nameStart, i);\n    ++i; // Skip over '='\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    if (str.charCodeAt(i) === 34/* '\"' */) {\n      valueStart = ++i;\n      let escaping = false;\n      // Parse quoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 92/* '\\\\' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n          } else {\n            value += str.slice(valueStart, i);\n            escaping = true;\n          }\n          continue;\n        }\n        if (code === 34/* '\"' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n            continue;\n          }\n          value += str.slice(valueStart, i);\n          break;\n        }\n        if (escaping) {\n          valueStart = i - 1;\n          escaping = false;\n        }\n        // Invalid unescaped quoted character (malformed)\n        if (QDTEXT[code] !== 1)\n          return;\n      }\n\n      // No end quote (malformed)\n      if (i === str.length)\n        return;\n\n      ++i; // Skip over double quote\n    } else {\n      valueStart = i;\n      // Parse unquoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (TOKEN[code] !== 1) {\n          // No value (malformed)\n          if (i === valueStart)\n            return;\n          break;\n        }\n      }\n      value = str.slice(valueStart, i);\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction parseDisposition(str, defDecoder) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (parseDispositionParams(str, i, params, defDecoder) === undefined)\n        return;\n      break;\n    }\n  }\n\n  const type = str.slice(0, i).toLowerCase();\n\n  return { type, params };\n}\n\nfunction parseDispositionParams(str, i, params, defDecoder) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code === 61/* '=' */)\n          break;\n        return;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    let charset;\n    //~ let lang;\n    name = str.slice(nameStart, i);\n    if (name.charCodeAt(name.length - 1) === 42/* '*' */) {\n      // Extended value\n\n      const charsetStart = ++i;\n      // Parse charset name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (CHARSET[code] !== 1) {\n          if (code !== 39/* '\\'' */)\n            return;\n          break;\n        }\n      }\n\n      // Incomplete charset (malformed)\n      if (i === str.length)\n        return;\n\n      charset = str.slice(charsetStart, i);\n      ++i; // Skip over the '\\''\n\n      //~ const langStart = ++i;\n      // Parse language name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 39/* '\\'' */)\n          break;\n      }\n\n      // Incomplete language (malformed)\n      if (i === str.length)\n        return;\n\n      //~ lang = str.slice(langStart, i);\n      ++i; // Skip over the '\\''\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      valueStart = i;\n\n      let encode = 0;\n      // Parse value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (EXTENDED_VALUE[code] !== 1) {\n          if (code === 37/* '%' */) {\n            let hexUpper;\n            let hexLower;\n            if (i + 2 < str.length\n                && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1\n                && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) {\n              const byteVal = (hexUpper << 4) + hexLower;\n              value += str.slice(valueStart, i);\n              value += String.fromCharCode(byteVal);\n              i += 2;\n              valueStart = i + 1;\n              if (byteVal >= 128)\n                encode = 2;\n              else if (encode === 0)\n                encode = 1;\n              continue;\n            }\n            // '%' disallowed in non-percent encoded contexts (malformed)\n            return;\n          }\n          break;\n        }\n      }\n\n      value += str.slice(valueStart, i);\n      value = convertToUTF8(value, charset, encode);\n      if (value === undefined)\n        return;\n    } else {\n      // Non-extended value\n\n      ++i; // Skip over '='\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      if (str.charCodeAt(i) === 34/* '\"' */) {\n        valueStart = ++i;\n        let escaping = false;\n        // Parse quoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (code === 92/* '\\\\' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n            } else {\n              value += str.slice(valueStart, i);\n              escaping = true;\n            }\n            continue;\n          }\n          if (code === 34/* '\"' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n              continue;\n            }\n            value += str.slice(valueStart, i);\n            break;\n          }\n          if (escaping) {\n            valueStart = i - 1;\n            escaping = false;\n          }\n          // Invalid unescaped quoted character (malformed)\n          if (QDTEXT[code] !== 1)\n            return;\n        }\n\n        // No end quote (malformed)\n        if (i === str.length)\n          return;\n\n        ++i; // Skip over double quote\n      } else {\n        valueStart = i;\n        // Parse unquoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (TOKEN[code] !== 1) {\n            // No value (malformed)\n            if (i === valueStart)\n              return;\n            break;\n          }\n        }\n        value = str.slice(valueStart, i);\n      }\n\n      value = defDecoder(value, 2);\n      if (value === undefined)\n        return;\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction getDecoder(charset) {\n  let lc;\n  while (true) {\n    switch (charset) {\n      case 'utf-8':\n      case 'utf8':\n        return decoders.utf8;\n      case 'latin1':\n      case 'ascii': // TODO: Make these a separate, strict decoder?\n      case 'us-ascii':\n      case 'iso-8859-1':\n      case 'iso8859-1':\n      case 'iso88591':\n      case 'iso_8859-1':\n      case 'windows-1252':\n      case 'iso_8859-1:1987':\n      case 'cp1252':\n      case 'x-cp1252':\n        return decoders.latin1;\n      case 'utf16le':\n      case 'utf-16le':\n      case 'ucs2':\n      case 'ucs-2':\n        return decoders.utf16le;\n      case 'base64':\n        return decoders.base64;\n      default:\n        if (lc === undefined) {\n          lc = true;\n          charset = charset.toLowerCase();\n          continue;\n        }\n        return decoders.other.bind(charset);\n    }\n  }\n}\n\nconst decoders = {\n  utf8: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string') {\n      // If `data` never had any percent-encoded bytes or never had any that\n      // were outside of the ASCII range, then we can safely just return the\n      // input since UTF-8 is ASCII compatible\n      if (hint < 2)\n        return data;\n\n      data = Buffer.from(data, 'latin1');\n    }\n    return data.utf8Slice(0, data.length);\n  },\n\n  latin1: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      return data;\n    return data.latin1Slice(0, data.length);\n  },\n\n  utf16le: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.ucs2Slice(0, data.length);\n  },\n\n  base64: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.base64Slice(0, data.length);\n  },\n\n  other: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    try {\n      const decoder = new TextDecoder(this);\n      return decoder.decode(data);\n    } catch {}\n  },\n};\n\nfunction convertToUTF8(data, charset, hint) {\n  const decode = getDecoder(charset);\n  if (decode)\n    return decode(data, hint);\n}\n\nfunction basename(path) {\n  if (typeof path !== 'string')\n    return '';\n  for (let i = path.length - 1; i >= 0; --i) {\n    switch (path.charCodeAt(i)) {\n      case 0x2F: // '/'\n      case 0x5C: // '\\'\n        path = path.slice(i + 1);\n        return (path === '..' || path === '.' ? '' : path);\n    }\n  }\n  return (path === '..' || path === '.' ? '' : path);\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst QDTEXT = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nconst CHARSET = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst EXTENDED_VALUE = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n};\n", "'use strict';\n/*\n  Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n  by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n*/\nfunction memcmp(buf1, pos1, buf2, pos2, num) {\n  for (let i = 0; i < num; ++i) {\n    if (buf1[pos1 + i] !== buf2[pos2 + i])\n      return false;\n  }\n  return true;\n}\n\nclass SBMH {\n  constructor(needle, cb) {\n    if (typeof cb !== 'function')\n      throw new Error('Missing match callback');\n\n    if (typeof needle === 'string')\n      needle = Buffer.from(needle);\n    else if (!Buffer.isBuffer(needle))\n      throw new Error(`Expected Buffer for needle, got ${typeof needle}`);\n\n    const needleLen = needle.length;\n\n    this.maxMatches = Infinity;\n    this.matches = 0;\n\n    this._cb = cb;\n    this._lookbehindSize = 0;\n    this._needle = needle;\n    this._bufPos = 0;\n\n    this._lookbehind = Buffer.allocUnsafe(needleLen);\n\n    // Initialize occurrence table.\n    this._occ = [\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen\n    ];\n\n    // Populate occurrence table with analysis of the needle, ignoring the last\n    // letter.\n    if (needleLen > 1) {\n      for (let i = 0; i < needleLen - 1; ++i)\n        this._occ[needle[i]] = needleLen - 1 - i;\n    }\n  }\n\n  reset() {\n    this.matches = 0;\n    this._lookbehindSize = 0;\n    this._bufPos = 0;\n  }\n\n  push(chunk, pos) {\n    let result;\n    if (!Buffer.isBuffer(chunk))\n      chunk = Buffer.from(chunk, 'latin1');\n    const chunkLen = chunk.length;\n    this._bufPos = pos || 0;\n    while (result !== chunkLen && this.matches < this.maxMatches)\n      result = feed(this, chunk);\n    return result;\n  }\n\n  destroy() {\n    const lbSize = this._lookbehindSize;\n    if (lbSize)\n      this._cb(false, this._lookbehind, 0, lbSize, false);\n    this.reset();\n  }\n}\n\nfunction feed(self, data) {\n  const len = data.length;\n  const needle = self._needle;\n  const needleLen = needle.length;\n\n  // Positive: points to a position in `data`\n  //           pos == 3 points to data[3]\n  // Negative: points to a position in the lookbehind buffer\n  //           pos == -2 points to lookbehind[lookbehindSize - 2]\n  let pos = -self._lookbehindSize;\n  const lastNeedleCharPos = needleLen - 1;\n  const lastNeedleChar = needle[lastNeedleCharPos];\n  const end = len - needleLen;\n  const occ = self._occ;\n  const lookbehind = self._lookbehind;\n\n  if (pos < 0) {\n    // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n    // search with character lookup code that considers both the\n    // lookbehind buffer and the current round's haystack data.\n    //\n    // Loop until\n    //   there is a match.\n    // or until\n    //   we've moved past the position that requires the\n    //   lookbehind buffer. In this case we switch to the\n    //   optimized loop.\n    // or until\n    //   the character to look at lies outside the haystack.\n    while (pos < 0 && pos <= end) {\n      const nextPos = pos + lastNeedleCharPos;\n      const ch = (nextPos < 0\n                  ? lookbehind[self._lookbehindSize + nextPos]\n                  : data[nextPos]);\n\n      if (ch === lastNeedleChar\n          && matchNeedle(self, data, pos, lastNeedleCharPos)) {\n        self._lookbehindSize = 0;\n        ++self.matches;\n        if (pos > -self._lookbehindSize)\n          self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false);\n        else\n          self._cb(true, undefined, 0, 0, true);\n\n        return (self._bufPos = pos + needleLen);\n      }\n\n      pos += occ[ch];\n    }\n\n    // No match.\n\n    // There's too few data for Boyer-Moore-Horspool to run,\n    // so let's use a different algorithm to skip as much as\n    // we can.\n    // Forward pos until\n    //   the trailing part of lookbehind + data\n    //   looks like the beginning of the needle\n    // or until\n    //   pos == 0\n    while (pos < 0 && !matchNeedle(self, data, pos, len - pos))\n      ++pos;\n\n    if (pos < 0) {\n      // Cut off part of the lookbehind buffer that has\n      // been processed and append the entire haystack\n      // into it.\n      const bytesToCutOff = self._lookbehindSize + pos;\n\n      if (bytesToCutOff > 0) {\n        // The cut off data is guaranteed not to contain the needle.\n        self._cb(false, lookbehind, 0, bytesToCutOff, false);\n      }\n\n      self._lookbehindSize -= bytesToCutOff;\n      lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize);\n      lookbehind.set(data, self._lookbehindSize);\n      self._lookbehindSize += len;\n\n      self._bufPos = len;\n      return len;\n    }\n\n    // Discard lookbehind buffer.\n    self._cb(false, lookbehind, 0, self._lookbehindSize, false);\n    self._lookbehindSize = 0;\n  }\n\n  pos += self._bufPos;\n\n  const firstNeedleChar = needle[0];\n\n  // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool\n  // search with optimized character lookup code that only considers\n  // the current round's haystack data.\n  while (pos <= end) {\n    const ch = data[pos + lastNeedleCharPos];\n\n    if (ch === lastNeedleChar\n        && data[pos] === firstNeedleChar\n        && memcmp(needle, 0, data, pos, lastNeedleCharPos)) {\n      ++self.matches;\n      if (pos > 0)\n        self._cb(true, data, self._bufPos, pos, true);\n      else\n        self._cb(true, undefined, 0, 0, true);\n\n      return (self._bufPos = pos + needleLen);\n    }\n\n    pos += occ[ch];\n  }\n\n  // There was no match. If there's trailing haystack data that we cannot\n  // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n  // data is less than the needle size) then match using a modified\n  // algorithm that starts matching from the beginning instead of the end.\n  // Whatever trailing data is left after running this algorithm is added to\n  // the lookbehind buffer.\n  while (pos < len) {\n    if (data[pos] !== firstNeedleChar\n        || !memcmp(data, pos, needle, 0, len - pos)) {\n      ++pos;\n      continue;\n    }\n    data.copy(lookbehind, 0, pos, len);\n    self._lookbehindSize = len - pos;\n    break;\n  }\n\n  // Everything until `pos` is guaranteed not to contain needle data.\n  if (pos > 0)\n    self._cb(false, data, self._bufPos, pos < len ? pos : len, true);\n\n  self._bufPos = len;\n  return len;\n}\n\nfunction matchNeedle(self, data, pos, len) {\n  const lb = self._lookbehind;\n  const lbSize = self._lookbehindSize;\n  const needle = self._needle;\n\n  for (let i = 0; i < len; ++i, ++pos) {\n    const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]);\n    if (ch !== needle[i])\n      return false;\n  }\n  return true;\n}\n\nmodule.exports = SBMH;\n", "'use strict';\n\nconst { Readable, Writable } = require('stream');\n\nconst StreamSearch = require('streamsearch');\n\nconst {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n} = require('../utils.js');\n\nconst BUF_CRLF = Buffer.from('\\r\\n');\nconst BUF_CR = Buffer.from('\\r');\nconst BUF_DASH = Buffer.from('-');\n\nfunction noop() {}\n\nconst MAX_HEADER_PAIRS = 2000; // From node\nconst MAX_HEADER_SIZE = 16 * 1024; // From node (its default value)\n\nconst HPARSER_NAME = 0;\nconst HPARSER_PRE_OWS = 1;\nconst HPARSER_VALUE = 2;\nclass HeaderParser {\n  constructor(cb) {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n    this.cb = cb;\n  }\n\n  reset() {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n  }\n\n  push(chunk, pos, end) {\n    let start = pos;\n    while (pos < end) {\n      switch (this.state) {\n        case HPARSER_NAME: {\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (TOKEN[code] !== 1) {\n              if (code !== 58/* ':' */)\n                return -1;\n              this.name += chunk.latin1Slice(start, pos);\n              if (this.name.length === 0)\n                return -1;\n              ++pos;\n              done = true;\n              this.state = HPARSER_PRE_OWS;\n              break;\n            }\n          }\n          if (!done) {\n            this.name += chunk.latin1Slice(start, pos);\n            break;\n          }\n          // FALLTHROUGH\n        }\n        case HPARSER_PRE_OWS: {\n          // Skip optional whitespace\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (code !== 32/* ' ' */ && code !== 9/* '\\t' */) {\n              start = pos;\n              done = true;\n              this.state = HPARSER_VALUE;\n              break;\n            }\n          }\n          if (!done)\n            break;\n          // FALLTHROUGH\n        }\n        case HPARSER_VALUE:\n          switch (this.crlf) {\n            case 0: // Nothing yet\n              for (; pos < end; ++pos) {\n                if (this.byteCount === MAX_HEADER_SIZE)\n                  return -1;\n                ++this.byteCount;\n                const code = chunk[pos];\n                if (FIELD_VCHAR[code] !== 1) {\n                  if (code !== 13/* '\\r' */)\n                    return -1;\n                  ++this.crlf;\n                  break;\n                }\n              }\n              this.value += chunk.latin1Slice(start, pos++);\n              break;\n            case 1: // Received CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              ++this.crlf;\n              break;\n            case 2: { // Received CR LF\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              const code = chunk[pos];\n              if (code === 32/* ' ' */ || code === 9/* '\\t' */) {\n                // Folded value\n                start = pos;\n                this.crlf = 0;\n              } else {\n                if (++this.pairCount < MAX_HEADER_PAIRS) {\n                  this.name = this.name.toLowerCase();\n                  if (this.header[this.name] === undefined)\n                    this.header[this.name] = [this.value];\n                  else\n                    this.header[this.name].push(this.value);\n                }\n                if (code === 13/* '\\r' */) {\n                  ++this.crlf;\n                  ++pos;\n                } else {\n                  // Assume start of next header field name\n                  start = pos;\n                  this.crlf = 0;\n                  this.state = HPARSER_NAME;\n                  this.name = '';\n                  this.value = '';\n                }\n              }\n              break;\n            }\n            case 3: { // Received CR LF CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              // End of header\n              const header = this.header;\n              this.reset();\n              this.cb(header);\n              return pos;\n            }\n          }\n          break;\n      }\n    }\n\n    return pos;\n  }\n}\n\nclass FileStream extends Readable {\n  constructor(opts, owner) {\n    super(opts);\n    this.truncated = false;\n    this._readcb = null;\n    this.once('end', () => {\n      // We need to make sure that we call any outstanding _writecb() that is\n      // associated with this file so that processing of the rest of the form\n      // can continue. This may not happen if the file stream ends right after\n      // backpressure kicks in, so we force it here.\n      this._read();\n      if (--owner._fileEndsLeft === 0 && owner._finalcb) {\n        const cb = owner._finalcb;\n        owner._finalcb = null;\n        // Make sure other 'end' event handlers get a chance to be executed\n        // before busboy's 'finish' event is emitted\n        process.nextTick(cb);\n      }\n    });\n  }\n  _read(n) {\n    const cb = this._readcb;\n    if (cb) {\n      this._readcb = null;\n      cb();\n    }\n  }\n}\n\nconst ignoreData = {\n  push: (chunk, pos) => {},\n  destroy: () => {},\n};\n\nfunction callAndUnsetCb(self, err) {\n  const cb = self._writecb;\n  self._writecb = null;\n  if (err)\n    self.destroy(err);\n  else if (cb)\n    cb();\n}\n\nfunction nullDecoder(val, hint) {\n  return val;\n}\n\nclass Multipart extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string')\n      throw new Error('Multipart: Boundary not found');\n\n    const boundary = cfg.conType.params.boundary;\n    const paramDecoder = (typeof cfg.defParamCharset === 'string'\n                            && cfg.defParamCharset\n                          ? getDecoder(cfg.defParamCharset)\n                          : nullDecoder);\n    const defCharset = (cfg.defCharset || 'utf8');\n    const preservePath = cfg.preservePath;\n    const fileOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.fileHwm === 'number'\n                      ? cfg.fileHwm\n                      : undefined),\n    };\n\n    const limits = cfg.limits;\n    const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                            ? limits.fieldSize\n                            : 1 * 1024 * 1024);\n    const fileSizeLimit = (limits && typeof limits.fileSize === 'number'\n                           ? limits.fileSize\n                           : Infinity);\n    const filesLimit = (limits && typeof limits.files === 'number'\n                        ? limits.files\n                        : Infinity);\n    const fieldsLimit = (limits && typeof limits.fields === 'number'\n                         ? limits.fields\n                         : Infinity);\n    const partsLimit = (limits && typeof limits.parts === 'number'\n                        ? limits.parts\n                        : Infinity);\n\n    let parts = -1; // Account for initial boundary\n    let fields = 0;\n    let files = 0;\n    let skipPart = false;\n\n    this._fileEndsLeft = 0;\n    this._fileStream = undefined;\n    this._complete = false;\n    let fileSize = 0;\n\n    let field;\n    let fieldSize = 0;\n    let partCharset;\n    let partEncoding;\n    let partType;\n    let partName;\n    let partTruncated = false;\n\n    let hitFilesLimit = false;\n    let hitFieldsLimit = false;\n\n    this._hparser = null;\n    const hparser = new HeaderParser((header) => {\n      this._hparser = null;\n      skipPart = false;\n\n      partType = 'text/plain';\n      partCharset = defCharset;\n      partEncoding = '7bit';\n      partName = undefined;\n      partTruncated = false;\n\n      let filename;\n      if (!header['content-disposition']) {\n        skipPart = true;\n        return;\n      }\n\n      const disp = parseDisposition(header['content-disposition'][0],\n                                    paramDecoder);\n      if (!disp || disp.type !== 'form-data') {\n        skipPart = true;\n        return;\n      }\n\n      if (disp.params) {\n        if (disp.params.name)\n          partName = disp.params.name;\n\n        if (disp.params['filename*'])\n          filename = disp.params['filename*'];\n        else if (disp.params.filename)\n          filename = disp.params.filename;\n\n        if (filename !== undefined && !preservePath)\n          filename = basename(filename);\n      }\n\n      if (header['content-type']) {\n        const conType = parseContentType(header['content-type'][0]);\n        if (conType) {\n          partType = `${conType.type}/${conType.subtype}`;\n          if (conType.params && typeof conType.params.charset === 'string')\n            partCharset = conType.params.charset.toLowerCase();\n        }\n      }\n\n      if (header['content-transfer-encoding'])\n        partEncoding = header['content-transfer-encoding'][0].toLowerCase();\n\n      if (partType === 'application/octet-stream' || filename !== undefined) {\n        // File\n\n        if (files === filesLimit) {\n          if (!hitFilesLimit) {\n            hitFilesLimit = true;\n            this.emit('filesLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++files;\n\n        if (this.listenerCount('file') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        fileSize = 0;\n        this._fileStream = new FileStream(fileOpts, this);\n        ++this._fileEndsLeft;\n        this.emit(\n          'file',\n          partName,\n          this._fileStream,\n          { filename,\n            encoding: partEncoding,\n            mimeType: partType }\n        );\n      } else {\n        // Non-file\n\n        if (fields === fieldsLimit) {\n          if (!hitFieldsLimit) {\n            hitFieldsLimit = true;\n            this.emit('fieldsLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++fields;\n\n        if (this.listenerCount('field') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        field = [];\n        fieldSize = 0;\n      }\n    });\n\n    let matchPostBoundary = 0;\n    const ssCb = (isMatch, data, start, end, isDataSafe) => {\nretrydata:\n      while (data) {\n        if (this._hparser !== null) {\n          const ret = this._hparser.push(data, start, end);\n          if (ret === -1) {\n            this._hparser = null;\n            hparser.reset();\n            this.emit('error', new Error('Malformed part header'));\n            break;\n          }\n          start = ret;\n        }\n\n        if (start === end)\n          break;\n\n        if (matchPostBoundary !== 0) {\n          if (matchPostBoundary === 1) {\n            switch (data[start]) {\n              case 45: // '-'\n                // Try matching '--' after boundary\n                matchPostBoundary = 2;\n                ++start;\n                break;\n              case 13: // '\\r'\n                // Try matching CR LF before header\n                matchPostBoundary = 3;\n                ++start;\n                break;\n              default:\n                matchPostBoundary = 0;\n            }\n            if (start === end)\n              return;\n          }\n\n          if (matchPostBoundary === 2) {\n            matchPostBoundary = 0;\n            if (data[start] === 45/* '-' */) {\n              // End of multipart data\n              this._complete = true;\n              this._bparser = ignoreData;\n              return;\n            }\n            // We saw something other than '-', so put the dash we consumed\n            // \"back\"\n            const writecb = this._writecb;\n            this._writecb = noop;\n            ssCb(false, BUF_DASH, 0, 1, false);\n            this._writecb = writecb;\n          } else if (matchPostBoundary === 3) {\n            matchPostBoundary = 0;\n            if (data[start] === 10/* '\\n' */) {\n              ++start;\n              if (parts >= partsLimit)\n                break;\n              // Prepare the header parser\n              this._hparser = hparser;\n              if (start === end)\n                break;\n              // Process the remaining data as a header\n              continue retrydata;\n            } else {\n              // We saw something other than LF, so put the CR we consumed\n              // \"back\"\n              const writecb = this._writecb;\n              this._writecb = noop;\n              ssCb(false, BUF_CR, 0, 1, false);\n              this._writecb = writecb;\n            }\n          }\n        }\n\n        if (!skipPart) {\n          if (this._fileStream) {\n            let chunk;\n            const actualLen = Math.min(end - start, fileSizeLimit - fileSize);\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fileSize += chunk.length;\n            if (fileSize === fileSizeLimit) {\n              if (chunk.length > 0)\n                this._fileStream.push(chunk);\n              this._fileStream.emit('limit');\n              this._fileStream.truncated = true;\n              skipPart = true;\n            } else if (!this._fileStream.push(chunk)) {\n              if (this._writecb)\n                this._fileStream._readcb = this._writecb;\n              this._writecb = null;\n            }\n          } else if (field !== undefined) {\n            let chunk;\n            const actualLen = Math.min(\n              end - start,\n              fieldSizeLimit - fieldSize\n            );\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fieldSize += actualLen;\n            field.push(chunk);\n            if (fieldSize === fieldSizeLimit) {\n              skipPart = true;\n              partTruncated = true;\n            }\n          }\n        }\n\n        break;\n      }\n\n      if (isMatch) {\n        matchPostBoundary = 1;\n\n        if (this._fileStream) {\n          // End the active file stream if the previous part was a file\n          this._fileStream.push(null);\n          this._fileStream = null;\n        } else if (field !== undefined) {\n          let data;\n          switch (field.length) {\n            case 0:\n              data = '';\n              break;\n            case 1:\n              data = convertToUTF8(field[0], partCharset, 0);\n              break;\n            default:\n              data = convertToUTF8(\n                Buffer.concat(field, fieldSize),\n                partCharset,\n                0\n              );\n          }\n          field = undefined;\n          fieldSize = 0;\n          this.emit(\n            'field',\n            partName,\n            data,\n            { nameTruncated: false,\n              valueTruncated: partTruncated,\n              encoding: partEncoding,\n              mimeType: partType }\n          );\n        }\n\n        if (++parts === partsLimit)\n          this.emit('partsLimit');\n      }\n    };\n    this._bparser = new StreamSearch(`\\r\\n--${boundary}`, ssCb);\n\n    this._writecb = null;\n    this._finalcb = null;\n\n    // Just in case there is no preamble\n    this.write(BUF_CRLF);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'multipart' && conType.subtype === 'form-data');\n  }\n\n  _write(chunk, enc, cb) {\n    this._writecb = cb;\n    this._bparser.push(chunk, 0);\n    if (this._writecb)\n      callAndUnsetCb(this);\n  }\n\n  _destroy(err, cb) {\n    this._hparser = null;\n    this._bparser = ignoreData;\n    if (!err)\n      err = checkEndState(this);\n    const fileStream = this._fileStream;\n    if (fileStream) {\n      this._fileStream = null;\n      fileStream.destroy(err);\n    }\n    cb(err);\n  }\n\n  _final(cb) {\n    this._bparser.destroy();\n    if (!this._complete)\n      return cb(new Error('Unexpected end of form'));\n    if (this._fileEndsLeft)\n      this._finalcb = finalcb.bind(null, this, cb);\n    else\n      finalcb(this, cb);\n  }\n}\n\nfunction finalcb(self, cb, err) {\n  if (err)\n    return cb(err);\n  err = checkEndState(self);\n  cb(err);\n}\n\nfunction checkEndState(self) {\n  if (self._hparser)\n    return new Error('Malformed part header');\n  const fileStream = self._fileStream;\n  if (fileStream) {\n    self._fileStream = null;\n    fileStream.destroy(new Error('Unexpected end of file'));\n  }\n  if (!self._complete)\n    return new Error('Unexpected end of form');\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst FIELD_VCHAR = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nmodule.exports = Multipart;\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst { getDecoder } = require('../utils.js');\n\nclass URLEncoded extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    let charset = (cfg.defCharset || 'utf8');\n    if (cfg.conType.params && typeof cfg.conType.params.charset === 'string')\n      charset = cfg.conType.params.charset;\n\n    this.charset = charset;\n\n    const limits = cfg.limits;\n    this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                           ? limits.fieldSize\n                           : 1 * 1024 * 1024);\n    this.fieldsLimit = (limits && typeof limits.fields === 'number'\n                        ? limits.fields\n                        : Infinity);\n    this.fieldNameSizeLimit = (\n      limits && typeof limits.fieldNameSize === 'number'\n      ? limits.fieldNameSize\n      : 100\n    );\n\n    this._inKey = true;\n    this._keyTrunc = false;\n    this._valTrunc = false;\n    this._bytesKey = 0;\n    this._bytesVal = 0;\n    this._fields = 0;\n    this._key = '';\n    this._val = '';\n    this._byte = -2;\n    this._lastPos = 0;\n    this._encode = 0;\n    this._decoder = getDecoder(charset);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'application'\n            && conType.subtype === 'x-www-form-urlencoded');\n  }\n\n  _write(chunk, enc, cb) {\n    if (this._fields >= this.fieldsLimit)\n      return cb();\n\n    let i = 0;\n    const len = chunk.length;\n    this._lastPos = 0;\n\n    // Check if we last ended mid-percent-encoded byte\n    if (this._byte !== -2) {\n      i = readPctEnc(this, chunk, i, len);\n      if (i === -1)\n        return cb(new Error('Malformed urlencoded form'));\n      if (i >= len)\n        return cb();\n      if (this._inKey)\n        ++this._bytesKey;\n      else\n        ++this._bytesVal;\n    }\n\nmain:\n    while (i < len) {\n      if (this._inKey) {\n        // Parsing key\n\n        i = skipKeyBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 61: // '='\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              this._inKey = false;\n              continue main;\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  '',\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: false,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._key += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesKey;\n              i = skipKeyBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesKey;\n          i = skipKeyBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._key += chunk.latin1Slice(this._lastPos, i);\n      } else {\n        // Parsing value\n\n        i = skipValBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._inKey = true;\n              this._val = this._decoder(this._val, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0 || this._bytesVal > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  this._val,\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: this._valTrunc,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue main;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._val += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesVal;\n              i = skipValBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesVal;\n          i = skipValBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._val += chunk.latin1Slice(this._lastPos, i);\n      }\n    }\n\n    cb();\n  }\n\n  _final(cb) {\n    if (this._byte !== -2)\n      return cb(new Error('Malformed urlencoded form'));\n    if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) {\n      if (this._inKey)\n        this._key = this._decoder(this._key, this._encode);\n      else\n        this._val = this._decoder(this._val, this._encode);\n      this.emit(\n        'field',\n        this._key,\n        this._val,\n        { nameTruncated: this._keyTrunc,\n          valueTruncated: this._valTrunc,\n          encoding: this.charset,\n          mimeType: 'text/plain' }\n      );\n    }\n    cb();\n  }\n}\n\nfunction readPctEnc(self, chunk, pos, len) {\n  if (pos >= len)\n    return len;\n\n  if (self._byte === -1) {\n    // We saw a '%' but no hex characters yet\n    const hexUpper = HEX_VALUES[chunk[pos++]];\n    if (hexUpper === -1)\n      return -1;\n\n    if (hexUpper >= 8)\n      self._encode = 2; // Indicate high bits detected\n\n    if (pos < len) {\n      // Both hex characters are in this chunk\n      const hexLower = HEX_VALUES[chunk[pos++]];\n      if (hexLower === -1)\n        return -1;\n\n      if (self._inKey)\n        self._key += String.fromCharCode((hexUpper << 4) + hexLower);\n      else\n        self._val += String.fromCharCode((hexUpper << 4) + hexLower);\n\n      self._byte = -2;\n      self._lastPos = pos;\n    } else {\n      // Only one hex character was available in this chunk\n      self._byte = hexUpper;\n    }\n  } else {\n    // We saw only one hex character so far\n    const hexLower = HEX_VALUES[chunk[pos++]];\n    if (hexLower === -1)\n      return -1;\n\n    if (self._inKey)\n      self._key += String.fromCharCode((self._byte << 4) + hexLower);\n    else\n      self._val += String.fromCharCode((self._byte << 4) + hexLower);\n\n    self._byte = -2;\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipKeyBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesKey > self.fieldNameSizeLimit) {\n    if (!self._keyTrunc) {\n      if (self._lastPos < pos)\n        self._key += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._keyTrunc = true;\n    for (; pos < len; ++pos) {\n      const code = chunk[pos];\n      if (code === 61/* '=' */ || code === 38/* '&' */)\n        break;\n      ++self._bytesKey;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipValBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesVal > self.fieldSizeLimit) {\n    if (!self._valTrunc) {\n      if (self._lastPos < pos)\n        self._val += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._valTrunc = true;\n    for (; pos < len; ++pos) {\n      if (chunk[pos] === 38/* '&' */)\n        break;\n      ++self._bytesVal;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = URLEncoded;\n", "'use strict';\n\nconst { parseContentType } = require('./utils.js');\n\nfunction getInstance(cfg) {\n  const headers = cfg.headers;\n  const conType = parseContentType(headers['content-type']);\n  if (!conType)\n    throw new Error('Malformed content type');\n\n  for (const type of TYPES) {\n    const matched = type.detect(conType);\n    if (!matched)\n      continue;\n\n    const instanceCfg = {\n      limits: cfg.limits,\n      headers,\n      conType,\n      highWaterMark: undefined,\n      fileHwm: undefined,\n      defCharset: undefined,\n      defParamCharset: undefined,\n      preservePath: false,\n    };\n    if (cfg.highWaterMark)\n      instanceCfg.highWaterMark = cfg.highWaterMark;\n    if (cfg.fileHwm)\n      instanceCfg.fileHwm = cfg.fileHwm;\n    instanceCfg.defCharset = cfg.defCharset;\n    instanceCfg.defParamCharset = cfg.defParamCharset;\n    instanceCfg.preservePath = cfg.preservePath;\n    return new type(instanceCfg);\n  }\n\n  throw new Error(`Unsupported content type: ${headers['content-type']}`);\n}\n\n// Note: types are explicitly listed here for easier bundling\n// See: https://github.com/mscdex/busboy/issues/121\nconst TYPES = [\n  require('./types/multipart'),\n  require('./types/urlencoded'),\n].filter(function(typemod) { return typeof typemod.detect === 'function'; });\n\nmodule.exports = (cfg) => {\n  if (typeof cfg !== 'object' || cfg === null)\n    cfg = {};\n\n  if (typeof cfg.headers !== 'object'\n      || cfg.headers === null\n      || typeof cfg.headers['content-type'] !== 'string') {\n    throw new Error('Missing Content-Type');\n  }\n\n  return getInstance(cfg);\n};\n", "module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n", "var reFirstKey = /^[^\\[]*/\nvar reDigitPath = /^\\[(\\d+)\\]/\nvar reNormalPath = /^\\[([^\\]]+)\\]/\n\nfunction parsePath (key) {\n  function failure () {\n    return [{ type: 'object', key: key, last: true }]\n  }\n\n  var firstKey = reFirstKey.exec(key)[0]\n  if (!firstKey) return failure()\n\n  var len = key.length\n  var pos = firstKey.length\n  var tail = { type: 'object', key: firstKey }\n  var steps = [tail]\n\n  while (pos < len) {\n    var m\n\n    if (key[pos] === '[' && key[pos + 1] === ']') {\n      pos += 2\n      tail.append = true\n      if (pos !== len) return failure()\n      continue\n    }\n\n    m = reDigitPath.exec(key.substring(pos))\n    if (m !== null) {\n      pos += m[0].length\n      tail.nextType = 'array'\n      tail = { type: 'array', key: parseInt(m[1], 10) }\n      steps.push(tail)\n      continue\n    }\n\n    m = reNormalPath.exec(key.substring(pos))\n    if (m !== null) {\n      pos += m[0].length\n      tail.nextType = 'object'\n      tail = { type: 'object', key: m[1] }\n      steps.push(tail)\n      continue\n    }\n\n    return failure()\n  }\n\n  tail.last = true\n  return steps\n}\n\nmodule.exports = parsePath\n", "function valueType (value) {\n  if (value === undefined) return 'undefined'\n  if (Array.isArray(value)) return 'array'\n  if (typeof value === 'object') return 'object'\n  return 'scalar'\n}\n\nfunction setLastValue (context, step, currentValue, entryValue) {\n  switch (valueType(currentValue)) {\n    case 'undefined':\n      if (step.append) {\n        context[step.key] = [entryValue]\n      } else {\n        context[step.key] = entryValue\n      }\n      break\n    case 'array':\n      context[step.key].push(entryValue)\n      break\n    case 'object':\n      return setLastValue(currentValue, { type: 'object', key: '', last: true }, currentValue[''], entryValue)\n    case 'scalar':\n      context[step.key] = [context[step.key], entryValue]\n      break\n  }\n\n  return context\n}\n\nfunction setValue (context, step, currentValue, entryValue) {\n  if (step.last) return setLastValue(context, step, currentValue, entryValue)\n\n  var obj\n  switch (valueType(currentValue)) {\n    case 'undefined':\n      if (step.nextType === 'array') {\n        context[step.key] = []\n      } else {\n        context[step.key] = Object.create(null)\n      }\n      return context[step.key]\n    case 'object':\n      return context[step.key]\n    case 'array':\n      if (step.nextType === 'array') {\n        return currentValue\n      }\n\n      obj = Object.create(null)\n      context[step.key] = obj\n      currentValue.forEach(function (item, i) {\n        if (item !== undefined) obj['' + i] = item\n      })\n\n      return obj\n    case 'scalar':\n      obj = Object.create(null)\n      obj[''] = currentValue\n      context[step.key] = obj\n      return obj\n  }\n}\n\nmodule.exports = setValue\n", "var parsePath = require('./lib/parse-path')\nvar setValue = require('./lib/set-value')\n\nfunction appendField (store, key, value) {\n  var steps = parsePath(key)\n\n  steps.reduce(function (context, step) {\n    return setValue(context, step, context[step.key], value)\n  }, store)\n}\n\nmodule.exports = appendField\n", "var EventEmitter = require('events').EventEmitter\n\nfunction Counter () {\n  EventEmitter.call(this)\n  this.value = 0\n}\n\nCounter.prototype = Object.create(EventEmitter.prototype)\n\nCounter.prototype.increment = function increment () {\n  this.value++\n}\n\nCounter.prototype.decrement = function decrement () {\n  if (--this.value === 0) this.emit('zero')\n}\n\nCounter.prototype.isZero = function isZero () {\n  return (this.value === 0)\n}\n\nCounter.prototype.onceZero = function onceZero (fn) {\n  if (this.isZero()) return fn()\n\n  this.once('zero', fn)\n}\n\nmodule.exports = Counter\n", "var util = require('util')\n\nvar errorMessages = {\n  LIMIT_PART_COUNT: 'Too many parts',\n  LIMIT_FILE_SIZE: 'File too large',\n  LIMIT_FILE_COUNT: 'Too many files',\n  LIMIT_FIELD_KEY: 'Field name too long',\n  LIMIT_FIELD_VALUE: 'Field value too long',\n  LIMIT_FIELD_COUNT: 'Too many fields',\n  LIMIT_UNEXPECTED_FILE: 'Unexpected field',\n  MISSING_FIELD_NAME: 'Field name missing'\n}\n\nfunction MulterError (code, field) {\n  Error.captureStackTrace(this, this.constructor)\n  this.name = this.constructor.name\n  this.message = errorMessages[code]\n  this.code = code\n  if (field) this.field = field\n}\n\nutil.inherits(MulterError, Error)\n\nmodule.exports = MulterError\n", "var objectAssign = require('object-assign')\n\nfunction arrayRemove (arr, item) {\n  var idx = arr.indexOf(item)\n  if (~idx) arr.splice(idx, 1)\n}\n\nfunction FileAppender (strategy, req) {\n  this.strategy = strategy\n  this.req = req\n\n  switch (strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': req.files = []; break\n    case 'OBJECT': req.files = Object.create(null); break\n    default: throw new Error('Unknown file strategy: ' + strategy)\n  }\n}\n\nFileAppender.prototype.insertPlaceholder = function (file) {\n  var placeholder = {\n    fieldname: file.fieldname\n  }\n\n  switch (this.strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': this.req.files.push(placeholder); break\n    case 'OBJECT':\n      if (this.req.files[file.fieldname]) {\n        this.req.files[file.fieldname].push(placeholder)\n      } else {\n        this.req.files[file.fieldname] = [placeholder]\n      }\n      break\n  }\n\n  return placeholder\n}\n\nFileAppender.prototype.removePlaceholder = function (placeholder) {\n  switch (this.strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': arrayRemove(this.req.files, placeholder); break\n    case 'OBJECT':\n      if (this.req.files[placeholder.fieldname].length === 1) {\n        delete this.req.files[placeholder.fieldname]\n      } else {\n        arrayRemove(this.req.files[placeholder.fieldname], placeholder)\n      }\n      break\n  }\n}\n\nFileAppender.prototype.replacePlaceholder = function (placeholder, file) {\n  if (this.strategy === 'VALUE') {\n    this.req.file = file\n    return\n  }\n\n  delete placeholder.fieldname\n  objectAssign(placeholder, file)\n}\n\nmodule.exports = FileAppender\n", "function removeUploadedFiles (uploadedFiles, remove, cb) {\n  var length = uploadedFiles.length\n  var errors = []\n\n  if (length === 0) return cb(null, errors)\n\n  function handleFile (idx) {\n    var file = uploadedFiles[idx]\n\n    remove(file, function (err) {\n      if (err) {\n        err.file = file\n        err.field = file.fieldname\n        errors.push(err)\n      }\n\n      if (idx < length - 1) {\n        handleFile(idx + 1)\n      } else {\n        cb(null, errors)\n      }\n    })\n  }\n\n  handleFile(0)\n}\n\nmodule.exports = removeUploadedFiles\n", "var is = require('type-is')\nvar Busboy = require('busboy')\nvar extend = require('xtend')\nvar appendField = require('append-field')\n\nvar Counter = require('./counter')\nvar MulterError = require('./multer-error')\nvar FileAppender = require('./file-appender')\nvar removeUploadedFiles = require('./remove-uploaded-files')\n\nfunction makeMiddleware (setup) {\n  return function multerMiddleware (req, res, next) {\n    if (!is(req, ['multipart'])) return next()\n\n    var options = setup()\n\n    var limits = options.limits\n    var storage = options.storage\n    var fileFilter = options.fileFilter\n    var fileStrategy = options.fileStrategy\n    var preservePath = options.preservePath\n\n    req.body = Object.create(null)\n\n    var busboy\n\n    try {\n      busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath })\n    } catch (err) {\n      return next(err)\n    }\n\n    var appender = new FileAppender(fileStrategy, req)\n    var isDone = false\n    var readFinished = false\n    var errorOccured = false\n    var pendingWrites = new Counter()\n    var uploadedFiles = []\n\n    function done (err) {\n      if (isDone) return\n      isDone = true\n      req.unpipe(busboy)\n      process.nextTick(() => {\n        busboy.removeAllListeners()\n      })\n      next(err)\n    }\n\n    function indicateDone () {\n      if (readFinished && pendingWrites.isZero() && !errorOccured) done()\n    }\n\n    function abortWithError (uploadError) {\n      if (errorOccured) return\n      errorOccured = true\n\n      pendingWrites.onceZero(function () {\n        function remove (file, cb) {\n          storage._removeFile(req, file, cb)\n        }\n\n        removeUploadedFiles(uploadedFiles, remove, function (err, storageErrors) {\n          if (err) return done(err)\n\n          uploadError.storageErrors = storageErrors\n          done(uploadError)\n        })\n      })\n    }\n\n    function abortWithCode (code, optionalField) {\n      abortWithError(new MulterError(code, optionalField))\n    }\n\n    // handle text field data\n    busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) {\n      if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME')\n      if (nameTruncated) return abortWithCode('LIMIT_FIELD_KEY')\n      if (valueTruncated) return abortWithCode('LIMIT_FIELD_VALUE', fieldname)\n\n      // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6)\n      if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) {\n        if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY')\n      }\n\n      appendField(req.body, fieldname, value)\n    })\n\n    // handle files\n    busboy.on('file', function (fieldname, fileStream, { filename, encoding, mimeType }) {\n      // don't attach to the files object, if there is no file\n      if (!filename) return fileStream.resume()\n\n      // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6)\n      if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) {\n        if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY')\n      }\n\n      var file = {\n        fieldname: fieldname,\n        originalname: filename,\n        encoding: encoding,\n        mimetype: mimeType\n      }\n\n      var placeholder = appender.insertPlaceholder(file)\n\n      fileFilter(req, file, function (err, includeFile) {\n        if (err) {\n          appender.removePlaceholder(placeholder)\n          return abortWithError(err)\n        }\n\n        if (!includeFile) {\n          appender.removePlaceholder(placeholder)\n          return fileStream.resume()\n        }\n\n        var aborting = false\n        pendingWrites.increment()\n\n        Object.defineProperty(file, 'stream', {\n          configurable: true,\n          enumerable: false,\n          value: fileStream\n        })\n\n        fileStream.on('error', function (err) {\n          pendingWrites.decrement()\n          abortWithError(err)\n        })\n\n        fileStream.on('limit', function () {\n          aborting = true\n          abortWithCode('LIMIT_FILE_SIZE', fieldname)\n        })\n\n        storage._handleFile(req, file, function (err, info) {\n          if (aborting) {\n            appender.removePlaceholder(placeholder)\n            uploadedFiles.push(extend(file, info))\n            return pendingWrites.decrement()\n          }\n\n          if (err) {\n            appender.removePlaceholder(placeholder)\n            pendingWrites.decrement()\n            return abortWithError(err)\n          }\n\n          var fileInfo = extend(file, info)\n\n          appender.replacePlaceholder(placeholder, fileInfo)\n          uploadedFiles.push(fileInfo)\n          pendingWrites.decrement()\n          indicateDone()\n        })\n      })\n    })\n\n    busboy.on('error', function (err) { abortWithError(err) })\n    busboy.on('partsLimit', function () { abortWithCode('LIMIT_PART_COUNT') })\n    busboy.on('filesLimit', function () { abortWithCode('LIMIT_FILE_COUNT') })\n    busboy.on('fieldsLimit', function () { abortWithCode('LIMIT_FIELD_COUNT') })\n    busboy.on('close', function () {\n      readFinished = true\n      indicateDone()\n    })\n\n    req.pipe(busboy)\n  }\n}\n\nmodule.exports = makeMiddleware\n", "var path = require('path');\nvar fs = require('fs');\nvar _0777 = parseInt('0777', 8);\n\nmodule.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;\n\nfunction mkdirP (p, opts, f, made) {\n    if (typeof opts === 'function') {\n        f = opts;\n        opts = {};\n    }\n    else if (!opts || typeof opts !== 'object') {\n        opts = { mode: opts };\n    }\n    \n    var mode = opts.mode;\n    var xfs = opts.fs || fs;\n    \n    if (mode === undefined) {\n        mode = _0777\n    }\n    if (!made) made = null;\n    \n    var cb = f || /* istanbul ignore next */ function () {};\n    p = path.resolve(p);\n    \n    xfs.mkdir(p, mode, function (er) {\n        if (!er) {\n            made = made || p;\n            return cb(null, made);\n        }\n        switch (er.code) {\n            case 'ENOENT':\n                /* istanbul ignore if */\n                if (path.dirname(p) === p) return cb(er);\n                mkdirP(path.dirname(p), opts, function (er, made) {\n                    /* istanbul ignore if */\n                    if (er) cb(er, made);\n                    else mkdirP(p, opts, cb, made);\n                });\n                break;\n\n            // In the case of any other error, just see if there's a dir\n            // there already.  If so, then hooray!  If not, then something\n            // is borked.\n            default:\n                xfs.stat(p, function (er2, stat) {\n                    // if the stat fails, then that's super weird.\n                    // let the original error be the failure reason.\n                    if (er2 || !stat.isDirectory()) cb(er, made)\n                    else cb(null, made);\n                });\n                break;\n        }\n    });\n}\n\nmkdirP.sync = function sync (p, opts, made) {\n    if (!opts || typeof opts !== 'object') {\n        opts = { mode: opts };\n    }\n    \n    var mode = opts.mode;\n    var xfs = opts.fs || fs;\n    \n    if (mode === undefined) {\n        mode = _0777\n    }\n    if (!made) made = null;\n\n    p = path.resolve(p);\n\n    try {\n        xfs.mkdirSync(p, mode);\n        made = made || p;\n    }\n    catch (err0) {\n        switch (err0.code) {\n            case 'ENOENT' :\n                made = sync(path.dirname(p), opts, made);\n                sync(p, opts, made);\n                break;\n\n            // In the case of any other error, just see if there's a dir\n            // there already.  If so, then hooray!  If not, then something\n            // is borked.\n            default:\n                var stat;\n                try {\n                    stat = xfs.statSync(p);\n                }\n                catch (err1) /* istanbul ignore next */ {\n                    throw err0;\n                }\n                /* istanbul ignore if */\n                if (!stat.isDirectory()) throw err0;\n                break;\n        }\n    }\n\n    return made;\n};\n", "var fs = require('fs')\nvar os = require('os')\nvar path = require('path')\nvar crypto = require('crypto')\nvar mkdirp = require('mkdirp')\n\nfunction getFilename (req, file, cb) {\n  crypto.randomBytes(16, function (err, raw) {\n    cb(err, err ? undefined : raw.toString('hex'))\n  })\n}\n\nfunction getDestination (req, file, cb) {\n  cb(null, os.tmpdir())\n}\n\nfunction DiskStorage (opts) {\n  this.getFilename = (opts.filename || getFilename)\n\n  if (typeof opts.destination === 'string') {\n    mkdirp.sync(opts.destination)\n    this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) }\n  } else {\n    this.getDestination = (opts.destination || getDestination)\n  }\n}\n\nDiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {\n  var that = this\n\n  that.getDestination(req, file, function (err, destination) {\n    if (err) return cb(err)\n\n    that.getFilename(req, file, function (err, filename) {\n      if (err) return cb(err)\n\n      var finalPath = path.join(destination, filename)\n      var outStream = fs.createWriteStream(finalPath)\n\n      file.stream.pipe(outStream)\n      outStream.on('error', cb)\n      outStream.on('finish', function () {\n        cb(null, {\n          destination: destination,\n          filename: filename,\n          path: finalPath,\n          size: outStream.bytesWritten\n        })\n      })\n    })\n  })\n}\n\nDiskStorage.prototype._removeFile = function _removeFile (req, file, cb) {\n  var path = file.path\n\n  delete file.destination\n  delete file.filename\n  delete file.path\n\n  fs.unlink(path, cb)\n}\n\nmodule.exports = function (opts) {\n  return new DiskStorage(opts)\n}\n", "'use strict';\n\nif (typeof process === 'undefined' ||\n    !process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n", "module.exports = require('stream');\n", "/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n", "'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}", "'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        pna.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        pna.nextTick(emitErrorNT, this, err);\n      }\n    }\n\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        pna.nextTick(emitErrorNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        pna.nextTick(emitErrorNT, _this, err);\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};", "\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, { hasUnpiped: false });\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n  module.exports = Stream;\n  exports = module.exports = Stream.Readable;\n  exports.Readable = Stream.Readable;\n  exports.Writable = Stream.Writable;\n  exports.Duplex = Stream.Duplex;\n  exports.Transform = Stream.Transform;\n  exports.PassThrough = Stream.PassThrough;\n  exports.Stream = Stream;\n} else {\n  exports = module.exports = require('./lib/_stream_readable.js');\n  exports.Stream = Stream || exports;\n  exports.Readable = exports;\n  exports.Writable = require('./lib/_stream_writable.js');\n  exports.Duplex = require('./lib/_stream_duplex.js');\n  exports.Transform = require('./lib/_stream_transform.js');\n  exports.PassThrough = require('./lib/_stream_passthrough.js');\n}\n", "/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n  typeof Buffer !== 'undefined' &&\n  typeof Buffer.alloc === 'function' &&\n  typeof Buffer.allocUnsafe === 'function' &&\n  typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n  return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n  byteOffset >>>= 0\n\n  var maxLength = obj.byteLength - byteOffset\n\n  if (maxLength < 0) {\n    throw new RangeError(\"'offset' is out of bounds\")\n  }\n\n  if (length === undefined) {\n    length = maxLength\n  } else {\n    length >>>= 0\n\n    if (length > maxLength) {\n      throw new RangeError(\"'length' is out of bounds\")\n    }\n  }\n\n  return isModern\n    ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n    : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  return isModern\n    ? Buffer.from(string, encoding)\n    : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (isArrayBuffer(value)) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  return isModern\n    ? Buffer.from(value)\n    : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n", "var undefined = (void 0); // Paranoia\n\n// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to\n// create, and consume so much memory, that the browser appears frozen.\nvar MAX_ARRAY_LENGTH = 1e5;\n\n// Approximations of internal ECMAScript conversion functions\nvar ECMAScript = (function() {\n  // Stash a copy in case other scripts modify these\n  var opts = Object.prototype.toString,\n      ophop = Object.prototype.hasOwnProperty;\n\n  return {\n    // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:\n    Class: function(v) { return opts.call(v).replace(/^\\[object *|\\]$/g, ''); },\n    HasProperty: function(o, p) { return p in o; },\n    HasOwnProperty: function(o, p) { return ophop.call(o, p); },\n    IsCallable: function(o) { return typeof o === 'function'; },\n    ToInt32: function(v) { return v >> 0; },\n    ToUint32: function(v) { return v >>> 0; }\n  };\n}());\n\n// Snapshot intrinsics\nvar LN2 = Math.LN2,\n    abs = Math.abs,\n    floor = Math.floor,\n    log = Math.log,\n    min = Math.min,\n    pow = Math.pow,\n    round = Math.round;\n\n// ES5: lock down object properties\nfunction configureProperties(obj) {\n  if (getOwnPropNames && defineProp) {\n    var props = getOwnPropNames(obj), i;\n    for (i = 0; i < props.length; i += 1) {\n      defineProp(obj, props[i], {\n        value: obj[props[i]],\n        writable: false,\n        enumerable: false,\n        configurable: false\n      });\n    }\n  }\n}\n\n// emulate ES5 getter/setter API using legacy APIs\n// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx\n// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but\n// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)\nvar defineProp\nif (Object.defineProperty && (function() {\n      try {\n        Object.defineProperty({}, 'x', {});\n        return true;\n      } catch (e) {\n        return false;\n      }\n    })()) {\n  defineProp = Object.defineProperty;\n} else {\n  defineProp = function(o, p, desc) {\n    if (!o === Object(o)) throw new TypeError(\"Object.defineProperty called on non-object\");\n    if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); }\n    if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); }\n    if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; }\n    return o;\n  };\n}\n\nvar getOwnPropNames = Object.getOwnPropertyNames || function (o) {\n  if (o !== Object(o)) throw new TypeError(\"Object.getOwnPropertyNames called on non-object\");\n  var props = [], p;\n  for (p in o) {\n    if (ECMAScript.HasOwnProperty(o, p)) {\n      props.push(p);\n    }\n  }\n  return props;\n};\n\n// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)\n// for index in 0 ... obj.length\nfunction makeArrayAccessors(obj) {\n  if (!defineProp) { return; }\n\n  if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError(\"Array too large for polyfill\");\n\n  function makeArrayAccessor(index) {\n    defineProp(obj, index, {\n      'get': function() { return obj._getter(index); },\n      'set': function(v) { obj._setter(index, v); },\n      enumerable: true,\n      configurable: false\n    });\n  }\n\n  var i;\n  for (i = 0; i < obj.length; i += 1) {\n    makeArrayAccessor(i);\n  }\n}\n\n// Internal conversion functions:\n//    pack<Type>()   - take a number (interpreted as Type), output a byte array\n//    unpack<Type>() - take a byte array, output a Type-like number\n\nfunction as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }\nfunction as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }\n\nfunction packI8(n) { return [n & 0xff]; }\nfunction unpackI8(bytes) { return as_signed(bytes[0], 8); }\n\nfunction packU8(n) { return [n & 0xff]; }\nfunction unpackU8(bytes) { return as_unsigned(bytes[0], 8); }\n\nfunction packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }\n\nfunction packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packIEEE754(v, ebits, fbits) {\n\n  var bias = (1 << (ebits - 1)) - 1,\n      s, e, f, ln,\n      i, bits, str, bytes;\n\n  function roundToEven(n) {\n    var w = floor(n), f = n - w;\n    if (f < 0.5)\n      return w;\n    if (f > 0.5)\n      return w + 1;\n    return w % 2 ? w + 1 : w;\n  }\n\n  // Compute sign, exponent, fraction\n  if (v !== v) {\n    // NaN\n    // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping\n    e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;\n  } else if (v === Infinity || v === -Infinity) {\n    e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;\n  } else if (v === 0) {\n    e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;\n  } else {\n    s = v < 0;\n    v = abs(v);\n\n    if (v >= pow(2, 1 - bias)) {\n      e = min(floor(log(v) / LN2), 1023);\n      f = roundToEven(v / pow(2, e) * pow(2, fbits));\n      if (f / pow(2, fbits) >= 2) {\n        e = e + 1;\n        f = 1;\n      }\n      if (e > bias) {\n        // Overflow\n        e = (1 << ebits) - 1;\n        f = 0;\n      } else {\n        // Normalized\n        e = e + bias;\n        f = f - pow(2, fbits);\n      }\n    } else {\n      // Denormalized\n      e = 0;\n      f = roundToEven(v / pow(2, 1 - bias - fbits));\n    }\n  }\n\n  // Pack sign, exponent, fraction\n  bits = [];\n  for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }\n  for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }\n  bits.push(s ? 1 : 0);\n  bits.reverse();\n  str = bits.join('');\n\n  // Bits to bytes\n  bytes = [];\n  while (str.length) {\n    bytes.push(parseInt(str.substring(0, 8), 2));\n    str = str.substring(8);\n  }\n  return bytes;\n}\n\nfunction unpackIEEE754(bytes, ebits, fbits) {\n\n  // Bytes to bits\n  var bits = [], i, j, b, str,\n      bias, s, e, f;\n\n  for (i = bytes.length; i; i -= 1) {\n    b = bytes[i - 1];\n    for (j = 8; j; j -= 1) {\n      bits.push(b % 2 ? 1 : 0); b = b >> 1;\n    }\n  }\n  bits.reverse();\n  str = bits.join('');\n\n  // Unpack sign, exponent, fraction\n  bias = (1 << (ebits - 1)) - 1;\n  s = parseInt(str.substring(0, 1), 2) ? -1 : 1;\n  e = parseInt(str.substring(1, 1 + ebits), 2);\n  f = parseInt(str.substring(1 + ebits), 2);\n\n  // Produce number\n  if (e === (1 << ebits) - 1) {\n    return f !== 0 ? NaN : s * Infinity;\n  } else if (e > 0) {\n    // Normalized\n    return s * pow(2, e - bias) * (1 + f / pow(2, fbits));\n  } else if (f !== 0) {\n    // Denormalized\n    return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));\n  } else {\n    return s < 0 ? -0 : 0;\n  }\n}\n\nfunction unpackF64(b) { return unpackIEEE754(b, 11, 52); }\nfunction packF64(v) { return packIEEE754(v, 11, 52); }\nfunction unpackF32(b) { return unpackIEEE754(b, 8, 23); }\nfunction packF32(v) { return packIEEE754(v, 8, 23); }\n\n\n//\n// 3 The ArrayBuffer Type\n//\n\n(function() {\n\n  /** @constructor */\n  var ArrayBuffer = function ArrayBuffer(length) {\n    length = ECMAScript.ToInt32(length);\n    if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer');\n\n    this.byteLength = length;\n    this._bytes = [];\n    this._bytes.length = length;\n\n    var i;\n    for (i = 0; i < this.byteLength; i += 1) {\n      this._bytes[i] = 0;\n    }\n\n    configureProperties(this);\n  };\n\n  exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer;\n\n  //\n  // 4 The ArrayBufferView Type\n  //\n\n  // NOTE: this constructor is not exported\n  /** @constructor */\n  var ArrayBufferView = function ArrayBufferView() {\n    //this.buffer = null;\n    //this.byteOffset = 0;\n    //this.byteLength = 0;\n  };\n\n  //\n  // 5 The Typed Array View Types\n  //\n\n  function makeConstructor(bytesPerElement, pack, unpack) {\n    // Each TypedArray type requires a distinct constructor instance with\n    // identical logic, which this produces.\n\n    var ctor;\n    ctor = function(buffer, byteOffset, length) {\n      var array, sequence, i, s;\n\n      if (!arguments.length || typeof arguments[0] === 'number') {\n        // Constructor(unsigned long length)\n        this.length = ECMAScript.ToInt32(arguments[0]);\n        if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer');\n\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n      } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) {\n        // Constructor(TypedArray array)\n        array = arguments[0];\n\n        this.length = array.length;\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n\n        for (i = 0; i < this.length; i += 1) {\n          this._setter(i, array._getter(i));\n        }\n      } else if (typeof arguments[0] === 'object' &&\n                 !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n        // Constructor(sequence<type> array)\n        sequence = arguments[0];\n\n        this.length = ECMAScript.ToUint32(sequence.length);\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n\n        for (i = 0; i < this.length; i += 1) {\n          s = sequence[i];\n          this._setter(i, Number(s));\n        }\n      } else if (typeof arguments[0] === 'object' &&\n                 (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n        // Constructor(ArrayBuffer buffer,\n        //             optional unsigned long byteOffset, optional unsigned long length)\n        this.buffer = buffer;\n\n        this.byteOffset = ECMAScript.ToUint32(byteOffset);\n        if (this.byteOffset > this.buffer.byteLength) {\n          throw new RangeError(\"byteOffset out of range\");\n        }\n\n        if (this.byteOffset % this.BYTES_PER_ELEMENT) {\n          // The given byteOffset must be a multiple of the element\n          // size of the specific type, otherwise an exception is raised.\n          throw new RangeError(\"ArrayBuffer length minus the byteOffset is not a multiple of the element size.\");\n        }\n\n        if (arguments.length < 3) {\n          this.byteLength = this.buffer.byteLength - this.byteOffset;\n\n          if (this.byteLength % this.BYTES_PER_ELEMENT) {\n            throw new RangeError(\"length of buffer minus byteOffset not a multiple of the element size\");\n          }\n          this.length = this.byteLength / this.BYTES_PER_ELEMENT;\n        } else {\n          this.length = ECMAScript.ToUint32(length);\n          this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        }\n\n        if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n          throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n        }\n      } else {\n        throw new TypeError(\"Unexpected argument type(s)\");\n      }\n\n      this.constructor = ctor;\n\n      configureProperties(this);\n      makeArrayAccessors(this);\n    };\n\n    ctor.prototype = new ArrayBufferView();\n    ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement;\n    ctor.prototype._pack = pack;\n    ctor.prototype._unpack = unpack;\n    ctor.BYTES_PER_ELEMENT = bytesPerElement;\n\n    // getter type (unsigned long index);\n    ctor.prototype._getter = function(index) {\n      if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n\n      index = ECMAScript.ToUint32(index);\n      if (index >= this.length) {\n        return undefined;\n      }\n\n      var bytes = [], i, o;\n      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n           i < this.BYTES_PER_ELEMENT;\n           i += 1, o += 1) {\n        bytes.push(this.buffer._bytes[o]);\n      }\n      return this._unpack(bytes);\n    };\n\n    // NONSTANDARD: convenience alias for getter: type get(unsigned long index);\n    ctor.prototype.get = ctor.prototype._getter;\n\n    // setter void (unsigned long index, type value);\n    ctor.prototype._setter = function(index, value) {\n      if (arguments.length < 2) throw new SyntaxError(\"Not enough arguments\");\n\n      index = ECMAScript.ToUint32(index);\n      if (index >= this.length) {\n        return undefined;\n      }\n\n      var bytes = this._pack(value), i, o;\n      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n           i < this.BYTES_PER_ELEMENT;\n           i += 1, o += 1) {\n        this.buffer._bytes[o] = bytes[i];\n      }\n    };\n\n    // void set(TypedArray array, optional unsigned long offset);\n    // void set(sequence<type> array, optional unsigned long offset);\n    ctor.prototype.set = function(index, value) {\n      if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n      var array, sequence, offset, len,\n          i, s, d,\n          byteOffset, byteLength, tmp;\n\n      if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {\n        // void set(TypedArray array, optional unsigned long offset);\n        array = arguments[0];\n        offset = ECMAScript.ToUint32(arguments[1]);\n\n        if (offset + array.length > this.length) {\n          throw new RangeError(\"Offset plus length of array is out of range\");\n        }\n\n        byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;\n        byteLength = array.length * this.BYTES_PER_ELEMENT;\n\n        if (array.buffer === this.buffer) {\n          tmp = [];\n          for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {\n            tmp[i] = array.buffer._bytes[s];\n          }\n          for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {\n            this.buffer._bytes[d] = tmp[i];\n          }\n        } else {\n          for (i = 0, s = array.byteOffset, d = byteOffset;\n               i < byteLength; i += 1, s += 1, d += 1) {\n            this.buffer._bytes[d] = array.buffer._bytes[s];\n          }\n        }\n      } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {\n        // void set(sequence<type> array, optional unsigned long offset);\n        sequence = arguments[0];\n        len = ECMAScript.ToUint32(sequence.length);\n        offset = ECMAScript.ToUint32(arguments[1]);\n\n        if (offset + len > this.length) {\n          throw new RangeError(\"Offset plus length of array is out of range\");\n        }\n\n        for (i = 0; i < len; i += 1) {\n          s = sequence[i];\n          this._setter(offset + i, Number(s));\n        }\n      } else {\n        throw new TypeError(\"Unexpected argument type(s)\");\n      }\n    };\n\n    // TypedArray subarray(long begin, optional long end);\n    ctor.prototype.subarray = function(start, end) {\n      function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }\n\n      start = ECMAScript.ToInt32(start);\n      end = ECMAScript.ToInt32(end);\n\n      if (arguments.length < 1) { start = 0; }\n      if (arguments.length < 2) { end = this.length; }\n\n      if (start < 0) { start = this.length + start; }\n      if (end < 0) { end = this.length + end; }\n\n      start = clamp(start, 0, this.length);\n      end = clamp(end, 0, this.length);\n\n      var len = end - start;\n      if (len < 0) {\n        len = 0;\n      }\n\n      return new this.constructor(\n        this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n    };\n\n    return ctor;\n  }\n\n  var Int8Array = makeConstructor(1, packI8, unpackI8);\n  var Uint8Array = makeConstructor(1, packU8, unpackU8);\n  var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8);\n  var Int16Array = makeConstructor(2, packI16, unpackI16);\n  var Uint16Array = makeConstructor(2, packU16, unpackU16);\n  var Int32Array = makeConstructor(4, packI32, unpackI32);\n  var Uint32Array = makeConstructor(4, packU32, unpackU32);\n  var Float32Array = makeConstructor(4, packF32, unpackF32);\n  var Float64Array = makeConstructor(8, packF64, unpackF64);\n\n  exports.Int8Array = exports.Int8Array || Int8Array;\n  exports.Uint8Array = exports.Uint8Array || Uint8Array;\n  exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray;\n  exports.Int16Array = exports.Int16Array || Int16Array;\n  exports.Uint16Array = exports.Uint16Array || Uint16Array;\n  exports.Int32Array = exports.Int32Array || Int32Array;\n  exports.Uint32Array = exports.Uint32Array || Uint32Array;\n  exports.Float32Array = exports.Float32Array || Float32Array;\n  exports.Float64Array = exports.Float64Array || Float64Array;\n}());\n\n//\n// 6 The DataView View Type\n//\n\n(function() {\n  function r(array, index) {\n    return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index];\n  }\n\n  var IS_BIG_ENDIAN = (function() {\n    var u16array = new(exports.Uint16Array)([0x1234]),\n        u8array = new(exports.Uint8Array)(u16array.buffer);\n    return r(u8array, 0) === 0x12;\n  }());\n\n  // Constructor(ArrayBuffer buffer,\n  //             optional unsigned long byteOffset,\n  //             optional unsigned long byteLength)\n  /** @constructor */\n  var DataView = function DataView(buffer, byteOffset, byteLength) {\n    if (arguments.length === 0) {\n      buffer = new exports.ArrayBuffer(0);\n    } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) {\n      throw new TypeError(\"TypeError\");\n    }\n\n    this.buffer = buffer || new exports.ArrayBuffer(0);\n\n    this.byteOffset = ECMAScript.ToUint32(byteOffset);\n    if (this.byteOffset > this.buffer.byteLength) {\n      throw new RangeError(\"byteOffset out of range\");\n    }\n\n    if (arguments.length < 3) {\n      this.byteLength = this.buffer.byteLength - this.byteOffset;\n    } else {\n      this.byteLength = ECMAScript.ToUint32(byteLength);\n    }\n\n    if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n      throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n    }\n\n    configureProperties(this);\n  };\n\n  function makeGetter(arrayType) {\n    return function(byteOffset, littleEndian) {\n\n      byteOffset = ECMAScript.ToUint32(byteOffset);\n\n      if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n        throw new RangeError(\"Array index out of range\");\n      }\n      byteOffset += this.byteOffset;\n\n      var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),\n          bytes = [], i;\n      for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n        bytes.push(r(uint8Array, i));\n      }\n\n      if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n        bytes.reverse();\n      }\n\n      return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0);\n    };\n  }\n\n  DataView.prototype.getUint8 = makeGetter(exports.Uint8Array);\n  DataView.prototype.getInt8 = makeGetter(exports.Int8Array);\n  DataView.prototype.getUint16 = makeGetter(exports.Uint16Array);\n  DataView.prototype.getInt16 = makeGetter(exports.Int16Array);\n  DataView.prototype.getUint32 = makeGetter(exports.Uint32Array);\n  DataView.prototype.getInt32 = makeGetter(exports.Int32Array);\n  DataView.prototype.getFloat32 = makeGetter(exports.Float32Array);\n  DataView.prototype.getFloat64 = makeGetter(exports.Float64Array);\n\n  function makeSetter(arrayType) {\n    return function(byteOffset, value, littleEndian) {\n\n      byteOffset = ECMAScript.ToUint32(byteOffset);\n      if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n        throw new RangeError(\"Array index out of range\");\n      }\n\n      // Get bytes\n      var typeArray = new arrayType([value]),\n          byteArray = new exports.Uint8Array(typeArray.buffer),\n          bytes = [], i, byteView;\n\n      for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n        bytes.push(r(byteArray, i));\n      }\n\n      // Flip if necessary\n      if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n        bytes.reverse();\n      }\n\n      // Write them\n      byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);\n      byteView.set(bytes);\n    };\n  }\n\n  DataView.prototype.setUint8 = makeSetter(exports.Uint8Array);\n  DataView.prototype.setInt8 = makeSetter(exports.Int8Array);\n  DataView.prototype.setUint16 = makeSetter(exports.Uint16Array);\n  DataView.prototype.setInt16 = makeSetter(exports.Int16Array);\n  DataView.prototype.setUint32 = makeSetter(exports.Uint32Array);\n  DataView.prototype.setInt32 = makeSetter(exports.Int32Array);\n  DataView.prototype.setFloat32 = makeSetter(exports.Float32Array);\n  DataView.prototype.setFloat64 = makeSetter(exports.Float64Array);\n\n  exports.DataView = exports.DataView || DataView;\n\n}());\n", "var Writable = require('readable-stream').Writable\nvar inherits = require('inherits')\nvar bufferFrom = require('buffer-from')\n\nif (typeof Uint8Array === 'undefined') {\n  var U8 = require('typedarray').Uint8Array\n} else {\n  var U8 = Uint8Array\n}\n\nfunction ConcatStream(opts, cb) {\n  if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb)\n\n  if (typeof opts === 'function') {\n    cb = opts\n    opts = {}\n  }\n  if (!opts) opts = {}\n\n  var encoding = opts.encoding\n  var shouldInferEncoding = false\n\n  if (!encoding) {\n    shouldInferEncoding = true\n  } else {\n    encoding =  String(encoding).toLowerCase()\n    if (encoding === 'u8' || encoding === 'uint8') {\n      encoding = 'uint8array'\n    }\n  }\n\n  Writable.call(this, { objectMode: true })\n\n  this.encoding = encoding\n  this.shouldInferEncoding = shouldInferEncoding\n\n  if (cb) this.on('finish', function () { cb(this.getBody()) })\n  this.body = []\n}\n\nmodule.exports = ConcatStream\ninherits(ConcatStream, Writable)\n\nConcatStream.prototype._write = function(chunk, enc, next) {\n  this.body.push(chunk)\n  next()\n}\n\nConcatStream.prototype.inferEncoding = function (buff) {\n  var firstBuffer = buff === undefined ? this.body[0] : buff;\n  if (Buffer.isBuffer(firstBuffer)) return 'buffer'\n  if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array'\n  if (Array.isArray(firstBuffer)) return 'array'\n  if (typeof firstBuffer === 'string') return 'string'\n  if (Object.prototype.toString.call(firstBuffer) === \"[object Object]\") return 'object'\n  return 'buffer'\n}\n\nConcatStream.prototype.getBody = function () {\n  if (!this.encoding && this.body.length === 0) return []\n  if (this.shouldInferEncoding) this.encoding = this.inferEncoding()\n  if (this.encoding === 'array') return arrayConcat(this.body)\n  if (this.encoding === 'string') return stringConcat(this.body)\n  if (this.encoding === 'buffer') return bufferConcat(this.body)\n  if (this.encoding === 'uint8array') return u8Concat(this.body)\n  return this.body\n}\n\nvar isArray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]'\n}\n\nfunction isArrayish (arr) {\n  return /Array\\]$/.test(Object.prototype.toString.call(arr))\n}\n\nfunction isBufferish (p) {\n  return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function')\n}\n\nfunction stringConcat (parts) {\n  var strings = []\n  var needsToString = false\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i]\n    if (typeof p === 'string') {\n      strings.push(p)\n    } else if (Buffer.isBuffer(p)) {\n      strings.push(p)\n    } else if (isBufferish(p)) {\n      strings.push(bufferFrom(p))\n    } else {\n      strings.push(bufferFrom(String(p)))\n    }\n  }\n  if (Buffer.isBuffer(parts[0])) {\n    strings = Buffer.concat(strings)\n    strings = strings.toString('utf8')\n  } else {\n    strings = strings.join('')\n  }\n  return strings\n}\n\nfunction bufferConcat (parts) {\n  var bufs = []\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i]\n    if (Buffer.isBuffer(p)) {\n      bufs.push(p)\n    } else if (isBufferish(p)) {\n      bufs.push(bufferFrom(p))\n    } else {\n      bufs.push(bufferFrom(String(p)))\n    }\n  }\n  return Buffer.concat(bufs)\n}\n\nfunction arrayConcat (parts) {\n  var res = []\n  for (var i = 0; i < parts.length; i++) {\n    res.push.apply(res, parts[i])\n  }\n  return res\n}\n\nfunction u8Concat (parts) {\n  var len = 0\n  for (var i = 0; i < parts.length; i++) {\n    if (typeof parts[i] === 'string') {\n      parts[i] = bufferFrom(parts[i])\n    }\n    len += parts[i].length\n  }\n  var u8 = new U8(len)\n  for (var i = 0, offset = 0; i < parts.length; i++) {\n    var part = parts[i]\n    for (var j = 0; j < part.length; j++) {\n      u8[offset++] = part[j]\n    }\n  }\n  return u8\n}\n", "var concat = require('concat-stream')\n\nfunction MemoryStorage (opts) {}\n\nMemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) {\n  file.stream.pipe(concat({ encoding: 'buffer' }, function (data) {\n    cb(null, {\n      buffer: data,\n      size: data.length\n    })\n  }))\n}\n\nMemoryStorage.prototype._removeFile = function _removeFile (req, file, cb) {\n  delete file.buffer\n  cb(null)\n}\n\nmodule.exports = function (opts) {\n  return new MemoryStorage(opts)\n}\n", "var makeMiddleware = require('./lib/make-middleware')\n\nvar diskStorage = require('./storage/disk')\nvar memoryStorage = require('./storage/memory')\nvar MulterError = require('./lib/multer-error')\n\nfunction allowAll (req, file, cb) {\n  cb(null, true)\n}\n\nfunction Multer (options) {\n  if (options.storage) {\n    this.storage = options.storage\n  } else if (options.dest) {\n    this.storage = diskStorage({ destination: options.dest })\n  } else {\n    this.storage = memoryStorage()\n  }\n\n  this.limits = options.limits\n  this.preservePath = options.preservePath\n  this.fileFilter = options.fileFilter || allowAll\n}\n\nMulter.prototype._makeMiddleware = function (fields, fileStrategy) {\n  function setup () {\n    var fileFilter = this.fileFilter\n    var filesLeft = Object.create(null)\n\n    fields.forEach(function (field) {\n      if (typeof field.maxCount === 'number') {\n        filesLeft[field.name] = field.maxCount\n      } else {\n        filesLeft[field.name] = Infinity\n      }\n    })\n\n    function wrappedFileFilter (req, file, cb) {\n      if ((filesLeft[file.fieldname] || 0) <= 0) {\n        return cb(new MulterError('LIMIT_UNEXPECTED_FILE', file.fieldname))\n      }\n\n      filesLeft[file.fieldname] -= 1\n      fileFilter(req, file, cb)\n    }\n\n    return {\n      limits: this.limits,\n      preservePath: this.preservePath,\n      storage: this.storage,\n      fileFilter: wrappedFileFilter,\n      fileStrategy: fileStrategy\n    }\n  }\n\n  return makeMiddleware(setup.bind(this))\n}\n\nMulter.prototype.single = function (name) {\n  return this._makeMiddleware([{ name: name, maxCount: 1 }], 'VALUE')\n}\n\nMulter.prototype.array = function (name, maxCount) {\n  return this._makeMiddleware([{ name: name, maxCount: maxCount }], 'ARRAY')\n}\n\nMulter.prototype.fields = function (fields) {\n  return this._makeMiddleware(fields, 'OBJECT')\n}\n\nMulter.prototype.none = function () {\n  return this._makeMiddleware([], 'NONE')\n}\n\nMulter.prototype.any = function () {\n  function setup () {\n    return {\n      limits: this.limits,\n      preservePath: this.preservePath,\n      storage: this.storage,\n      fileFilter: this.fileFilter,\n      fileStrategy: 'ARRAY'\n    }\n  }\n\n  return makeMiddleware(setup.bind(this))\n}\n\nfunction multer (options) {\n  if (options === undefined) {\n    return new Multer({})\n  }\n\n  if (typeof options === 'object' && options !== null) {\n    return new Multer(options)\n  }\n\n  throw new TypeError('Expected object for argument options')\n}\n\nmodule.exports = multer\nmodule.exports.diskStorage = diskStorage\nmodule.exports.memoryStorage = memoryStorage\nmodule.exports.MulterError = MulterError\n", "import express, { type Express, type Request, type Response, type NextFunction } from \"express\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport cors from \"cors\";\nimport { createProxyMiddleware } from \"http-proxy-middleware\";\nimport session from \"express-session\";\nimport connectPgSimple from \"connect-pg-simple\";\nimport pinoHttp from \"pino-http\";\nimport { pool } from \"@workspace/db\";\nimport router from \"./routes\";\nimport { logger } from \"./lib/logger\";\nimport { requireAuth, type RequestWithUser } from \"./lib/session\";\n\nconst app: Express = express();\n\napp.set(\"trust proxy\", 1);\n\napp.use(\n  pinoHttp({\n    logger,\n    serializers: {\n      req(req) {\n        return {\n          id: req.id,\n          method: req.method,\n          url: (req.url?.split(\"?\")[0] ?? \"\").replace(\n            /\\/(public\\/prescriptions|public\\/patients)\\/[^/?]+/g,\n            \"/$1/[redacted]\",\n          ),\n        };\n      },\n      res(res) {\n        return {\n          statusCode: res.statusCode,\n        };\n      },\n    },\n  }),\n);\napp.use(cors({ origin: true, credentials: true }));\n// Patient import accepts large Excel-derived payloads; parse it with a higher\n// limit before the default global parser (which caps bodies at ~100kb).\napp.use(\"/api/backup/patients/import\", express.json({ limit: \"25mb\" }));\napp.use(express.json());\napp.use(express.urlencoded({ extended: true }));\n\nconst PgStore = connectPgSimple(session);\n\nconst sessionSecret = process.env.SESSION_SECRET;\nif (!sessionSecret) {\n  throw new Error(\"SESSION_SECRET environment variable is required\");\n}\n\napp.use(\n  session({\n    name: \"clinic.sid\",\n    store: new PgStore({\n      pool,\n      tableName: \"session\",\n      createTableIfMissing: false,\n    }),\n    secret: sessionSecret,\n    resave: false,\n    saveUninitialized: false,\n    rolling: true,\n    cookie: {\n      httpOnly: true,\n      sameSite: \"lax\",\n      secure: process.env.NODE_ENV === \"production\",\n      maxAge: 1000 * 60 * 60 * 12, // 12 hours\n    },\n  }),\n);\n\nconst PUBLIC_PREFIXES = [\n  \"/public/\",\n  \"/patient-auth/\",\n  \"/patient-consultations\",\n  \"/storage/public-objects/\",\n  \"/storage/objects/\",\n];\nconst PUBLIC_EXACT = new Set([\n  \"/healthz\",\n  \"/auth/login\",\n  \"/auth/logout\",\n]);\n\napp.use(\n  \"/api\",\n  (req: Request, res: Response, next: NextFunction) => {\n    const reqPath = req.path;\n    if (PUBLIC_EXACT.has(reqPath)) return next();\n    if (PUBLIC_PREFIXES.some((p) => reqPath.startsWith(p))) return next();\n    return requireAuth(req as RequestWithUser, res, next);\n  },\n  router,\n);\n\nif (process.env.NODE_ENV === \"production\") {\n  const __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n  let clinicDist: string;\n  let siteDist: string;\n\n  if (process.env.USE_LOCAL_STORAGE === \"true\") {\n    // cPanel deployment: static files live next to the bundle in public/\n    // Bundle is at <appRoot>/dist/index.mjs, public dir is <appRoot>/public/\n    const appRoot = path.resolve(__dirname, \"..\");\n    clinicDist = path.join(appRoot, \"public\", \"management\");\n    siteDist = path.join(appRoot, \"public\");\n  } else {\n    // Replit: repo root is three levels up from dist/index.mjs\n    const repoRoot = path.resolve(__dirname, \"..\", \"..\", \"..\");\n    clinicDist = path.resolve(repoRoot, \"artifacts/clinic/dist/public\");\n    siteDist = path.resolve(repoRoot, \"artifacts/site/dist/public\");\n  }\n\n  // Clinic management app at /management\n  app.use(\"/management\", express.static(clinicDist, { index: \"index.html\" }));\n\n  // Marketing site at root /\n  app.use(express.static(siteDist, { index: \"index.html\" }));\n\n  app.use((req: Request, res: Response, next: NextFunction) => {\n    if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n    if (req.path === \"/api\" || req.path.startsWith(\"/api/\")) return next();\n    const target = req.path.startsWith(\"/management\")\n      ? path.join(clinicDist, \"index.html\")\n      : path.join(siteDist, \"index.html\");\n    res.sendFile(target, (err) => {\n      if (err) next(err);\n    });\n  });\n} else {\n  // Development: proxy non-API traffic to the per-artifact vite dev servers\n  // so the workspace preview at \"/\" and \"/management/\" keeps working with HMR.\n  const clinicTarget = `http://127.0.0.1:${process.env.CLINIC_DEV_PORT ?? \"20964\"}`;\n  const siteTarget = `http://127.0.0.1:${process.env.SITE_DEV_PORT ?? \"21238\"}`;\n\n  const siteProxy = createProxyMiddleware({\n    target: siteTarget,\n    changeOrigin: true,\n    ws: true,\n  });\n\n  const clinicProxy = createProxyMiddleware({\n    target: clinicTarget,\n    changeOrigin: true,\n    ws: true,\n  });\n\n  app.use(\"/management\", clinicProxy);\n\n  app.use((req: Request, res: Response, next: NextFunction) => {\n    if (req.path === \"/api\" || req.path.startsWith(\"/api/\")) return next();\n    return siteProxy(req, res, next);\n  });\n}\n\nexport default app;\n", "import { drizzle } from \"drizzle-orm/node-postgres\";\nimport pg from \"pg\";\nimport * as schema from \"./schema\";\n\nconst { Pool } = pg;\n\nif (!process.env.DATABASE_URL) {\n  throw new Error(\n    \"DATABASE_URL must be set. Did you forget to provision a database?\",\n  );\n}\n\nexport const pool = new Pool({ connectionString: process.env.DATABASE_URL });\nexport const db = drizzle(pool, { schema });\n\nexport * from \"./schema\";\n", "// ESM wrapper for pg\nimport pg from '../lib/index.js'\n\n// Re-export all the properties\nexport const Client = pg.Client\nexport const Pool = pg.Pool\nexport const Connection = pg.Connection\nexport const types = pg.types\nexport const Query = pg.Query\nexport const DatabaseError = pg.DatabaseError\nexport const escapeIdentifier = pg.escapeIdentifier\nexport const escapeLiteral = pg.escapeLiteral\nexport const Result = pg.Result\nexport const TypeOverrides = pg.TypeOverrides\n\n// Also export the defaults\nexport const defaults = pg.defaults\n\n// Re-export the default\nexport default pg\n", "export * from \"./users\";\nexport * from \"./patients\";\nexport * from \"./growth\";\nexport * from \"./appointments\";\nexport * from \"./examinationTypes\";\nexport * from \"./visits\";\nexport * from \"./prescriptions\";\nexport * from \"./referrals\";\nexport * from \"./drugs\";\nexport * from \"./payments\";\nexport * from \"./audit\";\nexport * from \"./sessionState\";\nexport * from \"./session\";\nexport * from \"./consultations\";\nexport * from \"./siteContent\";\nexport * from \"./systemSettings\";\nexport * from \"./queue\";\nexport * from \"./notifications\";\nexport * from \"./complaints\";\nexport * from \"./qrFiles\";\n", "import { pgTable, text, uuid, timestamp, jsonb } from \"drizzle-orm/pg-core\";\n\nexport const usersTable = pgTable(\"users\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  name: text(\"name\").notNull(),\n  email: text(\"email\").notNull().unique(),\n  role: text(\"role\", { enum: [\"admin\", \"doctor\", \"nurse\", \"quality_control\"] }).notNull(),\n  passwordHash: text(\"password_hash\"),\n  /**\n   * Per-section permission map ({ patients: \"edit\", payments: \"view\", ... }).\n   * Null means \"use the default derived from `role`\" (admins ignore this and\n   * always have full access). Section keys/levels are validated app-side via\n   * `@workspace/permissions`.\n   */\n  permissions: jsonb(\"permissions\").$type<Record<\n    string,\n    \"view\" | \"edit\"\n  > | null>(),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type User = typeof usersTable.$inferSelect;\nexport type InsertUser = typeof usersTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  date,\n  jsonb,\n} from \"drizzle-orm/pg-core\";\n\nexport const patientsTable = pgTable(\"patients\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  code: text(\"code\").notNull().unique(),\n  fullName: text(\"full_name\").notNull(),\n  gender: text(\"gender\", { enum: [\"male\", \"female\"] }).notNull(),\n  birthDate: date(\"birth_date\").notNull(),\n  phone: text(\"phone\"),\n  guardianName: text(\"guardian_name\"),\n  address: text(\"address\"),\n  bloodType: text(\"blood_type\"),\n  allergies: text(\"allergies\"),\n  notes: text(\"notes\"),\n  planOfCare: jsonb(\"plan_of_care\"),\n  birthCertificateUrl: text(\"birth_certificate_url\"),\n  fatherIdUrl: text(\"father_id_url\"),\n  qrToken: text(\"qr_token\").notNull().unique(),\n  email: text(\"email\").unique(),\n  passwordHash: text(\"password_hash\"),\n  lastLoginAt: timestamp(\"last_login_at\", { withTimezone: true }),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n  updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow()\n    .$onUpdate(() => new Date()),\n});\n\nexport type Patient = typeof patientsTable.$inferSelect;\nexport type InsertPatient = typeof patientsTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  doublePrecision,\n} from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\n\nexport const growthRecordsTable = pgTable(\"growth_records\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  recordedAt: timestamp(\"recorded_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n  weightKg: doublePrecision(\"weight_kg\").notNull(),\n  heightCm: doublePrecision(\"height_cm\").notNull(),\n  headCircumferenceCm: doublePrecision(\"head_circumference_cm\"),\n  temperatureC: doublePrecision(\"temperature_c\"),\n  notes: text(\"notes\"),\n});\n\nexport type GrowthRecord = typeof growthRecordsTable.$inferSelect;\nexport type InsertGrowthRecord = typeof growthRecordsTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  boolean,\n  integer,\n} from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\nimport { examinationTypesTable } from \"./examinationTypes\";\n\nexport const appointmentsTable = pgTable(\"appointments\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }).notNull(),\n  status: text(\"status\", {\n    enum: [\"scheduled\", \"checked_in\", \"in_progress\", \"completed\", \"cancelled\"],\n  })\n    .notNull()\n    .default(\"scheduled\"),\n  examinationTypeId: uuid(\"examination_type_id\").references(\n    () => examinationTypesTable.id,\n    { onDelete: \"set null\" },\n  ),\n  isEmergency: boolean(\"is_emergency\").notNull().default(false),\n  // Sequential daily waiting-list number (resets each day). Assigned only for\n  // appointments scheduled on the current day; null for future bookings until\n  // their day arrives (then backfilled when today's list is first loaded).\n  queueNumber: integer(\"queue_number\"),\n  reason: text(\"reason\"),\n  notes: text(\"notes\"),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n  updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow()\n    .$onUpdate(() => new Date()),\n});\n\nexport type Appointment = typeof appointmentsTable.$inferSelect;\nexport type InsertAppointment = typeof appointmentsTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  integer,\n  boolean,\n  timestamp,\n  index,\n} from \"drizzle-orm/pg-core\";\n\n/**\n * Admin-editable list of examination / visit types (\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u0634\u0648\u0641\u0627\u062A) used by\n * clinic staff when handling appointments. Managed from the clinic control\n * panel. `color` is an optional hex value used for the badge in appointment\n * lists; `active` hides a type from selection without deleting historical use.\n */\nexport const examinationTypesTable = pgTable(\n  \"examination_types\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    name: text(\"name\").notNull(),\n    color: text(\"color\"),\n    sortOrder: integer(\"sort_order\").notNull().default(0),\n    active: boolean(\"active\").notNull().default(true),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n    updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow()\n      .$onUpdate(() => new Date()),\n  },\n  (t) => [index(\"examination_types_sort_idx\").on(t.sortOrder)],\n);\n\nexport type ExaminationType = typeof examinationTypesTable.$inferSelect;\nexport type InsertExaminationType = typeof examinationTypesTable.$inferInsert;\n", "import { pgTable, text, uuid, timestamp, jsonb } from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\nimport { appointmentsTable } from \"./appointments\";\nimport { usersTable } from \"./users\";\n\nexport const visitsTable = pgTable(\"visits\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  appointmentId: uuid(\"appointment_id\").references(\n    () => appointmentsTable.id,\n    { onDelete: \"set null\" },\n  ),\n  doctorId: uuid(\"doctor_id\").references(() => usersTable.id, {\n    onDelete: \"set null\",\n  }),\n  diagnosis: text(\"diagnosis\"),\n  notes: text(\"notes\"),\n  nursingAssessment: text(\"nursing_assessment\"),\n  doctorReport: jsonb(\"doctor_report\"),\n  visitedAt: timestamp(\"visited_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type Visit = typeof visitsTable.$inferSelect;\nexport type InsertVisit = typeof visitsTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  integer,\n} from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\nimport { usersTable } from \"./users\";\nimport { visitsTable } from \"./visits\";\n\nexport const prescriptionsTable = pgTable(\"prescriptions\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  code: text(\"code\").notNull().unique(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  doctorId: uuid(\"doctor_id\")\n    .notNull()\n    .references(() => usersTable.id, { onDelete: \"restrict\" }),\n  visitId: uuid(\"visit_id\").references(() => visitsTable.id, {\n    onDelete: \"set null\",\n  }),\n  diagnosis: text(\"diagnosis\").notNull(),\n  notes: text(\"notes\"),\n  source: text(\"source\"),\n  qrToken: text(\"qr_token\").notNull().unique(),\n  patientAgeMonths: integer(\"patient_age_months\").notNull(),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport const prescriptionItemsTable = pgTable(\"prescription_items\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  prescriptionId: uuid(\"prescription_id\")\n    .notNull()\n    .references(() => prescriptionsTable.id, { onDelete: \"cascade\" }),\n  drugName: text(\"drug_name\").notNull(),\n  concentration: text(\"concentration\"),\n  dosage: text(\"dosage\").notNull(),\n  frequency: text(\"frequency\").notNull(),\n  duration: text(\"duration\").notNull(),\n  route: text(\"route\", {\n    enum: [\n      \"oral_syrup\",\n      \"oral_tablet\",\n      \"injection\",\n      \"topical\",\n      \"drops\",\n      \"inhaler\",\n      \"suppository\",\n    ],\n  }).notNull(),\n  instructions: text(\"instructions\"),\n  sortOrder: integer(\"sort_order\").notNull().default(0),\n});\n\nexport const prescriptionTemplatesTable = pgTable(\"prescription_templates\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  name: text(\"name\").notNull(),\n  diagnosis: text(\"diagnosis\").notNull(),\n  itemsJson: text(\"items_json\").notNull(),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type Prescription = typeof prescriptionsTable.$inferSelect;\nexport type PrescriptionItem = typeof prescriptionItemsTable.$inferSelect;\nexport type PrescriptionTemplate =\n  typeof prescriptionTemplatesTable.$inferSelect;\n", "import { pgTable, text, uuid, timestamp, integer } from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\nimport { usersTable } from \"./users\";\n\nexport const referralsTable = pgTable(\"referrals\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  code: text(\"code\").notNull().unique(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  doctorId: uuid(\"doctor_id\")\n    .notNull()\n    .references(() => usersTable.id, { onDelete: \"restrict\" }),\n  externalDoctorName: text(\"external_doctor_name\").notNull(),\n  externalSpecialty: text(\"external_specialty\"),\n  externalFacility: text(\"external_facility\"),\n  reason: text(\"reason\").notNull(),\n  clinicalSummary: text(\"clinical_summary\"),\n  notes: text(\"notes\"),\n  patientAgeMonths: integer(\"patient_age_months\").notNull(),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type Referral = typeof referralsTable.$inferSelect;\n", "import { pgTable, text, uuid, timestamp } from \"drizzle-orm/pg-core\";\n\nexport const drugsTable = pgTable(\"drugs\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  name: text(\"name\").notNull(),\n  nameAr: text(\"name_ar\").notNull(),\n  category: text(\"category\").notNull(),\n  commonRoute: text(\"common_route\").notNull(),\n  defaultDosage: text(\"default_dosage\"),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type Drug = typeof drugsTable.$inferSelect;\nexport type InsertDrug = typeof drugsTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  doublePrecision,\n} from \"drizzle-orm/pg-core\";\nimport { patientsTable } from \"./patients\";\nimport { visitsTable } from \"./visits\";\nimport { usersTable } from \"./users\";\n\nexport const paymentsTable = pgTable(\"payments\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  patientId: uuid(\"patient_id\")\n    .notNull()\n    .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n  visitId: uuid(\"visit_id\").references(() => visitsTable.id, {\n    onDelete: \"set null\",\n  }),\n  amount: doublePrecision(\"amount\").notNull(),\n  method: text(\"method\", { enum: [\"cash\", \"visa\", \"instapay\"] }).notNull(),\n  status: text(\"status\", { enum: [\"pending\", \"approved\", \"rejected\"] })\n    .notNull()\n    .default(\"pending\"),\n  reference: text(\"reference\"),\n  notes: text(\"notes\"),\n  // Object-storage path (/objects/x) of an attached payment receipt image.\n  // Required for InstaPay payments (enforced in the API routes).\n  receiptUrl: text(\"receipt_url\"),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n  approvedAt: timestamp(\"approved_at\", { withTimezone: true }),\n  approvedBy: uuid(\"approved_by\").references(() => usersTable.id, {\n    onDelete: \"set null\",\n  }),\n});\n\nexport type Payment = typeof paymentsTable.$inferSelect;\nexport type InsertPayment = typeof paymentsTable.$inferInsert;\n", "import { pgTable, text, uuid, timestamp } from \"drizzle-orm/pg-core\";\nimport { usersTable } from \"./users\";\n\nexport const auditLogsTable = pgTable(\"audit_logs\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  action: text(\"action\").notNull(),\n  entity: text(\"entity\").notNull(),\n  entityId: text(\"entity_id\"),\n  userId: uuid(\"user_id\")\n    .notNull()\n    .references(() => usersTable.id, { onDelete: \"restrict\" }),\n  meta: text(\"meta\"),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type AuditLog = typeof auditLogsTable.$inferSelect;\nexport type InsertAuditLog = typeof auditLogsTable.$inferInsert;\n", "import { pgTable, text } from \"drizzle-orm/pg-core\";\n\n// Stores the demo \"current user\" \u2014 single-row table keyed by 'singleton'.\nexport const sessionStateTable = pgTable(\"session_state\", {\n  key: text(\"key\").primaryKey(),\n  currentUserId: text(\"current_user_id\").notNull(),\n});\n\nexport type SessionState = typeof sessionStateTable.$inferSelect;\n", "import { pgTable, varchar, json, timestamp, index } from \"drizzle-orm/pg-core\";\n\n// Session table managed by connect-pg-simple. Declared here so drizzle-kit\n// does not attempt to drop it on every push.\nexport const sessionTable = pgTable(\n  \"session\",\n  {\n    sid: varchar(\"sid\").primaryKey().notNull(),\n    sess: json(\"sess\").notNull(),\n    expire: timestamp(\"expire\", { precision: 6, withTimezone: false }).notNull(),\n  },\n  (table) => [index(\"IDX_session_expire\").on(table.expire)],\n);\n", "import {\n  pgTable,\n  text,\n  uuid,\n  timestamp,\n  jsonb,\n  index,\n  uniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport { sql } from \"drizzle-orm\";\nimport { patientsTable } from \"./patients\";\nimport { usersTable } from \"./users\";\nimport { visitsTable } from \"./visits\";\n\nexport const consultationsTable = pgTable(\n  \"consultations\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    patientId: uuid(\"patient_id\")\n      .notNull()\n      .references(() => patientsTable.id, { onDelete: \"cascade\" }),\n    doctorId: uuid(\"doctor_id\").references(() => usersTable.id, {\n      onDelete: \"set null\",\n    }),\n    status: text(\"status\", {\n      enum: [\"open\", \"in_progress\", \"closed\", \"converted\"],\n    })\n      .notNull()\n      .default(\"open\"),\n    chiefComplaint: text(\"chief_complaint\"),\n    summary: jsonb(\"summary\"),\n    convertedVisitId: uuid(\"converted_visit_id\").references(\n      () => visitsTable.id,\n      { onDelete: \"set null\" },\n    ),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n    updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow()\n      .$onUpdate(() => new Date()),\n    closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n  },\n  (t) => [\n    index(\"consultations_patient_idx\").on(t.patientId),\n    index(\"consultations_doctor_idx\").on(t.doctorId),\n    index(\"consultations_status_idx\").on(t.status),\n    uniqueIndex(\"consultations_one_open_per_patient\")\n      .on(t.patientId)\n      .where(sql`status IN ('open', 'in_progress')`),\n  ],\n);\n\nexport const consultationMessagesTable = pgTable(\n  \"consultation_messages\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    consultationId: uuid(\"consultation_id\")\n      .notNull()\n      .references(() => consultationsTable.id, { onDelete: \"cascade\" }),\n    senderType: text(\"sender_type\", { enum: [\"patient\", \"doctor\", \"system\"] })\n      .notNull(),\n    senderUserId: uuid(\"sender_user_id\").references(() => usersTable.id, {\n      onDelete: \"set null\",\n    }),\n    body: text(\"body\").notNull(),\n    attachmentUrl: text(\"attachment_url\"),\n    readAt: timestamp(\"read_at\", { withTimezone: true }),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n  },\n  (t) => [\n    index(\"consultation_messages_consultation_idx\").on(t.consultationId),\n    index(\"consultation_messages_created_idx\").on(t.createdAt),\n  ],\n);\n\nexport type Consultation = typeof consultationsTable.$inferSelect;\nexport type InsertConsultation = typeof consultationsTable.$inferInsert;\nexport type ConsultationMessage = typeof consultationMessagesTable.$inferSelect;\nexport type InsertConsultationMessage =\n  typeof consultationMessagesTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  integer,\n  boolean,\n  jsonb,\n  timestamp,\n  index,\n} from \"drizzle-orm/pg-core\";\n\n/**\n * Singleton row (id = \"main\") holding editable contact info + free-form page\n * texts for the public marketing site. Managed from the clinic admin control\n * panel (\"\u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0641\u064A \u0627\u0644\u0645\u0648\u0642\u0639\").\n */\nexport const siteSettingsTable = pgTable(\"site_settings\", {\n  id: text(\"id\").primaryKey().default(\"main\"),\n  clinicName: text(\"clinic_name\").notNull().default(\"\"),\n  doctorName: text(\"doctor_name\").notNull().default(\"\"),\n  doctorTitle: text(\"doctor_title\").notNull().default(\"\"),\n  address: text(\"address\").notNull().default(\"\"),\n  email: text(\"email\").notNull().default(\"\"),\n  whatsapp: text(\"whatsapp\").notNull().default(\"\"),\n  phones: jsonb(\"phones\").$type<string[]>().notNull().default([]),\n  workingHours: jsonb(\"working_hours\")\n    .$type<\n      Array<{\n        day: string;\n        from: string | null;\n        to: string | null;\n        label?: string;\n      }>\n    >()\n    .notNull()\n    .default([]),\n  socials: jsonb(\"socials\")\n    .$type<{ facebook?: string; instagram?: string }>()\n    .notNull()\n    .default({}),\n  // Structured, admin-editable booking schedule that drives both the public\n  // availability/booking logic and the displayed working hours.\n  // openDays uses JS getDay() convention (0 = Sunday \u2026 6 = Saturday).\n  bookingSchedule: jsonb(\"booking_schedule\")\n    .$type<{\n      openDays: number[];\n      startTime: string;\n      endTime: string;\n      closedDates: string[];\n      slotMinutes: number;\n    }>()\n    .notNull()\n    .default({\n      openDays: [0, 1, 2, 3, 4, 5, 6],\n      startTime: \"16:00\",\n      endTime: \"21:00\",\n      closedDates: [],\n      slotMinutes: 15,\n    }),\n  pageContent: jsonb(\"page_content\")\n    .$type<Record<string, unknown>>()\n    .notNull()\n    .default({}),\n  updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow()\n    .$onUpdate(() => new Date()),\n});\n\n/**\n * Doctors / team members shown on the public site (About page card, etc.).\n */\nexport const siteDoctorsTable = pgTable(\n  \"site_doctors\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    name: text(\"name\").notNull(),\n    title: text(\"title\").notNull().default(\"\"),\n    bio: text(\"bio\"),\n    photoUrl: text(\"photo_url\"),\n    credentials: jsonb(\"credentials\").$type<string[]>().notNull().default([]),\n    sortOrder: integer(\"sort_order\").notNull().default(0),\n    visible: boolean(\"visible\").notNull().default(true),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n    updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow()\n      .$onUpdate(() => new Date()),\n  },\n  (t) => [index(\"site_doctors_sort_idx\").on(t.sortOrder)],\n);\n\n/**\n * Services / topics shown on the public site. `category` groups them by where\n * they render: \"home\" (home page grid), \"featured\" (services page hero cards\n * with images), \"more\" (services page secondary list).\n */\nexport const siteServicesTable = pgTable(\n  \"site_services\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    category: text(\"category\", { enum: [\"home\", \"featured\", \"more\"] })\n      .notNull()\n      .default(\"home\"),\n    icon: text(\"icon\").notNull().default(\"Stethoscope\"),\n    title: text(\"title\").notNull(),\n    description: text(\"description\").notNull().default(\"\"),\n    imageUrl: text(\"image_url\"),\n    sortOrder: integer(\"sort_order\").notNull().default(0),\n    visible: boolean(\"visible\").notNull().default(true),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n    updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow()\n      .$onUpdate(() => new Date()),\n  },\n  (t) => [\n    index(\"site_services_category_idx\").on(t.category),\n    index(\"site_services_sort_idx\").on(t.sortOrder),\n  ],\n);\n\nexport type SiteSettings = typeof siteSettingsTable.$inferSelect;\nexport type InsertSiteSettings = typeof siteSettingsTable.$inferInsert;\nexport type SiteDoctor = typeof siteDoctorsTable.$inferSelect;\nexport type InsertSiteDoctor = typeof siteDoctorsTable.$inferInsert;\nexport type SiteService = typeof siteServicesTable.$inferSelect;\nexport type InsertSiteService = typeof siteServicesTable.$inferInsert;\n", "import { pgTable, text, jsonb, timestamp } from \"drizzle-orm/pg-core\";\n\n/**\n * Singleton row (id = \"main\") holding admin-editable branding/UI for the clinic\n * ADMIN app itself (artifacts/clinic) \u2014 app name, login title, theme colors, and\n * per-item sidebar labels. Managed from the System Control Panel\n * (\"\u0644\u0648\u062D\u0629 \u062A\u062D\u0643\u0645 \u0627\u0644\u0646\u0638\u0627\u0645\"). Distinct from `site_settings`, which configures the\n * public marketing site.\n */\nexport const systemSettingsTable = pgTable(\"system_settings\", {\n  id: text(\"id\").primaryKey().default(\"main\"),\n  // Sidebar brand block\n  appName: text(\"app_name\").notNull().default(\"\"),\n  appSubtitle: text(\"app_subtitle\").notNull().default(\"\"),\n  // Login screen\n  loginTitle: text(\"login_title\").notNull().default(\"\"),\n  loginSubtitle: text(\"login_subtitle\").notNull().default(\"\"),\n  // Sidebar menu group heading\n  sidebarGroupLabel: text(\"sidebar_group_label\").notNull().default(\"\"),\n  // Optional theme color overrides (hex strings). Missing/empty => keep the\n  // built-in CSS theme default for that token.\n  colors: jsonb(\"colors\")\n    .$type<{\n      primary?: string | null;\n      accent?: string | null;\n      secondary?: string | null;\n    }>()\n    .notNull()\n    .default({}),\n  // Per-nav-item label overrides keyed by the item's route (e.g. \"/patients\").\n  // Missing key => use the built-in default label.\n  navLabels: jsonb(\"nav_labels\")\n    .$type<Record<string, string>>()\n    .notNull()\n    .default({}),\n  updatedAt: timestamp(\"updated_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow()\n    .$onUpdate(() => new Date()),\n});\n\nexport type SystemSettings = typeof systemSettingsTable.$inferSelect;\nexport type InsertSystemSettings = typeof systemSettingsTable.$inferInsert;\n", "import { sql } from \"drizzle-orm\";\nimport {\n  pgTable,\n  text,\n  uuid,\n  integer,\n  boolean,\n  timestamp,\n  index,\n  uniqueIndex,\n} from \"drizzle-orm/pg-core\";\n\n/**\n * Waiting-room queue entries for the public display screen (\u0634\u0627\u0634\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631).\n * The secretary adds booking numbers; one entry is `serving` (shown big on the\n * display), the rest are `waiting` (the upcoming list). Emergency entries are\n * shown in red and ordered first. `served` entries are kept for the day's\n * history until the queue is reset.\n */\nexport const queueEntriesTable = pgTable(\n  \"queue_entries\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    ticketNumber: text(\"ticket_number\").notNull(),\n    isEmergency: boolean(\"is_emergency\").notNull().default(false),\n    status: text(\"status\", { enum: [\"waiting\", \"serving\", \"served\"] })\n      .notNull()\n      .default(\"waiting\"),\n    /** Optional link to the online booking this entry was created from. */\n    appointmentId: uuid(\"appointment_id\"),\n    /** Patient name, kept for the staff control screen only (never shown publicly). */\n    patientName: text(\"patient_name\"),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n    calledAt: timestamp(\"called_at\", { withTimezone: true }),\n    /**\n     * Set when the doctor confirms the exam is finished (post-print dialog).\n     * The entry stays `serving` (still shown big) but the public display renders\n     * it black instead of green \u2014 signalling the secretary to press \"next\".\n     */\n    finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n  },\n  (t) => [\n    index(\"queue_entries_status_idx\").on(t.status),\n    // Prevent the same online booking from being added twice while it is still\n    // on the screen (waiting/serving). NULLs (manually-typed numbers) are exempt.\n    uniqueIndex(\"queue_entries_active_appointment_uq\")\n      .on(t.appointmentId)\n      .where(sql`${t.status} <> 'served'`),\n  ],\n);\n\n/**\n * Videos uploaded by staff to loop on the left side of the display screen.\n * `objectPath` is the object-storage path (e.g. \"/objects/...\") served publicly\n * via the storage route. `active` hides a video without deleting it.\n */\nexport const displayVideosTable = pgTable(\n  \"display_videos\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    title: text(\"title\"),\n    objectPath: text(\"object_path\").notNull(),\n    contentType: text(\"content_type\"),\n    sortOrder: integer(\"sort_order\").notNull().default(0),\n    active: boolean(\"active\").notNull().default(true),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n  },\n  (t) => [index(\"display_videos_sort_idx\").on(t.sortOrder)],\n);\n\nexport type QueueEntry = typeof queueEntriesTable.$inferSelect;\nexport type InsertQueueEntry = typeof queueEntriesTable.$inferInsert;\nexport type DisplayVideo = typeof displayVideosTable.$inferSelect;\nexport type InsertDisplayVideo = typeof displayVideosTable.$inferInsert;\n", "import {\n  pgTable,\n  text,\n  uuid,\n  boolean,\n  timestamp,\n  index,\n} from \"drizzle-orm/pg-core\";\n\n/**\n * Staff notifications surfaced via the header bell + the waiting-room control\n * page. Currently used for the \"exam finished\" handoff: when a doctor confirms\n * an exam is done, an `exam_finished` notification is created so the secretary\n * knows to advance the waiting-room queue (\"\u0627\u0644\u062A\u0627\u0644\u064A\"). Polled by the clients\n * (no websockets per task scope).\n */\nexport const notificationsTable = pgTable(\n  \"notifications\",\n  {\n    id: uuid(\"id\").primaryKey().defaultRandom(),\n    type: text(\"type\").notNull(),\n    title: text(\"title\").notNull(),\n    body: text(\"body\"),\n    /** Optional queue ticket number this notification relates to. */\n    ticketNumber: text(\"ticket_number\"),\n    read: boolean(\"read\").notNull().default(false),\n    createdAt: timestamp(\"created_at\", { withTimezone: true })\n      .notNull()\n      .defaultNow(),\n  },\n  (t) => [\n    index(\"notifications_read_idx\").on(t.read),\n    index(\"notifications_created_idx\").on(t.createdAt),\n  ],\n);\n\nexport type Notification = typeof notificationsTable.$inferSelect;\nexport type InsertNotification = typeof notificationsTable.$inferInsert;\n", "import { pgTable, text, uuid, timestamp } from \"drizzle-orm/pg-core\";\nimport { usersTable } from \"./users\";\n\nexport const complaintsTable = pgTable(\"complaints\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  name: text(\"name\").notNull(),\n  phone: text(\"phone\").notNull(),\n  subject: text(\"subject\").notNull(),\n  message: text(\"message\").notNull(),\n  status: text(\"status\", { enum: [\"new\", \"replied\"] })\n    .notNull()\n    .default(\"new\"),\n  reply: text(\"reply\"),\n  repliedById: uuid(\"replied_by_id\").references(() => usersTable.id, {\n    onDelete: \"set null\",\n  }),\n  repliedAt: timestamp(\"replied_at\", { withTimezone: true }),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type Complaint = typeof complaintsTable.$inferSelect;\n", "import { pgTable, text, uuid, timestamp } from \"drizzle-orm/pg-core\";\nimport { usersTable } from \"./users\";\n\nexport const qrFilesTable = pgTable(\"qr_files\", {\n  id: uuid(\"id\").primaryKey().defaultRandom(),\n  name: text(\"name\").notNull(),\n  originalName: text(\"original_name\").notNull(),\n  objectPath: text(\"object_path\").notNull(),\n  mimeType: text(\"mime_type\").notNull(),\n  token: text(\"token\").notNull().unique(),\n  uploadedBy: uuid(\"uploaded_by\").references(() => usersTable.id, {\n    onDelete: \"set null\",\n  }),\n  createdAt: timestamp(\"created_at\", { withTimezone: true })\n    .notNull()\n    .defaultNow(),\n});\n\nexport type QrFile = typeof qrFilesTable.$inferSelect;\nexport type InsertQrFile = typeof qrFilesTable.$inferInsert;\n", "import { Router, type IRouter } from \"express\";\nimport healthRouter from \"./health\";\nimport authRouter from \"./auth\";\nimport patientsRouter from \"./patients\";\nimport appointmentsRouter from \"./appointments\";\nimport visitsRouter from \"./visits\";\nimport prescriptionsRouter from \"./prescriptions\";\nimport referralsRouter from \"./referrals\";\nimport drugsRouter from \"./drugs\";\nimport paymentsRouter from \"./payments\";\nimport dashboardRouter from \"./dashboard\";\nimport auditRouter from \"./audit\";\nimport publicRouter from \"./publicRoutes\";\nimport patientAuthRouter from \"./patientAuth\";\nimport consultationsRouter from \"./consultations\";\nimport storageRouter from \"./storage\";\nimport siteAdminRouter from \"./siteAdmin\";\nimport systemSettingsRouter from \"./systemSettings\";\nimport examinationTypesRouter from \"./examinationTypes\";\nimport backupRouter from \"./backup\";\nimport displayRouter from \"./display\";\nimport notificationsRouter from \"./notifications\";\nimport complaintsRouter from \"./complaints\";\nimport qrFilesRouter from \"./qrFiles\";\nimport { requireSection } from \"../lib/session\";\n\nconst router: IRouter = Router();\n\n// Per-section permission guards. Mounted by path prefix BEFORE the routers so\n// they run first. Method-aware: GET/HEAD need \"view\", mutations need \"edit\".\n// Admins always pass. Every section is delegable per-user: the formerly\n// admin-only sections (payments, audit, siteContent, systemControl, backup,\n// examinationTypes, display, users) are enforced with can()/requireSection in\n// their own routers (users CRUD adds anti-escalation guards in auth.ts).\n// NOTE: no blanket `/patients` prefix guard \u2014 several cross-section endpoints\n// hang off the patient (e.g. /patients/:id/referrals, /patients/:id/prescriptions,\n// /patients/:id/payments) and must enforce ONLY their own section. The genuinely\n// patient-owned routes carry their own requireSection(\"patients\") in patients.ts.\nrouter.use(\"/appointments\", requireSection(\"appointments\"));\nrouter.use(\"/visits\", requireSection(\"reports\"));\nrouter.use(\"/prescriptions\", requireSection(\"prescriptions\"));\nrouter.use(\"/prescription-templates\", requireSection(\"prescriptions\"));\nrouter.use(\"/referrals\", requireSection(\"referrals\"));\nrouter.use(\"/dashboard\", requireSection(\"dashboard\"));\nrouter.use(\"/consultations\", requireSection(\"consultations\"));\nrouter.use(\"/complaints\", requireSection(\"complaints\"));\n\nrouter.use(healthRouter);\nrouter.use(authRouter);\nrouter.use(patientAuthRouter);\nrouter.use(consultationsRouter);\nrouter.use(patientsRouter);\nrouter.use(examinationTypesRouter);\nrouter.use(appointmentsRouter);\nrouter.use(visitsRouter);\nrouter.use(prescriptionsRouter);\nrouter.use(referralsRouter);\nrouter.use(drugsRouter);\nrouter.use(paymentsRouter);\nrouter.use(dashboardRouter);\nrouter.use(auditRouter);\nrouter.use(storageRouter);\nrouter.use(siteAdminRouter);\nrouter.use(systemSettingsRouter);\nrouter.use(backupRouter);\nrouter.use(displayRouter);\nrouter.use(notificationsRouter);\nrouter.use(complaintsRouter);\nrouter.use(qrFilesRouter);\nrouter.use(publicRouter);\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { HealthCheckResponse } from \"@workspace/api-zod\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/healthz\", (_req, res) => {\n  const data = HealthCheckResponse.parse({ status: \"ok\" });\n  res.json(data);\n});\n\nexport default router;\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n    util.assertEqual = (_) => { };\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return ZodParsedType.undefined;\n        case \"string\":\n            return ZodParsedType.string;\n        case \"number\":\n            return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n        case \"boolean\":\n            return ZodParsedType.boolean;\n        case \"function\":\n            return ZodParsedType.function;\n        case \"bigint\":\n            return ZodParsedType.bigint;\n        case \"symbol\":\n            return ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return ZodParsedType.array;\n            }\n            if (data === null) {\n                return ZodParsedType.null;\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return ZodParsedType.date;\n            }\n            return ZodParsedType.object;\n        default:\n            return ZodParsedType.unknown;\n    }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n    get errors() {\n        return this.issues;\n    }\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                const firstEl = sub.path[0];\n                fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n                fieldErrors[firstEl].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodIssueCode.invalid_type:\n            if (issue.received === ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n            break;\n        case ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n            break;\n        case ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"bigint\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util.assertNever(issue);\n    }\n    return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n    overrideErrorMap = map;\n}\nexport function getErrorMap() {\n    return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n    const overrideMap = getErrorMap();\n    const issue = makeIssue({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap, // contextual error map is first priority\n            ctx.schemaErrorMap, // then schema-bound map if available\n            overrideMap, // then global override map\n            overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return INVALID;\n            if (value.status === \"aborted\")\n                return INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexport const INVALID = Object.freeze({\n    status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    // biome-ignore lint:\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (Array.isArray(this._key)) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if (isValid(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message ?? ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: message ?? required_error ?? ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: message ?? invalid_type_error ?? ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nexport class ZodType {\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return getParsedType(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: getParsedType(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: getParsedType(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if (isAsync(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: params?.async ?? false,\n                contextualErrorMap: params?.errorMap,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    \"~validate\"(data) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: !!this[\"~standard\"].async,\n            },\n            path: [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        if (!this[\"~standard\"].async) {\n            try {\n                const result = this._parseSync({ data, path: [], parent: ctx });\n                return isValid(result)\n                    ? {\n                        value: result.value,\n                    }\n                    : {\n                        issues: ctx.common.issues,\n                    };\n            }\n            catch (err) {\n                if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n                    this[\"~standard\"].async = true;\n                }\n                ctx.common = {\n                    issues: [],\n                    async: true,\n                };\n            }\n        }\n        return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n            ? {\n                value: result.value,\n            }\n            : {\n                issues: ctx.common.issues,\n            });\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params?.errorMap,\n                async: true,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n        this[\"~standard\"] = {\n            version: 1,\n            vendor: \"zod\",\n            validate: (data) => this[\"~validate\"](data),\n        };\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    let secondsRegexSource = `[0-5]\\\\d`;\n    if (args.precision) {\n        secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n    }\n    const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n    return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nfunction isValidJWT(jwt, alg) {\n    if (!jwtRegex.test(jwt))\n        return false;\n    try {\n        const [header] = jwt.split(\".\");\n        if (!header)\n            return false;\n        // Convert base64url to base64\n        const base64 = header\n            .replace(/-/g, \"+\")\n            .replace(/_/g, \"/\")\n            .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n        const decoded = JSON.parse(atob(base64));\n        if (typeof decoded !== \"object\" || decoded === null)\n            return false;\n        if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n            return false;\n        if (!decoded.alg)\n            return false;\n        if (alg && decoded.alg !== alg)\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nfunction isValidCidr(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nexport class ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"email\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"emoji\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"uuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ulid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"regex\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"duration\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ip\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"jwt\") {\n                if (!isValidJWT(input.data, check.alg)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"jwt\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cidr\") {\n                if (!isValidCidr(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cidr\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64url\") {\n                if (!base64urlRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodIssueCode.invalid_string,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n    }\n    base64url(message) {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return this._addCheck({\n            kind: \"base64url\",\n            ...errorUtil.errToObj(message),\n        });\n    }\n    jwt(options) {\n        return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n    }\n    cidr(options) {\n        return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            offset: options?.offset ?? false,\n            local: options?.local ?? false,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options?.position,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * Equivalent to `.min(1)`\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isCIDR() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get isBase64url() {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodString.create = (params) => {\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null;\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            try {\n                input.data = BigInt(input.data);\n            }\n            catch {\n                return this._getInvalidInput(input);\n            }\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.bigint) {\n            return this._getInvalidInput(input);\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _getInvalidInput(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.bigint,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodBigInt.create = (params) => {\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (Number.isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_date,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: params?.coerce || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n}\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                addIssueToContext(ctx, {\n                    code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nexport class ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util.objectKeys(shape);\n        this._cached = { shape, keys };\n        return this._cached;\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: errorUtil.errToObj(message).message ?? defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(mask)) {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util.objectKeys(this.shape));\n    }\n}\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError(issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nfunction mergeValues(a, b) {\n    const aType = getParsedType(a);\n    const bType = getParsedType(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n        const bKeys = util.objectKeys(b);\n        const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nexport class ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n                return INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.invalid_intersection_types,\n                });\n                return INVALID;\n            }\n            if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexport class ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.map) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.set) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.function) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return makeIssue({\n                data: args,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return makeIssue({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(async function (...args) {\n                const error = new ZodError([]);\n                const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nexport class ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nexport class ZodEnum extends ZodType {\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(this._def.values);\n        }\n        if (!this._cache.has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n    _parse(input) {\n        const nativeEnumValues = util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(util.getValidEnumValues(this._def.values));\n        }\n        if (!this._cache.has(input.data)) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n        return OK(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                addIssueToContext(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return INVALID;\n                    if (result.status === \"dirty\")\n                        return DIRTY(result.value);\n                    if (status.value === \"dirty\")\n                        return DIRTY(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return INVALID;\n                if (result.status === \"dirty\")\n                    return DIRTY(result.value);\n                if (status.value === \"dirty\")\n                    return DIRTY(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!isValid(base))\n                    return INVALID;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n                    if (!isValid(base))\n                        return INVALID;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n                        status: status.value,\n                        value: result,\n                    }));\n                });\n            }\n        }\n        util.assertNever(effect);\n    }\n}\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.undefined) {\n            return OK(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.null) {\n            return OK(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if (isAsync(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nexport class ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return DIRTY(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nexport class ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if (isValid(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n//////////                    //////////\n//////////      z.custom      //////////\n//////////                    //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n    const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n    const p2 = typeof p === \"string\" ? { message: p } : p;\n    return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            const r = check(data);\n            if (r instanceof Promise) {\n                return r.then((r) => {\n                    if (!r) {\n                        const params = cleanParams(_params, data);\n                        const _fatal = params.fatal ?? fatal ?? true;\n                        ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n                    }\n                });\n            }\n            if (!r) {\n                const params = cleanParams(_params, data);\n                const _fatal = params.fatal ?? fatal ?? true;\n                ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n            }\n            return;\n        });\n    return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n    object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n    constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "/**\n * Generated by orval v8.5.3 \uD83C\uDF7A\n * Do not edit manually.\n * Api\n * \u0639\u064A\u0627\u062F\u0629 \u062F\u0643\u062A\u0648\u0631 \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629 - Clinic Management API\n * OpenAPI spec version: 0.1.0\n */\nimport * as zod from \"zod\";\n\n/**\n * @summary Health check\n */\nexport const HealthCheckResponse = zod.object({\n  status: zod.string(),\n});\n\n/**\n * @summary Get current user\n */\nexport const GetCurrentUserResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]),\n  email: zod.string(),\n  permissions: zod.record(zod.string(), zod.enum([\"view\", \"edit\"])).nullish(),\n});\n\n/**\n * @summary Sign in with email and password\n */\n\nexport const LoginBody = zod.object({\n  email: zod.string().email(),\n  password: zod.string().min(1),\n});\n\nexport const LoginResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]),\n  email: zod.string(),\n  permissions: zod.record(zod.string(), zod.enum([\"view\", \"edit\"])).nullish(),\n});\n\n/**\n * @summary Change current user's own password\n */\n\nexport const changeOwnPasswordBodyNewPasswordMin = 6;\n\nexport const ChangeOwnPasswordBody = zod.object({\n  currentPassword: zod.string().min(1),\n  newPassword: zod.string().min(changeOwnPasswordBodyNewPasswordMin),\n});\n\n/**\n * @summary List users\n */\nexport const ListUsersResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]),\n  email: zod.string(),\n  permissions: zod.record(zod.string(), zod.enum([\"view\", \"edit\"])).nullish(),\n});\nexport const ListUsersResponse = zod.array(ListUsersResponseItem);\n\n/**\n * @summary Create a new user\n */\nexport const createUserBodyNameMin = 2;\n\nexport const createUserBodyPasswordMin = 6;\n\nexport const CreateUserBody = zod.object({\n  name: zod.string().min(createUserBodyNameMin),\n  email: zod.string().email(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]),\n  password: zod.string().min(createUserBodyPasswordMin),\n  permissions: zod\n    .record(zod.string(), zod.enum([\"view\", \"edit\"]))\n    .optional()\n    .describe(\"Per-section access levels. Absent key = no access.\"),\n});\n\n/**\n * @summary Update an existing user\n */\nexport const UpdateUserParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const updateUserBodyNameMin = 2;\n\nexport const updateUserBodyPasswordMin = 6;\n\nexport const UpdateUserBody = zod.object({\n  name: zod.string().min(updateUserBodyNameMin).optional(),\n  email: zod.string().email().optional(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]).optional(),\n  password: zod.string().min(updateUserBodyPasswordMin).optional(),\n  permissions: zod\n    .record(zod.string(), zod.enum([\"view\", \"edit\"]))\n    .optional()\n    .describe(\"Per-section access levels. Absent key = no access.\"),\n});\n\nexport const UpdateUserResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  role: zod.enum([\"admin\", \"doctor\", \"nurse\"]),\n  email: zod.string(),\n  permissions: zod.record(zod.string(), zod.enum([\"view\", \"edit\"])).nullish(),\n});\n\n/**\n * @summary Delete a user\n */\nexport const DeleteUserParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientsQueryParams = zod.object({\n  search: zod.coerce.string().optional(),\n});\n\nexport const ListPatientsResponseItem = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  fullName: zod.string(),\n  gender: zod.enum([\"male\", \"female\"]),\n  birthDate: zod.string(),\n  phone: zod.string().nullish(),\n  guardianName: zod.string().nullish(),\n  address: zod.string().nullish(),\n  bloodType: zod.string().nullish(),\n  allergies: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  planOfCare: zod\n    .unknown()\n    .nullish()\n    .describe(\n      \"Free-form JSON document with the patient's plan of care (needs, interventions, outcomes, timeframes, progress notes).\",\n    ),\n  birthCertificateUrl: zod\n    .string()\n    .nullish()\n    .describe(\n      \"Object-storage path for the patient's birth certificate image (e.g. \\/objects\\/abc).\",\n    ),\n  fatherIdUrl: zod\n    .string()\n    .nullish()\n    .describe(\n      \"Object-storage path for the father's ID card image (e.g. \\/objects\\/abc).\",\n    ),\n  qrToken: zod.string(),\n  createdAt: zod.string(),\n});\nexport const ListPatientsResponse = zod.array(ListPatientsResponseItem);\n\nexport const CreatePatientBody = zod.object({\n  fullName: zod.string(),\n  gender: zod.enum([\"male\", \"female\"]),\n  birthDate: zod.string(),\n  phone: zod.string().nullish(),\n  guardianName: zod.string().nullish(),\n  address: zod.string().nullish(),\n  bloodType: zod.string().nullish(),\n  allergies: zod.string().nullish(),\n  notes: zod.string().nullish(),\n});\n\nexport const GetPatientParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetPatientResponse = zod\n  .object({\n    id: zod.string(),\n    code: zod.string(),\n    fullName: zod.string(),\n    gender: zod.enum([\"male\", \"female\"]),\n    birthDate: zod.string(),\n    phone: zod.string().nullish(),\n    guardianName: zod.string().nullish(),\n    address: zod.string().nullish(),\n    bloodType: zod.string().nullish(),\n    allergies: zod.string().nullish(),\n    notes: zod.string().nullish(),\n    planOfCare: zod\n      .unknown()\n      .nullish()\n      .describe(\n        \"Free-form JSON document with the patient's plan of care (needs, interventions, outcomes, timeframes, progress notes).\",\n      ),\n    birthCertificateUrl: zod\n      .string()\n      .nullish()\n      .describe(\n        \"Object-storage path for the patient's birth certificate image (e.g. \\/objects\\/abc).\",\n      ),\n    fatherIdUrl: zod\n      .string()\n      .nullish()\n      .describe(\n        \"Object-storage path for the father's ID card image (e.g. \\/objects\\/abc).\",\n      ),\n    qrToken: zod.string(),\n    createdAt: zod.string(),\n  })\n  .and(\n    zod.object({\n      visitCount: zod.number(),\n      prescriptionCount: zod.number(),\n      lastVisitAt: zod.string().nullish(),\n    }),\n  );\n\nexport const UpdatePatientParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdatePatientBody = zod.object({\n  fullName: zod.string().optional(),\n  gender: zod.enum([\"male\", \"female\"]).optional(),\n  birthDate: zod.string().optional(),\n  phone: zod.string().nullish(),\n  guardianName: zod.string().nullish(),\n  address: zod.string().nullish(),\n  bloodType: zod.string().nullish(),\n  allergies: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  planOfCare: zod.unknown().nullish(),\n  birthCertificateUrl: zod.string().nullish(),\n  fatherIdUrl: zod.string().nullish(),\n});\n\nexport const UpdatePatientResponse = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  fullName: zod.string(),\n  gender: zod.enum([\"male\", \"female\"]),\n  birthDate: zod.string(),\n  phone: zod.string().nullish(),\n  guardianName: zod.string().nullish(),\n  address: zod.string().nullish(),\n  bloodType: zod.string().nullish(),\n  allergies: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  planOfCare: zod\n    .unknown()\n    .nullish()\n    .describe(\n      \"Free-form JSON document with the patient's plan of care (needs, interventions, outcomes, timeframes, progress notes).\",\n    ),\n  birthCertificateUrl: zod\n    .string()\n    .nullish()\n    .describe(\n      \"Object-storage path for the patient's birth certificate image (e.g. \\/objects\\/abc).\",\n    ),\n  fatherIdUrl: zod\n    .string()\n    .nullish()\n    .describe(\n      \"Object-storage path for the father's ID card image (e.g. \\/objects\\/abc).\",\n    ),\n  qrToken: zod.string(),\n  createdAt: zod.string(),\n});\n\nexport const DeletePatientParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientGrowthParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientGrowthResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  recordedAt: zod.string(),\n  weightKg: zod.number(),\n  heightCm: zod.number(),\n  headCircumferenceCm: zod.number().nullish(),\n  temperatureC: zod.number().nullish(),\n  notes: zod.string().nullish(),\n});\nexport const ListPatientGrowthResponse = zod.array(\n  ListPatientGrowthResponseItem,\n);\n\nexport const CreateGrowthRecordParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const CreateGrowthRecordBody = zod.object({\n  weightKg: zod.number(),\n  heightCm: zod.number(),\n  headCircumferenceCm: zod.number().nullish(),\n  temperatureC: zod.number().nullish(),\n  notes: zod.string().nullish(),\n});\n\nexport const ListPatientVisitsParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientVisitsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  appointmentId: zod.string().nullish(),\n  diagnosis: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  nursingAssessment: zod.string().nullish(),\n  doctorReport: zod\n    .unknown()\n    .nullish()\n    .describe(\n      \"Free-form JSON document with the doctor's report fields (vitals, checkboxes, notes, fall scale, etc.).\",\n    ),\n  visitedAt: zod.string(),\n});\nexport const ListPatientVisitsResponse = zod.array(\n  ListPatientVisitsResponseItem,\n);\n\nexport const ListPatientPrescriptionsParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientPrescriptionsResponseItem = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  patientAgeMonths: zod.number(),\n  doctorId: zod.string(),\n  doctorName: zod.string(),\n  diagnosis: zod.string(),\n  notes: zod.string().nullish(),\n  source: zod.string().nullish(),\n  qrToken: zod.string(),\n  createdAt: zod.string(),\n  itemCount: zod.number(),\n});\nexport const ListPatientPrescriptionsResponse = zod.array(\n  ListPatientPrescriptionsResponseItem,\n);\n\nexport const ListPatientReferralsParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientReferralsResponseItem = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  patientAgeMonths: zod.number(),\n  doctorId: zod.string(),\n  doctorName: zod.string(),\n  externalDoctorName: zod.string(),\n  externalSpecialty: zod.string().nullish(),\n  externalFacility: zod.string().nullish(),\n  reason: zod.string(),\n  createdAt: zod.string(),\n});\nexport const ListPatientReferralsResponse = zod.array(\n  ListPatientReferralsResponseItem,\n);\n\nexport const ListPatientPaymentsParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPatientPaymentsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  status: zod.enum([\"pending\", \"approved\", \"rejected\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod.string().nullish(),\n  createdAt: zod.string(),\n  approvedAt: zod.string().nullish(),\n  approvedBy: zod.string().nullish(),\n});\nexport const ListPatientPaymentsResponse = zod.array(\n  ListPatientPaymentsResponseItem,\n);\n\nexport const ListExaminationTypesResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  color: zod.string().nullish(),\n  sortOrder: zod.number(),\n  active: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\nexport const ListExaminationTypesResponse = zod.array(\n  ListExaminationTypesResponseItem,\n);\n\nexport const CreateExaminationTypeBody = zod.object({\n  name: zod.string(),\n  color: zod.string().nullish(),\n  sortOrder: zod.number(),\n  active: zod.boolean(),\n});\n\nexport const UpdateExaminationTypeParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdateExaminationTypeBody = zod.object({\n  name: zod.string(),\n  color: zod.string().nullish(),\n  sortOrder: zod.number(),\n  active: zod.boolean(),\n});\n\nexport const UpdateExaminationTypeResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  color: zod.string().nullish(),\n  sortOrder: zod.number(),\n  active: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\n\nexport const DeleteExaminationTypeParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const DeleteExaminationTypeResponse = zod.object({\n  success: zod.boolean(),\n});\n\nexport const ListAppointmentsQueryParams = zod.object({\n  date: zod.coerce.string().optional(),\n  status: zod.coerce.string().optional(),\n});\n\nexport const ListAppointmentsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  scheduledAt: zod.string(),\n  status: zod.enum([\n    \"scheduled\",\n    \"checked_in\",\n    \"in_progress\",\n    \"completed\",\n    \"cancelled\",\n  ]),\n  examinationTypeId: zod.string().nullish(),\n  examinationTypeName: zod.string().nullish(),\n  examinationTypeColor: zod.string().nullish(),\n  isEmergency: zod.boolean(),\n  queueNumber: zod\n    .number()\n    .nullish()\n    .describe(\n      \"Sequential daily waiting-list number (resets each day). Assigned for appointments scheduled today; null for future bookings until their day.\",\n    ),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  createdAt: zod.string(),\n  scheduleConflict: zod\n    .union([\n      zod.literal(\"closed_day\"),\n      zod.literal(\"outside_hours\"),\n      zod.literal(null),\n    ])\n    .nullish()\n    .describe(\n      'Set when a scheduled appointment falls outside the current booking schedule (closed day or outside working hours). Null when the appointment fits the schedule or is not in \\\"scheduled\\\" status.',\n    ),\n});\nexport const ListAppointmentsResponse = zod.array(ListAppointmentsResponseItem);\n\nexport const CreateAppointmentBody = zod.object({\n  patientId: zod.string(),\n  scheduledAt: zod.string(),\n  examinationTypeId: zod.string().nullish(),\n  isEmergency: zod.boolean().optional(),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  payment: zod\n    .union([\n      zod.object({\n        amount: zod.number(),\n        method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n        reference: zod.string().nullish(),\n        notes: zod.string().nullish(),\n        receiptUrl: zod\n          .string()\n          .nullish()\n          .describe(\n            \"Object-storage path of the receipt image. Required for instapay.\",\n          ),\n      }),\n      zod.null(),\n    ])\n    .optional()\n    .describe(\n      \"Optional payment recorded at booking time (created as pending).\",\n    ),\n});\n\nexport const GetTodayAppointmentsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  scheduledAt: zod.string(),\n  status: zod.enum([\n    \"scheduled\",\n    \"checked_in\",\n    \"in_progress\",\n    \"completed\",\n    \"cancelled\",\n  ]),\n  examinationTypeId: zod.string().nullish(),\n  examinationTypeName: zod.string().nullish(),\n  examinationTypeColor: zod.string().nullish(),\n  isEmergency: zod.boolean(),\n  queueNumber: zod\n    .number()\n    .nullish()\n    .describe(\n      \"Sequential daily waiting-list number (resets each day). Assigned for appointments scheduled today; null for future bookings until their day.\",\n    ),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  createdAt: zod.string(),\n  scheduleConflict: zod\n    .union([\n      zod.literal(\"closed_day\"),\n      zod.literal(\"outside_hours\"),\n      zod.literal(null),\n    ])\n    .nullish()\n    .describe(\n      'Set when a scheduled appointment falls outside the current booking schedule (closed day or outside working hours). Null when the appointment fits the schedule or is not in \\\"scheduled\\\" status.',\n    ),\n});\nexport const GetTodayAppointmentsResponse = zod.array(\n  GetTodayAppointmentsResponseItem,\n);\n\n/**\n * Next suggested booking time (Cairo HH:MM) for a given date \u2014 clinic work-start when the day is empty, otherwise the last booked time plus the configured slot gap. Also returns the active schedule's start time and slot gap.\n */\nexport const GetSuggestedSlotQueryParams = zod.object({\n  date: zod.coerce.string(),\n});\n\nexport const GetSuggestedSlotResponse = zod.object({\n  time: zod.string().describe(\"Suggested booking time, Cairo HH:MM\"),\n  startTime: zod.string().describe(\"Schedule work-start, HH:MM\"),\n  endTime: zod.string().describe(\"Schedule work-end, HH:MM\"),\n  slotMinutes: zod.number().describe(\"Gap between slots, minutes\"),\n  full: zod\n    .boolean()\n    .describe(\n      \"True when the day is full (suggestion reached\\/exceeded work-end)\",\n    ),\n});\n\nexport const GetAppointmentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetAppointmentResponse = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  scheduledAt: zod.string(),\n  status: zod.enum([\n    \"scheduled\",\n    \"checked_in\",\n    \"in_progress\",\n    \"completed\",\n    \"cancelled\",\n  ]),\n  examinationTypeId: zod.string().nullish(),\n  examinationTypeName: zod.string().nullish(),\n  examinationTypeColor: zod.string().nullish(),\n  isEmergency: zod.boolean(),\n  queueNumber: zod\n    .number()\n    .nullish()\n    .describe(\n      \"Sequential daily waiting-list number (resets each day). Assigned for appointments scheduled today; null for future bookings until their day.\",\n    ),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  createdAt: zod.string(),\n  scheduleConflict: zod\n    .union([\n      zod.literal(\"closed_day\"),\n      zod.literal(\"outside_hours\"),\n      zod.literal(null),\n    ])\n    .nullish()\n    .describe(\n      'Set when a scheduled appointment falls outside the current booking schedule (closed day or outside working hours). Null when the appointment fits the schedule or is not in \\\"scheduled\\\" status.',\n    ),\n});\n\nexport const UpdateAppointmentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdateAppointmentBody = zod.object({\n  scheduledAt: zod.string().optional(),\n  status: zod\n    .enum([\"scheduled\", \"checked_in\", \"in_progress\", \"completed\", \"cancelled\"])\n    .optional(),\n  examinationTypeId: zod.string().nullish(),\n  isEmergency: zod.boolean().optional(),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n});\n\nexport const UpdateAppointmentResponse = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  scheduledAt: zod.string(),\n  status: zod.enum([\n    \"scheduled\",\n    \"checked_in\",\n    \"in_progress\",\n    \"completed\",\n    \"cancelled\",\n  ]),\n  examinationTypeId: zod.string().nullish(),\n  examinationTypeName: zod.string().nullish(),\n  examinationTypeColor: zod.string().nullish(),\n  isEmergency: zod.boolean(),\n  queueNumber: zod\n    .number()\n    .nullish()\n    .describe(\n      \"Sequential daily waiting-list number (resets each day). Assigned for appointments scheduled today; null for future bookings until their day.\",\n    ),\n  reason: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  createdAt: zod.string(),\n  scheduleConflict: zod\n    .union([\n      zod.literal(\"closed_day\"),\n      zod.literal(\"outside_hours\"),\n      zod.literal(null),\n    ])\n    .nullish()\n    .describe(\n      'Set when a scheduled appointment falls outside the current booking schedule (closed day or outside working hours). Null when the appointment fits the schedule or is not in \\\"scheduled\\\" status.',\n    ),\n});\n\nexport const DeleteAppointmentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListVisitsQueryParams = zod.object({\n  patientId: zod.coerce.string().optional(),\n  from: zod.coerce.string().optional(),\n  to: zod.coerce.string().optional(),\n  doctorId: zod.coerce.string().optional(),\n});\n\nexport const ListVisitsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  appointmentId: zod.string().nullish(),\n  diagnosis: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  nursingAssessment: zod.string().nullish(),\n  doctorReport: zod\n    .unknown()\n    .nullish()\n    .describe(\n      \"Free-form JSON document with the doctor's report fields (vitals, checkboxes, notes, fall scale, etc.).\",\n    ),\n  visitedAt: zod.string(),\n});\nexport const ListVisitsResponse = zod.array(ListVisitsResponseItem);\n\nexport const CreateVisitBody = zod.object({\n  patientId: zod.string(),\n  appointmentId: zod.string().nullish(),\n  diagnosis: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  nursingAssessment: zod.string().nullish(),\n  doctorReport: zod.unknown().nullish(),\n});\n\nexport const GetVisitParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetVisitResponse = zod\n  .object({\n    id: zod.string(),\n    patientId: zod.string(),\n    patientName: zod.string(),\n    appointmentId: zod.string().nullish(),\n    diagnosis: zod.string().nullish(),\n    notes: zod.string().nullish(),\n    nursingAssessment: zod.string().nullish(),\n    doctorReport: zod\n      .unknown()\n      .nullish()\n      .describe(\n        \"Free-form JSON document with the doctor's report fields (vitals, checkboxes, notes, fall scale, etc.).\",\n      ),\n    visitedAt: zod.string(),\n  })\n  .and(\n    zod.object({\n      prescription: zod\n        .union([\n          zod\n            .object({\n              id: zod.string(),\n              code: zod.string(),\n              patientId: zod.string(),\n              patientName: zod.string(),\n              patientAgeMonths: zod.number(),\n              doctorId: zod.string(),\n              doctorName: zod.string(),\n              diagnosis: zod.string(),\n              notes: zod.string().nullish(),\n              source: zod.string().nullish(),\n              qrToken: zod.string(),\n              createdAt: zod.string(),\n              itemCount: zod.number(),\n            })\n            .and(\n              zod.object({\n                items: zod.array(\n                  zod.object({\n                    id: zod.string(),\n                    drugName: zod.string(),\n                    concentration: zod.string().nullish(),\n                    dosage: zod.string(),\n                    frequency: zod.string(),\n                    duration: zod.string(),\n                    route: zod.enum([\n                      \"oral_syrup\",\n                      \"oral_tablet\",\n                      \"injection\",\n                      \"topical\",\n                      \"drops\",\n                      \"inhaler\",\n                      \"suppository\",\n                    ]),\n                    instructions: zod.string().nullish(),\n                  }),\n                ),\n                patient: zod.object({\n                  id: zod.string(),\n                  code: zod.string(),\n                  fullName: zod.string(),\n                  gender: zod.enum([\"male\", \"female\"]),\n                  birthDate: zod.string(),\n                  phone: zod.string().nullish(),\n                  guardianName: zod.string().nullish(),\n                  address: zod.string().nullish(),\n                  bloodType: zod.string().nullish(),\n                  allergies: zod.string().nullish(),\n                  notes: zod.string().nullish(),\n                  planOfCare: zod\n                    .unknown()\n                    .nullish()\n                    .describe(\n                      \"Free-form JSON document with the patient's plan of care (needs, interventions, outcomes, timeframes, progress notes).\",\n                    ),\n                  birthCertificateUrl: zod\n                    .string()\n                    .nullish()\n                    .describe(\n                      \"Object-storage path for the patient's birth certificate image (e.g. \\/objects\\/abc).\",\n                    ),\n                  fatherIdUrl: zod\n                    .string()\n                    .nullish()\n                    .describe(\n                      \"Object-storage path for the father's ID card image (e.g. \\/objects\\/abc).\",\n                    ),\n                  qrToken: zod.string(),\n                  createdAt: zod.string(),\n                }),\n              }),\n            ),\n          zod.null(),\n        ])\n        .optional(),\n      growth: zod\n        .union([\n          zod.object({\n            id: zod.string(),\n            patientId: zod.string(),\n            recordedAt: zod.string(),\n            weightKg: zod.number(),\n            heightCm: zod.number(),\n            headCircumferenceCm: zod.number().nullish(),\n            temperatureC: zod.number().nullish(),\n            notes: zod.string().nullish(),\n          }),\n          zod.null(),\n        ])\n        .optional(),\n    }),\n  );\n\nexport const UpdateVisitParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdateVisitBody = zod.object({\n  diagnosis: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  nursingAssessment: zod.string().nullish(),\n  doctorReport: zod.unknown().nullish(),\n});\n\nexport const UpdateVisitResponse = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  appointmentId: zod.string().nullish(),\n  diagnosis: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  nursingAssessment: zod.string().nullish(),\n  doctorReport: zod\n    .unknown()\n    .nullish()\n    .describe(\n      \"Free-form JSON document with the doctor's report fields (vitals, checkboxes, notes, fall scale, etc.).\",\n    ),\n  visitedAt: zod.string(),\n});\n\nexport const ListPrescriptionsResponseItem = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  patientAgeMonths: zod.number(),\n  doctorId: zod.string(),\n  doctorName: zod.string(),\n  diagnosis: zod.string(),\n  notes: zod.string().nullish(),\n  source: zod.string().nullish(),\n  qrToken: zod.string(),\n  createdAt: zod.string(),\n  itemCount: zod.number(),\n});\nexport const ListPrescriptionsResponse = zod.array(\n  ListPrescriptionsResponseItem,\n);\n\nexport const CreatePrescriptionBody = zod.object({\n  patientId: zod.string(),\n  visitId: zod.string().nullish(),\n  diagnosis: zod.string(),\n  notes: zod.string().nullish(),\n  items: zod.array(\n    zod.object({\n      drugName: zod.string(),\n      concentration: zod.string().nullish(),\n      dosage: zod.string(),\n      frequency: zod.string(),\n      duration: zod.string(),\n      route: zod.enum([\n        \"oral_syrup\",\n        \"oral_tablet\",\n        \"injection\",\n        \"topical\",\n        \"drops\",\n        \"inhaler\",\n        \"suppository\",\n      ]),\n      instructions: zod.string().nullish(),\n    }),\n  ),\n});\n\nexport const GetPrescriptionParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetPrescriptionResponse = zod\n  .object({\n    id: zod.string(),\n    code: zod.string(),\n    patientId: zod.string(),\n    patientName: zod.string(),\n    patientAgeMonths: zod.number(),\n    doctorId: zod.string(),\n    doctorName: zod.string(),\n    diagnosis: zod.string(),\n    notes: zod.string().nullish(),\n    source: zod.string().nullish(),\n    qrToken: zod.string(),\n    createdAt: zod.string(),\n    itemCount: zod.number(),\n  })\n  .and(\n    zod.object({\n      items: zod.array(\n        zod.object({\n          id: zod.string(),\n          drugName: zod.string(),\n          concentration: zod.string().nullish(),\n          dosage: zod.string(),\n          frequency: zod.string(),\n          duration: zod.string(),\n          route: zod.enum([\n            \"oral_syrup\",\n            \"oral_tablet\",\n            \"injection\",\n            \"topical\",\n            \"drops\",\n            \"inhaler\",\n            \"suppository\",\n          ]),\n          instructions: zod.string().nullish(),\n        }),\n      ),\n      patient: zod.object({\n        id: zod.string(),\n        code: zod.string(),\n        fullName: zod.string(),\n        gender: zod.enum([\"male\", \"female\"]),\n        birthDate: zod.string(),\n        phone: zod.string().nullish(),\n        guardianName: zod.string().nullish(),\n        address: zod.string().nullish(),\n        bloodType: zod.string().nullish(),\n        allergies: zod.string().nullish(),\n        notes: zod.string().nullish(),\n        planOfCare: zod\n          .unknown()\n          .nullish()\n          .describe(\n            \"Free-form JSON document with the patient's plan of care (needs, interventions, outcomes, timeframes, progress notes).\",\n          ),\n        birthCertificateUrl: zod\n          .string()\n          .nullish()\n          .describe(\n            \"Object-storage path for the patient's birth certificate image (e.g. \\/objects\\/abc).\",\n          ),\n        fatherIdUrl: zod\n          .string()\n          .nullish()\n          .describe(\n            \"Object-storage path for the father's ID card image (e.g. \\/objects\\/abc).\",\n          ),\n        qrToken: zod.string(),\n        createdAt: zod.string(),\n      }),\n    }),\n  );\n\nexport const DuplicatePrescriptionParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ListPrescriptionTemplatesResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  diagnosis: zod.string(),\n  items: zod.array(\n    zod.object({\n      id: zod.string(),\n      drugName: zod.string(),\n      concentration: zod.string().nullish(),\n      dosage: zod.string(),\n      frequency: zod.string(),\n      duration: zod.string(),\n      route: zod.enum([\n        \"oral_syrup\",\n        \"oral_tablet\",\n        \"injection\",\n        \"topical\",\n        \"drops\",\n        \"inhaler\",\n        \"suppository\",\n      ]),\n      instructions: zod.string().nullish(),\n    }),\n  ),\n  createdAt: zod.string(),\n});\nexport const ListPrescriptionTemplatesResponse = zod.array(\n  ListPrescriptionTemplatesResponseItem,\n);\n\nexport const CreatePrescriptionTemplateBody = zod.object({\n  name: zod.string(),\n  diagnosis: zod.string(),\n  items: zod.array(\n    zod.object({\n      drugName: zod.string(),\n      concentration: zod.string().nullish(),\n      dosage: zod.string(),\n      frequency: zod.string(),\n      duration: zod.string(),\n      route: zod.enum([\n        \"oral_syrup\",\n        \"oral_tablet\",\n        \"injection\",\n        \"topical\",\n        \"drops\",\n        \"inhaler\",\n        \"suppository\",\n      ]),\n      instructions: zod.string().nullish(),\n    }),\n  ),\n});\n\nexport const ListReferralsResponseItem = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  patientAgeMonths: zod.number(),\n  doctorId: zod.string(),\n  doctorName: zod.string(),\n  externalDoctorName: zod.string(),\n  externalSpecialty: zod.string().nullish(),\n  externalFacility: zod.string().nullish(),\n  reason: zod.string(),\n  createdAt: zod.string(),\n});\nexport const ListReferralsResponse = zod.array(ListReferralsResponseItem);\n\nexport const CreateReferralBody = zod.object({\n  patientId: zod.string(),\n  externalDoctorName: zod.string(),\n  externalSpecialty: zod.string().nullish(),\n  externalFacility: zod.string().nullish(),\n  reason: zod.string(),\n  clinicalSummary: zod.string().nullish(),\n  notes: zod.string().nullish(),\n});\n\nexport const GetReferralParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetReferralResponse = zod\n  .object({\n    id: zod.string(),\n    code: zod.string(),\n    patientId: zod.string(),\n    patientName: zod.string(),\n    patientAgeMonths: zod.number(),\n    doctorId: zod.string(),\n    doctorName: zod.string(),\n    externalDoctorName: zod.string(),\n    externalSpecialty: zod.string().nullish(),\n    externalFacility: zod.string().nullish(),\n    reason: zod.string(),\n    createdAt: zod.string(),\n  })\n  .and(\n    zod.object({\n      clinicalSummary: zod.string().nullish(),\n      notes: zod.string().nullish(),\n      patient: zod.object({\n        id: zod.string(),\n        code: zod.string(),\n        fullName: zod.string(),\n        gender: zod.enum([\"male\", \"female\"]),\n        birthDate: zod.string(),\n        phone: zod.string().nullish(),\n        guardianName: zod.string().nullish(),\n      }),\n    }),\n  );\n\nexport const ListComplaintsResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  phone: zod.string(),\n  subject: zod.string(),\n  message: zod.string(),\n  status: zod.enum([\"new\", \"replied\"]),\n  reply: zod.string().nullish(),\n  repliedById: zod.string().nullish(),\n  repliedByName: zod.string().nullish(),\n  repliedAt: zod.string().nullish(),\n  createdAt: zod.string(),\n});\nexport const ListComplaintsResponse = zod.array(ListComplaintsResponseItem);\n\nexport const GetComplaintParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const GetComplaintResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  phone: zod.string(),\n  subject: zod.string(),\n  message: zod.string(),\n  status: zod.enum([\"new\", \"replied\"]),\n  reply: zod.string().nullish(),\n  repliedById: zod.string().nullish(),\n  repliedByName: zod.string().nullish(),\n  repliedAt: zod.string().nullish(),\n  createdAt: zod.string(),\n});\n\nexport const ReplyComplaintParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ReplyComplaintBody = zod.object({\n  reply: zod.string(),\n});\n\nexport const ReplyComplaintResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  phone: zod.string(),\n  subject: zod.string(),\n  message: zod.string(),\n  status: zod.enum([\"new\", \"replied\"]),\n  reply: zod.string().nullish(),\n  repliedById: zod.string().nullish(),\n  repliedByName: zod.string().nullish(),\n  repliedAt: zod.string().nullish(),\n  createdAt: zod.string(),\n});\n\nexport const SearchDrugsQueryParams = zod.object({\n  q: zod.coerce.string().optional(),\n});\n\nexport const SearchDrugsResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  nameAr: zod.string(),\n  category: zod.string(),\n  commonRoute: zod.string(),\n  defaultDosage: zod.string().nullish(),\n});\nexport const SearchDrugsResponse = zod.array(SearchDrugsResponseItem);\n\nexport const ListPaymentsQueryParams = zod.object({\n  status: zod.coerce.string().optional(),\n});\n\nexport const ListPaymentsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  status: zod.enum([\"pending\", \"approved\", \"rejected\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod.string().nullish(),\n  createdAt: zod.string(),\n  approvedAt: zod.string().nullish(),\n  approvedBy: zod.string().nullish(),\n});\nexport const ListPaymentsResponse = zod.array(ListPaymentsResponseItem);\n\nexport const CreatePaymentBody = zod.object({\n  patientId: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod\n    .string()\n    .nullish()\n    .describe(\n      \"Object-storage path of the receipt image. Required for instapay.\",\n    ),\n});\n\nexport const ListPendingPaymentsResponseItem = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  status: zod.enum([\"pending\", \"approved\", \"rejected\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod.string().nullish(),\n  createdAt: zod.string(),\n  approvedAt: zod.string().nullish(),\n  approvedBy: zod.string().nullish(),\n});\nexport const ListPendingPaymentsResponse = zod.array(\n  ListPendingPaymentsResponseItem,\n);\n\nexport const DeletePaymentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ApprovePaymentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const ApprovePaymentResponse = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  status: zod.enum([\"pending\", \"approved\", \"rejected\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod.string().nullish(),\n  createdAt: zod.string(),\n  approvedAt: zod.string().nullish(),\n  approvedBy: zod.string().nullish(),\n});\n\nexport const RejectPaymentParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const RejectPaymentResponse = zod.object({\n  id: zod.string(),\n  patientId: zod.string(),\n  patientName: zod.string(),\n  visitId: zod.string().nullish(),\n  amount: zod.number(),\n  method: zod.enum([\"cash\", \"visa\", \"instapay\"]),\n  status: zod.enum([\"pending\", \"approved\", \"rejected\"]),\n  reference: zod.string().nullish(),\n  notes: zod.string().nullish(),\n  receiptUrl: zod.string().nullish(),\n  createdAt: zod.string(),\n  approvedAt: zod.string().nullish(),\n  approvedBy: zod.string().nullish(),\n});\n\nexport const GetDashboardSummaryResponse = zod.object({\n  totalPatients: zod.number(),\n  todayAppointments: zod.number(),\n  pendingPayments: zod.number(),\n  prescriptionsToday: zod.number(),\n  revenueToday: zod.number(),\n  revenueMonth: zod.number(),\n  newPatientsThisMonth: zod.number(),\n  completedVisitsToday: zod.number(),\n  upcomingScheduleConflicts: zod.number(),\n  upcomingScheduleConflictsClosedDay: zod.number(),\n  upcomingScheduleConflictsOutsideHours: zod.number(),\n});\n\nexport const GetRecentActivityResponseItem = zod.object({\n  id: zod.string(),\n  type: zod.enum([\n    \"patient_created\",\n    \"prescription_issued\",\n    \"payment_approved\",\n    \"visit_completed\",\n    \"appointment_scheduled\",\n  ]),\n  title: zod.string(),\n  subtitle: zod.string(),\n  actor: zod.string(),\n  at: zod.string(),\n});\nexport const GetRecentActivityResponse = zod.array(\n  GetRecentActivityResponseItem,\n);\n\nexport const GetRevenueTrendResponseItem = zod.object({\n  date: zod.string(),\n  amount: zod.number(),\n});\nexport const GetRevenueTrendResponse = zod.array(GetRevenueTrendResponseItem);\n\nexport const ListAuditLogsQueryParams = zod.object({\n  action: zod.coerce.string().optional(),\n});\n\nexport const ListAuditLogsResponseItem = zod.object({\n  id: zod.string(),\n  action: zod.string(),\n  entity: zod.string(),\n  entityId: zod.string().nullish(),\n  userId: zod.string(),\n  userName: zod.string(),\n  meta: zod.string().nullish(),\n  createdAt: zod.string(),\n});\nexport const ListAuditLogsResponse = zod.array(ListAuditLogsResponseItem);\n\n/**\n * @summary Aggregated public website content (settings, doctors, services, page texts)\n */\nexport const GetPublicSiteContentResponse = zod.object({\n  clinicInfo: zod.object({\n    name: zod.string(),\n    doctorName: zod.string(),\n    doctorTitle: zod.string(),\n    address: zod.string(),\n    phones: zod.array(zod.string()),\n    whatsapp: zod.string(),\n    email: zod.string(),\n    workingHours: zod.array(\n      zod.object({\n        day: zod.string(),\n        from: zod.string().nullable(),\n        to: zod.string().nullable(),\n        label: zod.string().optional(),\n      }),\n    ),\n    socials: zod.object({\n      facebook: zod.string().optional(),\n      instagram: zod.string().optional(),\n    }),\n  }),\n  pageContent: zod.record(zod.string(), zod.unknown()),\n  doctors: zod.array(\n    zod.object({\n      id: zod.string(),\n      name: zod.string(),\n      title: zod.string(),\n      bio: zod.string().nullish(),\n      photoUrl: zod.string().nullish(),\n      credentials: zod.array(zod.string()),\n      sortOrder: zod.number(),\n      visible: zod.boolean(),\n      createdAt: zod.string().optional(),\n      updatedAt: zod.string().optional(),\n    }),\n  ),\n  services: zod.array(\n    zod.object({\n      id: zod.string(),\n      category: zod.enum([\"home\", \"featured\", \"more\"]),\n      icon: zod.string(),\n      title: zod.string(),\n      description: zod.string(),\n      imageUrl: zod.string().nullish(),\n      sortOrder: zod.number(),\n      visible: zod.boolean(),\n      createdAt: zod.string().optional(),\n      updatedAt: zod.string().optional(),\n    }),\n  ),\n});\n\n/**\n * @summary Branding/UI for the clinic admin app (public, used by login + theme)\n */\nexport const GetSystemBrandingResponse = zod.object({\n  id: zod.string(),\n  appName: zod.string(),\n  appSubtitle: zod.string(),\n  loginTitle: zod.string(),\n  loginSubtitle: zod.string(),\n  sidebarGroupLabel: zod.string(),\n  colors: zod.object({\n    primary: zod.string().nullish(),\n    accent: zod.string().nullish(),\n    secondary: zod.string().nullish(),\n  }),\n  navLabels: zod.record(zod.string(), zod.string()),\n  updatedAt: zod.string().optional(),\n});\n\n/**\n * @summary Public clinic contact info (backward compatible)\n */\nexport const GetPublicClinicInfoResponse = zod.object({\n  name: zod.string(),\n  doctorName: zod.string(),\n  doctorTitle: zod.string(),\n  address: zod.string(),\n  phones: zod.array(zod.string()),\n  whatsapp: zod.string(),\n  email: zod.string(),\n  workingHours: zod.array(\n    zod.object({\n      day: zod.string(),\n      from: zod.string().nullable(),\n      to: zod.string().nullable(),\n      label: zod.string().optional(),\n    }),\n  ),\n  socials: zod.object({\n    facebook: zod.string().optional(),\n    instagram: zod.string().optional(),\n  }),\n});\n\nexport const GetPublicPrescriptionParams = zod.object({\n  token: zod.coerce.string(),\n});\n\nexport const GetPublicPrescriptionResponse = zod.object({\n  code: zod.string(),\n  diagnosis: zod.string(),\n  notes: zod.string().nullish(),\n  qrToken: zod.string(),\n  doctorName: zod.string(),\n  createdAt: zod.string(),\n  items: zod.array(\n    zod.object({\n      id: zod.string(),\n      drugName: zod.string(),\n      concentration: zod.string().nullish(),\n      dosage: zod.string(),\n      frequency: zod.string(),\n      duration: zod.string(),\n      route: zod.enum([\n        \"oral_syrup\",\n        \"oral_tablet\",\n        \"injection\",\n        \"topical\",\n        \"drops\",\n        \"inhaler\",\n        \"suppository\",\n      ]),\n      instructions: zod.string().nullish(),\n    }),\n  ),\n  patient: zod.object({\n    fullName: zod.string(),\n    gender: zod.enum([\"male\", \"female\"]),\n    birthDate: zod.string(),\n    guardianName: zod.string().nullish(),\n  }),\n});\n\nexport const GetPublicPatientParams = zod.object({\n  token: zod.coerce.string(),\n});\n\nexport const GetPublicPatientResponse = zod.object({\n  id: zod.string(),\n  code: zod.string(),\n  fullName: zod.string(),\n  gender: zod.enum([\"male\", \"female\"]),\n  birthDate: zod.string(),\n  guardianName: zod.string().nullish(),\n  bloodType: zod.string().nullish(),\n  allergies: zod.string().nullish(),\n  visitCount: zod.number(),\n  lastVisitAt: zod.string().nullish(),\n});\n\n/**\n * @summary Request a presigned URL for file upload\n */\n\nexport const RequestUploadUrlBody = zod.object({\n  name: zod.string().min(1),\n  size: zod.number().min(1),\n  contentType: zod.string().min(1),\n});\n\nexport const RequestUploadUrlResponse = zod.object({\n  uploadURL: zod.string().url(),\n  objectPath: zod.string(),\n  metadata: zod\n    .object({\n      name: zod.string().min(1),\n      size: zod.number().min(1),\n      contentType: zod.string().min(1),\n    })\n    .optional(),\n});\n\nexport const GetSiteSettingsResponse = zod.object({\n  id: zod.string(),\n  clinicName: zod.string(),\n  doctorName: zod.string(),\n  doctorTitle: zod.string(),\n  address: zod.string(),\n  email: zod.string(),\n  whatsapp: zod.string(),\n  phones: zod.array(zod.string()),\n  workingHours: zod.array(\n    zod.object({\n      day: zod.string(),\n      from: zod.string().nullable(),\n      to: zod.string().nullable(),\n      label: zod.string().optional(),\n    }),\n  ),\n  bookingSchedule: zod.object({\n    openDays: zod\n      .array(zod.number())\n      .describe(\"Open weekdays (0 = Sunday \u2026 6 = Saturday).\"),\n    startTime: zod.string().describe(\"Daily slot start, HH:MM\"),\n    endTime: zod.string().describe(\"Daily slot end, HH:MM\"),\n    closedDates: zod\n      .array(zod.string())\n      .describe(\"Specific closed dates (YYYY-MM-DD).\"),\n    slotMinutes: zod\n      .number()\n      .optional()\n      .describe(\"Gap between consecutive bookable slots, in minutes (5-120).\"),\n  }),\n  socials: zod.object({\n    facebook: zod.string().optional(),\n    instagram: zod.string().optional(),\n  }),\n  pageContent: zod.record(zod.string(), zod.unknown()),\n  updatedAt: zod.string().optional(),\n});\n\nexport const UpdateSiteSettingsBody = zod.object({\n  clinicName: zod.string(),\n  doctorName: zod.string(),\n  doctorTitle: zod.string(),\n  address: zod.string(),\n  email: zod.string(),\n  whatsapp: zod.string(),\n  phones: zod.array(zod.string()),\n  workingHours: zod.array(\n    zod.object({\n      day: zod.string(),\n      from: zod.string().nullable(),\n      to: zod.string().nullable(),\n      label: zod.string().optional(),\n    }),\n  ),\n  bookingSchedule: zod\n    .object({\n      openDays: zod\n        .array(zod.number())\n        .describe(\"Open weekdays (0 = Sunday \u2026 6 = Saturday).\"),\n      startTime: zod.string().describe(\"Daily slot start, HH:MM\"),\n      endTime: zod.string().describe(\"Daily slot end, HH:MM\"),\n      closedDates: zod\n        .array(zod.string())\n        .describe(\"Specific closed dates (YYYY-MM-DD).\"),\n      slotMinutes: zod\n        .number()\n        .optional()\n        .describe(\n          \"Gap between consecutive bookable slots, in minutes (5-120).\",\n        ),\n    })\n    .optional(),\n  socials: zod.object({\n    facebook: zod.string().optional(),\n    instagram: zod.string().optional(),\n  }),\n  pageContent: zod.record(zod.string(), zod.unknown()),\n});\n\nexport const UpdateSiteSettingsResponse = zod.object({\n  id: zod.string(),\n  clinicName: zod.string(),\n  doctorName: zod.string(),\n  doctorTitle: zod.string(),\n  address: zod.string(),\n  email: zod.string(),\n  whatsapp: zod.string(),\n  phones: zod.array(zod.string()),\n  workingHours: zod.array(\n    zod.object({\n      day: zod.string(),\n      from: zod.string().nullable(),\n      to: zod.string().nullable(),\n      label: zod.string().optional(),\n    }),\n  ),\n  bookingSchedule: zod.object({\n    openDays: zod\n      .array(zod.number())\n      .describe(\"Open weekdays (0 = Sunday \u2026 6 = Saturday).\"),\n    startTime: zod.string().describe(\"Daily slot start, HH:MM\"),\n    endTime: zod.string().describe(\"Daily slot end, HH:MM\"),\n    closedDates: zod\n      .array(zod.string())\n      .describe(\"Specific closed dates (YYYY-MM-DD).\"),\n    slotMinutes: zod\n      .number()\n      .optional()\n      .describe(\"Gap between consecutive bookable slots, in minutes (5-120).\"),\n  }),\n  socials: zod.object({\n    facebook: zod.string().optional(),\n    instagram: zod.string().optional(),\n  }),\n  pageContent: zod.record(zod.string(), zod.unknown()),\n  updatedAt: zod.string().optional(),\n});\n\nexport const GetSystemSettingsResponse = zod.object({\n  id: zod.string(),\n  appName: zod.string(),\n  appSubtitle: zod.string(),\n  loginTitle: zod.string(),\n  loginSubtitle: zod.string(),\n  sidebarGroupLabel: zod.string(),\n  colors: zod.object({\n    primary: zod.string().nullish(),\n    accent: zod.string().nullish(),\n    secondary: zod.string().nullish(),\n  }),\n  navLabels: zod.record(zod.string(), zod.string()),\n  updatedAt: zod.string().optional(),\n});\n\nexport const UpdateSystemSettingsBody = zod.object({\n  appName: zod.string(),\n  appSubtitle: zod.string(),\n  loginTitle: zod.string(),\n  loginSubtitle: zod.string(),\n  sidebarGroupLabel: zod.string(),\n  colors: zod.object({\n    primary: zod.string().nullish(),\n    accent: zod.string().nullish(),\n    secondary: zod.string().nullish(),\n  }),\n  navLabels: zod.record(zod.string(), zod.string()),\n});\n\nexport const UpdateSystemSettingsResponse = zod.object({\n  id: zod.string(),\n  appName: zod.string(),\n  appSubtitle: zod.string(),\n  loginTitle: zod.string(),\n  loginSubtitle: zod.string(),\n  sidebarGroupLabel: zod.string(),\n  colors: zod.object({\n    primary: zod.string().nullish(),\n    accent: zod.string().nullish(),\n    secondary: zod.string().nullish(),\n  }),\n  navLabels: zod.record(zod.string(), zod.string()),\n  updatedAt: zod.string().optional(),\n});\n\n/**\n * @summary Preview upcoming appointments that fall outside a proposed booking schedule\n */\nexport const PreviewAffectedAppointmentsBody = zod.object({\n  bookingSchedule: zod.object({\n    openDays: zod\n      .array(zod.number())\n      .describe(\"Open weekdays (0 = Sunday \u2026 6 = Saturday).\"),\n    startTime: zod.string().describe(\"Daily slot start, HH:MM\"),\n    endTime: zod.string().describe(\"Daily slot end, HH:MM\"),\n    closedDates: zod\n      .array(zod.string())\n      .describe(\"Specific closed dates (YYYY-MM-DD).\"),\n    slotMinutes: zod\n      .number()\n      .optional()\n      .describe(\"Gap between consecutive bookable slots, in minutes (5-120).\"),\n  }),\n});\n\nexport const PreviewAffectedAppointmentsResponse = zod.object({\n  count: zod.number(),\n  appointments: zod.array(\n    zod.object({\n      id: zod.string(),\n      patientId: zod.string(),\n      patientName: zod.string(),\n      scheduledAt: zod.string(),\n      reason: zod.string().nullish(),\n      conflict: zod\n        .enum([\"closed_day\", \"outside_hours\"])\n        .describe(\"Why this appointment no longer fits the proposed schedule.\"),\n    }),\n  ),\n});\n\nexport const ListSiteDoctorsResponseItem = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  title: zod.string(),\n  bio: zod.string().nullish(),\n  photoUrl: zod.string().nullish(),\n  credentials: zod.array(zod.string()),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\nexport const ListSiteDoctorsResponse = zod.array(ListSiteDoctorsResponseItem);\n\nexport const CreateSiteDoctorBody = zod.object({\n  name: zod.string(),\n  title: zod.string(),\n  bio: zod.string().nullish(),\n  photoUrl: zod.string().nullish(),\n  credentials: zod.array(zod.string()),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n});\n\nexport const UpdateSiteDoctorParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdateSiteDoctorBody = zod.object({\n  name: zod.string(),\n  title: zod.string(),\n  bio: zod.string().nullish(),\n  photoUrl: zod.string().nullish(),\n  credentials: zod.array(zod.string()),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n});\n\nexport const UpdateSiteDoctorResponse = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  title: zod.string(),\n  bio: zod.string().nullish(),\n  photoUrl: zod.string().nullish(),\n  credentials: zod.array(zod.string()),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\n\nexport const DeleteSiteDoctorParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const DeleteSiteDoctorResponse = zod.object({\n  success: zod.boolean(),\n});\n\nexport const ListSiteServicesResponseItem = zod.object({\n  id: zod.string(),\n  category: zod.enum([\"home\", \"featured\", \"more\"]),\n  icon: zod.string(),\n  title: zod.string(),\n  description: zod.string(),\n  imageUrl: zod.string().nullish(),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\nexport const ListSiteServicesResponse = zod.array(ListSiteServicesResponseItem);\n\nexport const CreateSiteServiceBody = zod.object({\n  category: zod.enum([\"home\", \"featured\", \"more\"]),\n  icon: zod.string(),\n  title: zod.string(),\n  description: zod.string(),\n  imageUrl: zod.string().nullish(),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n});\n\nexport const UpdateSiteServiceParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const UpdateSiteServiceBody = zod.object({\n  category: zod.enum([\"home\", \"featured\", \"more\"]),\n  icon: zod.string(),\n  title: zod.string(),\n  description: zod.string(),\n  imageUrl: zod.string().nullish(),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n});\n\nexport const UpdateSiteServiceResponse = zod.object({\n  id: zod.string(),\n  category: zod.enum([\"home\", \"featured\", \"more\"]),\n  icon: zod.string(),\n  title: zod.string(),\n  description: zod.string(),\n  imageUrl: zod.string().nullish(),\n  sortOrder: zod.number(),\n  visible: zod.boolean(),\n  createdAt: zod.string().optional(),\n  updatedAt: zod.string().optional(),\n});\n\nexport const DeleteSiteServiceParams = zod.object({\n  id: zod.coerce.string(),\n});\n\nexport const DeleteSiteServiceResponse = zod.object({\n  success: zod.boolean(),\n});\n", "import { Router, type IRouter } from \"express\";\nimport { eq } from \"drizzle-orm\";\nimport bcrypt from \"bcryptjs\";\nimport { db, usersTable } from \"@workspace/db\";\nimport {\n  LoginBody,\n  ChangeOwnPasswordBody as ChangePasswordBody,\n  CreateUserBody,\n  UpdateUserBody,\n} from \"@workspace/api-zod\";\nimport {\n  loadUser,\n  requireAuth,\n  type RequestWithUser,\n} from \"../lib/session\";\nimport { can, sanitizePermissionMap, type PermissionMap } from \"@workspace/permissions\";\nimport { logAudit } from \"../lib/audit\";\nimport { rateLimit, clientIp } from \"../lib/rateLimiter\";\nimport { logger } from \"../lib/logger\";\n\nconst router: IRouter = Router();\n\nconst BCRYPT_ROUNDS = 10;\n\nfunction publicUser(u: {\n  id: string;\n  name: string;\n  email: string;\n  role: \"admin\" | \"doctor\" | \"nurse\" | \"quality_control\";\n  permissions?: PermissionMap | null;\n  createdAt: Date;\n}) {\n  return {\n    id: u.id,\n    name: u.name,\n    email: u.email,\n    role: u.role,\n    permissions: u.permissions ?? null,\n    createdAt: u.createdAt.toISOString(),\n  };\n}\n\n// Per-IP: 10 attempts per 15 minutes, then a 15-minute lockout.\nconst LOGIN_IP_WINDOW_MS = 15 * 60 * 1000;\nconst LOGIN_IP_MAX = 10;\nconst LOGIN_IP_BLOCK_MS = 15 * 60 * 1000;\n\n// Per-account: 5 attempts per 15 minutes, then a 15-minute lockout.\nconst LOGIN_ACCT_WINDOW_MS = 15 * 60 * 1000;\nconst LOGIN_ACCT_MAX = 5;\nconst LOGIN_ACCT_BLOCK_MS = 15 * 60 * 1000;\n\nrouter.post(\"/auth/login\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n\n  // Check IP-level rate limit before doing any DB work.\n  const ipRl = rateLimit(`login:ip:${ip}`, LOGIN_IP_WINDOW_MS, LOGIN_IP_MAX, LOGIN_IP_BLOCK_MS);\n  if (!ipRl.ok) {\n    res.setHeader(\"Retry-After\", String(ipRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const parsed = LoginBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n  const email = parsed.data.email.trim().toLowerCase();\n\n  // Check per-account rate limit (keyed by email).\n  const acctRl = rateLimit(\n    `login:acct:${email}`,\n    LOGIN_ACCT_WINDOW_MS,\n    LOGIN_ACCT_MAX,\n    LOGIN_ACCT_BLOCK_MS,\n  );\n  if (!acctRl.ok) {\n    res.setHeader(\"Retry-After\", String(acctRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const [user] = await db\n    .select()\n    .from(usersTable)\n    .where(eq(usersTable.email, email));\n\n  if (!user || !user.passwordHash) {\n    logger.warn({\n      securityEvent: true,\n      action: \"auth.login_failed\",\n      reason: \"user_not_found\",\n      email,\n      ip,\n    });\n    res.status(401).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n\n  const ok = await bcrypt.compare(parsed.data.password, user.passwordHash);\n  if (!ok) {\n    await logAudit({\n      userId: user.id,\n      action: \"auth.login_failed\",\n      entity: \"user\",\n      entityId: user.id,\n      meta: { securityEvent: true, email, reason: \"wrong_password\", ip },\n    });\n    res.status(401).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n\n  await new Promise<void>((resolve, reject) => {\n    req.session.regenerate((err) => (err ? reject(err) : resolve()));\n  });\n  req.session.userId = user.id;\n  await new Promise<void>((resolve, reject) => {\n    req.session.save((err) => (err ? reject(err) : resolve()));\n  });\n\n  await logAudit({\n    userId: user.id,\n    action: \"auth.login\",\n    entity: \"user\",\n    entityId: user.id,\n  });\n\n  res.json(publicUser(user));\n});\n\nrouter.post(\"/auth/logout\", (req, res): void => {\n  const userId = req.session?.userId;\n  req.session.destroy(async (err) => {\n    if (err) {\n      res.status(500).json({ error: \"\u062A\u0639\u0630\u0631 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C\" });\n      return;\n    }\n    res.clearCookie(\"clinic.sid\");\n    if (userId) {\n      try {\n        await logAudit({\n          userId,\n          action: \"auth.logout\",\n          entity: \"user\",\n          entityId: userId,\n        });\n      } catch {\n        // ignore audit failure during logout\n      }\n    }\n    res.status(204).end();\n  });\n});\n\nrouter.get(\"/auth/me\", requireAuth, async (req: RequestWithUser, res): Promise<void> => {\n  const user = req.currentUser!;\n  res.json(publicUser(user));\n});\n\nrouter.post(\n  \"/auth/change-password\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const parsed = ChangePasswordBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062C\u062F\u064A\u062F\u0629 \u064A\u062C\u0628 \u0623\u0644\u0627 \u062A\u0642\u0644 \u0639\u0646 6 \u0623\u062D\u0631\u0641\" });\n      return;\n    }\n    const me = req.currentUser!;\n    const [row] = await db\n      .select()\n      .from(usersTable)\n      .where(eq(usersTable.id, me.id));\n    if (!row?.passwordHash) {\n      res.status(400).json({ error: \"\u062A\u0639\u0630\u0631 \u062A\u062D\u062F\u064A\u062B \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\" });\n      return;\n    }\n    const ok = await bcrypt.compare(parsed.data.currentPassword, row.passwordHash);\n    if (!ok) {\n      res.status(400).json({ error: \"\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062D\u0627\u0644\u064A\u0629 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const hash = await bcrypt.hash(parsed.data.newPassword, BCRYPT_ROUNDS);\n    await db\n      .update(usersTable)\n      .set({ passwordHash: hash })\n      .where(eq(usersTable.id, me.id));\n    await logAudit({\n      userId: me.id,\n      action: \"auth.change_password\",\n      entity: \"user\",\n      entityId: me.id,\n    });\n    res.status(204).end();\n  },\n);\n\nrouter.get(\n  \"/auth/users\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const me = req.currentUser!;\n    if (!can(me, \"users\", \"view\")) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0645\u062F\u064A\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\" });\n      return;\n    }\n    const users = await db\n      .select({\n        id: usersTable.id,\n        name: usersTable.name,\n        email: usersTable.email,\n        role: usersTable.role,\n        permissions: usersTable.permissions,\n        createdAt: usersTable.createdAt,\n      })\n      .from(usersTable)\n      .orderBy(usersTable.role);\n    res.json(users.map(publicUser));\n  },\n);\n\nrouter.post(\n  \"/auth/users\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const actor = req.currentUser!;\n    if (!can(actor, \"users\", \"edit\")) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0645\u062F\u064A\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\" });\n      return;\n    }\n    const parsed = CreateUserBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: parsed.error.message });\n      return;\n    }\n    const { name, email, role, password, permissions } = parsed.data;\n    // Anti-escalation: a delegated (non-admin) user-manager is bounded to the\n    // lowest tier \u2014 they may only create nurse/reception accounts that fall\n    // back to the role default. Creating doctor or admin accounts, or assigning\n    // a custom permission map, is admin-only (otherwise a non-admin could mint a\n    // higher-privilege account and log into it).\n    if (actor.role !== \"admin\" && (role !== \"nurse\" || permissions)) {\n      res.status(403).json({\n        error: \"\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0623\u0637\u0628\u0627\u0621 \u0623\u0648 \u0627\u0644\u0645\u062F\u064A\u0631\u064A\u0646 \u0623\u0648 \u062A\u0639\u064A\u064A\u0646 \u0635\u0644\u0627\u062D\u064A\u0627\u062A \u0645\u062E\u0635\u0635\u0629 \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\",\n      });\n      return;\n    }\n    const normalizedEmail = email.trim().toLowerCase();\n\n    const [existing] = await db\n      .select({ id: usersTable.id })\n      .from(usersTable)\n      .where(eq(usersTable.email, normalizedEmail));\n    if (existing) {\n      res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0645\u0633\u062A\u062E\u062F\u0645 \u0628\u0627\u0644\u0641\u0639\u0644\" });\n      return;\n    }\n\n    const passwordHash = await bcrypt.hash(password, BCRYPT_ROUNDS);\n    const [created] = await db\n      .insert(usersTable)\n      .values({\n        name: name.trim(),\n        email: normalizedEmail,\n        role,\n        passwordHash,\n        permissions: permissions ? sanitizePermissionMap(permissions) : null,\n      })\n      .returning();\n\n    await logAudit({\n      userId: actor.id,\n      action: \"user.create\",\n      entity: \"user\",\n      entityId: created.id,\n      meta: { name: created.name, role: created.role },\n    });\n\n    res.status(201).json(publicUser(created));\n  },\n);\n\nrouter.patch(\n  \"/auth/users/:id\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const actor = req.currentUser!;\n    if (!can(actor, \"users\", \"edit\")) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0645\u062F\u064A\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\" });\n      return;\n    }\n    const id = String(req.params.id);\n    const parsed = UpdateUserBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: parsed.error.message });\n      return;\n    }\n    // Anti-escalation for delegated (non-admin) user-managers: they may not\n    // change roles or assign permissions, and they may only modify nurse/\n    // reception accounts. Editing a doctor or admin account (including a\n    // password reset, which would enable account takeover of a\n    // higher-privilege user) is admin-only.\n    if (actor.role !== \"admin\") {\n      if (\n        parsed.data.role !== undefined ||\n        parsed.data.permissions !== undefined\n      ) {\n        res.status(403).json({\n          error: \"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629 \u0623\u0648 \u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\",\n        });\n        return;\n      }\n      const [targetUser] = await db\n        .select({ role: usersTable.role })\n        .from(usersTable)\n        .where(eq(usersTable.id, id));\n      if (targetUser && targetUser.role !== \"nurse\") {\n        res\n          .status(403)\n          .json({ error: \"\u062A\u0639\u062F\u064A\u0644 \u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0623\u0637\u0628\u0627\u0621 \u0623\u0648 \u0627\u0644\u0645\u062F\u064A\u0631\u064A\u0646 \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n        return;\n      }\n    }\n    const updates: Partial<{\n      name: string;\n      email: string;\n      role: \"admin\" | \"doctor\" | \"nurse\";\n      passwordHash: string;\n      permissions: PermissionMap | null;\n    }> = {};\n    if (parsed.data.name !== undefined) updates.name = parsed.data.name.trim();\n    if (parsed.data.email !== undefined)\n      updates.email = parsed.data.email.trim().toLowerCase();\n    if (parsed.data.role !== undefined) updates.role = parsed.data.role;\n    if (parsed.data.password !== undefined) {\n      updates.passwordHash = await bcrypt.hash(parsed.data.password, BCRYPT_ROUNDS);\n    }\n    if (parsed.data.permissions !== undefined) {\n      updates.permissions = sanitizePermissionMap(parsed.data.permissions);\n    }\n\n    if (Object.keys(updates).length === 0) {\n      res.status(400).json({ error: \"\u0644\u0627 \u062A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A \u0644\u0644\u062A\u062D\u062F\u064A\u062B\" });\n      return;\n    }\n\n    if (updates.email) {\n      const [conflict] = await db\n        .select({ id: usersTable.id })\n        .from(usersTable)\n        .where(eq(usersTable.email, updates.email));\n      if (conflict && conflict.id !== id) {\n        res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0645\u0633\u062A\u062E\u062F\u0645 \u0628\u0627\u0644\u0641\u0639\u0644\" });\n        return;\n      }\n    }\n\n    if (updates.role && updates.role !== \"admin\") {\n      const [target] = await db\n        .select()\n        .from(usersTable)\n        .where(eq(usersTable.id, id));\n      if (target?.role === \"admin\") {\n        const admins = await db\n          .select({ id: usersTable.id })\n          .from(usersTable)\n          .where(eq(usersTable.role, \"admin\"));\n        if (admins.length <= 1) {\n          res\n            .status(400)\n            .json({ error: \"\u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u063A\u064A\u064A\u0631 \u0635\u0644\u0627\u062D\u064A\u0629 \u0622\u062E\u0631 \u0645\u062F\u064A\u0631 \u0641\u064A \u0627\u0644\u0646\u0638\u0627\u0645\" });\n          return;\n        }\n      }\n    }\n\n    const [updated] = await db\n      .update(usersTable)\n      .set(updates)\n      .where(eq(usersTable.id, id))\n      .returning();\n    if (!updated) {\n      res.status(404).json({ error: \"\u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n\n    const auditMeta: Record<string, unknown> = {};\n    if (updates.name) auditMeta.name = updates.name;\n    if (updates.email) auditMeta.email = updates.email;\n    if (updates.role) auditMeta.role = updates.role;\n    if (updates.passwordHash) auditMeta.passwordChanged = true;\n\n    await logAudit({\n      userId: actor.id,\n      action: \"user.update\",\n      entity: \"user\",\n      entityId: id,\n      meta: auditMeta,\n    });\n\n    res.json(publicUser(updated));\n  },\n);\n\nrouter.delete(\n  \"/auth/users/:id\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const actor = req.currentUser!;\n    if (!can(actor, \"users\", \"edit\")) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0645\u062F\u064A\u0631 \u0645\u0637\u0644\u0648\u0628\u0629\" });\n      return;\n    }\n    const id = String(req.params.id);\n\n    if (actor.id === id) {\n      res.status(400).json({ error: \"\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u062D\u0630\u0641 \u062D\u0633\u0627\u0628\u0643 \u0627\u0644\u062D\u0627\u0644\u064A\" });\n      return;\n    }\n\n    const [target] = await db\n      .select()\n      .from(usersTable)\n      .where(eq(usersTable.id, id));\n    if (!target) {\n      res.status(404).json({ error: \"\u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    // Anti-escalation: a delegated (non-admin) user-manager may only delete\n    // nurse/reception accounts \u2014 never a doctor or admin account.\n    if (actor.role !== \"admin\" && target.role !== \"nurse\") {\n      res\n        .status(403)\n        .json({ error: \"\u062D\u0630\u0641 \u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0623\u0637\u0628\u0627\u0621 \u0623\u0648 \u0627\u0644\u0645\u062F\u064A\u0631\u064A\u0646 \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n      return;\n    }\n    if (target.role === \"admin\") {\n      const admins = await db\n        .select({ id: usersTable.id })\n        .from(usersTable)\n        .where(eq(usersTable.role, \"admin\"));\n      if (admins.length <= 1) {\n        res.status(400).json({ error: \"\u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0630\u0641 \u0622\u062E\u0631 \u0645\u062F\u064A\u0631 \u0641\u064A \u0627\u0644\u0646\u0638\u0627\u0645\" });\n        return;\n      }\n    }\n\n    await db.delete(usersTable).where(eq(usersTable.id, id));\n    await logAudit({\n      userId: actor.id,\n      action: \"user.delete\",\n      entity: \"user\",\n      entityId: id,\n      meta: { name: target.name, role: target.role },\n    });\n\n    res.status(204).end();\n  },\n);\n\n// Re-export loadUser for use elsewhere if needed\nexport { loadUser };\nexport default router;\n", "/*\n Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>\n Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>\n Copyright (c) 2025 Daniel Wirtz <dcode@dcode.io>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n 3. The name of the author may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// The Node.js crypto module is used as a fallback for the Web Crypto API. When\n// building for the browser, inclusion of the crypto module should be disabled,\n// which the package hints at in its package.json for bundlers that support it.\nimport nodeCrypto from \"crypto\";\n\n/**\n * The random implementation to use as a fallback.\n * @type {?function(number):!Array.<number>}\n * @inner\n */\nvar randomFallback = null;\n\n/**\n * Generates cryptographically secure random bytes.\n * @function\n * @param {number} len Bytes length\n * @returns {!Array.<number>} Random bytes\n * @throws {Error} If no random implementation is available\n * @inner\n */\nfunction randomBytes(len) {\n  // Web Crypto API. Globally available in the browser and in Node.js >=23.\n  try {\n    return crypto.getRandomValues(new Uint8Array(len));\n  } catch {}\n  // Node.js crypto module for non-browser environments.\n  try {\n    return nodeCrypto.randomBytes(len);\n  } catch {}\n  // Custom fallback specified with `setRandomFallback`.\n  if (!randomFallback) {\n    throw Error(\n      \"Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative\",\n    );\n  }\n  return randomFallback(len);\n}\n\n/**\n * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto\n *  API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it\n *  is seeded properly!\n * @param {?function(number):!Array.<number>} random Function taking the number of bytes to generate as its\n *  sole argument, returning the corresponding array of cryptographically secure random byte values.\n * @see http://nodejs.org/api/crypto.html\n * @see http://www.w3.org/TR/WebCryptoAPI/\n */\nexport function setRandomFallback(random) {\n  randomFallback = random;\n}\n\n/**\n * Synchronously generates a salt.\n * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted\n * @param {number=} seed_length Not supported.\n * @returns {string} Resulting salt\n * @throws {Error} If a random fallback is required but not set\n */\nexport function genSaltSync(rounds, seed_length) {\n  rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;\n  if (typeof rounds !== \"number\")\n    throw Error(\n      \"Illegal arguments: \" + typeof rounds + \", \" + typeof seed_length,\n    );\n  if (rounds < 4) rounds = 4;\n  else if (rounds > 31) rounds = 31;\n  var salt = [];\n  salt.push(\"$2b$\");\n  if (rounds < 10) salt.push(\"0\");\n  salt.push(rounds.toString());\n  salt.push(\"$\");\n  salt.push(base64_encode(randomBytes(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\n  return salt.join(\"\");\n}\n\n/**\n * Asynchronously generates a salt.\n * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted\n * @param {(number|function(Error, string=))=} seed_length Not supported.\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt\n * @returns {!Promise} If `callback` has been omitted\n * @throws {Error} If `callback` is present but not a function\n */\nexport function genSalt(rounds, seed_length, callback) {\n  if (typeof seed_length === \"function\")\n    (callback = seed_length), (seed_length = undefined); // Not supported.\n  if (typeof rounds === \"function\") (callback = rounds), (rounds = undefined);\n  if (typeof rounds === \"undefined\") rounds = GENSALT_DEFAULT_LOG2_ROUNDS;\n  else if (typeof rounds !== \"number\")\n    throw Error(\"illegal arguments: \" + typeof rounds);\n\n  function _async(callback) {\n    nextTick(function () {\n      // Pretty thin, but salting is fast enough\n      try {\n        callback(null, genSaltSync(rounds));\n      } catch (err) {\n        callback(err);\n      }\n    });\n  }\n\n  if (callback) {\n    if (typeof callback !== \"function\")\n      throw Error(\"Illegal callback: \" + typeof callback);\n    _async(callback);\n  } else\n    return new Promise(function (resolve, reject) {\n      _async(function (err, res) {\n        if (err) {\n          reject(err);\n          return;\n        }\n        resolve(res);\n      });\n    });\n}\n\n/**\n * Synchronously generates a hash for the given password.\n * @param {string} password Password to hash\n * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10\n * @returns {string} Resulting hash\n */\nexport function hashSync(password, salt) {\n  if (typeof salt === \"undefined\") salt = GENSALT_DEFAULT_LOG2_ROUNDS;\n  if (typeof salt === \"number\") salt = genSaltSync(salt);\n  if (typeof password !== \"string\" || typeof salt !== \"string\")\n    throw Error(\"Illegal arguments: \" + typeof password + \", \" + typeof salt);\n  return _hash(password, salt);\n}\n\n/**\n * Asynchronously generates a hash for the given password.\n * @param {string} password Password to hash\n * @param {number|string} salt Salt length to generate or salt to use\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash\n * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed\n *  (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n * @returns {!Promise} If `callback` has been omitted\n * @throws {Error} If `callback` is present but not a function\n */\nexport function hash(password, salt, callback, progressCallback) {\n  function _async(callback) {\n    if (typeof password === \"string\" && typeof salt === \"number\")\n      genSalt(salt, function (err, salt) {\n        _hash(password, salt, callback, progressCallback);\n      });\n    else if (typeof password === \"string\" && typeof salt === \"string\")\n      _hash(password, salt, callback, progressCallback);\n    else\n      nextTick(\n        callback.bind(\n          this,\n          Error(\"Illegal arguments: \" + typeof password + \", \" + typeof salt),\n        ),\n      );\n  }\n\n  if (callback) {\n    if (typeof callback !== \"function\")\n      throw Error(\"Illegal callback: \" + typeof callback);\n    _async(callback);\n  } else\n    return new Promise(function (resolve, reject) {\n      _async(function (err, res) {\n        if (err) {\n          reject(err);\n          return;\n        }\n        resolve(res);\n      });\n    });\n}\n\n/**\n * Compares two strings of the same length in constant time.\n * @param {string} known Must be of the correct length\n * @param {string} unknown Must be the same length as `known`\n * @returns {boolean}\n * @inner\n */\nfunction safeStringCompare(known, unknown) {\n  var diff = known.length ^ unknown.length;\n  for (var i = 0; i < known.length; ++i) {\n    diff |= known.charCodeAt(i) ^ unknown.charCodeAt(i);\n  }\n  return diff === 0;\n}\n\n/**\n * Synchronously tests a password against a hash.\n * @param {string} password Password to compare\n * @param {string} hash Hash to test against\n * @returns {boolean} true if matching, otherwise false\n * @throws {Error} If an argument is illegal\n */\nexport function compareSync(password, hash) {\n  if (typeof password !== \"string\" || typeof hash !== \"string\")\n    throw Error(\"Illegal arguments: \" + typeof password + \", \" + typeof hash);\n  if (hash.length !== 60) return false;\n  return safeStringCompare(\n    hashSync(password, hash.substring(0, hash.length - 31)),\n    hash,\n  );\n}\n\n/**\n * Asynchronously tests a password against a hash.\n * @param {string} password Password to compare\n * @param {string} hashValue Hash to test against\n * @param {function(Error, boolean)=} callback Callback receiving the error, if any, otherwise the result\n * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed\n *  (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n * @returns {!Promise} If `callback` has been omitted\n * @throws {Error} If `callback` is present but not a function\n */\nexport function compare(password, hashValue, callback, progressCallback) {\n  function _async(callback) {\n    if (typeof password !== \"string\" || typeof hashValue !== \"string\") {\n      nextTick(\n        callback.bind(\n          this,\n          Error(\n            \"Illegal arguments: \" + typeof password + \", \" + typeof hashValue,\n          ),\n        ),\n      );\n      return;\n    }\n    if (hashValue.length !== 60) {\n      nextTick(callback.bind(this, null, false));\n      return;\n    }\n    hash(\n      password,\n      hashValue.substring(0, 29),\n      function (err, comp) {\n        if (err) callback(err);\n        else callback(null, safeStringCompare(comp, hashValue));\n      },\n      progressCallback,\n    );\n  }\n\n  if (callback) {\n    if (typeof callback !== \"function\")\n      throw Error(\"Illegal callback: \" + typeof callback);\n    _async(callback);\n  } else\n    return new Promise(function (resolve, reject) {\n      _async(function (err, res) {\n        if (err) {\n          reject(err);\n          return;\n        }\n        resolve(res);\n      });\n    });\n}\n\n/**\n * Gets the number of rounds used to encrypt the specified hash.\n * @param {string} hash Hash to extract the used number of rounds from\n * @returns {number} Number of rounds used\n * @throws {Error} If `hash` is not a string\n */\nexport function getRounds(hash) {\n  if (typeof hash !== \"string\")\n    throw Error(\"Illegal arguments: \" + typeof hash);\n  return parseInt(hash.split(\"$\")[2], 10);\n}\n\n/**\n * Gets the salt portion from a hash. Does not validate the hash.\n * @param {string} hash Hash to extract the salt from\n * @returns {string} Extracted salt part\n * @throws {Error} If `hash` is not a string or otherwise invalid\n */\nexport function getSalt(hash) {\n  if (typeof hash !== \"string\")\n    throw Error(\"Illegal arguments: \" + typeof hash);\n  if (hash.length !== 60)\n    throw Error(\"Illegal hash length: \" + hash.length + \" != 60\");\n  return hash.substring(0, 29);\n}\n\n/**\n * Tests if a password will be truncated when hashed, that is its length is\n * greater than 72 bytes when converted to UTF-8.\n * @param {string} password The password to test\n * @returns {boolean} `true` if truncated, otherwise `false`\n */\nexport function truncates(password) {\n  if (typeof password !== \"string\")\n    throw Error(\"Illegal arguments: \" + typeof password);\n  return utf8Length(password) > 72;\n}\n\n/**\n * Continues with the callback after yielding to the event loop.\n * @function\n * @param {function(...[*])} callback Callback to execute\n * @inner\n */\nvar nextTick =\n  typeof setImmediate === \"function\"\n    ? setImmediate\n    : typeof scheduler === \"object\" && typeof scheduler.postTask === \"function\"\n      ? scheduler.postTask.bind(scheduler)\n      : setTimeout;\n\n/** Calculates the byte length of a string encoded as UTF8. */\nfunction utf8Length(string) {\n  var len = 0,\n    c = 0;\n  for (var i = 0; i < string.length; ++i) {\n    c = string.charCodeAt(i);\n    if (c < 128) len += 1;\n    else if (c < 2048) len += 2;\n    else if (\n      (c & 0xfc00) === 0xd800 &&\n      (string.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n    ) {\n      ++i;\n      len += 4;\n    } else len += 3;\n  }\n  return len;\n}\n\n/** Converts a string to an array of UTF8 bytes. */\nfunction utf8Array(string) {\n  var offset = 0,\n    c1,\n    c2;\n  var buffer = new Array(utf8Length(string));\n  for (var i = 0, k = string.length; i < k; ++i) {\n    c1 = string.charCodeAt(i);\n    if (c1 < 128) {\n      buffer[offset++] = c1;\n    } else if (c1 < 2048) {\n      buffer[offset++] = (c1 >> 6) | 192;\n      buffer[offset++] = (c1 & 63) | 128;\n    } else if (\n      (c1 & 0xfc00) === 0xd800 &&\n      ((c2 = string.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n    ) {\n      c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);\n      ++i;\n      buffer[offset++] = (c1 >> 18) | 240;\n      buffer[offset++] = ((c1 >> 12) & 63) | 128;\n      buffer[offset++] = ((c1 >> 6) & 63) | 128;\n      buffer[offset++] = (c1 & 63) | 128;\n    } else {\n      buffer[offset++] = (c1 >> 12) | 224;\n      buffer[offset++] = ((c1 >> 6) & 63) | 128;\n      buffer[offset++] = (c1 & 63) | 128;\n    }\n  }\n  return buffer;\n}\n\n// A base64 implementation for the bcrypt algorithm. This is partly non-standard.\n\n/**\n * bcrypt's own non-standard base64 dictionary.\n * @type {!Array.<string>}\n * @const\n * @inner\n **/\nvar BASE64_CODE =\n  \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\");\n\n/**\n * @type {!Array.<number>}\n * @const\n * @inner\n **/\nvar BASE64_INDEX = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28,\n  29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1,\n];\n\n/**\n * Encodes a byte array to base64 with up to len bytes of input.\n * @param {!Array.<number>} b Byte array\n * @param {number} len Maximum input length\n * @returns {string}\n * @inner\n */\nfunction base64_encode(b, len) {\n  var off = 0,\n    rs = [],\n    c1,\n    c2;\n  if (len <= 0 || len > b.length) throw Error(\"Illegal len: \" + len);\n  while (off < len) {\n    c1 = b[off++] & 0xff;\n    rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\n    c1 = (c1 & 0x03) << 4;\n    if (off >= len) {\n      rs.push(BASE64_CODE[c1 & 0x3f]);\n      break;\n    }\n    c2 = b[off++] & 0xff;\n    c1 |= (c2 >> 4) & 0x0f;\n    rs.push(BASE64_CODE[c1 & 0x3f]);\n    c1 = (c2 & 0x0f) << 2;\n    if (off >= len) {\n      rs.push(BASE64_CODE[c1 & 0x3f]);\n      break;\n    }\n    c2 = b[off++] & 0xff;\n    c1 |= (c2 >> 6) & 0x03;\n    rs.push(BASE64_CODE[c1 & 0x3f]);\n    rs.push(BASE64_CODE[c2 & 0x3f]);\n  }\n  return rs.join(\"\");\n}\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output.\n * @param {string} s String to decode\n * @param {number} len Maximum output length\n * @returns {!Array.<number>}\n * @inner\n */\nfunction base64_decode(s, len) {\n  var off = 0,\n    slen = s.length,\n    olen = 0,\n    rs = [],\n    c1,\n    c2,\n    c3,\n    c4,\n    o,\n    code;\n  if (len <= 0) throw Error(\"Illegal len: \" + len);\n  while (off < slen - 1 && olen < len) {\n    code = s.charCodeAt(off++);\n    c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n    code = s.charCodeAt(off++);\n    c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n    if (c1 == -1 || c2 == -1) break;\n    o = (c1 << 2) >>> 0;\n    o |= (c2 & 0x30) >> 4;\n    rs.push(String.fromCharCode(o));\n    if (++olen >= len || off >= slen) break;\n    code = s.charCodeAt(off++);\n    c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n    if (c3 == -1) break;\n    o = ((c2 & 0x0f) << 4) >>> 0;\n    o |= (c3 & 0x3c) >> 2;\n    rs.push(String.fromCharCode(o));\n    if (++olen >= len || off >= slen) break;\n    code = s.charCodeAt(off++);\n    c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n    o = ((c3 & 0x03) << 6) >>> 0;\n    o |= c4;\n    rs.push(String.fromCharCode(o));\n    ++olen;\n  }\n  var res = [];\n  for (off = 0; off < olen; off++) res.push(rs[off].charCodeAt(0));\n  return res;\n}\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar BCRYPT_SALT_LEN = 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar GENSALT_DEFAULT_LOG2_ROUNDS = 10;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar BLOWFISH_NUM_ROUNDS = 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar MAX_EXECUTION_TIME = 100;\n\n/**\n * @type {Array.<number>}\n * @const\n * @inner\n */\nvar P_ORIG = [\n  0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n  0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n  0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n];\n\n/**\n * @type {Array.<number>}\n * @const\n * @inner\n */\nvar S_ORIG = [\n  0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n  0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n  0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n  0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n  0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n  0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n  0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n  0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n  0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n  0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n  0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n  0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n  0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n  0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n  0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n  0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n  0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n  0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n  0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n  0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n  0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n  0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n  0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n  0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n  0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n  0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n  0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n  0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n  0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n  0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n  0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n  0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n  0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n  0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n  0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n  0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n  0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n  0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n  0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n  0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n  0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n  0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n  0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,\n  0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n  0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\n  0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n  0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,\n  0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n  0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,\n  0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n  0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,\n  0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n  0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,\n  0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n  0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\n  0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n  0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,\n  0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n  0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,\n  0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n  0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,\n  0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n  0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,\n  0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n  0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\n  0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n  0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,\n  0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n  0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,\n  0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n  0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,\n  0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n  0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,\n  0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n  0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\n  0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n  0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,\n  0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n  0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,\n  0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n  0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,\n  0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n  0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,\n  0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n  0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\n  0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n  0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,\n  0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n  0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,\n  0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n  0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,\n  0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n  0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,\n  0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n  0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\n  0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n  0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,\n  0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n  0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,\n  0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n  0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,\n  0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n  0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,\n  0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n  0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\n  0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n  0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,\n  0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n  0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,\n  0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n  0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,\n  0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n  0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,\n  0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n  0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\n  0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n  0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,\n  0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n  0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,\n  0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n  0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,\n  0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n  0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,\n  0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n  0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\n  0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n  0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,\n  0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n  0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n  0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n  0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n  0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n  0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n  0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n  0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n  0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n  0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n  0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n  0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n  0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n  0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n  0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n  0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n  0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n  0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n  0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n  0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n  0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n  0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n  0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n  0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n  0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n  0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n  0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n  0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n  0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n  0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n  0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n  0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n  0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n  0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n  0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n  0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n  0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n  0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n  0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n  0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n  0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n  0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n  0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n  0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n];\n\n/**\n * @type {Array.<number>}\n * @const\n * @inner\n */\nvar C_ORIG = [\n  0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,\n];\n\n/**\n * @param {Array.<number>} lr\n * @param {number} off\n * @param {Array.<number>} P\n * @param {Array.<number>} S\n * @returns {Array.<number>}\n * @inner\n */\nfunction _encipher(lr, off, P, S) {\n  // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\n  var n,\n    l = lr[off],\n    r = lr[off + 1];\n\n  l ^= P[0];\n\n  /*\n    for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)\n        // Feistel substitution on left word\n        n  = S[l >>> 24],\n        n += S[0x100 | ((l >> 16) & 0xff)],\n        n ^= S[0x200 | ((l >> 8) & 0xff)],\n        n += S[0x300 | (l & 0xff)],\n        r ^= n ^ P[++i],\n        // Feistel substitution on right word\n        n  = S[r >>> 24],\n        n += S[0x100 | ((r >> 16) & 0xff)],\n        n ^= S[0x200 | ((r >> 8) & 0xff)],\n        n += S[0x300 | (r & 0xff)],\n        l ^= n ^ P[++i];\n    */\n\n  //The following is an unrolled version of the above loop.\n  //Iteration 0\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[1];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[2];\n  //Iteration 1\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[3];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[4];\n  //Iteration 2\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[5];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[6];\n  //Iteration 3\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[7];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[8];\n  //Iteration 4\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[9];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[10];\n  //Iteration 5\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[11];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[12];\n  //Iteration 6\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[13];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[14];\n  //Iteration 7\n  n = S[l >>> 24];\n  n += S[0x100 | ((l >> 16) & 0xff)];\n  n ^= S[0x200 | ((l >> 8) & 0xff)];\n  n += S[0x300 | (l & 0xff)];\n  r ^= n ^ P[15];\n  n = S[r >>> 24];\n  n += S[0x100 | ((r >> 16) & 0xff)];\n  n ^= S[0x200 | ((r >> 8) & 0xff)];\n  n += S[0x300 | (r & 0xff)];\n  l ^= n ^ P[16];\n\n  lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n  lr[off + 1] = l;\n  return lr;\n}\n\n/**\n * @param {Array.<number>} data\n * @param {number} offp\n * @returns {{key: number, offp: number}}\n * @inner\n */\nfunction _streamtoword(data, offp) {\n  for (var i = 0, word = 0; i < 4; ++i)\n    (word = (word << 8) | (data[offp] & 0xff)),\n      (offp = (offp + 1) % data.length);\n  return { key: word, offp: offp };\n}\n\n/**\n * @param {Array.<number>} key\n * @param {Array.<number>} P\n * @param {Array.<number>} S\n * @inner\n */\nfunction _key(key, P, S) {\n  var offset = 0,\n    lr = [0, 0],\n    plen = P.length,\n    slen = S.length,\n    sw;\n  for (var i = 0; i < plen; i++)\n    (sw = _streamtoword(key, offset)),\n      (offset = sw.offp),\n      (P[i] = P[i] ^ sw.key);\n  for (i = 0; i < plen; i += 2)\n    (lr = _encipher(lr, 0, P, S)), (P[i] = lr[0]), (P[i + 1] = lr[1]);\n  for (i = 0; i < slen; i += 2)\n    (lr = _encipher(lr, 0, P, S)), (S[i] = lr[0]), (S[i + 1] = lr[1]);\n}\n\n/**\n * Expensive key schedule Blowfish.\n * @param {Array.<number>} data\n * @param {Array.<number>} key\n * @param {Array.<number>} P\n * @param {Array.<number>} S\n * @inner\n */\nfunction _ekskey(data, key, P, S) {\n  var offp = 0,\n    lr = [0, 0],\n    plen = P.length,\n    slen = S.length,\n    sw;\n  for (var i = 0; i < plen; i++)\n    (sw = _streamtoword(key, offp)), (offp = sw.offp), (P[i] = P[i] ^ sw.key);\n  offp = 0;\n  for (i = 0; i < plen; i += 2)\n    (sw = _streamtoword(data, offp)),\n      (offp = sw.offp),\n      (lr[0] ^= sw.key),\n      (sw = _streamtoword(data, offp)),\n      (offp = sw.offp),\n      (lr[1] ^= sw.key),\n      (lr = _encipher(lr, 0, P, S)),\n      (P[i] = lr[0]),\n      (P[i + 1] = lr[1]);\n  for (i = 0; i < slen; i += 2)\n    (sw = _streamtoword(data, offp)),\n      (offp = sw.offp),\n      (lr[0] ^= sw.key),\n      (sw = _streamtoword(data, offp)),\n      (offp = sw.offp),\n      (lr[1] ^= sw.key),\n      (lr = _encipher(lr, 0, P, S)),\n      (S[i] = lr[0]),\n      (S[i + 1] = lr[1]);\n}\n\n/**\n * Internaly crypts a string.\n * @param {Array.<number>} b Bytes to crypt\n * @param {Array.<number>} salt Salt bytes to use\n * @param {number} rounds Number of rounds\n * @param {function(Error, Array.<number>=)=} callback Callback receiving the error, if any, and the resulting bytes. If\n *  omitted, the operation will be performed synchronously.\n *  @param {function(number)=} progressCallback Callback called with the current progress\n * @returns {!Array.<number>|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`\n * @inner\n */\nfunction _crypt(b, salt, rounds, callback, progressCallback) {\n  var cdata = C_ORIG.slice(),\n    clen = cdata.length,\n    err;\n\n  // Validate\n  if (rounds < 4 || rounds > 31) {\n    err = Error(\"Illegal number of rounds (4-31): \" + rounds);\n    if (callback) {\n      nextTick(callback.bind(this, err));\n      return;\n    } else throw err;\n  }\n  if (salt.length !== BCRYPT_SALT_LEN) {\n    err = Error(\n      \"Illegal salt length: \" + salt.length + \" != \" + BCRYPT_SALT_LEN,\n    );\n    if (callback) {\n      nextTick(callback.bind(this, err));\n      return;\n    } else throw err;\n  }\n  rounds = (1 << rounds) >>> 0;\n\n  var P,\n    S,\n    i = 0,\n    j;\n\n  //Use typed arrays when available - huge speedup!\n  if (typeof Int32Array === \"function\") {\n    P = new Int32Array(P_ORIG);\n    S = new Int32Array(S_ORIG);\n  } else {\n    P = P_ORIG.slice();\n    S = S_ORIG.slice();\n  }\n\n  _ekskey(salt, b, P, S);\n\n  /**\n   * Calcualtes the next round.\n   * @returns {Array.<number>|undefined} Resulting array if callback has been omitted, otherwise `undefined`\n   * @inner\n   */\n  function next() {\n    if (progressCallback) progressCallback(i / rounds);\n    if (i < rounds) {\n      var start = Date.now();\n      for (; i < rounds; ) {\n        i = i + 1;\n        _key(b, P, S);\n        _key(salt, P, S);\n        if (Date.now() - start > MAX_EXECUTION_TIME) break;\n      }\n    } else {\n      for (i = 0; i < 64; i++)\n        for (j = 0; j < clen >> 1; j++) _encipher(cdata, j << 1, P, S);\n      var ret = [];\n      for (i = 0; i < clen; i++)\n        ret.push(((cdata[i] >> 24) & 0xff) >>> 0),\n          ret.push(((cdata[i] >> 16) & 0xff) >>> 0),\n          ret.push(((cdata[i] >> 8) & 0xff) >>> 0),\n          ret.push((cdata[i] & 0xff) >>> 0);\n      if (callback) {\n        callback(null, ret);\n        return;\n      } else return ret;\n    }\n    if (callback) nextTick(next);\n  }\n\n  // Async\n  if (typeof callback !== \"undefined\") {\n    next();\n\n    // Sync\n  } else {\n    var res;\n    while (true) if (typeof (res = next()) !== \"undefined\") return res || [];\n  }\n}\n\n/**\n * Internally hashes a password.\n * @param {string} password Password to hash\n * @param {?string} salt Salt to use, actually never null\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,\n *  hashing is performed synchronously.\n *  @param {function(number)=} progressCallback Callback called with the current progress\n * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`\n * @inner\n */\nfunction _hash(password, salt, callback, progressCallback) {\n  var err;\n  if (typeof password !== \"string\" || typeof salt !== \"string\") {\n    err = Error(\"Invalid string / salt: Not a string\");\n    if (callback) {\n      nextTick(callback.bind(this, err));\n      return;\n    } else throw err;\n  }\n\n  // Validate the salt\n  var minor, offset;\n  if (salt.charAt(0) !== \"$\" || salt.charAt(1) !== \"2\") {\n    err = Error(\"Invalid salt version: \" + salt.substring(0, 2));\n    if (callback) {\n      nextTick(callback.bind(this, err));\n      return;\n    } else throw err;\n  }\n  if (salt.charAt(2) === \"$\") (minor = String.fromCharCode(0)), (offset = 3);\n  else {\n    minor = salt.charAt(2);\n    if (\n      (minor !== \"a\" && minor !== \"b\" && minor !== \"y\") ||\n      salt.charAt(3) !== \"$\"\n    ) {\n      err = Error(\"Invalid salt revision: \" + salt.substring(2, 4));\n      if (callback) {\n        nextTick(callback.bind(this, err));\n        return;\n      } else throw err;\n    }\n    offset = 4;\n  }\n\n  // Extract number of rounds\n  if (salt.charAt(offset + 2) > \"$\") {\n    err = Error(\"Missing salt rounds\");\n    if (callback) {\n      nextTick(callback.bind(this, err));\n      return;\n    } else throw err;\n  }\n  var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\n    r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\n    rounds = r1 + r2,\n    real_salt = salt.substring(offset + 3, offset + 25);\n  password += minor >= \"a\" ? \"\\x00\" : \"\";\n\n  var passwordb = utf8Array(password),\n    saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);\n\n  /**\n   * Finishes hashing.\n   * @param {Array.<number>} bytes Byte array\n   * @returns {string}\n   * @inner\n   */\n  function finish(bytes) {\n    var res = [];\n    res.push(\"$2\");\n    if (minor >= \"a\") res.push(minor);\n    res.push(\"$\");\n    if (rounds < 10) res.push(\"0\");\n    res.push(rounds.toString());\n    res.push(\"$\");\n    res.push(base64_encode(saltb, saltb.length));\n    res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));\n    return res.join(\"\");\n  }\n\n  // Sync\n  if (typeof callback == \"undefined\")\n    return finish(_crypt(passwordb, saltb, rounds));\n  // Async\n  else {\n    _crypt(\n      passwordb,\n      saltb,\n      rounds,\n      function (err, bytes) {\n        if (err) callback(err, null);\n        else callback(null, finish(bytes));\n      },\n      progressCallback,\n    );\n  }\n}\n\n/**\n * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.\n * @function\n * @param {!Array.<number>} bytes Byte array\n * @param {number} length Maximum input length\n * @returns {string}\n */\nexport function encodeBase64(bytes, length) {\n  return base64_encode(bytes, length);\n}\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\n * @function\n * @param {string} string String to decode\n * @param {number} length Maximum output length\n * @returns {!Array.<number>}\n */\nexport function decodeBase64(string, length) {\n  return base64_decode(string, length);\n}\n\nexport default {\n  setRandomFallback,\n  genSaltSync,\n  genSalt,\n  hashSync,\n  hash,\n  compareSync,\n  compare,\n  getRounds,\n  getSalt,\n  truncates,\n  encodeBase64,\n  decodeBase64,\n};\n", "import { db, usersTable } from \"@workspace/db\";\nimport { eq } from \"drizzle-orm\";\nimport type { Request, Response, NextFunction } from \"express\";\nimport {\n  can,\n  type PermissionLevel,\n  type PermissionMap,\n  type SectionKey,\n} from \"@workspace/permissions\";\n\ndeclare module \"express-session\" {\n  interface SessionData {\n    userId?: string;\n  }\n}\n\nexport type CurrentUser = {\n  id: string;\n  name: string;\n  email: string;\n  role: \"admin\" | \"doctor\" | \"nurse\" | \"quality_control\";\n  permissions: PermissionMap | null;\n  createdAt: Date;\n};\n\nexport type RequestWithUser = Request & {\n  currentUser?: CurrentUser;\n};\n\nexport async function loadUser(userId: string): Promise<CurrentUser | null> {\n  const [user] = await db\n    .select({\n      id: usersTable.id,\n      name: usersTable.name,\n      email: usersTable.email,\n      role: usersTable.role,\n      permissions: usersTable.permissions,\n      createdAt: usersTable.createdAt,\n    })\n    .from(usersTable)\n    .where(eq(usersTable.id, userId));\n  return user ?? null;\n}\n\nexport async function getCurrentUser(req: Request): Promise<CurrentUser> {\n  const reqWithUser = req as RequestWithUser;\n  if (reqWithUser.currentUser) return reqWithUser.currentUser;\n  const userId = req.session?.userId;\n  if (!userId) throw new UnauthenticatedError();\n  const user = await loadUser(userId);\n  if (!user) throw new UnauthenticatedError();\n  reqWithUser.currentUser = user;\n  return user;\n}\n\nexport class UnauthenticatedError extends Error {\n  constructor() {\n    super(\"Unauthenticated\");\n    this.name = \"UnauthenticatedError\";\n  }\n}\n\nexport async function requireAuth(\n  req: RequestWithUser,\n  res: Response,\n  next: NextFunction,\n): Promise<void> {\n  const userId = req.session?.userId;\n  if (!userId) {\n    res.status(401).json({ error: \"\u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629\" });\n    return;\n  }\n  const user = await loadUser(userId);\n  if (!user) {\n    req.session.destroy(() => {\n      res.status(401).json({ error: \"\u0627\u0646\u062A\u0647\u062A \u0627\u0644\u062C\u0644\u0633\u0629. \u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u062C\u062F\u062F\u0627\u064B\" });\n    });\n    return;\n  }\n  req.currentUser = user;\n  next();\n}\n\nexport function requireRole(...allowed: Array<CurrentUser[\"role\"]>) {\n  return (req: RequestWithUser, res: Response, next: NextFunction): void => {\n    const user = req.currentUser;\n    if (!user) {\n      res.status(401).json({ error: \"\u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629\" });\n      return;\n    }\n    if (!allowed.includes(user.role)) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n      return;\n    }\n    next();\n  };\n}\n\n/**\n * Gate a route on the caller's per-section permission. Admins always pass.\n * `level` defaults to \"view\" \u2014 pass \"edit\" for any mutating route. The caller\n * must already be authenticated (requireAuth runs globally in app.ts).\n */\nexport function requirePermission(section: SectionKey, level: PermissionLevel = \"view\") {\n  return (req: RequestWithUser, res: Response, next: NextFunction): void => {\n    const user = req.currentUser;\n    if (!user) {\n      res.status(401).json({ error: \"\u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629\" });\n      return;\n    }\n    if (!can(user, section, level)) {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n      return;\n    }\n    next();\n  };\n}\n\n/** Convenience: require read access to a section. */\nexport const requireView = (section: SectionKey) => requirePermission(section, \"view\");\n/** Convenience: require add/edit access to a section. */\nexport const requireEdit = (section: SectionKey) => requirePermission(section, \"edit\");\n\n/**\n * Method-aware section guard for mounting on a route prefix: GET/HEAD require\n * \"view\", every other (mutating) method requires \"edit\". Admins always pass.\n */\nexport function requireSection(section: SectionKey) {\n  return (req: RequestWithUser, res: Response, next: NextFunction): void => {\n    const level: PermissionLevel =\n      req.method === \"GET\" || req.method === \"HEAD\" ? \"view\" : \"edit\";\n    requirePermission(section, level)(req, res, next);\n  };\n}\n", "/**\n * Shared staff-permission model for the clinic system.\n *\n * The clinic owner (admin) controls, per staff user and per section, one of:\n *   - no access  (the section key is absent from the map)\n *   - \"view\"     (can open / read the section)\n *   - \"edit\"     (can also add / edit / delete within the section)\n *\n * The `admin` role is always treated as full access and can never be locked out.\n * Non-admin users are gated solely by their permission map; when a user has no\n * explicit map (null), we fall back to a sensible default derived from their\n * legacy role so existing accounts keep working after rollout.\n *\n * This module is pure TypeScript (no runtime deps) so it can be imported by both\n * the Express API server and the React clinic app.\n */\n\nexport type Role = \"admin\" | \"doctor\" | \"nurse\" | \"quality_control\";\n\nexport type PermissionLevel = \"view\" | \"edit\";\n\n/** Canonical list of gateable sections (single source of truth). */\nexport const SECTION_KEYS = [\n  \"dashboard\",\n  \"patients\",\n  \"appointments\",\n  \"prescriptions\",\n  \"referrals\",\n  \"reports\",\n  \"consultations\",\n  \"complaints\",\n  \"payments\",\n  \"examinationTypes\",\n  \"display\",\n  \"siteContent\",\n  \"systemControl\",\n  \"backup\",\n  \"audit\",\n  \"users\",\n  \"qrFiles\",\n] as const;\n\nexport type SectionKey = (typeof SECTION_KEYS)[number];\n\nexport type PermissionMap = Partial<Record<SectionKey, PermissionLevel>>;\n\nexport interface SectionMeta {\n  key: SectionKey;\n  /** Arabic label shown in the permission matrix + sidebar. */\n  label: string;\n  /** Short Arabic description for the admin editor. */\n  description: string;\n}\n\nexport const SECTIONS: readonly SectionMeta[] = [\n  { key: \"dashboard\", label: \"\u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645\", description: \"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629 \u0648\u0627\u0644\u0625\u062D\u0635\u0627\u0626\u064A\u0627\u062A\" },\n  { key: \"patients\", label: \"\u0627\u0644\u0645\u0631\u0636\u0649\", description: \"\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u0631\u0636\u0649 \u0648\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0646\u0645\u0648\" },\n  { key: \"appointments\", label: \"\u0627\u0644\u0645\u0648\u0627\u0639\u064A\u062F\", description: \"\u062D\u062C\u0632 \u0648\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u0648\u0627\u0639\u064A\u062F\" },\n  { key: \"prescriptions\", label: \"\u0627\u0644\u0631\u0648\u0634\u062A\u0627\u062A\", description: \"\u0625\u0635\u062F\u0627\u0631 \u0648\u0645\u0631\u0627\u062C\u0639\u0629 \u0627\u0644\u0631\u0648\u0634\u062A\u0627\u062A\" },\n  { key: \"referrals\", label: \"\u0627\u0644\u0625\u062D\u0627\u0644\u0627\u062A\", description: \"\u062E\u0637\u0627\u0628\u0627\u062A \u0627\u0644\u0625\u062D\u0627\u0644\u0629 \u0627\u0644\u062E\u0627\u0631\u062C\u064A\u0629\" },\n  { key: \"reports\", label: \"\u0627\u0644\u062A\u0642\u0627\u0631\u064A\u0631 \u0648\u0627\u0644\u0632\u064A\u0627\u0631\u0627\u062A\", description: \"\u062A\u0642\u0627\u0631\u064A\u0631 \u0627\u0644\u0632\u064A\u0627\u0631\u0627\u062A \u0648\u0627\u0644\u0643\u0634\u0648\u0641\u0627\u062A\" },\n  { key: \"consultations\", label: \"\u0627\u0644\u0643\u0634\u0641 \u0627\u0644\u0627\u0648\u0646\u0644\u0627\u064A\u0646\", description: \"\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0648\u0627\u0644\u0643\u0634\u0641 \u0639\u0646 \u0628\u064F\u0639\u062F\" },\n  { key: \"complaints\", label: \"\u0627\u0644\u0634\u0643\u0627\u0648\u0649\", description: \"\u0634\u0643\u0627\u0648\u0649 \u0648\u0645\u0642\u062A\u0631\u062D\u0627\u062A \u0627\u0644\u0632\u0648\u0627\u0631 \u0648\u0627\u0644\u0631\u062F \u0639\u0644\u064A\u0647\u0627\" },\n  { key: \"payments\", label: \"\u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A\", description: \"\u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0648\u0627\u0644\u0645\u0631\u0627\u062C\u0639\u0629 \u0627\u0644\u0645\u0627\u0644\u064A\u0629\" },\n  { key: \"examinationTypes\", label: \"\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u0634\u0648\u0641\u0627\u062A\", description: \"\u0625\u062F\u0627\u0631\u0629 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u0634\u0648\u0641\u0627\u062A\" },\n  { key: \"display\", label: \"\u0634\u0627\u0634\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631\", description: \"\u0627\u0644\u062A\u062D\u0643\u0645 \u0641\u064A \u0634\u0627\u0634\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631\" },\n  { key: \"siteContent\", label: \"\u0627\u0644\u062A\u062D\u0643\u0645 \u0641\u064A \u0627\u0644\u0645\u0648\u0642\u0639\", description: \"\u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0627\u0645\" },\n  { key: \"systemControl\", label: \"\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0646\u0638\u0627\u0645\", description: \"\u0647\u0648\u064A\u0629 \u0648\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0646\u0638\u0627\u0645\" },\n  { key: \"backup\", label: \"\u0627\u0644\u0646\u0633\u062E \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637\u064A\", description: \"\u062A\u0635\u062F\u064A\u0631 \u0648\u0627\u0633\u062A\u064A\u0631\u0627\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A\" },\n  { key: \"audit\", label: \"\u0633\u062C\u0644 \u0627\u0644\u0646\u0634\u0627\u0637\", description: \"\u0633\u062C\u0644 \u0639\u0645\u0644\u064A\u0627\u062A \u0627\u0644\u0646\u0638\u0627\u0645\" },\n  { key: \"users\", label: \"\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646\", description: \"\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646 \u0648\u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0627\u062A\" },\n  { key: \"qrFiles\", label: \"\u0645\u0644\u0641\u0627\u062A QR\", description: \"\u0631\u0641\u0639 \u0645\u0644\u0641\u0627\u062A \u0648\u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0648\u0632 QR \u0644\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0639\u0627\u0645\" },\n];\n\nconst LEVEL_RANK: Record<PermissionLevel, number> = { view: 1, edit: 2 };\n\n/** Default permission map for a legacy role (used when a user has no explicit map). */\nexport function defaultPermissionsForRole(role: Role): PermissionMap {\n  if (role === \"admin\") {\n    return Object.fromEntries(\n      SECTION_KEYS.map((k) => [k, \"edit\" as PermissionLevel]),\n    ) as PermissionMap;\n  }\n  if (role === \"doctor\") {\n    return {\n      dashboard: \"view\",\n      patients: \"edit\",\n      appointments: \"edit\",\n      prescriptions: \"edit\",\n      referrals: \"edit\",\n      reports: \"edit\",\n      consultations: \"edit\",\n      complaints: \"edit\",\n      // The doctor drives the post-print \"exam finished\" handoff, which is a\n      // `display`-section mutation. Granted by default so the workflow works\n      // out of the box; an admin can still lock it per-user.\n      display: \"edit\",\n    };\n  }\n  if (role === \"quality_control\") {\n    return {\n      qrFiles: \"edit\",\n      reports: \"view\",\n    };\n  }\n  // nurse = secretary/reception: booking-centric, runs the waiting-room\n  // display, and needs to add patients + record nursing assessments.\n  return {\n    dashboard: \"view\",\n    patients: \"edit\",\n    appointments: \"edit\",\n    reports: \"edit\",\n    display: \"edit\",\n  };\n}\n\nexport interface PermissionSubject {\n  role: Role;\n  permissions?: PermissionMap | null;\n}\n\n/** The map actually in effect for a user (admin = full, else explicit-or-default). */\nexport function effectivePermissions(user: PermissionSubject): PermissionMap {\n  if (user.role === \"admin\") {\n    return Object.fromEntries(\n      SECTION_KEYS.map((k) => [k, \"edit\" as PermissionLevel]),\n    ) as PermissionMap;\n  }\n  return user.permissions ?? defaultPermissionsForRole(user.role);\n}\n\n/** Whether a user may access a section at (at least) the given level. */\nexport function can(\n  user: PermissionSubject,\n  section: SectionKey,\n  level: PermissionLevel = \"view\",\n): boolean {\n  if (user.role === \"admin\") return true;\n  const have = effectivePermissions(user)[section];\n  if (!have) return false;\n  return LEVEL_RANK[have] >= LEVEL_RANK[level];\n}\n\n/** Validate/normalize an untrusted permission map (drops unknown keys/values). */\nexport function sanitizePermissionMap(input: unknown): PermissionMap {\n  const out: PermissionMap = {};\n  if (!input || typeof input !== \"object\") return out;\n  const obj = input as Record<string, unknown>;\n  for (const key of SECTION_KEYS) {\n    const v = obj[key];\n    if (v === \"view\" || v === \"edit\") out[key] = v;\n  }\n  return out;\n}\n", "import { db, auditLogsTable } from \"@workspace/db\";\n\nexport async function logAudit(args: {\n  userId: string;\n  action: string;\n  entity: string;\n  entityId?: string | null;\n  meta?: Record<string, unknown>;\n}) {\n  await db.insert(auditLogsTable).values({\n    userId: args.userId,\n    action: args.action,\n    entity: args.entity,\n    entityId: args.entityId ?? null,\n    meta: args.meta ? JSON.stringify(args.meta) : null,\n  });\n}\n", "type RlBucket = { hits: number[]; blockedUntil?: number };\nconst rlBuckets = new Map<string, RlBucket>();\n\nexport function rateLimit(\n  key: string,\n  windowMs: number,\n  max: number,\n  blockMs: number = 0,\n): { ok: boolean; retryAfterSec: number } {\n  const now = Date.now();\n  const bucket = rlBuckets.get(key) ?? { hits: [] };\n  if (bucket.blockedUntil && bucket.blockedUntil > now) {\n    return { ok: false, retryAfterSec: Math.ceil((bucket.blockedUntil - now) / 1000) };\n  }\n  bucket.hits = bucket.hits.filter((t) => t > now - windowMs);\n  if (bucket.hits.length >= max) {\n    if (blockMs > 0) bucket.blockedUntil = now + blockMs;\n    rlBuckets.set(key, bucket);\n    const retry = blockMs > 0 ? Math.ceil(blockMs / 1000) : Math.ceil(windowMs / 1000);\n    return { ok: false, retryAfterSec: retry };\n  }\n  bucket.hits.push(now);\n  rlBuckets.set(key, bucket);\n  return { ok: true, retryAfterSec: 0 };\n}\n\n/**\n * Returns the client IP address resolved by Express after applying the\n * configured `trust proxy` setting (app.set(\"trust proxy\", 1)).\n * Using req.ip is safe because Express already validates the forwarded chain;\n * reading raw x-forwarded-for headers would allow IP spoofing.\n */\nexport function clientIp(req: { ip?: string }): string {\n  return req.ip ?? \"unknown\";\n}\n\n// Periodic cleanup so the map doesn't grow unbounded.\nsetInterval(() => {\n  const cutoff = Date.now() - 60 * 60 * 1000;\n  for (const [k, v] of rlBuckets) {\n    if (\n      (!v.hits.length || v.hits[v.hits.length - 1] < cutoff) &&\n      (!v.blockedUntil || v.blockedUntil < Date.now())\n    ) {\n      rlBuckets.delete(k);\n    }\n  }\n}, 10 * 60 * 1000).unref?.();\n", "import pino from \"pino\";\n\nconst isProduction = process.env.NODE_ENV === \"production\";\n\nexport const logger = pino({\n  level: process.env.LOG_LEVEL ?? \"info\",\n  redact: [\n    \"req.headers.authorization\",\n    \"req.headers.cookie\",\n    \"res.headers['set-cookie']\",\n  ],\n  ...(isProduction\n    ? {}\n    : {\n        transport: {\n          target: \"pino-pretty\",\n          options: { colorize: true },\n        },\n      }),\n});\n", "import { Router, type IRouter } from \"express\";\nimport { eq, ilike, or, desc, sql } from \"drizzle-orm\";\nimport {\n  db,\n  patientsTable,\n  visitsTable,\n  prescriptionsTable,\n  growthRecordsTable,\n} from \"@workspace/db\";\nimport {\n  CreatePatientBody,\n  UpdatePatientBody,\n  CreateGrowthRecordBody,\n} from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser, requireSection } from \"../lib/session\";\nimport {\n  nextPatientCode,\n  makeQrToken,\n  patientCodeForBirthChange,\n} from \"../lib/codes\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/patients\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const search =\n    typeof req.query.search === \"string\" ? req.query.search.trim() : \"\";\n  const rows = search\n    ? await db\n        .select()\n        .from(patientsTable)\n        .where(\n          or(\n            ilike(patientsTable.fullName, `%${search}%`),\n            ilike(patientsTable.code, `%${search}%`),\n            ilike(patientsTable.phone, `%${search}%`),\n          ),\n        )\n        .orderBy(desc(patientsTable.createdAt))\n    : await db\n        .select()\n        .from(patientsTable)\n        .orderBy(desc(patientsTable.createdAt));\n\n  res.json(rows.map(mapPatient));\n});\n\nrouter.post(\"/patients\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const parsed = CreatePatientBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const user = await getCurrentUser(req);\n  const qrToken = makeQrToken();\n  let row: typeof patientsTable.$inferSelect | undefined;\n  for (let attempt = 0; attempt < 3 && !row; attempt++) {\n    const code = await nextPatientCode({\n      birthDate: String(parsed.data.birthDate),\n    });\n    try {\n      [row] = await db\n        .insert(patientsTable)\n        .values({ ...parsed.data, code, qrToken })\n        .returning();\n    } catch (err) {\n      if ((err as { code?: string }).code !== \"23505\") throw err;\n    }\n  }\n  if (!row) {\n    res.status(500).json({ error: \"\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0643\u0648\u062F \u0627\u0644\u0645\u0631\u064A\u0636\u060C \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\" });\n    return;\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"patient.create\",\n    entity: \"patient\",\n    entityId: row.id,\n    meta: { code: row.code, name: row.fullName },\n  });\n  res.status(201).json(mapPatient(row));\n});\n\nrouter.get(\"/patients/:id\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const [row] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.id, id));\n  if (!row) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n  const [{ visitCount }] = await db\n    .select({ visitCount: sql<number>`count(*)::int` })\n    .from(visitsTable)\n    .where(eq(visitsTable.patientId, id));\n  const [{ prescriptionCount }] = await db\n    .select({ prescriptionCount: sql<number>`count(*)::int` })\n    .from(prescriptionsTable)\n    .where(eq(prescriptionsTable.patientId, id));\n  const [lastVisit] = await db\n    .select({ visitedAt: visitsTable.visitedAt })\n    .from(visitsTable)\n    .where(eq(visitsTable.patientId, id))\n    .orderBy(desc(visitsTable.visitedAt))\n    .limit(1);\n\n  res.json({\n    ...mapPatient(row),\n    visitCount: visitCount ?? 0,\n    prescriptionCount: prescriptionCount ?? 0,\n    lastVisitAt: lastVisit?.visitedAt?.toISOString() ?? null,\n  });\n});\n\nrouter.patch(\"/patients/:id\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const id = String(req.params.id);\n  const parsed = UpdatePatientBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  if (parsed.data.planOfCare !== undefined && parsed.data.planOfCare !== null) {\n    const poc = parsed.data.planOfCare;\n    if (typeof poc !== \"object\" || Array.isArray(poc)) {\n      res.status(400).json({\n        error: \"planOfCare \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0643\u0627\u0626\u0646 JSON \u0635\u0627\u0644\u062D\",\n      });\n      return;\n    }\n  }\n\n  const [current] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.id, id));\n  if (!current) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n\n  // Regenerate the medical code when the birth date is corrected: only the\n  // birth-date segment of the code changes; visit date + booking hour stay.\n  const updateData: Record<string, unknown> = { ...parsed.data };\n  const newBirth = parsed.data.birthDate?.slice(0, 10);\n  const regenCode =\n    !!newBirth && newBirth !== String(current.birthDate).slice(0, 10);\n\n  // When regenerating the code, retry on unique-violation (a concurrent edit\n  // could have claimed the same candidate) \u2014 same pattern as create/import.\n  let row: typeof patientsTable.$inferSelect | undefined;\n  for (let attempt = 0; attempt < 5; attempt++) {\n    if (regenCode) {\n      updateData.code = await patientCodeForBirthChange({\n        currentCode: current.code,\n        newBirthDate: newBirth!,\n        createdAt: current.createdAt,\n        patientId: id,\n      });\n    }\n    try {\n      [row] = await db\n        .update(patientsTable)\n        .set(updateData)\n        .where(eq(patientsTable.id, id))\n        .returning();\n      break;\n    } catch (err) {\n      if (\n        regenCode &&\n        attempt < 4 &&\n        (err as { code?: string }).code === \"23505\"\n      ) {\n        continue;\n      }\n      throw err;\n    }\n  }\n  if (!row) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"patient.update\",\n    entity: \"patient\",\n    entityId: id,\n  });\n  res.json(mapPatient(row));\n});\n\nrouter.delete(\"/patients/:id\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (user.role !== \"admin\") {\n    res.status(403).json({ error: \"\u062D\u0630\u0641 \u0627\u0644\u0645\u0631\u0636\u0649 \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const id = String(req.params.id);\n  const [row] = await db\n    .delete(patientsTable)\n    .where(eq(patientsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"patient.delete\",\n    entity: \"patient\",\n    entityId: id,\n    meta: { name: row.fullName },\n  });\n  res.status(204).end();\n});\n\n// ----------- GROWTH RECORDS -----------\nrouter.get(\"/patients/:id/growth\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const rows = await db\n    .select()\n    .from(growthRecordsTable)\n    .where(eq(growthRecordsTable.patientId, id))\n    .orderBy(growthRecordsTable.recordedAt);\n  res.json(\n    rows.map((r) => ({\n      id: r.id,\n      patientId: r.patientId,\n      recordedAt: r.recordedAt.toISOString(),\n      weightKg: r.weightKg,\n      heightCm: r.heightCm,\n      headCircumferenceCm: r.headCircumferenceCm,\n      temperatureC: r.temperatureC,\n      notes: r.notes,\n    })),\n  );\n});\n\nrouter.post(\"/patients/:id/growth\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const id = String(req.params.id);\n  const parsed = CreateGrowthRecordBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const [row] = await db\n    .insert(growthRecordsTable)\n    .values({ ...parsed.data, patientId: id })\n    .returning();\n  await logAudit({\n    userId: user.id,\n    action: \"growth.create\",\n    entity: \"patient\",\n    entityId: id,\n  });\n  res.status(201).json({\n    id: row.id,\n    patientId: row.patientId,\n    recordedAt: row.recordedAt.toISOString(),\n    weightKg: row.weightKg,\n    heightCm: row.heightCm,\n    headCircumferenceCm: row.headCircumferenceCm,\n    temperatureC: row.temperatureC,\n    notes: row.notes,\n  });\n});\n\n// ----------- LISTS via patient -----------\nrouter.get(\"/patients/:id/visits\", requireSection(\"patients\"), async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const rows = await db\n    .select({\n      id: visitsTable.id,\n      patientId: visitsTable.patientId,\n      patientName: patientsTable.fullName,\n      appointmentId: visitsTable.appointmentId,\n      diagnosis: visitsTable.diagnosis,\n      notes: visitsTable.notes,\n      nursingAssessment: visitsTable.nursingAssessment,\n      doctorReport: visitsTable.doctorReport,\n      visitedAt: visitsTable.visitedAt,\n    })\n    .from(visitsTable)\n    .innerJoin(patientsTable, eq(visitsTable.patientId, patientsTable.id))\n    .where(eq(visitsTable.patientId, id))\n    .orderBy(desc(visitsTable.visitedAt));\n  res.json(\n    rows.map((r) => ({\n      ...r,\n      doctorReport: r.doctorReport ?? null,\n      visitedAt: r.visitedAt.toISOString(),\n    })),\n  );\n});\n\nrouter.get(\n  \"/patients/:id/prescriptions\",\n  requireSection(\"prescriptions\"),\n  async (req, res): Promise<void> => {\n    const id = String(req.params.id);\n    const rows = await db\n      .select({\n        prescription: prescriptionsTable,\n        patientName: patientsTable.fullName,\n      })\n      .from(prescriptionsTable)\n      .innerJoin(\n        patientsTable,\n        eq(prescriptionsTable.patientId, patientsTable.id),\n      )\n      .where(eq(prescriptionsTable.patientId, id))\n      .orderBy(desc(prescriptionsTable.createdAt));\n\n    const ids = rows.map((r) => r.prescription.id);\n    const counts = ids.length\n      ? await db\n          .select({\n            prescriptionId: sql<string>`prescription_id`,\n            count: sql<number>`count(*)::int`,\n          })\n          .from(sql`prescription_items`)\n          .where(sql`prescription_id in ${ids}`)\n          .groupBy(sql`prescription_id`)\n      : [];\n    const countMap = new Map(counts.map((c) => [c.prescriptionId, c.count]));\n\n    res.json(\n      rows.map((r) => ({\n        id: r.prescription.id,\n        code: r.prescription.code,\n        patientId: r.prescription.patientId,\n        patientName: r.patientName,\n        patientAgeMonths: r.prescription.patientAgeMonths,\n        doctorId: r.prescription.doctorId,\n        doctorName: \"\",\n        diagnosis: r.prescription.diagnosis,\n        notes: r.prescription.notes,\n        qrToken: r.prescription.qrToken,\n        createdAt: r.prescription.createdAt.toISOString(),\n        itemCount: countMap.get(r.prescription.id) ?? 0,\n      })),\n    );\n  },\n);\n\nfunction mapPatient(p: typeof patientsTable.$inferSelect) {\n  return {\n    id: p.id,\n    code: p.code,\n    fullName: p.fullName,\n    gender: p.gender,\n    birthDate: typeof p.birthDate === \"string\" ? p.birthDate : String(p.birthDate),\n    phone: p.phone,\n    guardianName: p.guardianName,\n    address: p.address,\n    bloodType: p.bloodType,\n    allergies: p.allergies,\n    notes: p.notes,\n    planOfCare: p.planOfCare ?? null,\n    qrToken: p.qrToken,\n    createdAt: p.createdAt.toISOString(),\n  };\n}\n\nexport default router;\n", "import { db, prescriptionsTable, referralsTable, patientsTable } from \"@workspace/db\";\nimport { sql, eq, like, or } from \"drizzle-orm\";\nimport { randomBytes } from \"crypto\";\nimport { cairoParts } from \"./bookingSchedule\";\n\nexport function makeQrToken(): string {\n  return randomBytes(16).toString(\"hex\");\n}\n\n/** Clinic prefix that opens every patient code. */\nconst CLINIC_PREFIX = \"ACP\";\n\nfunction pad2(n: number): string {\n  return String(n).padStart(2, \"0\");\n}\n\nexport interface PatientCodeOptions {\n  /** Patient birth date as \"YYYY-MM-DD\". */\n  birthDate: string;\n  /**\n   * Appointment date/time when the code is created from an online booking.\n   * The booking hour (Cairo 24h) is taken from this when provided.\n   */\n  bookingAt?: Date | null;\n  /** Registration moment; defaults to now. Drives the visit date + fallback hour. */\n  registeredAt?: Date;\n}\n\n/**\n * Builds a human-readable, date-based patient code (clinic-requested format):\n *   ACP + <birth YYYYMMDD> + <visit YYYYMMDD> + <booking hour HH, Cairo 24h>\n * with each date written year-first (big-endian), e.g. born 1/9/1988, visit\n * 25/6/2026 at 06:00 \u2192 \"ACP198809012026062506\".\n *\n * The booking hour is the appointment hour for online bookings, otherwise the\n * current hour at registration. On the rare exact collision (e.g. twins booked\n * the same hour on the same day) a \"-N\" suffix is appended so the unique code\n * constraint always holds. Codes are derived from non-secret dates, so the\n * public lookup endpoint relies on the phone number + rate limiting for\n * protection (see threat model).\n */\nexport async function nextPatientCode(\n  opts: PatientCodeOptions,\n): Promise<string> {\n  const reg = opts.registeredAt ?? new Date();\n  const regParts = cairoParts(reg);\n  const [vy, vm, vd] = regParts.date.split(\"-\");\n  const visit = `${vy}${vm}${vd}`; // YYYYMMDD\n  const [by, bm, bd] = opts.birthDate.slice(0, 10).split(\"-\");\n  const birth = `${by}${bm}${bd}`; // YYYYMMDD\n  const hour = opts.bookingAt ? cairoParts(opts.bookingAt).hour : regParts.hour;\n  const base = `${CLINIC_PREFIX}${birth}${visit}${pad2(hour)}`;\n\n  const existing = await db\n    .select({ code: patientsTable.code })\n    .from(patientsTable)\n    .where(or(eq(patientsTable.code, base), like(patientsTable.code, `${base}-%`)));\n  if (existing.length === 0) return base;\n\n  let max = 1;\n  for (const r of existing) {\n    const m = /-(\\d+)$/.exec(r.code);\n    if (m) max = Math.max(max, Number(m[1]));\n  }\n  return `${base}-${max + 1}`;\n}\n\n/**\n * Recomputes a patient code after their birth date is corrected. Only the\n * birth-date segment of the code should change \u2014 the visit date and booking\n * hour reflect when the patient was registered and must stay the same.\n *\n * For codes already in the current format (ACP + birth YYYYMMDD + visit\n * YYYYMMDD + hour HH) the birth segment is replaced in place. For any legacy\n * or non-standard code the value is rebuilt from the patient's registration\n * timestamp. Uniqueness is preserved (excluding the patient's own row) with\n * the same \"-N\" suffix scheme used at creation.\n */\nexport async function patientCodeForBirthChange(opts: {\n  currentCode: string;\n  newBirthDate: string;\n  createdAt: Date;\n  patientId: string;\n}): Promise<string> {\n  const [by, bm, bd] = opts.newBirthDate.slice(0, 10).split(\"-\");\n  const newBirth = `${by}${bm}${bd}`; // YYYYMMDD\n\n  let base: string;\n  const m = /^([A-Za-z]+)(\\d+)(?:-\\d+)?$/.exec(opts.currentCode);\n  if (m && m[2].length === 18) {\n    // Current format: keep prefix + visit(8) + hour(2), swap birth(8).\n    base = `${m[1]}${newBirth}${m[2].slice(8)}`;\n  } else {\n    // Legacy/non-standard code: rebuild from the registration moment.\n    const regParts = cairoParts(opts.createdAt);\n    const [vy, vm, vd] = regParts.date.split(\"-\");\n    base = `${CLINIC_PREFIX}${newBirth}${vy}${vm}${vd}${pad2(regParts.hour)}`;\n  }\n\n  const existing = await db\n    .select({ id: patientsTable.id, code: patientsTable.code })\n    .from(patientsTable)\n    .where(\n      or(eq(patientsTable.code, base), like(patientsTable.code, `${base}-%`)),\n    );\n  const others = existing.filter((r) => r.id !== opts.patientId);\n  if (others.length === 0) return base;\n\n  let max = 1;\n  for (const r of others) {\n    const mm = /-(\\d+)$/.exec(r.code);\n    if (mm) max = Math.max(max, Number(mm[1]));\n  }\n  return `${base}-${max + 1}`;\n}\n\nexport async function nextPrescriptionCode(): Promise<string> {\n  const [row] = await db\n    .select({\n      max: sql<number>`COALESCE(MAX(NULLIF(REGEXP_REPLACE(${prescriptionsTable.code}, '\\\\D', '', 'g'), '')::int), 0)`,\n    })\n    .from(prescriptionsTable);\n  const next = Number(row?.max ?? 0) + 1;\n  return `RX-${String(next).padStart(5, \"0\")}`;\n}\n\nexport async function nextReferralCode(): Promise<string> {\n  const [row] = await db\n    .select({\n      max: sql<number>`COALESCE(MAX(NULLIF(REGEXP_REPLACE(${referralsTable.code}, '\\\\D', '', 'g'), '')::int), 0)`,\n    })\n    .from(referralsTable);\n  const next = Number(row?.max ?? 0) + 1;\n  return `REF-${String(next).padStart(5, \"0\")}`;\n}\n\nexport function ageInMonths(birthDate: string | Date): number {\n  const birth =\n    typeof birthDate === \"string\" ? new Date(birthDate) : birthDate;\n  const now = new Date();\n  const months =\n    (now.getFullYear() - birth.getFullYear()) * 12 +\n    (now.getMonth() - birth.getMonth());\n  return Math.max(0, months);\n}\n", "// Shared booking-schedule logic used by both the public booking/availability\n// routes and the admin Website Control Panel. Keeping these helpers in one place\n// prevents the public-site availability rules from drifting away from the\n// admin-side \"affected appointments\" warning that reuses the same rules.\n\nimport { eq } from \"drizzle-orm\";\nimport { db, siteSettingsTable } from \"@workspace/db\";\n\nexport const CAIRO_TZ = \"Africa/Cairo\";\n// Default gap (minutes) between consecutive bookable slots when the stored\n// schedule doesn't specify one. Admin-configurable via site_settings.\nexport const DEFAULT_SLOT_MINUTES = 15;\nexport const MIN_SLOT_MINUTES = 5;\nexport const MAX_SLOT_MINUTES = 120;\n\n// Admin-configurable booking schedule (stored in site_settings).\nexport type BookingSchedule = {\n  openDays: number[]; // JS getDay(): 0 = Sunday \u2026 6 = Saturday\n  startTime: string; // \"HH:MM\"\n  endTime: string; // \"HH:MM\"\n  closedDates: string[]; // [\"YYYY-MM-DD\"]\n  slotMinutes: number; // gap between consecutive slots, in minutes\n};\n\nexport const DEFAULT_BOOKING_SCHEDULE: BookingSchedule = {\n  openDays: [0, 1, 2, 3, 4, 5, 6],\n  startTime: \"16:00\",\n  endTime: \"21:00\",\n  closedDates: [],\n  slotMinutes: DEFAULT_SLOT_MINUTES,\n};\n\nconst HM_RE = /^\\d{1,2}:\\d{2}$/;\nconst DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n// Normalize a (possibly partial/legacy) stored schedule into a safe schedule.\nexport function normalizeSchedule(\n  bs:\n    | {\n        openDays?: unknown;\n        startTime?: unknown;\n        endTime?: unknown;\n        closedDates?: unknown;\n        slotMinutes?: unknown;\n      }\n    | null\n    | undefined,\n): BookingSchedule {\n  if (!bs) return DEFAULT_BOOKING_SCHEDULE;\n  const openDays = Array.isArray(bs.openDays)\n    ? bs.openDays.filter(\n        (d): d is number => Number.isInteger(d) && d >= 0 && d <= 6,\n      )\n    : DEFAULT_BOOKING_SCHEDULE.openDays;\n  const slotMinutes =\n    typeof bs.slotMinutes === \"number\" &&\n    Number.isInteger(bs.slotMinutes) &&\n    bs.slotMinutes >= MIN_SLOT_MINUTES &&\n    bs.slotMinutes <= MAX_SLOT_MINUTES\n      ? bs.slotMinutes\n      : DEFAULT_SLOT_MINUTES;\n  return {\n    openDays,\n    startTime:\n      typeof bs.startTime === \"string\" && HM_RE.test(bs.startTime)\n        ? bs.startTime\n        : DEFAULT_BOOKING_SCHEDULE.startTime,\n    endTime:\n      typeof bs.endTime === \"string\" && HM_RE.test(bs.endTime)\n        ? bs.endTime\n        : DEFAULT_BOOKING_SCHEDULE.endTime,\n    closedDates: Array.isArray(bs.closedDates)\n      ? bs.closedDates.filter(\n          (d): d is string => typeof d === \"string\" && DATE_RE.test(d),\n        )\n      : [],\n    slotMinutes,\n  };\n}\n\nexport function parseHM(s: string): number {\n  const [h, m] = s.split(\":\");\n  return Number(h) * 60 + Number(m);\n}\n\n// Day-of-week (0 = Sunday \u2026 6 = Saturday) for a calendar date, TZ-independent.\nexport function dayOfWeek(dateIso: string): number {\n  return new Date(`${dateIso}T12:00:00Z`).getUTCDay();\n}\n\nexport function isWorkingDate(\n  dateIso: string,\n  schedule: BookingSchedule,\n): boolean {\n  if (schedule.closedDates.includes(dateIso)) return false;\n  return schedule.openDays.includes(dayOfWeek(dateIso));\n}\n\n// Arabic day names indexed by getDay(); displayed in Arabic week order (Sat\u2192Fri).\nconst AR_DAY_NAMES = [\n  \"\u0627\u0644\u0623\u062D\u062F\",\n  \"\u0627\u0644\u0625\u062B\u0646\u064A\u0646\",\n  \"\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621\",\n  \"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621\",\n  \"\u0627\u0644\u062E\u0645\u064A\u0633\",\n  \"\u0627\u0644\u062C\u0645\u0639\u0629\",\n  \"\u0627\u0644\u0633\u0628\u062A\",\n];\nconst AR_WEEK_ORDER = [6, 0, 1, 2, 3, 4, 5];\n\nexport type WorkingHour = {\n  day: string;\n  from: string | null;\n  to: string | null;\n  label?: string;\n};\n\n// Build the human-readable working-hours list from the booking schedule so the\n// public site display can never drift from the actual bookable days/hours.\nexport function deriveWorkingHours(schedule: BookingSchedule): WorkingHour[] {\n  const open = new Set(schedule.openDays);\n  const { startTime: from, endTime: to } = schedule;\n  if (open.size === 0) {\n    return [{ day: \"\u0645\u063A\u0644\u0642\u0629 \u0645\u0624\u0642\u062A\u0627\u064B\", from: null, to: null, label: \"\u0645\u063A\u0644\u0642\" }];\n  }\n  if (open.size === 7) {\n    return [{ day: \"\u0643\u0644 \u0623\u064A\u0627\u0645 \u0627\u0644\u0623\u0633\u0628\u0648\u0639\", from, to }];\n  }\n  const result: WorkingHour[] = [];\n  let i = 0;\n  while (i < AR_WEEK_ORDER.length) {\n    if (!open.has(AR_WEEK_ORDER[i])) {\n      i++;\n      continue;\n    }\n    let j = i;\n    while (j + 1 < AR_WEEK_ORDER.length && open.has(AR_WEEK_ORDER[j + 1])) j++;\n    const startDay = AR_DAY_NAMES[AR_WEEK_ORDER[i]];\n    const endDay = AR_DAY_NAMES[AR_WEEK_ORDER[j]];\n    result.push({ day: i === j ? startDay : `${startDay} - ${endDay}`, from, to });\n    i = j + 1;\n  }\n  const closed = AR_WEEK_ORDER.filter((d) => !open.has(d)).map(\n    (d) => AR_DAY_NAMES[d],\n  );\n  if (closed.length > 0) {\n    result.push({ day: closed.join(\"\u060C \"), from: null, to: null, label: \"\u0645\u063A\u0644\u0642\" });\n  }\n  return result;\n}\n\n// Returns the Cairo wall-clock {date: YYYY-MM-DD, hh, mm} for a given Date.\nexport function cairoParts(d: Date): {\n  date: string;\n  hour: number;\n  minute: number;\n} {\n  const fmt = new Intl.DateTimeFormat(\"en-CA\", {\n    timeZone: CAIRO_TZ,\n    year: \"numeric\",\n    month: \"2-digit\",\n    day: \"2-digit\",\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    hour12: false,\n  });\n  const parts = Object.fromEntries(\n    fmt.formatToParts(d).map((p) => [p.type, p.value]),\n  );\n  return {\n    date: `${parts.year}-${parts.month}-${parts.day}`,\n    hour: Number(parts.hour),\n    minute: Number(parts.minute),\n  };\n}\n\n// Build the canonical slot ISO from a Cairo-local date+hour+minute.\n// Egypt has been on permanent +02:00/+03:00; we use the system to get the offset for safety.\nexport function cairoSlotIso(\n  dateIso: string,\n  hour: number,\n  minute: number,\n): string {\n  const marker = new Date(`${dateIso}T12:00:00Z`);\n  const cairoMidnight = new Date(\n    new Date(marker.toLocaleString(\"en-US\", { timeZone: CAIRO_TZ })).getTime(),\n  );\n  const utcMidnight = new Date(marker.toLocaleString(\"en-US\", { timeZone: \"UTC\" }));\n  const offsetMin = Math.round(\n    (cairoMidnight.getTime() - utcMidnight.getTime()) / 60000,\n  );\n  const sign = offsetMin >= 0 ? \"+\" : \"-\";\n  const oh = String(Math.floor(Math.abs(offsetMin) / 60)).padStart(2, \"0\");\n  const om = String(Math.abs(offsetMin) % 60).padStart(2, \"0\");\n  const hh = String(hour).padStart(2, \"0\");\n  const mm = String(minute).padStart(2, \"0\");\n  return `${dateIso}T${hh}:${mm}:00${sign}${oh}:${om}`;\n}\n\nexport function generateDaySlots(\n  dateIso: string,\n  schedule: BookingSchedule,\n): string[] {\n  if (!isWorkingDate(dateIso, schedule)) return [];\n  const start = parseHM(schedule.startTime);\n  const end = parseHM(schedule.endTime);\n  const slots: string[] = [];\n  for (let t = start; t < end; t += schedule.slotMinutes) {\n    slots.push(cairoSlotIso(dateIso, Math.floor(t / 60), t % 60));\n  }\n  return slots;\n}\n\n// Validate that a Date instance falls on a legitimate Cairo slot grid.\nexport function isValidSlot(\n  d: Date,\n  schedule: BookingSchedule,\n): { ok: boolean; reason?: string } {\n  if (Number.isNaN(d.getTime())) return { ok: false, reason: \"\u062A\u0627\u0631\u064A\u062E \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\" };\n  const { date, hour, minute } = cairoParts(d);\n  if (!isWorkingDate(date, schedule)) {\n    return { ok: false, reason: \"\u0627\u0644\u0639\u064A\u0627\u062F\u0629 \u0645\u063A\u0644\u0642\u0629 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u064A\u0648\u0645\" };\n  }\n  const start = parseHM(schedule.startTime);\n  const end = parseHM(schedule.endTime);\n  const t = hour * 60 + minute;\n  if (t < start || t >= end) {\n    return { ok: false, reason: \"\u0627\u0644\u0645\u0648\u0639\u062F \u062E\u0627\u0631\u062C \u0633\u0627\u0639\u0627\u062A \u0627\u0644\u0639\u0645\u0644\" };\n  }\n  if ((t - start) % schedule.slotMinutes !== 0) {\n    return {\n      ok: false,\n      reason: `\u0627\u0644\u0645\u0648\u0639\u062F \u0644\u064A\u0633 \u0639\u0644\u0649 \u0641\u062A\u0631\u0629 ${schedule.slotMinutes} \u062F\u0642\u064A\u0642\u0629`,\n    };\n  }\n  return { ok: true };\n}\n\nexport type ScheduleConflict = \"closed_day\" | \"outside_hours\";\n\n// Classify why an existing appointment no longer fits a (proposed) schedule.\n// Returns null when the appointment is still valid under the schedule.\n// Grid-misalignment is reported as \"outside_hours\" (the only two buckets the\n// admin warning surfaces).\nexport function scheduleConflictReason(\n  d: Date,\n  schedule: BookingSchedule,\n): ScheduleConflict | null {\n  if (Number.isNaN(d.getTime())) return null;\n  const { date } = cairoParts(d);\n  if (!isWorkingDate(date, schedule)) return \"closed_day\";\n  if (isValidSlot(d, schedule).ok) return null;\n  return \"outside_hours\";\n}\n\n// Load the current saved booking schedule from site_settings. Falls back to the\n// default schedule when settings are missing. Centralized here so the public\n// availability routes, the admin warning, and the appointments flag all read the\n// exact same schedule.\nexport async function loadBookingSchedule(): Promise<BookingSchedule> {\n  const [settings] = await db\n    .select({ bookingSchedule: siteSettingsTable.bookingSchedule })\n    .from(siteSettingsTable)\n    .where(eq(siteSettingsTable.id, \"main\"))\n    .limit(1);\n  return settings\n    ? normalizeSchedule(settings.bookingSchedule)\n    : DEFAULT_BOOKING_SCHEDULE;\n}\n", "import { Router, type IRouter } from \"express\";\nimport { and, desc, eq, gte, isNull, lt, asc, sql } from \"drizzle-orm\";\nimport {\n  db,\n  appointmentsTable,\n  patientsTable,\n  examinationTypesTable,\n  paymentsTable,\n} from \"@workspace/db\";\nimport {\n  CreateAppointmentBody,\n  UpdateAppointmentBody,\n} from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser } from \"../lib/session\";\nimport { publish, sseHandler } from \"../lib/realtime\";\nimport {\n  loadBookingSchedule,\n  scheduleConflictReason,\n  cairoParts,\n  cairoSlotIso,\n  parseHM,\n  type BookingSchedule,\n} from \"../lib/bookingSchedule\";\n\n/** Start/end of the current local day \u2014 matches GET /appointments/today. */\nfunction todayWindow(): { start: Date; end: Date } {\n  const start = new Date();\n  start.setHours(0, 0, 0, 0);\n  const end = new Date(start);\n  end.setDate(end.getDate() + 1);\n  return { start, end };\n}\n\nfunction isToday(when: Date): boolean {\n  const { start, end } = todayWindow();\n  return when >= start && when < end;\n}\n\n// Drizzle transaction handle type (no public alias is exported).\ntype Tx = Parameters<Parameters<typeof db.transaction>[0]>[0];\n\n// Fixed namespace for the per-day queue-number advisory lock so it never\n// collides with other advisory locks in the app.\nconst QUEUE_LOCK_NS = 4271;\n\n/** Stable integer id for \"today\" used as the advisory-lock object id. */\nfunction dayLockId(): number {\n  const { start } = todayWindow();\n  return Math.floor(start.getTime() / 86_400_000);\n}\n\n/**\n * Serialize all daily queue-number assignment for the current day across\n * concurrent requests. `pg_advisory_xact_lock` is held until the surrounding\n * transaction commits, so the MAX()+1 read and the write that consumes that\n * number can't interleave with another booking/backfill.\n */\nasync function lockTodayQueue(tx: Tx): Promise<void> {\n  await tx.execute(\n    sql`select pg_advisory_xact_lock(${QUEUE_LOCK_NS}, ${dayLockId()})`,\n  );\n}\n\n/**\n * Current MAX(queueNumber) among today's appointments (not COUNT) so deletes\n * don't cause collisions. Call only while holding `lockTodayQueue(tx)`.\n */\nasync function maxTodayQueueNumber(tx: Tx): Promise<number> {\n  const { start, end } = todayWindow();\n  const [row] = await tx\n    .select({ max: sql<number | null>`max(${appointmentsTable.queueNumber})` })\n    .from(appointmentsTable)\n    .where(\n      and(\n        gte(appointmentsTable.scheduledAt, start),\n        lt(appointmentsTable.scheduledAt, end),\n      ),\n    );\n  return row?.max ?? 0;\n}\n\n/**\n * Assign waiting-list numbers to any of today's appointments that still lack\n * one (future bookings that have now rolled into today), in scheduled order,\n * continuing from the current daily max. Runs lazily when today's list loads.\n * The whole pass is serialized by the per-day advisory lock so two concurrent\n * GET /today calls can't hand out the same numbers.\n */\nexport async function backfillTodayQueueNumbers(): Promise<void> {\n  const { start, end } = todayWindow();\n  await db.transaction(async (tx) => {\n    await lockTodayQueue(tx);\n    const missing = await tx\n      .select({ id: appointmentsTable.id })\n      .from(appointmentsTable)\n      .where(\n        and(\n          gte(appointmentsTable.scheduledAt, start),\n          lt(appointmentsTable.scheduledAt, end),\n          isNull(appointmentsTable.queueNumber),\n        ),\n      )\n      .orderBy(\n        asc(appointmentsTable.scheduledAt),\n        asc(appointmentsTable.createdAt),\n      );\n    if (missing.length === 0) return;\n    let next = (await maxTodayQueueNumber(tx)) + 1;\n    for (const m of missing) {\n      await tx\n        .update(appointmentsTable)\n        .set({ queueNumber: next })\n        .where(eq(appointmentsTable.id, m.id));\n      next += 1;\n    }\n  });\n}\n\nfunction mapRow(\n  r: {\n    appointment: typeof appointmentsTable.$inferSelect;\n    patientName: string;\n    examinationTypeName?: string | null;\n    examinationTypeColor?: string | null;\n  },\n  schedule?: BookingSchedule,\n) {\n  return {\n    id: r.appointment.id,\n    patientId: r.appointment.patientId,\n    patientName: r.patientName,\n    scheduledAt: r.appointment.scheduledAt.toISOString(),\n    status: r.appointment.status,\n    examinationTypeId: r.appointment.examinationTypeId,\n    examinationTypeName: r.examinationTypeName ?? null,\n    examinationTypeColor: r.examinationTypeColor ?? null,\n    isEmergency: r.appointment.isEmergency,\n    queueNumber: r.appointment.queueNumber ?? null,\n    reason: r.appointment.reason,\n    notes: r.appointment.notes,\n    createdAt: r.appointment.createdAt.toISOString(),\n    // Only \"scheduled\" appointments are flagged \u2014 checked-in/completed ones are\n    // already in progress so their schedule fit no longer matters.\n    scheduleConflict:\n      schedule && r.appointment.status === \"scheduled\"\n        ? scheduleConflictReason(r.appointment.scheduledAt, schedule)\n        : null,\n  };\n}\n\nconst router: IRouter = Router();\n\nrouter.get(\"/appointments\", async (req, res): Promise<void> => {\n  const date =\n    typeof req.query.date === \"string\" ? req.query.date : undefined;\n  const status =\n    typeof req.query.status === \"string\" ? req.query.status : undefined;\n\n  const conds = [];\n  if (date) {\n    const start = new Date(date + \"T00:00:00.000Z\");\n    const end = new Date(start);\n    end.setUTCDate(end.getUTCDate() + 1);\n    conds.push(gte(appointmentsTable.scheduledAt, start));\n    conds.push(lt(appointmentsTable.scheduledAt, end));\n  }\n  if (status) {\n    conds.push(\n      eq(\n        appointmentsTable.status,\n        status as typeof appointmentsTable.status._.data,\n      ),\n    );\n  }\n\n  const [rows, schedule] = await Promise.all([\n    db\n      .select({\n        appointment: appointmentsTable,\n        patientName: patientsTable.fullName,\n        examinationTypeName: examinationTypesTable.name,\n        examinationTypeColor: examinationTypesTable.color,\n      })\n      .from(appointmentsTable)\n      .innerJoin(\n        patientsTable,\n        eq(appointmentsTable.patientId, patientsTable.id),\n      )\n      .leftJoin(\n        examinationTypesTable,\n        eq(appointmentsTable.examinationTypeId, examinationTypesTable.id),\n      )\n      .where(conds.length ? and(...conds) : undefined)\n      .orderBy(\n        desc(appointmentsTable.isEmergency),\n        asc(appointmentsTable.queueNumber),\n        asc(appointmentsTable.scheduledAt),\n      ),\n    loadBookingSchedule(),\n  ]);\n\n  res.json(rows.map((r) => mapRow(r, schedule)));\n});\n\nrouter.post(\"/appointments\", async (req, res): Promise<void> => {\n  const parsed = CreateAppointmentBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  // InstaPay must carry a receipt image so the manager can verify the transfer.\n  if (\n    parsed.data.payment?.method === \"instapay\" &&\n    !parsed.data.payment.receiptUrl\n  ) {\n    res\n      .status(400)\n      .json({ error: \"\u064A\u062C\u0628 \u0625\u0631\u0641\u0627\u0642 \u0635\u0648\u0631\u0629 \u0625\u064A\u0635\u0627\u0644 \u0627\u0644\u062A\u062D\u0648\u064A\u0644 \u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0625\u0646\u0633\u062A\u0627\u0628\u0627\u064A\" });\n    return;\n  }\n  // Receipt must be an object-storage path (prevents stored XSS via arbitrary URLs).\n  if (\n    parsed.data.payment?.receiptUrl &&\n    !parsed.data.payment.receiptUrl.startsWith(\"/objects/\")\n  ) {\n    res.status(400).json({ error: \"\u0645\u0633\u0627\u0631 \u0635\u0648\u0631\u0629 \u0627\u0644\u0625\u064A\u0635\u0627\u0644 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\" });\n    return;\n  }\n  const user = await getCurrentUser(req);\n  const scheduledAt = new Date(parsed.data.scheduledAt);\n  // Reception (nurse) is now allowed to set exam type + emergency at booking.\n  const baseValues = {\n    patientId: parsed.data.patientId,\n    scheduledAt,\n    examinationTypeId: parsed.data.examinationTypeId ?? null,\n    isEmergency: parsed.data.isEmergency ?? false,\n    reason: parsed.data.reason ?? null,\n    notes: parsed.data.notes ?? null,\n  };\n  // Same-day bookings get their waiting-list number immediately; future bookings\n  // stay null until their day (backfilled on first GET /today). The lock + MAX\n  // read + insert run in one transaction so concurrent bookings can't reuse a\n  // number.\n  const row = isToday(scheduledAt)\n    ? await db.transaction(async (tx) => {\n        await lockTodayQueue(tx);\n        const queueNumber = (await maxTodayQueueNumber(tx)) + 1;\n        const [r] = await tx\n          .insert(appointmentsTable)\n          .values({ ...baseValues, queueNumber })\n          .returning();\n        return r;\n      })\n    : (\n        await db\n          .insert(appointmentsTable)\n          .values({ ...baseValues, queueNumber: null })\n          .returning()\n      )[0];\n  const [enriched] = await db\n    .select({\n      patientName: patientsTable.fullName,\n      examinationTypeName: examinationTypesTable.name,\n      examinationTypeColor: examinationTypesTable.color,\n    })\n    .from(appointmentsTable)\n    .innerJoin(\n      patientsTable,\n      eq(appointmentsTable.patientId, patientsTable.id),\n    )\n    .leftJoin(\n      examinationTypesTable,\n      eq(appointmentsTable.examinationTypeId, examinationTypesTable.id),\n    )\n    .where(eq(appointmentsTable.id, row.id));\n  // Optional payment recorded at booking time. Created as `pending` (the schema\n  // default) so it surfaces in the payments screen for the manager to approve.\n  // Allowed for any booking staff so reception can collect at the front desk.\n  if (parsed.data.payment) {\n    const [pay] = await db\n      .insert(paymentsTable)\n      .values({\n        patientId: parsed.data.patientId,\n        amount: parsed.data.payment.amount,\n        method: parsed.data.payment.method,\n        reference: parsed.data.payment.reference ?? null,\n        notes: parsed.data.payment.notes ?? null,\n        receiptUrl: parsed.data.payment.receiptUrl ?? null,\n      })\n      .returning();\n    await logAudit({\n      userId: user.id,\n      action: \"payment.create\",\n      entity: \"payment\",\n      entityId: pay.id,\n      meta: { amount: pay.amount, method: pay.method, source: \"booking\" },\n    });\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"appointment.create\",\n    entity: \"appointment\",\n    entityId: row.id,\n  });\n  // Nudge connected staff (doctor's today list) to refetch immediately.\n  publish(\"appointments\");\n  res.status(201).json(\n    mapRow({\n      appointment: row,\n      patientName: enriched?.patientName ?? \"\",\n      examinationTypeName: enriched?.examinationTypeName ?? null,\n      examinationTypeColor: enriched?.examinationTypeColor ?? null,\n    }),\n  );\n});\n\n// SSE stream of appointment-change nudges for any authenticated staff member.\n// Declared before \"/appointments/:id\" so the literal path wins over the param.\nrouter.get(\"/appointments/events\", sseHandler(\"appointments\"));\n\nrouter.get(\"/appointments/today\", async (_req, res): Promise<void> => {\n  const { start, end } = todayWindow();\n  // Backfill numbers for any future bookings that have rolled into today.\n  await backfillTodayQueueNumbers();\n\n  const [rows, schedule] = await Promise.all([\n    db\n      .select({\n        appointment: appointmentsTable,\n        patientName: patientsTable.fullName,\n        examinationTypeName: examinationTypesTable.name,\n        examinationTypeColor: examinationTypesTable.color,\n      })\n      .from(appointmentsTable)\n      .innerJoin(\n        patientsTable,\n        eq(appointmentsTable.patientId, patientsTable.id),\n      )\n      .leftJoin(\n        examinationTypesTable,\n        eq(appointmentsTable.examinationTypeId, examinationTypesTable.id),\n      )\n      .where(\n        and(\n          gte(appointmentsTable.scheduledAt, start),\n          lt(appointmentsTable.scheduledAt, end),\n        ),\n      )\n      .orderBy(\n        desc(appointmentsTable.isEmergency),\n        asc(appointmentsTable.queueNumber),\n        asc(appointmentsTable.scheduledAt),\n      ),\n    loadBookingSchedule(),\n  ]);\n  res.json(rows.map((r) => mapRow(r, schedule)));\n});\n\n// Next suggested booking time for staff: clinic work-start when the day is\n// empty, otherwise the last booked time + the configured slot gap. Declared\n// before \"/appointments/:id\" so the literal path wins over the param.\nrouter.get(\n  \"/appointments/suggested-slot\",\n  async (req, res): Promise<void> => {\n    const dateIso =\n      typeof req.query.date === \"string\" &&\n      /^\\d{4}-\\d{2}-\\d{2}$/.test(req.query.date)\n        ? req.query.date\n        : cairoParts(new Date()).date;\n    const schedule = await loadBookingSchedule();\n    // Cairo day window for the requested date.\n    const dayStart = new Date(cairoSlotIso(dateIso, 0, 0));\n    const dayEnd = new Date(dayStart.getTime() + 86_400_000);\n    const rows = await db\n      .select({ scheduledAt: appointmentsTable.scheduledAt })\n      .from(appointmentsTable)\n      .where(\n        and(\n          gte(appointmentsTable.scheduledAt, dayStart),\n          lt(appointmentsTable.scheduledAt, dayEnd),\n        ),\n      );\n    const startMin = parseHM(schedule.startTime);\n    const endMin = parseHM(schedule.endTime);\n    let suggestedMin = startMin;\n    if (rows.length > 0) {\n      let lastMin = -1;\n      for (const r of rows) {\n        const { hour, minute } = cairoParts(r.scheduledAt);\n        lastMin = Math.max(lastMin, hour * 60 + minute);\n      }\n      suggestedMin = Math.max(startMin, lastMin + schedule.slotMinutes);\n    }\n    // The suggestion is \"full\" once it would land at/after clinic closing time.\n    const full = suggestedMin >= endMin;\n    // Never suggest a time past clinic closing (endTime). Also guard the 24h\n    // wall-clock so the time input always renders.\n    suggestedMin = Math.min(suggestedMin, endMin, 23 * 60 + 59);\n    const hh = String(Math.floor(suggestedMin / 60)).padStart(2, \"0\");\n    const mm = String(suggestedMin % 60).padStart(2, \"0\");\n    res.json({\n      time: `${hh}:${mm}`,\n      startTime: schedule.startTime,\n      endTime: schedule.endTime,\n      slotMinutes: schedule.slotMinutes,\n      full,\n    });\n  },\n);\n\nrouter.get(\"/appointments/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const [r] = await db\n    .select({\n      appointment: appointmentsTable,\n      patientName: patientsTable.fullName,\n      examinationTypeName: examinationTypesTable.name,\n      examinationTypeColor: examinationTypesTable.color,\n    })\n    .from(appointmentsTable)\n    .innerJoin(\n      patientsTable,\n      eq(appointmentsTable.patientId, patientsTable.id),\n    )\n    .leftJoin(\n      examinationTypesTable,\n      eq(appointmentsTable.examinationTypeId, examinationTypesTable.id),\n    )\n    .where(eq(appointmentsTable.id, id));\n  if (!r) {\n    res.status(404).json({ error: \"Appointment not found\" });\n    return;\n  }\n  res.json(mapRow(r));\n});\n\nrouter.patch(\"/appointments/:id\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const id = String(req.params.id);\n  const parsed = UpdateAppointmentBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const updates: Record<string, unknown> = {};\n  if (parsed.data.scheduledAt)\n    updates.scheduledAt = new Date(parsed.data.scheduledAt);\n  if (parsed.data.status) updates.status = parsed.data.status;\n  if (parsed.data.reason !== undefined) updates.reason = parsed.data.reason;\n  if (parsed.data.notes !== undefined) updates.notes = parsed.data.notes;\n  // Reception (nurse) is now allowed to set exam type + emergency.\n  if (parsed.data.examinationTypeId !== undefined)\n    updates.examinationTypeId = parsed.data.examinationTypeId;\n  if (parsed.data.isEmergency !== undefined)\n    updates.isEmergency = parsed.data.isEmergency;\n\n  const [row] = await db\n    .update(appointmentsTable)\n    .set(updates)\n    .where(eq(appointmentsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Appointment not found\" });\n    return;\n  }\n  const [enriched] = await db\n    .select({\n      patientName: patientsTable.fullName,\n      examinationTypeName: examinationTypesTable.name,\n      examinationTypeColor: examinationTypesTable.color,\n    })\n    .from(appointmentsTable)\n    .innerJoin(\n      patientsTable,\n      eq(appointmentsTable.patientId, patientsTable.id),\n    )\n    .leftJoin(\n      examinationTypesTable,\n      eq(appointmentsTable.examinationTypeId, examinationTypesTable.id),\n    )\n    .where(eq(appointmentsTable.id, id));\n  await logAudit({\n    userId: user.id,\n    action: \"appointment.update\",\n    entity: \"appointment\",\n    entityId: id,\n    meta: parsed.data,\n  });\n  publish(\"appointments\");\n  res.json(\n    mapRow({\n      appointment: row,\n      patientName: enriched?.patientName ?? \"\",\n      examinationTypeName: enriched?.examinationTypeName ?? null,\n      examinationTypeColor: enriched?.examinationTypeColor ?? null,\n    }),\n  );\n});\n\n// Hard-delete an appointment. Section-gated at the mount (appointments:edit).\n// Safe: visits.appointmentId is ON DELETE SET NULL and queue_entries.appointmentId\n// has no FK, so removing the booking never orphans a clinical record.\nrouter.delete(\"/appointments/:id\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const id = String(req.params.id);\n  const [row] = await db\n    .delete(appointmentsTable)\n    .where(eq(appointmentsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"\u0627\u0644\u0645\u0648\u0639\u062F \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n    return;\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"appointment.delete\",\n    entity: \"appointment\",\n    entityId: id,\n  });\n  publish(\"appointments\");\n  res.status(204).end();\n});\n\nexport default router;\n", "import type { Request, Response } from \"express\";\nimport { randomUUID } from \"node:crypto\";\nimport type { Notification, PoolClient } from \"pg\";\nimport { pool } from \"@workspace/db\";\nimport { logger } from \"./logger\";\n\n/**\n * Server-Sent-Events hub for the waiting-room handoff, with a Postgres\n * LISTEN/NOTIFY bridge so it keeps working across multiple API instances.\n *\n * It is intentionally tiny and stateless beyond the open connections: the REST\n * endpoints remain the single source of truth. A published event carries no\n * client-facing payload \u2014 it is only a \"something changed, refetch now\" nudge so\n * a connected client can invalidate the matching query immediately instead of\n * waiting for its polling interval. Clients still poll on a slow interval as a\n * fallback, so a dropped connection (or an unavailable shared channel) degrades\n * gracefully rather than going stale.\n *\n * Cross-instance delivery: `publish()` always fans out to the clients connected\n * to *this* process immediately (lowest latency, and it keeps working even if\n * Postgres pub/sub is down), then emits a `pg_notify` so every *other* instance\n * delivers the same nudge to its own clients. Each notification is tagged with a\n * per-process origin id so an instance ignores the echo of its own publish and\n * never double-delivers locally.\n */\n\nexport type RealtimeTopic = \"display\" | \"notifications\" | \"appointments\";\n\n/** Postgres channel used to broadcast nudges between instances. */\nconst CHANNEL = \"realtime_events\";\n/** Unique per-process id so we can ignore the echo of our own notifications. */\nconst ORIGIN = randomUUID();\n\nfunction isRealtimeTopic(value: unknown): value is RealtimeTopic {\n  return (\n    value === \"display\" ||\n    value === \"notifications\" ||\n    value === \"appointments\"\n  );\n}\n\ntype Client = {\n  res: Response;\n  topics: Set<RealtimeTopic>;\n};\n\nconst clients = new Set<Client>();\n\n/** Write a nudge frame to every client of this process subscribed to `topic`. */\nfunction deliverLocal(topic: RealtimeTopic): void {\n  const frame = `event: ${topic}\\ndata: {}\\n\\n`;\n  for (const client of clients) {\n    if (client.topics.has(topic)) {\n      try {\n        client.res.write(frame);\n      } catch {\n        // A broken pipe will surface on the next heartbeat / close handler,\n        // which removes the client. Ignore the transient write error here.\n      }\n    }\n  }\n}\n\n/**\n * Publish a change nudge. Delivers to this instance's clients immediately and\n * broadcasts to every other instance via Postgres NOTIFY. If the NOTIFY fails\n * (shared channel unavailable), local clients are unaffected and remote clients\n * fall back to their polling interval.\n */\nexport function publish(topic: RealtimeTopic): void {\n  deliverLocal(topic);\n\n  const payload = JSON.stringify({ topic, origin: ORIGIN });\n  pool.query(\"SELECT pg_notify($1, $2)\", [CHANNEL, payload]).catch((err) => {\n    logger.warn(\n      { err, topic },\n      \"realtime: pg_notify failed; cross-instance nudge skipped (clients fall back to polling)\",\n    );\n  });\n}\n\n// --- Cross-instance listener -------------------------------------------------\n\nlet listenClient: PoolClient | null = null;\nlet reconnectTimer: ReturnType<typeof setTimeout> | null = null;\nlet started = false;\n\nfunction scheduleReconnect(): void {\n  if (reconnectTimer) return;\n  if (listenClient) {\n    try {\n      // Destroy the connection so the pool discards it rather than reusing a\n      // client that still carries our notification listener.\n      listenClient.release(true);\n    } catch {\n      // Already gone; nothing to do.\n    }\n    listenClient = null;\n  }\n  reconnectTimer = setTimeout(() => {\n    reconnectTimer = null;\n    void connectListener();\n  }, 2000);\n}\n\nasync function connectListener(): Promise<void> {\n  let client: PoolClient;\n  try {\n    client = await pool.connect();\n  } catch (err) {\n    logger.warn(\n      { err },\n      \"realtime: listener connect failed; retrying (polling fallback still applies)\",\n    );\n    scheduleReconnect();\n    return;\n  }\n\n  client.on(\"notification\", (msg: Notification) => {\n    if (msg.channel !== CHANNEL || !msg.payload) return;\n    try {\n      const parsed = JSON.parse(msg.payload) as {\n        topic?: unknown;\n        origin?: unknown;\n      };\n      // Ignore the echo of our own publish \u2014 already delivered locally.\n      if (parsed.origin === ORIGIN) return;\n      if (isRealtimeTopic(parsed.topic)) {\n        deliverLocal(parsed.topic);\n      }\n    } catch (err) {\n      logger.warn({ err }, \"realtime: ignored malformed notification payload\");\n    }\n  });\n\n  client.on(\"error\", (err: Error) => {\n    logger.warn(\n      { err },\n      \"realtime: listener connection error; reconnecting\",\n    );\n    scheduleReconnect();\n  });\n\n  try {\n    await client.query(`LISTEN ${CHANNEL}`);\n  } catch (err) {\n    logger.warn({ err }, \"realtime: LISTEN failed; reconnecting\");\n    try {\n      client.release(true);\n    } catch {\n      // ignore\n    }\n    scheduleReconnect();\n    return;\n  }\n\n  listenClient = client;\n  logger.info(\"realtime: cross-instance listener connected\");\n}\n\n/**\n * Open the Postgres listener that delivers nudges published by other instances.\n * Safe to call once at boot; it reconnects on error and never throws. Local\n * single-instance delivery works without it, so failures here are non-fatal.\n */\nexport function startRealtimeBridge(): void {\n  if (started) return;\n  started = true;\n  void connectListener();\n}\n\n/**\n * Express handler factory that turns the request into an SSE stream subscribed\n * to the given topics. Sends a periodic heartbeat comment so idle proxies keep\n * the connection open and a dead socket is detected promptly.\n */\nexport function sseHandler(...topics: RealtimeTopic[]) {\n  return (req: Request, res: Response): void => {\n    res.set({\n      \"Content-Type\": \"text/event-stream; charset=utf-8\",\n      \"Cache-Control\": \"no-cache, no-transform\",\n      Connection: \"keep-alive\",\n      // Disable proxy buffering so events flush immediately.\n      \"X-Accel-Buffering\": \"no\",\n    });\n    res.flushHeaders();\n    // Hint the browser to reconnect quickly if the stream drops.\n    res.write(\"retry: 3000\\n\\n\");\n\n    const client: Client = { res, topics: new Set(topics) };\n    clients.add(client);\n\n    const heartbeat = setInterval(() => {\n      try {\n        res.write(\": ping\\n\\n\");\n      } catch {\n        // Cleaned up by the close handler below.\n      }\n    }, 25_000);\n\n    req.on(\"close\", () => {\n      clearInterval(heartbeat);\n      clients.delete(client);\n    });\n  };\n}\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc, and, gte, lte, type SQL } from \"drizzle-orm\";\nimport {\n  db,\n  visitsTable,\n  patientsTable,\n  prescriptionsTable,\n  prescriptionItemsTable,\n  growthRecordsTable,\n  appointmentsTable,\n} from \"@workspace/db\";\nimport {\n  CreateVisitBody,\n  UpdateVisitBody,\n  ListVisitsQueryParams,\n} from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser } from \"../lib/session\";\n\nconst router: IRouter = Router();\n\nfunction parseDateBoundary(input: string, end: boolean): Date | null {\n  // Accept \"YYYY-MM-DD\" (interpreted as UTC day boundary) or full ISO timestamps\n  if (/^\\d{4}-\\d{2}-\\d{2}$/.test(input)) {\n    return new Date(`${input}T${end ? \"23:59:59.999\" : \"00:00:00.000\"}Z`);\n  }\n  const d = new Date(input);\n  return isNaN(d.getTime()) ? null : d;\n}\n\nrouter.get(\"/visits\", async (req, res): Promise<void> => {\n  const parsed = ListVisitsQueryParams.safeParse(req.query);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const { patientId, doctorId, from, to } = parsed.data;\n\n  const conds: SQL[] = [];\n  if (patientId) conds.push(eq(visitsTable.patientId, patientId));\n  if (doctorId) conds.push(eq(visitsTable.doctorId, doctorId));\n  if (from) {\n    const d = parseDateBoundary(from, false);\n    if (!d) {\n      res.status(400).json({ error: \"invalid 'from' date\" });\n      return;\n    }\n    conds.push(gte(visitsTable.visitedAt, d));\n  }\n  if (to) {\n    const d = parseDateBoundary(to, true);\n    if (!d) {\n      res.status(400).json({ error: \"invalid 'to' date\" });\n      return;\n    }\n    conds.push(lte(visitsTable.visitedAt, d));\n  }\n\n  const rows = await db\n    .select({\n      visit: visitsTable,\n      patientName: patientsTable.fullName,\n    })\n    .from(visitsTable)\n    .innerJoin(patientsTable, eq(visitsTable.patientId, patientsTable.id))\n    .where(conds.length ? and(...conds) : undefined)\n    .orderBy(desc(visitsTable.visitedAt));\n\n  res.json(\n    rows.map((r) => ({\n      id: r.visit.id,\n      patientId: r.visit.patientId,\n      patientName: r.patientName,\n      appointmentId: r.visit.appointmentId,\n      diagnosis: r.visit.diagnosis,\n      notes: r.visit.notes,\n      nursingAssessment: r.visit.nursingAssessment,\n      doctorReport: r.visit.doctorReport ?? null,\n      visitedAt: r.visit.visitedAt.toISOString(),\n    })),\n  );\n});\n\nrouter.post(\"/visits\", async (req, res): Promise<void> => {\n  const parsed = CreateVisitBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const user = await getCurrentUser(req);\n  // Nurses can record nursing assessments only \u2014 diagnosis, medical notes,\n  // and the doctor's report are reserved for doctors/admins.\n  const isNurse = user.role === \"nurse\";\n  const [row] = await db\n    .insert(visitsTable)\n    .values({\n      patientId: parsed.data.patientId,\n      appointmentId: parsed.data.appointmentId ?? null,\n      diagnosis: isNurse ? null : (parsed.data.diagnosis ?? null),\n      notes: isNurse ? null : (parsed.data.notes ?? null),\n      nursingAssessment: parsed.data.nursingAssessment ?? null,\n      doctorReport: isNurse ? null : (parsed.data.doctorReport ?? null),\n      doctorId: user.role === \"doctor\" ? user.id : null,\n    })\n    .returning();\n\n  if (parsed.data.appointmentId) {\n    await db\n      .update(appointmentsTable)\n      .set({ status: \"completed\" })\n      .where(eq(appointmentsTable.id, parsed.data.appointmentId));\n  }\n\n  const [patient] = await db\n    .select({ fullName: patientsTable.fullName })\n    .from(patientsTable)\n    .where(eq(patientsTable.id, row.patientId));\n\n  await logAudit({\n    userId: user.id,\n    action: \"visit.create\",\n    entity: \"visit\",\n    entityId: row.id,\n  });\n\n  res.status(201).json({\n    id: row.id,\n    patientId: row.patientId,\n    patientName: patient?.fullName ?? \"\",\n    appointmentId: row.appointmentId,\n    diagnosis: row.diagnosis,\n    notes: row.notes,\n    nursingAssessment: row.nursingAssessment,\n    doctorReport: row.doctorReport ?? null,\n    visitedAt: row.visitedAt.toISOString(),\n  });\n});\n\nrouter.patch(\"/visits/:id\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  // Editing a visit's clinical content (including the doctor's report) is\n  // reserved for doctors and admins. Nurses may only edit the\n  // nursingAssessment text field.\n  const isNurse = user.role === \"nurse\";\n  const id = String(req.params.id);\n  const parsed = UpdateVisitBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n\n  const updates: Partial<typeof visitsTable.$inferInsert> = {};\n  if (parsed.data.nursingAssessment !== undefined) {\n    updates.nursingAssessment = parsed.data.nursingAssessment;\n  }\n  if (!isNurse) {\n    if (parsed.data.diagnosis !== undefined) {\n      updates.diagnosis = parsed.data.diagnosis;\n    }\n    if (parsed.data.notes !== undefined) {\n      updates.notes = parsed.data.notes;\n    }\n    if (parsed.data.doctorReport !== undefined) {\n      const dr = parsed.data.doctorReport;\n      if (\n        dr !== null &&\n        (typeof dr !== \"object\" || Array.isArray(dr))\n      ) {\n        res.status(400).json({\n          error: \"doctorReport \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0643\u0627\u0626\u0646 JSON \u0635\u0627\u0644\u062D\",\n        });\n        return;\n      }\n      updates.doctorReport = dr;\n    }\n  }\n\n  if (Object.keys(updates).length === 0) {\n    res.status(400).json({ error: \"\u0644\u0627 \u064A\u0648\u062C\u062F \u062D\u0642\u0648\u0644 \u0635\u0627\u0644\u062D\u0629 \u0644\u0644\u062A\u062D\u062F\u064A\u062B\" });\n    return;\n  }\n\n  const [row] = await db\n    .update(visitsTable)\n    .set(updates)\n    .where(eq(visitsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Visit not found\" });\n    return;\n  }\n\n  const [patient] = await db\n    .select({ fullName: patientsTable.fullName })\n    .from(patientsTable)\n    .where(eq(patientsTable.id, row.patientId));\n\n  await logAudit({\n    userId: user.id,\n    action: \"visit.update\",\n    entity: \"visit\",\n    entityId: id,\n  });\n\n  res.json({\n    id: row.id,\n    patientId: row.patientId,\n    patientName: patient?.fullName ?? \"\",\n    appointmentId: row.appointmentId,\n    diagnosis: row.diagnosis,\n    notes: row.notes,\n    nursingAssessment: row.nursingAssessment,\n    doctorReport: row.doctorReport ?? null,\n    visitedAt: row.visitedAt.toISOString(),\n  });\n});\n\nrouter.get(\"/visits/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const [r] = await db\n    .select({\n      visit: visitsTable,\n      patient: patientsTable,\n    })\n    .from(visitsTable)\n    .innerJoin(patientsTable, eq(visitsTable.patientId, patientsTable.id))\n    .where(eq(visitsTable.id, id));\n  if (!r) {\n    res.status(404).json({ error: \"Visit not found\" });\n    return;\n  }\n\n  const [prescription] = await db\n    .select()\n    .from(prescriptionsTable)\n    .where(eq(prescriptionsTable.visitId, id))\n    .orderBy(desc(prescriptionsTable.createdAt))\n    .limit(1);\n\n  let prescriptionDetail = null;\n  if (prescription) {\n    const items = await db\n      .select()\n      .from(prescriptionItemsTable)\n      .where(eq(prescriptionItemsTable.prescriptionId, prescription.id))\n      .orderBy(prescriptionItemsTable.sortOrder);\n    prescriptionDetail = {\n      id: prescription.id,\n      code: prescription.code,\n      patientId: prescription.patientId,\n      patientName: r.patient.fullName,\n      patientAgeMonths: prescription.patientAgeMonths,\n      doctorId: prescription.doctorId,\n      doctorName: \"\",\n      diagnosis: prescription.diagnosis,\n      notes: prescription.notes,\n      qrToken: prescription.qrToken,\n      createdAt: prescription.createdAt.toISOString(),\n      itemCount: items.length,\n      items,\n      patient: mapPatient(r.patient),\n    };\n  }\n\n  const [growth] = await db\n    .select()\n    .from(growthRecordsTable)\n    .where(eq(growthRecordsTable.patientId, r.visit.patientId))\n    .orderBy(desc(growthRecordsTable.recordedAt))\n    .limit(1);\n\n  res.json({\n    id: r.visit.id,\n    patientId: r.visit.patientId,\n    patientName: r.patient.fullName,\n    appointmentId: r.visit.appointmentId,\n    diagnosis: r.visit.diagnosis,\n    notes: r.visit.notes,\n    nursingAssessment: r.visit.nursingAssessment,\n    doctorReport: r.visit.doctorReport ?? null,\n    visitedAt: r.visit.visitedAt.toISOString(),\n    prescription: prescriptionDetail,\n    growth: growth\n      ? {\n          id: growth.id,\n          patientId: growth.patientId,\n          recordedAt: growth.recordedAt.toISOString(),\n          weightKg: growth.weightKg,\n          heightCm: growth.heightCm,\n          headCircumferenceCm: growth.headCircumferenceCm,\n          temperatureC: growth.temperatureC,\n          notes: growth.notes,\n        }\n      : null,\n  });\n});\n\nfunction mapPatient(p: typeof patientsTable.$inferSelect) {\n  return {\n    id: p.id,\n    code: p.code,\n    fullName: p.fullName,\n    gender: p.gender,\n    birthDate: typeof p.birthDate === \"string\" ? p.birthDate : String(p.birthDate),\n    phone: p.phone,\n    guardianName: p.guardianName,\n    address: p.address,\n    bloodType: p.bloodType,\n    allergies: p.allergies,\n    notes: p.notes,\n    planOfCare: p.planOfCare ?? null,\n    qrToken: p.qrToken,\n    createdAt: p.createdAt.toISOString(),\n  };\n}\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc } from \"drizzle-orm\";\nimport {\n  db,\n  prescriptionsTable,\n  prescriptionItemsTable,\n  prescriptionTemplatesTable,\n  patientsTable,\n  usersTable,\n} from \"@workspace/db\";\nimport {\n  CreatePrescriptionBody,\n  CreatePrescriptionTemplateBody,\n} from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser } from \"../lib/session\";\nimport {\n  ageInMonths,\n  makeQrToken,\n  nextPrescriptionCode,\n} from \"../lib/codes\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/prescriptions\", async (_req, res): Promise<void> => {\n  const rows = await db\n    .select({\n      prescription: prescriptionsTable,\n      patientName: patientsTable.fullName,\n      doctorName: usersTable.name,\n    })\n    .from(prescriptionsTable)\n    .innerJoin(\n      patientsTable,\n      eq(prescriptionsTable.patientId, patientsTable.id),\n    )\n    .innerJoin(usersTable, eq(prescriptionsTable.doctorId, usersTable.id))\n    .orderBy(desc(prescriptionsTable.createdAt));\n\n  const ids = rows.map((r) => r.prescription.id);\n  const items = ids.length\n    ? await db\n        .select()\n        .from(prescriptionItemsTable)\n    : [];\n  const counts = new Map<string, number>();\n  for (const it of items) {\n    counts.set(it.prescriptionId, (counts.get(it.prescriptionId) ?? 0) + 1);\n  }\n\n  res.json(\n    rows.map((r) => ({\n      id: r.prescription.id,\n      code: r.prescription.code,\n      patientId: r.prescription.patientId,\n      patientName: r.patientName,\n      patientAgeMonths: r.prescription.patientAgeMonths,\n      doctorId: r.prescription.doctorId,\n      doctorName: r.doctorName,\n      diagnosis: r.prescription.diagnosis,\n      notes: r.prescription.notes,\n      source: r.prescription.source,\n      qrToken: r.prescription.qrToken,\n      createdAt: r.prescription.createdAt.toISOString(),\n      itemCount: counts.get(r.prescription.id) ?? 0,\n    })),\n  );\n});\n\nrouter.post(\"/prescriptions\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const parsed = CreatePrescriptionBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const [patient] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.id, parsed.data.patientId));\n  if (!patient) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n\n  const code = await nextPrescriptionCode();\n  const qrToken = makeQrToken();\n\n  const [created] = await db\n    .insert(prescriptionsTable)\n    .values({\n      code,\n      patientId: parsed.data.patientId,\n      doctorId: user.id,\n      visitId: parsed.data.visitId ?? null,\n      diagnosis: parsed.data.diagnosis,\n      notes: parsed.data.notes ?? null,\n      qrToken,\n      patientAgeMonths: ageInMonths(patient.birthDate),\n    })\n    .returning();\n\n  const items = parsed.data.items.length\n    ? await db\n        .insert(prescriptionItemsTable)\n        .values(\n          parsed.data.items.map((it, idx) => ({\n            prescriptionId: created.id,\n            drugName: it.drugName,\n            concentration: it.concentration ?? null,\n            dosage: it.dosage,\n            frequency: it.frequency,\n            duration: it.duration,\n            route: it.route,\n            instructions: it.instructions ?? null,\n            sortOrder: idx,\n          })),\n        )\n        .returning()\n    : [];\n\n  await logAudit({\n    userId: user.id,\n    action: \"prescription.create\",\n    entity: \"prescription\",\n    entityId: created.id,\n    meta: { code: created.code, items: items.length },\n  });\n\n  res.status(201).json(buildDetail(created, patient, user.name, items));\n});\n\nrouter.get(\"/prescriptions/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const detail = await loadDetailById(id);\n  if (!detail) {\n    res.status(404).json({ error: \"Prescription not found\" });\n    return;\n  }\n  res.json(detail);\n});\n\nrouter.post(\n  \"/prescriptions/:id/duplicate\",\n  async (req, res): Promise<void> => {\n    const id = String(req.params.id);\n    const user = await getCurrentUser(req);\n    const original = await loadDetailById(id);\n    if (!original) {\n      res.status(404).json({ error: \"Prescription not found\" });\n      return;\n    }\n    const code = await nextPrescriptionCode();\n    const qrToken = makeQrToken();\n    const [created] = await db\n      .insert(prescriptionsTable)\n      .values({\n        code,\n        patientId: original.patientId,\n        doctorId: user.id,\n        visitId: null,\n        diagnosis: original.diagnosis,\n        notes: original.notes,\n        qrToken,\n        patientAgeMonths: ageInMonths(original.patient.birthDate),\n      })\n      .returning();\n    const items = original.items.length\n      ? await db\n          .insert(prescriptionItemsTable)\n          .values(\n            original.items.map((it, idx) => ({\n              prescriptionId: created.id,\n              drugName: it.drugName,\n              concentration: it.concentration ?? null,\n              dosage: it.dosage,\n              frequency: it.frequency,\n              duration: it.duration,\n              route: it.route,\n              instructions: it.instructions ?? null,\n              sortOrder: idx,\n            })),\n          )\n          .returning()\n      : [];\n\n    await logAudit({\n      userId: user.id,\n      action: \"prescription.duplicate\",\n      entity: \"prescription\",\n      entityId: created.id,\n      meta: { sourceId: id },\n    });\n\n    const [patient] = await db\n      .select()\n      .from(patientsTable)\n      .where(eq(patientsTable.id, created.patientId));\n    res.status(201).json(buildDetail(created, patient!, user.name, items));\n  },\n);\n\n// ---------- TEMPLATES ----------\nrouter.get(\"/prescription-templates\", async (_req, res): Promise<void> => {\n  const rows = await db\n    .select()\n    .from(prescriptionTemplatesTable)\n    .orderBy(desc(prescriptionTemplatesTable.createdAt));\n  res.json(\n    rows.map((r) => ({\n      id: r.id,\n      name: r.name,\n      diagnosis: r.diagnosis,\n      items: JSON.parse(r.itemsJson),\n      createdAt: r.createdAt.toISOString(),\n    })),\n  );\n});\n\nrouter.post(\"/prescription-templates\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const parsed = CreatePrescriptionTemplateBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const items = parsed.data.items.map((it, idx) => ({\n    id: `tpl-item-${idx}`,\n    ...it,\n    instructions: it.instructions ?? null,\n  }));\n  const [row] = await db\n    .insert(prescriptionTemplatesTable)\n    .values({\n      name: parsed.data.name,\n      diagnosis: parsed.data.diagnosis,\n      itemsJson: JSON.stringify(items),\n    })\n    .returning();\n  await logAudit({\n    userId: user.id,\n    action: \"template.create\",\n    entity: \"prescription_template\",\n    entityId: row.id,\n  });\n  res.status(201).json({\n    id: row.id,\n    name: row.name,\n    diagnosis: row.diagnosis,\n    items,\n    createdAt: row.createdAt.toISOString(),\n  });\n});\n\nasync function loadDetailById(id: string) {\n  const [r] = await db\n    .select({\n      prescription: prescriptionsTable,\n      patient: patientsTable,\n      doctorName: usersTable.name,\n    })\n    .from(prescriptionsTable)\n    .innerJoin(\n      patientsTable,\n      eq(prescriptionsTable.patientId, patientsTable.id),\n    )\n    .innerJoin(usersTable, eq(prescriptionsTable.doctorId, usersTable.id))\n    .where(eq(prescriptionsTable.id, id));\n  if (!r) return null;\n  const items = await db\n    .select()\n    .from(prescriptionItemsTable)\n    .where(eq(prescriptionItemsTable.prescriptionId, id))\n    .orderBy(prescriptionItemsTable.sortOrder);\n  return buildDetail(r.prescription, r.patient, r.doctorName, items);\n}\n\nfunction buildDetail(\n  p: typeof prescriptionsTable.$inferSelect,\n  patient: typeof patientsTable.$inferSelect,\n  doctorName: string,\n  items: Array<typeof prescriptionItemsTable.$inferSelect>,\n) {\n  return {\n    id: p.id,\n    code: p.code,\n    patientId: p.patientId,\n    patientName: patient.fullName,\n    patientAgeMonths: p.patientAgeMonths,\n    doctorId: p.doctorId,\n    doctorName,\n    diagnosis: p.diagnosis,\n    notes: p.notes,\n    source: p.source,\n    qrToken: p.qrToken,\n    createdAt: p.createdAt.toISOString(),\n    itemCount: items.length,\n    items: items.map((it) => ({\n      id: it.id,\n      drugName: it.drugName,\n      concentration: it.concentration,\n      dosage: it.dosage,\n      frequency: it.frequency,\n      duration: it.duration,\n      route: it.route,\n      instructions: it.instructions,\n    })),\n    patient: {\n      id: patient.id,\n      code: patient.code,\n      fullName: patient.fullName,\n      gender: patient.gender,\n      birthDate:\n        typeof patient.birthDate === \"string\"\n          ? patient.birthDate\n          : String(patient.birthDate),\n      phone: patient.phone,\n      guardianName: patient.guardianName,\n      address: patient.address,\n      bloodType: patient.bloodType,\n      allergies: patient.allergies,\n      notes: patient.notes,\n      qrToken: patient.qrToken,\n      createdAt: patient.createdAt.toISOString(),\n    },\n  };\n}\n\nexport { loadDetailById };\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc } from \"drizzle-orm\";\nimport {\n  db,\n  referralsTable,\n  patientsTable,\n  usersTable,\n} from \"@workspace/db\";\nimport { CreateReferralBody } from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser, requireSection } from \"../lib/session\";\nimport { ageInMonths, nextReferralCode } from \"../lib/codes\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/referrals\", async (_req, res): Promise<void> => {\n  const rows = await db\n    .select({\n      referral: referralsTable,\n      patientName: patientsTable.fullName,\n      doctorName: usersTable.name,\n    })\n    .from(referralsTable)\n    .innerJoin(patientsTable, eq(referralsTable.patientId, patientsTable.id))\n    .innerJoin(usersTable, eq(referralsTable.doctorId, usersTable.id))\n    .orderBy(desc(referralsTable.createdAt));\n\n  res.json(rows.map((r) => mapSummary(r.referral, r.patientName, r.doctorName)));\n});\n\nrouter.post(\"/referrals\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const parsed = CreateReferralBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const [patient] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.id, parsed.data.patientId));\n  if (!patient) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n\n  const code = await nextReferralCode();\n\n  const [created] = await db\n    .insert(referralsTable)\n    .values({\n      code,\n      patientId: parsed.data.patientId,\n      doctorId: user.id,\n      externalDoctorName: parsed.data.externalDoctorName,\n      externalSpecialty: parsed.data.externalSpecialty ?? null,\n      externalFacility: parsed.data.externalFacility ?? null,\n      reason: parsed.data.reason,\n      clinicalSummary: parsed.data.clinicalSummary ?? null,\n      notes: parsed.data.notes ?? null,\n      patientAgeMonths: ageInMonths(patient.birthDate),\n    })\n    .returning();\n\n  await logAudit({\n    userId: user.id,\n    action: \"referral.create\",\n    entity: \"referral\",\n    entityId: created.id,\n    meta: { code: created.code },\n  });\n\n  res.status(201).json(buildDetail(created, patient, user.name));\n});\n\nrouter.get(\"/referrals/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const [r] = await db\n    .select({\n      referral: referralsTable,\n      patient: patientsTable,\n      doctorName: usersTable.name,\n    })\n    .from(referralsTable)\n    .innerJoin(patientsTable, eq(referralsTable.patientId, patientsTable.id))\n    .innerJoin(usersTable, eq(referralsTable.doctorId, usersTable.id))\n    .where(eq(referralsTable.id, id));\n  if (!r) {\n    res.status(404).json({ error: \"Referral not found\" });\n    return;\n  }\n  res.json(buildDetail(r.referral, r.patient, r.doctorName));\n});\n\nrouter.get(\n  \"/patients/:id/referrals\",\n  requireSection(\"referrals\"),\n  async (req, res): Promise<void> => {\n    const id = String(req.params.id);\n    const rows = await db\n      .select({\n        referral: referralsTable,\n        patientName: patientsTable.fullName,\n        doctorName: usersTable.name,\n      })\n      .from(referralsTable)\n      .innerJoin(patientsTable, eq(referralsTable.patientId, patientsTable.id))\n      .innerJoin(usersTable, eq(referralsTable.doctorId, usersTable.id))\n      .where(eq(referralsTable.patientId, id))\n      .orderBy(desc(referralsTable.createdAt));\n\n    res.json(\n      rows.map((r) => mapSummary(r.referral, r.patientName, r.doctorName)),\n    );\n  },\n);\n\nfunction mapSummary(\n  r: typeof referralsTable.$inferSelect,\n  patientName: string,\n  doctorName: string,\n) {\n  return {\n    id: r.id,\n    code: r.code,\n    patientId: r.patientId,\n    patientName,\n    patientAgeMonths: r.patientAgeMonths,\n    doctorId: r.doctorId,\n    doctorName,\n    externalDoctorName: r.externalDoctorName,\n    externalSpecialty: r.externalSpecialty,\n    externalFacility: r.externalFacility,\n    reason: r.reason,\n    createdAt: r.createdAt.toISOString(),\n  };\n}\n\nfunction buildDetail(\n  r: typeof referralsTable.$inferSelect,\n  patient: typeof patientsTable.$inferSelect,\n  doctorName: string,\n) {\n  return {\n    id: r.id,\n    code: r.code,\n    patientId: r.patientId,\n    patientName: patient.fullName,\n    patientAgeMonths: r.patientAgeMonths,\n    doctorId: r.doctorId,\n    doctorName,\n    externalDoctorName: r.externalDoctorName,\n    externalSpecialty: r.externalSpecialty,\n    externalFacility: r.externalFacility,\n    reason: r.reason,\n    clinicalSummary: r.clinicalSummary,\n    notes: r.notes,\n    createdAt: r.createdAt.toISOString(),\n    patient: {\n      id: patient.id,\n      code: patient.code,\n      fullName: patient.fullName,\n      gender: patient.gender,\n      birthDate:\n        typeof patient.birthDate === \"string\"\n          ? patient.birthDate\n          : String(patient.birthDate),\n      phone: patient.phone,\n      guardianName: patient.guardianName,\n    },\n  };\n}\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { ilike, or, asc } from \"drizzle-orm\";\nimport { db, drugsTable } from \"@workspace/db\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/drugs\", async (req, res): Promise<void> => {\n  const q =\n    typeof req.query.q === \"string\" ? req.query.q.trim() : \"\";\n  const rows = q\n    ? await db\n        .select()\n        .from(drugsTable)\n        .where(\n          or(\n            ilike(drugsTable.name, `%${q}%`),\n            ilike(drugsTable.nameAr, `%${q}%`),\n          ),\n        )\n        .orderBy(asc(drugsTable.name))\n        .limit(20)\n    : await db\n        .select()\n        .from(drugsTable)\n        .orderBy(asc(drugsTable.name))\n        .limit(50);\n  res.json(rows);\n});\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { and, desc, eq } from \"drizzle-orm\";\nimport { db, paymentsTable, patientsTable } from \"@workspace/db\";\nimport { CreatePaymentBody } from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser } from \"../lib/session\";\nimport { can } from \"@workspace/permissions\";\n\nconst router: IRouter = Router();\n\nfunction mapRow(r: {\n  payment: typeof paymentsTable.$inferSelect;\n  patientName: string;\n}) {\n  return {\n    id: r.payment.id,\n    patientId: r.payment.patientId,\n    patientName: r.patientName,\n    visitId: r.payment.visitId,\n    amount: r.payment.amount,\n    method: r.payment.method,\n    status: r.payment.status,\n    reference: r.payment.reference,\n    notes: r.payment.notes,\n    receiptUrl: r.payment.receiptUrl,\n    createdAt: r.payment.createdAt.toISOString(),\n    approvedAt: r.payment.approvedAt?.toISOString() ?? null,\n    approvedBy: r.payment.approvedBy,\n  };\n}\n\nrouter.get(\"/payments\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"view\")) {\n    res.status(403).json({ error: \"\u0627\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const status =\n    typeof req.query.status === \"string\" ? req.query.status : undefined;\n  const conds = [];\n  if (status) {\n    conds.push(\n      eq(paymentsTable.status, status as typeof paymentsTable.status._.data),\n    );\n  }\n  const rows = await db\n    .select({\n      payment: paymentsTable,\n      patientName: patientsTable.fullName,\n    })\n    .from(paymentsTable)\n    .innerJoin(patientsTable, eq(paymentsTable.patientId, patientsTable.id))\n    .where(conds.length ? and(...conds) : undefined)\n    .orderBy(desc(paymentsTable.createdAt));\n  res.json(rows.map(mapRow));\n});\n\nrouter.get(\"/patients/:id/payments\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"view\")) {\n    res.status(403).json({ error: \"\u0627\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const id = String(req.params.id);\n  const rows = await db\n    .select({\n      payment: paymentsTable,\n      patientName: patientsTable.fullName,\n    })\n    .from(paymentsTable)\n    .innerJoin(patientsTable, eq(paymentsTable.patientId, patientsTable.id))\n    .where(eq(paymentsTable.patientId, id))\n    .orderBy(desc(paymentsTable.createdAt));\n  res.json(rows.map(mapRow));\n});\n\nrouter.post(\"/payments\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"edit\")) {\n    res.status(403).json({ error: \"\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const parsed = CreatePaymentBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  // InstaPay must carry a receipt image so the manager can verify the transfer.\n  if (parsed.data.method === \"instapay\" && !parsed.data.receiptUrl) {\n    res\n      .status(400)\n      .json({ error: \"\u064A\u062C\u0628 \u0625\u0631\u0641\u0627\u0642 \u0635\u0648\u0631\u0629 \u0625\u064A\u0635\u0627\u0644 \u0627\u0644\u062A\u062D\u0648\u064A\u0644 \u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0625\u0646\u0633\u062A\u0627\u0628\u0627\u064A\" });\n    return;\n  }\n  // Receipt must be an object-storage path (prevents stored XSS via arbitrary URLs).\n  if (parsed.data.receiptUrl && !parsed.data.receiptUrl.startsWith(\"/objects/\")) {\n    res.status(400).json({ error: \"\u0645\u0633\u0627\u0631 \u0635\u0648\u0631\u0629 \u0627\u0644\u0625\u064A\u0635\u0627\u0644 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\" });\n    return;\n  }\n  const [row] = await db\n    .insert(paymentsTable)\n    .values({\n      patientId: parsed.data.patientId,\n      visitId: parsed.data.visitId ?? null,\n      amount: parsed.data.amount,\n      method: parsed.data.method,\n      reference: parsed.data.reference ?? null,\n      notes: parsed.data.notes ?? null,\n      receiptUrl: parsed.data.receiptUrl ?? null,\n    })\n    .returning();\n  const [patient] = await db\n    .select({ fullName: patientsTable.fullName })\n    .from(patientsTable)\n    .where(eq(patientsTable.id, row.patientId));\n  await logAudit({\n    userId: user.id,\n    action: \"payment.create\",\n    entity: \"payment\",\n    entityId: row.id,\n    meta: { amount: row.amount, method: row.method },\n  });\n  res\n    .status(201)\n    .json(mapRow({ payment: row, patientName: patient?.fullName ?? \"\" }));\n});\n\nrouter.get(\"/payments/pending\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"view\")) {\n    res.status(403).json({ error: \"\u0627\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const rows = await db\n    .select({\n      payment: paymentsTable,\n      patientName: patientsTable.fullName,\n    })\n    .from(paymentsTable)\n    .innerJoin(patientsTable, eq(paymentsTable.patientId, patientsTable.id))\n    .where(eq(paymentsTable.status, \"pending\"))\n    .orderBy(desc(paymentsTable.createdAt));\n  res.json(rows.map(mapRow));\n});\n\nrouter.delete(\"/payments/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const user = await getCurrentUser(req);\n  // Deleting a payment is irreversible, so it is restricted to the clinic\n  // owner (admin) only \u2014 even staff with payments:edit may not delete.\n  if (user.role !== \"admin\") {\n    res.status(403).json({ error: \"\u062D\u0630\u0641 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const [row] = await db\n    .delete(paymentsTable)\n    .where(eq(paymentsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Payment not found\" });\n    return;\n  }\n  await logAudit({\n    userId: user.id,\n    action: \"payment.delete\",\n    entity: \"payment\",\n    entityId: id,\n    meta: { amount: row.amount, method: row.method },\n  });\n  res.status(204).end();\n});\n\nrouter.post(\"/payments/:id/approve\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"edit\")) {\n    res\n      .status(403)\n      .json({ error: \"\u0627\u0639\u062A\u0645\u0627\u062F \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const [row] = await db\n    .update(paymentsTable)\n    .set({ status: \"approved\", approvedAt: new Date(), approvedBy: user.id })\n    .where(eq(paymentsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Payment not found\" });\n    return;\n  }\n  const [patient] = await db\n    .select({ fullName: patientsTable.fullName })\n    .from(patientsTable)\n    .where(eq(patientsTable.id, row.patientId));\n  await logAudit({\n    userId: user.id,\n    action: \"payment.approve\",\n    entity: \"payment\",\n    entityId: id,\n  });\n  res.json(mapRow({ payment: row, patientName: patient?.fullName ?? \"\" }));\n});\n\nrouter.post(\"/payments/:id/reject\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const user = await getCurrentUser(req);\n  if (!can(user, \"payments\", \"edit\")) {\n    res\n      .status(403)\n      .json({ error: \"\u0631\u0641\u0636 \u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const [row] = await db\n    .update(paymentsTable)\n    .set({ status: \"rejected\", approvedAt: new Date(), approvedBy: user.id })\n    .where(eq(paymentsTable.id, id))\n    .returning();\n  if (!row) {\n    res.status(404).json({ error: \"Payment not found\" });\n    return;\n  }\n  const [patient] = await db\n    .select({ fullName: patientsTable.fullName })\n    .from(patientsTable)\n    .where(eq(patientsTable.id, row.patientId));\n  await logAudit({\n    userId: user.id,\n    action: \"payment.reject\",\n    entity: \"payment\",\n    entityId: id,\n  });\n  res.json(mapRow({ payment: row, patientName: patient?.fullName ?? \"\" }));\n});\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { and, desc, eq, gte, lt, sql } from \"drizzle-orm\";\nimport {\n  db,\n  patientsTable,\n  appointmentsTable,\n  paymentsTable,\n  prescriptionsTable,\n  visitsTable,\n  auditLogsTable,\n  usersTable,\n} from \"@workspace/db\";\nimport { getCurrentUser } from \"../lib/session\";\nimport {\n  loadBookingSchedule,\n  scheduleConflictReason,\n} from \"../lib/bookingSchedule\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/dashboard/summary\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n\n  const now = new Date();\n  const startOfDay = new Date(now);\n  startOfDay.setHours(0, 0, 0, 0);\n  const endOfDay = new Date(startOfDay);\n  endOfDay.setDate(endOfDay.getDate() + 1);\n  const startOfMonth = new Date(\n    now.getFullYear(),\n    now.getMonth(),\n    1,\n    0,\n    0,\n    0,\n  );\n\n  const [{ totalPatients }] = await db\n    .select({ totalPatients: sql<number>`count(*)::int` })\n    .from(patientsTable);\n  const [{ todayAppointments }] = await db\n    .select({ todayAppointments: sql<number>`count(*)::int` })\n    .from(appointmentsTable)\n    .where(\n      and(\n        gte(appointmentsTable.scheduledAt, startOfDay),\n        lt(appointmentsTable.scheduledAt, endOfDay),\n      ),\n    );\n  const [{ prescriptionsToday }] = await db\n    .select({ prescriptionsToday: sql<number>`count(*)::int` })\n    .from(prescriptionsTable)\n    .where(\n      and(\n        gte(prescriptionsTable.createdAt, startOfDay),\n        lt(prescriptionsTable.createdAt, endOfDay),\n      ),\n    );\n  const [{ newPatientsThisMonth }] = await db\n    .select({ newPatientsThisMonth: sql<number>`count(*)::int` })\n    .from(patientsTable)\n    .where(gte(patientsTable.createdAt, startOfMonth));\n  const [{ completedVisitsToday }] = await db\n    .select({ completedVisitsToday: sql<number>`count(*)::int` })\n    .from(visitsTable)\n    .where(\n      and(\n        gte(visitsTable.visitedAt, startOfDay),\n        lt(visitsTable.visitedAt, endOfDay),\n      ),\n    );\n\n  // Count all upcoming \"scheduled\" appointments whose time no longer fits the\n  // current booking schedule (closed day or outside working hours). Reuses the\n  // shared schedule helpers so this never drifts from the per-day appointments\n  // flag or the public availability rules.\n  const [schedule, upcomingScheduledRows] = await Promise.all([\n    loadBookingSchedule(),\n    db\n      .select({ scheduledAt: appointmentsTable.scheduledAt })\n      .from(appointmentsTable)\n      .where(\n        and(\n          eq(appointmentsTable.status, \"scheduled\"),\n          gte(appointmentsTable.scheduledAt, now),\n        ),\n      ),\n  ]);\n  let upcomingScheduleConflictsClosedDay = 0;\n  let upcomingScheduleConflictsOutsideHours = 0;\n  for (const r of upcomingScheduledRows) {\n    const reason = scheduleConflictReason(r.scheduledAt, schedule);\n    if (reason === \"closed_day\") upcomingScheduleConflictsClosedDay++;\n    else if (reason === \"outside_hours\") upcomingScheduleConflictsOutsideHours++;\n  }\n  const upcomingScheduleConflicts =\n    upcomingScheduleConflictsClosedDay + upcomingScheduleConflictsOutsideHours;\n\n  const base = {\n    totalPatients,\n    todayAppointments,\n    prescriptionsToday,\n    newPatientsThisMonth,\n    completedVisitsToday,\n    upcomingScheduleConflicts,\n    upcomingScheduleConflictsClosedDay,\n    upcomingScheduleConflictsOutsideHours,\n  };\n\n  if (user.role !== \"admin\") {\n    res.json(base);\n    return;\n  }\n\n  const [{ pendingPayments }] = await db\n    .select({ pendingPayments: sql<number>`count(*)::int` })\n    .from(paymentsTable)\n    .where(eq(paymentsTable.status, \"pending\"));\n  const [{ revenueToday }] = await db\n    .select({ revenueToday: sql<number>`coalesce(sum(amount), 0)::float` })\n    .from(paymentsTable)\n    .where(\n      and(\n        eq(paymentsTable.status, \"approved\"),\n        gte(paymentsTable.createdAt, startOfDay),\n        lt(paymentsTable.createdAt, endOfDay),\n      ),\n    );\n  const [{ revenueMonth }] = await db\n    .select({ revenueMonth: sql<number>`coalesce(sum(amount), 0)::float` })\n    .from(paymentsTable)\n    .where(\n      and(\n        eq(paymentsTable.status, \"approved\"),\n        gte(paymentsTable.createdAt, startOfMonth),\n      ),\n    );\n\n  res.json({\n    ...base,\n    pendingPayments,\n    revenueToday,\n    revenueMonth,\n  });\n});\n\nrouter.get(\"/dashboard/recent-activity\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (user.role !== \"admin\") {\n    res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n    return;\n  }\n\n  const rows = await db\n    .select({\n      log: auditLogsTable,\n      userName: usersTable.name,\n    })\n    .from(auditLogsTable)\n    .innerJoin(usersTable, eq(auditLogsTable.userId, usersTable.id))\n    .orderBy(desc(auditLogsTable.createdAt))\n    .limit(20);\n\n  const items = rows.map((r) => {\n    const meta = r.log.meta ? safeJson(r.log.meta) : null;\n    let type = \"patient_created\";\n    let title = r.log.action;\n    let subtitle = r.log.entity;\n    switch (r.log.action) {\n      case \"patient.create\":\n        type = \"patient_created\";\n        title = \"\u062A\u0633\u062C\u064A\u0644 \u0645\u0631\u064A\u0636 \u062C\u062F\u064A\u062F\";\n        subtitle = (meta?.name as string) ?? r.log.entityId ?? \"\";\n        break;\n      case \"prescription.create\":\n        type = \"prescription_issued\";\n        title = \"\u0625\u0635\u062F\u0627\u0631 \u0631\u0648\u0634\u062A\u0629 \u0637\u0628\u064A\u0629\";\n        subtitle = (meta?.code as string) ?? \"\";\n        break;\n      case \"payment.approve\":\n        type = \"payment_approved\";\n        title = \"\u0627\u0639\u062A\u0645\u0627\u062F \u062F\u0641\u0639\u0629\";\n        subtitle = \"\";\n        break;\n      case \"visit.create\":\n        type = \"visit_completed\";\n        title = \"\u062A\u0633\u062C\u064A\u0644 \u0632\u064A\u0627\u0631\u0629\";\n        subtitle = \"\";\n        break;\n      case \"appointment.create\":\n        type = \"appointment_scheduled\";\n        title = \"\u062D\u062C\u0632 \u0645\u0648\u0639\u062F \u062C\u062F\u064A\u062F\";\n        subtitle = \"\";\n        break;\n    }\n    return {\n      id: r.log.id,\n      type,\n      title,\n      subtitle,\n      actor: r.userName,\n      at: r.log.createdAt.toISOString(),\n    };\n  });\n  res.json(items);\n});\n\nrouter.get(\"/dashboard/revenue-trend\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (user.role !== \"admin\") {\n    res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n    return;\n  }\n\n  const days = 14;\n  const start = new Date();\n  start.setHours(0, 0, 0, 0);\n  start.setDate(start.getDate() - (days - 1));\n\n  const rows = await db\n    .select({\n      date: sql<string>`to_char(date_trunc('day', created_at), 'YYYY-MM-DD')`,\n      amount: sql<number>`coalesce(sum(amount), 0)::float`,\n    })\n    .from(paymentsTable)\n    .where(\n      and(\n        eq(paymentsTable.status, \"approved\"),\n        gte(paymentsTable.createdAt, start),\n      ),\n    )\n    .groupBy(sql`date_trunc('day', created_at)`)\n    .orderBy(sql`date_trunc('day', created_at)`);\n\n  const map = new Map<string, number>();\n  for (const r of rows) map.set(r.date, r.amount);\n\n  const out: Array<{ date: string; amount: number }> = [];\n  for (let i = 0; i < days; i++) {\n    const d = new Date(start);\n    d.setDate(start.getDate() + i);\n    const key = d.toISOString().slice(0, 10);\n    out.push({ date: key, amount: map.get(key) ?? 0 });\n  }\n  res.json(out);\n});\n\nfunction safeJson(s: string): Record<string, unknown> | null {\n  try {\n    return JSON.parse(s);\n  } catch {\n    return null;\n  }\n}\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { and, desc, eq } from \"drizzle-orm\";\nimport { db, auditLogsTable, usersTable } from \"@workspace/db\";\nimport { getCurrentUser } from \"../lib/session\";\nimport { can } from \"@workspace/permissions\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/audit-logs\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"audit\", \"view\")) {\n    res\n      .status(403)\n      .json({ error: \"\u0633\u062C\u0644 \u0627\u0644\u0646\u0634\u0627\u0637 \u0645\u062A\u0627\u062D \u0644\u0644\u0645\u062F\u064A\u0631 \u0641\u0642\u0637\" });\n    return;\n  }\n  const action =\n    typeof req.query.action === \"string\" ? req.query.action : undefined;\n  const conds = [];\n  if (action) conds.push(eq(auditLogsTable.action, action));\n  const rows = await db\n    .select({\n      log: auditLogsTable,\n      userName: usersTable.name,\n    })\n    .from(auditLogsTable)\n    .innerJoin(usersTable, eq(auditLogsTable.userId, usersTable.id))\n    .where(conds.length ? and(...conds) : undefined)\n    .orderBy(desc(auditLogsTable.createdAt))\n    .limit(200);\n  res.json(\n    rows.map((r) => ({\n      id: r.log.id,\n      action: r.log.action,\n      entity: r.log.entity,\n      entityId: r.log.entityId,\n      userId: r.log.userId,\n      userName: r.userName,\n      meta: r.log.meta,\n      createdAt: r.log.createdAt.toISOString(),\n    })),\n  );\n});\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc, count, and, gte, lt, sql } from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport { rateLimit, clientIp } from \"../lib/rateLimiter\";\nimport {\n  db,\n  prescriptionsTable,\n  prescriptionItemsTable,\n  patientsTable,\n  usersTable,\n  visitsTable,\n  appointmentsTable,\n  growthRecordsTable,\n  siteSettingsTable,\n  siteDoctorsTable,\n  siteServicesTable,\n  systemSettingsTable,\n  complaintsTable,\n} from \"@workspace/db\";\nimport { SYSTEM_SETTINGS_DEFAULTS } from \"../lib/ensureSeedSystemSettings\";\nimport { nextPatientCode, makeQrToken } from \"../lib/codes\";\nimport {\n  type BookingSchedule,\n  normalizeSchedule,\n  deriveWorkingHours,\n  generateDaySlots,\n  cairoSlotIso,\n  isValidSlot,\n  loadBookingSchedule,\n} from \"../lib/bookingSchedule\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/public/prescriptions/:token\", async (req, res): Promise<void> => {\n  const token = String(req.params.token);\n  const [r] = await db\n    .select({\n      prescription: prescriptionsTable,\n      patient: patientsTable,\n      doctorName: usersTable.name,\n    })\n    .from(prescriptionsTable)\n    .innerJoin(patientsTable, eq(prescriptionsTable.patientId, patientsTable.id))\n    .innerJoin(usersTable, eq(prescriptionsTable.doctorId, usersTable.id))\n    .where(eq(prescriptionsTable.qrToken, token));\n  if (!r) {\n    res.status(404).json({ error: \"Prescription not found\" });\n    return;\n  }\n  const items = await db\n    .select()\n    .from(prescriptionItemsTable)\n    .where(eq(prescriptionItemsTable.prescriptionId, r.prescription.id))\n    .orderBy(prescriptionItemsTable.sortOrder);\n  res.json({\n    code: r.prescription.code,\n    diagnosis: r.prescription.diagnosis,\n    notes: r.prescription.notes,\n    qrToken: r.prescription.qrToken,\n    doctorName: r.doctorName,\n    createdAt: r.prescription.createdAt.toISOString(),\n    items: items.map((it) => ({\n      id: it.id,\n      drugName: it.drugName,\n      dosage: it.dosage,\n      frequency: it.frequency,\n      duration: it.duration,\n      route: it.route,\n      instructions: it.instructions,\n    })),\n    patient: {\n      fullName: r.patient.fullName,\n      gender: r.patient.gender,\n      birthDate:\n        typeof r.patient.birthDate === \"string\"\n          ? r.patient.birthDate\n          : String(r.patient.birthDate),\n      guardianName: r.patient.guardianName,\n    },\n  });\n});\n\nrouter.get(\"/public/patients/:token\", async (req, res): Promise<void> => {\n  const token = String(req.params.token);\n  const [patient] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.qrToken, token));\n  if (!patient) {\n    res.status(404).json({ error: \"Patient not found\" });\n    return;\n  }\n\n  const [visitStats] = await db\n    .select({ c: count() })\n    .from(visitsTable)\n    .where(eq(visitsTable.patientId, patient.id));\n\n  const [lastVisit] = await db\n    .select({ visitedAt: visitsTable.visitedAt })\n    .from(visitsTable)\n    .where(eq(visitsTable.patientId, patient.id))\n    .orderBy(desc(visitsTable.visitedAt))\n    .limit(1);\n\n  res.json({\n    id: patient.id,\n    code: patient.code,\n    fullName: patient.fullName,\n    gender: patient.gender,\n    birthDate: patient.birthDate,\n    guardianName: patient.guardianName,\n    bloodType: patient.bloodType,\n    allergies: patient.allergies,\n    visitCount: Number(visitStats?.c ?? 0),\n    lastVisitAt: lastVisit?.visitedAt ?? null,\n  });\n});\n\n// ==================== PUBLIC SITE ====================\n\nasync function loadSiteSettings() {\n  const [settings] = await db\n    .select()\n    .from(siteSettingsTable)\n    .where(eq(siteSettingsTable.id, \"main\"))\n    .limit(1);\n  return settings ?? null;\n}\n\nfunction toClinicInfo(s: NonNullable<Awaited<ReturnType<typeof loadSiteSettings>>>) {\n  return {\n    name: s.clinicName,\n    doctorName: s.doctorName,\n    doctorTitle: s.doctorTitle,\n    address: s.address,\n    phones: s.phones,\n    whatsapp: s.whatsapp,\n    email: s.email,\n    // Displayed hours derive from the same booking schedule that drives availability.\n    workingHours: deriveWorkingHours(scheduleFromSettings(s)),\n    socials: {\n      facebook: s.socials.facebook ?? \"\",\n      instagram: s.socials.instagram ?? \"\",\n    },\n  };\n}\n\nrouter.get(\"/public/site/clinic-info\", async (_req, res): Promise<void> => {\n  const settings = await loadSiteSettings();\n  if (!settings) {\n    res.status(404).json({ error: \"Site settings not found\" });\n    return;\n  }\n  res.json(toClinicInfo(settings));\n});\n\n// Branding/UI for the clinic admin app. Public (no auth) because the login\n// screen and app-wide theme must render before authentication. Returns only\n// non-sensitive presentation data (labels, titles, theme colors).\nrouter.get(\"/public/system-branding\", async (_req, res): Promise<void> => {\n  const [row] = await db\n    .select()\n    .from(systemSettingsTable)\n    .where(eq(systemSettingsTable.id, \"main\"))\n    .limit(1);\n  res.json(\n    row ?? { ...SYSTEM_SETTINGS_DEFAULTS, updatedAt: new Date().toISOString() },\n  );\n});\n\nrouter.get(\"/public/site/content\", async (_req, res): Promise<void> => {\n  const settings = await loadSiteSettings();\n  if (!settings) {\n    res.status(404).json({ error: \"Site settings not found\" });\n    return;\n  }\n  const [doctors, services] = await Promise.all([\n    db\n      .select()\n      .from(siteDoctorsTable)\n      .where(eq(siteDoctorsTable.visible, true))\n      .orderBy(siteDoctorsTable.sortOrder),\n    db\n      .select()\n      .from(siteServicesTable)\n      .where(eq(siteServicesTable.visible, true))\n      .orderBy(siteServicesTable.category, siteServicesTable.sortOrder),\n  ]);\n  res.json({\n    clinicInfo: toClinicInfo(settings),\n    pageContent: settings.pageContent,\n    doctors,\n    services,\n  });\n});\n\n// ---- Booking-schedule logic (shared with the admin control panel) ----\n// Pure helpers live in ../lib/bookingSchedule so the public availability rules\n// and the admin \"affected appointments\" warning can never drift apart.\n\n// Normalize a (possibly partial/legacy) stored schedule into a safe schedule.\nfunction scheduleFromSettings(\n  s: NonNullable<Awaited<ReturnType<typeof loadSiteSettings>>>,\n): BookingSchedule {\n  return normalizeSchedule(s.bookingSchedule);\n}\n\nrouter.get(\"/public/site/availability\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  const rl = rateLimit(`avail:${ip}`, 60_000, 60);\n  if (!rl.ok) {\n    res.setHeader(\"Retry-After\", String(rl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0637\u0644\u0628\u0627\u062A\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n  const dateRaw = String(req.query.date ?? \"\");\n  if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(dateRaw)) {\n    res.status(400).json({ error: \"Invalid or missing date (YYYY-MM-DD)\" });\n    return;\n  }\n  const dayStart = new Date(cairoSlotIso(dateRaw, 0, 0));\n  const dayEnd = new Date(dayStart.getTime() + 24 * 60 * 60 * 1000);\n\n  const schedule = await loadBookingSchedule();\n  const slots = generateDaySlots(dateRaw, schedule);\n  if (slots.length === 0) {\n    res.json({ date: dateRaw, working: false, slots: [] });\n    return;\n  }\n\n  const booked = await db\n    .select({ scheduledAt: appointmentsTable.scheduledAt })\n    .from(appointmentsTable)\n    .where(\n      and(\n        gte(appointmentsTable.scheduledAt, dayStart),\n        lt(appointmentsTable.scheduledAt, dayEnd),\n      ),\n    );\n\n  const bookedSet = new Set(\n    booked.map((b) => new Date(b.scheduledAt).toISOString()),\n  );\n\n  const now = new Date();\n  const result = slots.map((iso) => {\n    const slotDate = new Date(iso);\n    return {\n      time: iso,\n      available: !bookedSet.has(slotDate.toISOString()) && slotDate > now,\n    };\n  });\n\n  res.json({ date: dateRaw, working: true, slots: result });\n});\n\n// ---- Booking ----\nconst CreateBookingBody = z.object({\n  fullName: z.string().min(2).max(120),\n  phone: z\n    .string()\n    .min(7)\n    .max(20)\n    .regex(/^[+\\d\\s-]+$/, \"Invalid phone\"),\n  guardianName: z.string().max(120).optional().nullable(),\n  birthDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n  gender: z.enum([\"male\", \"female\"]),\n  scheduledAt: z.string().datetime({ offset: true }),\n  reason: z.string().max(500).optional().nullable(),\n});\n\nfunction normalizePhone(p: string): string {\n  return p.replace(/\\s|-/g, \"\");\n}\n\nfunction normalizeName(n: string): string {\n  return n.trim().replace(/\\s+/g, \" \").toLowerCase();\n}\n\nrouter.post(\"/public/site/bookings\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  const rl = rateLimit(`book:${ip}`, 10 * 60 * 1000, 5, 30 * 60 * 1000);\n  if (!rl.ok) {\n    res.setHeader(\"Retry-After\", String(rl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0627\u0644\u062D\u062C\u0632\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const parsed = CreateBookingBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: \"Invalid input\", details: parsed.error.issues });\n    return;\n  }\n  const data = parsed.data;\n  const scheduled = new Date(data.scheduledAt);\n  if (scheduled <= new Date()) {\n    res.status(400).json({ error: \"\u0644\u0627 \u064A\u0645\u0643\u0646 \u0627\u0644\u062D\u062C\u0632 \u0641\u064A \u0648\u0642\u062A \u0642\u062F \u0645\u0636\u0649\" });\n    return;\n  }\n  const schedule = await loadBookingSchedule();\n  const slotCheck = isValidSlot(scheduled, schedule);\n  if (!slotCheck.ok) {\n    res.status(400).json({ error: slotCheck.reason ?? \"\u0645\u0648\u0639\u062F \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\" });\n    return;\n  }\n\n  const phone = normalizePhone(data.phone);\n  const nameKey = normalizeName(data.fullName);\n\n  try {\n    const result = await db.transaction(async (tx) => {\n      // Lock potential conflicts at this exact slot to prevent race-based double-booking.\n      // (PostgreSQL row-level lock; if no rows, the next INSERT contends on table-level\n      // serialization which is fine for low-traffic scheduling.)\n      const conflicts = await tx.execute(\n        sql`SELECT id FROM ${appointmentsTable}\n            WHERE ${appointmentsTable.scheduledAt} = ${scheduled}\n              AND ${appointmentsTable.status} <> 'cancelled'\n            FOR UPDATE`,\n      );\n      const conflictRows = (conflicts as unknown as { rows?: unknown[] }).rows\n        ?? (conflicts as unknown as unknown[]);\n      if (Array.isArray(conflictRows) && conflictRows.length > 0) {\n        throw new BookingError(409, \"\u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0639\u062F \u0645\u062D\u062C\u0648\u0632 \u0628\u0627\u0644\u0641\u0639\u0644\u060C \u0628\u0631\u062C\u0627\u0621 \u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u0648\u0639\u062F \u0622\u062E\u0631\");\n      }\n\n      // Identity matching: only attach to an existing patient when phone + name + birthDate ALL match\n      // (prevents \"guess the phone\" attacks from leaking another patient's code, and\n      //  prevents siblings sharing one phone from being merged into one record).\n      const candidates = await tx\n        .select()\n        .from(patientsTable)\n        .where(eq(patientsTable.phone, phone))\n        .limit(20);\n\n      const matched = candidates.find(\n        (c) =>\n          normalizeName(c.fullName) === nameKey &&\n          c.birthDate === data.birthDate,\n      );\n\n      let patientId: string;\n      let patientCode: string;\n\n      if (matched) {\n        patientId = matched.id;\n        patientCode = matched.code;\n      } else {\n        // Generate a code with retry on (extremely unlikely) collision.\n        let inserted: { id: string; code: string } | undefined;\n        for (let attempt = 0; attempt < 3 && !inserted; attempt++) {\n          const code = await nextPatientCode({\n            birthDate: data.birthDate,\n            bookingAt: scheduled,\n          });\n          try {\n            const [row] = await tx\n              .insert(patientsTable)\n              .values({\n                code,\n                fullName: data.fullName,\n                phone,\n                guardianName: data.guardianName ?? null,\n                birthDate: data.birthDate,\n                gender: data.gender,\n                qrToken: makeQrToken(),\n              })\n              .returning({ id: patientsTable.id, code: patientsTable.code });\n            inserted = row;\n          } catch (err: unknown) {\n            const msg = (err as { code?: string; message?: string }).code ?? \"\";\n            if (msg !== \"23505\") throw err; // not a unique-violation \u2013 rethrow\n          }\n        }\n        if (!inserted) {\n          throw new BookingError(500, \"\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0644\u0641\u060C \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\");\n        }\n        patientId = inserted.id;\n        patientCode = inserted.code;\n      }\n\n      const [appt] = await tx\n        .insert(appointmentsTable)\n        .values({\n          patientId,\n          scheduledAt: scheduled,\n          status: \"scheduled\",\n          reason: data.reason ?? null,\n        })\n        .returning();\n\n      return { appt, patientCode };\n    });\n\n    res.status(201).json({\n      appointmentId: result.appt.id,\n      patientCode: result.patientCode,\n      scheduledAt: result.appt.scheduledAt,\n      status: result.appt.status,\n      message: \"\u062A\u0645 \u062A\u0623\u0643\u064A\u062F \u0627\u0644\u062D\u062C\u0632 \u0628\u0646\u062C\u0627\u062D\",\n    });\n  } catch (err) {\n    if (err instanceof BookingError) {\n      res.status(err.status).json({ error: err.message });\n      return;\n    }\n    req.log?.error({ err }, \"booking failed\");\n    res.status(500).json({ error: \"\u062D\u062F\u062B \u062E\u0637\u0623\u060C \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\" });\n  }\n});\n\nclass BookingError extends Error {\n  constructor(public status: number, message: string) {\n    super(message);\n  }\n}\n\n// ---- Complaints / feedback ----\n// All fields required and non-empty (clinic requirement). Phone is mandatory.\nconst CreateComplaintBody = z.object({\n  name: z.string().trim().min(2).max(120),\n  phone: z\n    .string()\n    .trim()\n    .min(7)\n    .max(20)\n    .regex(/^[+\\d\\s-]+$/, \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\"),\n  subject: z.string().trim().min(2).max(160),\n  message: z.string().trim().min(5).max(2000),\n});\n\nrouter.post(\"/public/site/complaints\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  // 5 submissions per 10 minutes, then a 30-minute lockout.\n  const rl = rateLimit(`complaint:${ip}`, 10 * 60 * 1000, 5, 30 * 60 * 1000);\n  if (!rl.ok) {\n    res.setHeader(\"Retry-After\", String(rl.retryAfterSec));\n    res\n      .status(429)\n      .json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0627\u062A\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const parsed = CreateComplaintBody.safeParse(req.body);\n  if (!parsed.success) {\n    res\n      .status(400)\n      .json({ error: \"\u0628\u0631\u062C\u0627\u0621 \u0645\u0644\u0621 \u062C\u0645\u064A\u0639 \u0627\u0644\u062D\u0642\u0648\u0644 \u0628\u0634\u0643\u0644 \u0635\u062D\u064A\u062D\", details: parsed.error.issues });\n    return;\n  }\n  const data = parsed.data;\n\n  const [created] = await db\n    .insert(complaintsTable)\n    .values({\n      name: data.name,\n      phone: data.phone,\n      subject: data.subject,\n      message: data.message,\n    })\n    .returning();\n\n  res.status(201).json({\n    id: created.id,\n    message: \"\u062A\u0645 \u0627\u0633\u062A\u0644\u0627\u0645 \u0634\u0643\u0648\u0627\u0643\u060C \u0633\u064A\u062A\u0645 \u0627\u0644\u0631\u062F \u0639\u0644\u064A\u0647\u0627 \u0642\u0631\u064A\u0628\u0627\u064B\",\n  });\n});\n\n// ---- Patient self-lookup ----\nconst LookupBody = z.object({\n  code: z.string().min(1).max(40),\n  phone: z.string().min(5).max(20),\n});\n\nrouter.post(\"/public/site/lookup\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  // IP-based rate limit: 10 attempts per minute, then a 15-minute lockout.\n  const ipRl = rateLimit(`lookup:${ip}`, 60_000, 10, 15 * 60 * 1000);\n  if (!ipRl.ok) {\n    res.setHeader(\"Retry-After\", String(ipRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0627\u062A\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n  const parsed = LookupBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: \"Invalid input\" });\n    return;\n  }\n  const { code, phone } = parsed.data;\n  const normalizedCodeKey = code.trim().toLowerCase();\n  const normalizedPhoneKey = phone.replace(/\\s|-/g, \"\");\n  // Per-code rate limit: 10 attempts per code per 24 hours, then a 24-hour lockout.\n  // Prevents brute-force across sequential codes regardless of IP spoofing.\n  const codeRl = rateLimit(`lookup:code:${normalizedCodeKey}`, 24 * 60 * 60 * 1000, 10, 24 * 60 * 60 * 1000);\n  if (!codeRl.ok) {\n    res.setHeader(\"Retry-After\", String(codeRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0627\u062A\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n  // Per-phone rate limit: 20 attempts per phone per 24 hours, then a 24-hour lockout.\n  // Prevents an attacker who knows a phone number from enumerating codes against it\n  // (one attempt per code) across a large address space.\n  const phoneRl = rateLimit(`lookup:phone:${normalizedPhoneKey}`, 24 * 60 * 60 * 1000, 20, 24 * 60 * 60 * 1000);\n  if (!phoneRl.ok) {\n    res.setHeader(\"Retry-After\", String(phoneRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0627\u062A\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const normalizedPhone = normalizedPhoneKey;\n  const [patient] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.code, code.trim()))\n    .limit(1);\n\n  if (!patient) {\n    res.status(404).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n\n  const dbPhone = (patient.phone ?? \"\").replace(/\\s|-/g, \"\");\n  if (!dbPhone || dbPhone !== normalizedPhone) {\n    res.status(404).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n\n  const [visits, prescriptions, growth, upcoming] = await Promise.all([\n    db\n      .select({\n        id: visitsTable.id,\n        visitedAt: visitsTable.visitedAt,\n        diagnosis: visitsTable.diagnosis,\n        notes: visitsTable.notes,\n      })\n      .from(visitsTable)\n      .where(eq(visitsTable.patientId, patient.id))\n      .orderBy(desc(visitsTable.visitedAt))\n      .limit(50),\n    db\n      .select({\n        id: prescriptionsTable.id,\n        code: prescriptionsTable.code,\n        diagnosis: prescriptionsTable.diagnosis,\n        createdAt: prescriptionsTable.createdAt,\n        qrToken: prescriptionsTable.qrToken,\n      })\n      .from(prescriptionsTable)\n      .where(eq(prescriptionsTable.patientId, patient.id))\n      .orderBy(desc(prescriptionsTable.createdAt))\n      .limit(50),\n    db\n      .select({\n        id: growthRecordsTable.id,\n        recordedAt: growthRecordsTable.recordedAt,\n        weightKg: growthRecordsTable.weightKg,\n        heightCm: growthRecordsTable.heightCm,\n        headCircumferenceCm: growthRecordsTable.headCircumferenceCm,\n        temperatureC: growthRecordsTable.temperatureC,\n      })\n      .from(growthRecordsTable)\n      .where(eq(growthRecordsTable.patientId, patient.id))\n      .orderBy(desc(growthRecordsTable.recordedAt))\n      .limit(50),\n    db\n      .select({\n        id: appointmentsTable.id,\n        scheduledAt: appointmentsTable.scheduledAt,\n        status: appointmentsTable.status,\n        reason: appointmentsTable.reason,\n      })\n      .from(appointmentsTable)\n      .where(\n        and(\n          eq(appointmentsTable.patientId, patient.id),\n          gte(appointmentsTable.scheduledAt, new Date()),\n        ),\n      )\n      .orderBy(appointmentsTable.scheduledAt)\n      .limit(20),\n  ]);\n\n  res.json({\n    patient: {\n      id: patient.id,\n      code: patient.code,\n      fullName: patient.fullName,\n      gender: patient.gender,\n      birthDate: patient.birthDate,\n      guardianName: patient.guardianName,\n      bloodType: patient.bloodType,\n      allergies: patient.allergies,\n    },\n    visits,\n    prescriptions,\n    growth,\n    upcomingAppointments: upcoming,\n  });\n});\n\n// Use sql noop to keep import (in case we expand later)\nvoid sql;\n\nexport default router;\n", "import { db, systemSettingsTable } from \"@workspace/db\";\nimport { logger } from \"./logger\";\n\n/**\n * Default branding for the clinic admin app, mirroring the values that were\n * previously hardcoded in the sidebar (AppLayout) and login screen. Stored in\n * system_settings and editable from the System Control Panel.\n *\n * `colors` is intentionally empty so the built-in CSS theme is used until an\n * admin explicitly overrides a color. `navLabels` is empty so each sidebar item\n * uses its built-in default label until overridden.\n */\nexport const SYSTEM_SETTINGS_DEFAULTS = {\n  id: \"main\",\n  appName: \"\u0639\u064A\u0627\u062F\u0629 \u062F. \u0623\u0634\u0631\u0641\",\n  appSubtitle: \"\u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n  loginTitle: \"\u0639\u064A\u0627\u062F\u0629 \u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F\",\n  loginSubtitle: \"\u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n  sidebarGroupLabel: \"\u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629\",\n  colors: {} as { primary?: string | null; accent?: string | null; secondary?: string | null },\n  navLabels: {} as Record<string, string>,\n};\n\n/**\n * Seeds the system_settings singleton with the original hardcoded branding the\n * first time the app boots against an empty database. Idempotent: only inserts\n * when the row is missing, so admin edits are never overwritten. Runs\n * unconditionally on every boot (safe in production).\n */\nexport async function ensureSeedSystemSettings(): Promise<void> {\n  try {\n    const [existing] = await db\n      .select({ id: systemSettingsTable.id })\n      .from(systemSettingsTable)\n      .limit(1);\n\n    if (!existing) {\n      await db.insert(systemSettingsTable).values(SYSTEM_SETTINGS_DEFAULTS);\n      logger.info(\"ensureSeedSystemSettings: seeded system_settings\");\n    }\n  } catch (err) {\n    logger.error({ err }, \"ensureSeedSystemSettings failed (continuing startup)\");\n  }\n}\n", "import { Router, type IRouter } from \"express\";\nimport { eq } from \"drizzle-orm\";\nimport bcrypt from \"bcryptjs\";\nimport { z } from \"zod\";\nimport { db, patientsTable } from \"@workspace/db\";\nimport { rateLimit, clientIp } from \"../lib/rateLimiter\";\nimport { logger } from \"../lib/logger\";\nimport { nextPatientCode } from \"../lib/codes\";\nimport {\n  requirePatientAuth,\n  toPublicPatient,\n  type RequestWithPatient,\n} from \"../lib/patientSession\";\n\nconst router: IRouter = Router();\n\nconst BCRYPT_ROUNDS = 10;\n\nconst RegisterSchema = z.object({\n  fullName: z.string().trim().min(2, \"\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 \u062D\u0631\u0641\u064A\u0646\"),\n  email: z.string().trim().toLowerCase().email(\"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u0649 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\"),\n  password: z.string().min(6, \"\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u064A\u062C\u0628 \u0623\u0644\u0627 \u062A\u0642\u0644 \u0639\u0646 6 \u0623\u062D\u0631\u0641\"),\n  phone: z.string().trim().min(8, \"\u0631\u0642\u0645 \u062A\u0644\u064A\u0641\u0648\u0646 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\"),\n  gender: z.enum([\"male\", \"female\"]),\n  birthDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"\u062A\u0627\u0631\u064A\u062E \u0645\u064A\u0644\u0627\u062F \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\"),\n  guardianName: z.string().trim().optional(),\n  patientCode: z.string().trim().optional(),\n});\n\nconst LoginSchema = z.object({\n  email: z.string().trim().toLowerCase().email(\"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u0649 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\"),\n  password: z.string().min(1, \"\u0623\u062F\u062E\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\"),\n});\n\n// Single generic response for every existence/identity-sensitive registration\n// failure (unknown code, mismatched phone/birthDate/name, email already in use,\n// record already linked). Returning the SAME status + body for all of these\n// prevents account/code/email enumeration: a caller probing patient codes or\n// emails cannot tell whether the code/email exists or which identity factor was\n// wrong. Genuinely different outcomes (rate limit, schema validation, success)\n// keep their own responses.\nconst GENERIC_REGISTER_ERROR =\n  \"\u062A\u0639\u0630\u0651\u0631 \u0625\u0643\u0645\u0627\u0644 \u0627\u0644\u062A\u0633\u062C\u064A\u0644. \u062A\u0623\u0643\u062F \u0645\u0646 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648 \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0644\u062F\u064A\u0643 \u062D\u0633\u0627\u0628.\";\n\nrouter.post(\"/patient-auth/register\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  const ipRl = rateLimit(`p_register:ip:${ip}`, 60 * 60 * 1000, 10, 60 * 60 * 1000);\n  if (!ipRl.ok) {\n    res.setHeader(\"Retry-After\", String(ipRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0627\u0644\u062A\u0633\u062C\u064A\u0644\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const parsed = RegisterSchema.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({\n      error: parsed.error.issues[0]?.message ?? \"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0645\u0643\u062A\u0645\u0644\u0629\",\n    });\n    return;\n  }\n  const { email, password, fullName, phone, gender, birthDate, guardianName, patientCode } =\n    parsed.data;\n\n  // If existing patient code provided, attach to that record (after verifying phone)\n  if (patientCode && patientCode.trim()) {\n    const [existing] = await db\n      .select()\n      .from(patientsTable)\n      .where(eq(patientsTable.code, patientCode.trim().toUpperCase()));\n    const normalizeName = (s: string) => s.trim().replace(/\\s+/g, \" \");\n    // Attach requires ALL THREE identity factors (phone + birthDate + name) to be\n    // present on the record AND to match \u2014 a record missing any factor cannot be\n    // claimed with fewer factors. Every failure below (including unknown code,\n    // already-linked, email taken) returns the SAME generic response so a caller\n    // probing codes can't distinguish \"code unknown\" from \"code real but identity\n    // wrong\" from \"already linked / email taken\".\n    const phoneMatches =\n      !!existing?.phone &&\n      existing.phone.replace(/\\D/g, \"\") === phone.replace(/\\D/g, \"\");\n    const birthDateMatches =\n      !!existing?.birthDate && String(existing.birthDate) === birthDate;\n    const nameMatches =\n      !!existing?.fullName &&\n      normalizeName(existing.fullName) === normalizeName(fullName);\n    if (\n      !existing ||\n      !phoneMatches ||\n      !birthDateMatches ||\n      !nameMatches ||\n      (existing.email && existing.email !== email) ||\n      existing.passwordHash\n    ) {\n      res.status(400).json({ error: GENERIC_REGISTER_ERROR });\n      return;\n    }\n    // Check if email is taken by another patient\n    const [emailConflict] = await db\n      .select({ id: patientsTable.id })\n      .from(patientsTable)\n      .where(eq(patientsTable.email, email));\n    if (emailConflict && emailConflict.id !== existing.id) {\n      res.status(400).json({ error: GENERIC_REGISTER_ERROR });\n      return;\n    }\n    const passwordHash = await bcrypt.hash(password, BCRYPT_ROUNDS);\n    const [updated] = await db\n      .update(patientsTable)\n      .set({\n        email,\n        passwordHash,\n        lastLoginAt: new Date(),\n      })\n      .where(eq(patientsTable.id, existing.id))\n      .returning();\n    await new Promise<void>((resolve, reject) =>\n      req.session.regenerate((err) => (err ? reject(err) : resolve())),\n    );\n    req.session.patientId = updated.id;\n    await new Promise<void>((resolve, reject) =>\n      req.session.save((err) => (err ? reject(err) : resolve())),\n    );\n    res.status(201).json(toPublicPatient(updated));\n    return;\n  }\n\n  // New patient registration\n  const [emailExists] = await db\n    .select({ id: patientsTable.id })\n    .from(patientsTable)\n    .where(eq(patientsTable.email, email));\n  if (emailExists) {\n    res.status(400).json({ error: GENERIC_REGISTER_ERROR });\n    return;\n  }\n\n  const passwordHash = await bcrypt.hash(password, BCRYPT_ROUNDS);\n  const qrToken = crypto.randomUUID();\n\n  let created: typeof patientsTable.$inferSelect | undefined;\n  for (let attempt = 0; attempt < 3 && !created; attempt++) {\n    const code = await nextPatientCode({ birthDate });\n    try {\n      [created] = await db\n        .insert(patientsTable)\n        .values({\n          code,\n          fullName: fullName.trim(),\n          gender,\n          birthDate,\n          phone: phone.trim(),\n          guardianName: guardianName?.trim() || null,\n          email,\n          passwordHash,\n          qrToken,\n          lastLoginAt: new Date(),\n        })\n        .returning();\n    } catch (err) {\n      if ((err as { code?: string }).code !== \"23505\") throw err;\n    }\n  }\n  if (!created) {\n    res.status(500).json({ error: \"\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0643\u0648\u062F \u0627\u0644\u0645\u0631\u064A\u0636\u060C \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\" });\n    return;\n  }\n\n  await new Promise<void>((resolve, reject) =>\n    req.session.regenerate((err) => (err ? reject(err) : resolve())),\n  );\n  req.session.patientId = created.id;\n  await new Promise<void>((resolve, reject) =>\n    req.session.save((err) => (err ? reject(err) : resolve())),\n  );\n\n  logger.info({ patientId: created.id }, \"patient.register\");\n  res.status(201).json(toPublicPatient(created));\n});\n\nrouter.post(\"/patient-auth/login\", async (req, res): Promise<void> => {\n  const ip = clientIp(req);\n  const ipRl = rateLimit(`p_login:ip:${ip}`, 15 * 60 * 1000, 10, 15 * 60 * 1000);\n  if (!ipRl.ok) {\n    res.setHeader(\"Retry-After\", String(ipRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0627\u0644\u062F\u062E\u0648\u0644\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const parsed = LoginSchema.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u0649 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n  const { email, password } = parsed.data;\n\n  const acctRl = rateLimit(`p_login:acct:${email}`, 15 * 60 * 1000, 5, 15 * 60 * 1000);\n  if (!acctRl.ok) {\n    res.setHeader(\"Retry-After\", String(acctRl.retryAfterSec));\n    res.status(429).json({ error: \"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0627\u0644\u062F\u062E\u0648\u0644\u060C \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u0627\u064B\" });\n    return;\n  }\n\n  const [patient] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.email, email));\n  if (!patient || !patient.passwordHash) {\n    res.status(401).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u0649 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n  const ok = await bcrypt.compare(password, patient.passwordHash);\n  if (!ok) {\n    res.status(401).json({ error: \"\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u0649 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n\n  await db\n    .update(patientsTable)\n    .set({ lastLoginAt: new Date() })\n    .where(eq(patientsTable.id, patient.id));\n\n  await new Promise<void>((resolve, reject) =>\n    req.session.regenerate((err) => (err ? reject(err) : resolve())),\n  );\n  req.session.patientId = patient.id;\n  await new Promise<void>((resolve, reject) =>\n    req.session.save((err) => (err ? reject(err) : resolve())),\n  );\n  res.json(toPublicPatient(patient));\n});\n\nrouter.post(\"/patient-auth/logout\", (req, res): void => {\n  req.session.destroy((err) => {\n    if (err) {\n      res.status(500).json({ error: \"\u062A\u0639\u0630\u0651\u0631 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C\" });\n      return;\n    }\n    res.clearCookie(\"clinic.sid\");\n    res.status(204).end();\n  });\n});\n\nrouter.get(\n  \"/patient-auth/me\",\n  requirePatientAuth,\n  (req: RequestWithPatient, res): void => {\n    res.json(req.currentPatient!);\n  },\n);\n\nexport default router;\n", "import { db, patientsTable, type Patient } from \"@workspace/db\";\nimport { eq } from \"drizzle-orm\";\nimport type { Request, Response, NextFunction } from \"express\";\n\ndeclare module \"express-session\" {\n  interface SessionData {\n    patientId?: string;\n  }\n}\n\nexport type CurrentPatient = {\n  id: string;\n  code: string;\n  fullName: string;\n  email: string;\n  phone: string | null;\n  gender: \"male\" | \"female\";\n  birthDate: string;\n};\n\nexport type RequestWithPatient = Request & {\n  currentPatient?: CurrentPatient;\n};\n\nexport function toPublicPatient(p: Patient): CurrentPatient {\n  return {\n    id: p.id,\n    code: p.code,\n    fullName: p.fullName,\n    email: p.email ?? \"\",\n    phone: p.phone,\n    gender: p.gender,\n    birthDate: String(p.birthDate),\n  };\n}\n\nexport async function loadPatient(\n  patientId: string,\n): Promise<CurrentPatient | null> {\n  const [row] = await db\n    .select()\n    .from(patientsTable)\n    .where(eq(patientsTable.id, patientId));\n  return row ? toPublicPatient(row) : null;\n}\n\nexport async function requirePatientAuth(\n  req: RequestWithPatient,\n  res: Response,\n  next: NextFunction,\n): Promise<void> {\n  const patientId = req.session?.patientId;\n  if (!patientId) {\n    res.status(401).json({ error: \"\u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629\" });\n    return;\n  }\n  const patient = await loadPatient(patientId);\n  if (!patient) {\n    req.session.destroy(() => {\n      res\n        .status(401)\n        .json({ error: \"\u0627\u0646\u062A\u0647\u062A \u0627\u0644\u062C\u0644\u0633\u0629. \u064A\u0631\u062C\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u062C\u062F\u062F\u0627\u064B\" });\n    });\n    return;\n  }\n  req.currentPatient = patient;\n  next();\n}\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc, and, asc, sql } from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport {\n  db,\n  consultationsTable,\n  consultationMessagesTable,\n  patientsTable,\n  usersTable,\n  visitsTable,\n  prescriptionsTable,\n  prescriptionItemsTable,\n} from \"@workspace/db\";\nimport { requireAuth, type RequestWithUser } from \"../lib/session\";\nimport {\n  requirePatientAuth,\n  type RequestWithPatient,\n} from \"../lib/patientSession\";\nimport { summarizeConsultation, isAiConfigured } from \"../lib/aiClient\";\nimport { nextPrescriptionCode } from \"../lib/codes\";\nimport { logAudit } from \"../lib/audit\";\nimport { logger } from \"../lib/logger\";\n\nconst router: IRouter = Router();\n\nconst CreateConsultationSchema = z.object({\n  chiefComplaint: z.string().trim().min(1, \"\u0627\u0643\u062A\u0628 \u0633\u0628\u0628 \u0627\u0644\u0643\u0634\u0641\"),\n  firstMessage: z.string().trim().min(1, \"\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u062A\u0643\"),\n});\n\nconst SendMessageSchema = z.object({\n  body: z.string().trim().min(1, \"\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\").max(5000, \"\u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u0637\u0648\u064A\u0644\u0629 \u062C\u062F\u0627\u064B\"),\n});\n\nfunction ageInYears(birthDate: string): number {\n  const bd = new Date(birthDate);\n  const ms = Date.now() - bd.getTime();\n  return Math.max(0, Math.floor(ms / (365.25 * 24 * 60 * 60 * 1000)));\n}\n\nfunction ageInMonths(birthDate: string): number {\n  const bd = new Date(birthDate);\n  const now = new Date();\n  let m = (now.getFullYear() - bd.getFullYear()) * 12 + (now.getMonth() - bd.getMonth());\n  if (now.getDate() < bd.getDate()) m -= 1;\n  return Math.max(0, m);\n}\n\nconst ROUTE_MAP: Record<string, \"oral_syrup\" | \"oral_tablet\" | \"injection\" | \"topical\" | \"drops\" | \"inhaler\" | \"suppository\"> = {\n  oral_syrup: \"oral_syrup\",\n  oral_tablet: \"oral_tablet\",\n  injection: \"injection\",\n  topical: \"topical\",\n  drops: \"drops\",\n  inhaler: \"inhaler\",\n  suppository: \"suppository\",\n  syrup: \"oral_syrup\",\n  tablet: \"oral_tablet\",\n  oral: \"oral_syrup\",\n  \u0634\u0631\u0627\u0628: \"oral_syrup\",\n  \u0623\u0642\u0631\u0627\u0635: \"oral_tablet\",\n  \u0627\u0642\u0631\u0627\u0635: \"oral_tablet\",\n  \u062D\u0642\u0646: \"injection\",\n  \u062D\u0642\u0646\u0629: \"injection\",\n  \u0645\u0648\u0636\u0639\u0649: \"topical\",\n  \u0645\u0648\u0636\u0639\u064A: \"topical\",\n  \u0646\u0642\u0637: \"drops\",\n  \u0642\u0637\u0631\u0629: \"drops\",\n  \u0628\u062E\u0627\u062E: \"inhaler\",\n  \u0644\u0628\u0648\u0633: \"suppository\",\n  \u062A\u062D\u0627\u0645\u064A\u0644: \"suppository\",\n};\n\nfunction normalizeRoute(raw: string): \"oral_syrup\" | \"oral_tablet\" | \"injection\" | \"topical\" | \"drops\" | \"inhaler\" | \"suppository\" {\n  const key = (raw || \"\").trim().toLowerCase();\n  if (key && ROUTE_MAP[key]) return ROUTE_MAP[key];\n  // Try Arabic without lowercase\n  const rawTrim = (raw || \"\").trim();\n  if (rawTrim && ROUTE_MAP[rawTrim]) return ROUTE_MAP[rawTrim];\n  return \"oral_syrup\";\n}\n\nasync function loadConsultationWithMessages(consultationId: string) {\n  const [consultation] = await db\n    .select({\n      id: consultationsTable.id,\n      patientId: consultationsTable.patientId,\n      doctorId: consultationsTable.doctorId,\n      status: consultationsTable.status,\n      chiefComplaint: consultationsTable.chiefComplaint,\n      summary: consultationsTable.summary,\n      convertedVisitId: consultationsTable.convertedVisitId,\n      createdAt: consultationsTable.createdAt,\n      updatedAt: consultationsTable.updatedAt,\n      closedAt: consultationsTable.closedAt,\n      patientFullName: patientsTable.fullName,\n      patientCode: patientsTable.code,\n      patientPhone: patientsTable.phone,\n      patientGender: patientsTable.gender,\n      patientBirthDate: patientsTable.birthDate,\n      doctorName: usersTable.name,\n    })\n    .from(consultationsTable)\n    .innerJoin(patientsTable, eq(consultationsTable.patientId, patientsTable.id))\n    .leftJoin(usersTable, eq(consultationsTable.doctorId, usersTable.id))\n    .where(eq(consultationsTable.id, consultationId));\n  if (!consultation) return null;\n  const messages = await db\n    .select()\n    .from(consultationMessagesTable)\n    .where(eq(consultationMessagesTable.consultationId, consultationId))\n    .orderBy(asc(consultationMessagesTable.createdAt));\n  return { consultation, messages };\n}\n\n// ===================== PATIENT-FACING =====================\n\nrouter.post(\n  \"/patient-consultations\",\n  requirePatientAuth,\n  async (req: RequestWithPatient, res): Promise<void> => {\n    const me = req.currentPatient!;\n    const parsed = CreateConsultationSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({\n        error: parsed.error.issues[0]?.message ?? \"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0645\u0643\u062A\u0645\u0644\u0629\",\n      });\n      return;\n    }\n    // Avoid spam: limit one open consultation per patient at a time\n    const [openExisting] = await db\n      .select({ id: consultationsTable.id })\n      .from(consultationsTable)\n      .where(\n        and(\n          eq(consultationsTable.patientId, me.id),\n          sql`${consultationsTable.status} IN ('open','in_progress')`,\n        ),\n      );\n    if (openExisting) {\n      res.status(409).json({\n        error: \"\u0644\u062F\u064A\u0643 \u0643\u0634\u0641 \u0627\u0648\u0646\u0644\u0627\u064A\u0646 \u0645\u0641\u062A\u0648\u062D \u0628\u0627\u0644\u0641\u0639\u0644. \u064A\u0631\u062C\u0649 \u0625\u0646\u0647\u0627\u0621\u0647 \u0642\u0628\u0644 \u0628\u062F\u0621 \u0643\u0634\u0641 \u062C\u062F\u064A\u062F.\",\n        existingId: openExisting.id,\n      });\n      return;\n    }\n    const [created] = await db\n      .insert(consultationsTable)\n      .values({\n        patientId: me.id,\n        chiefComplaint: parsed.data.chiefComplaint.trim(),\n        status: \"open\",\n      })\n      .returning();\n    await db.insert(consultationMessagesTable).values({\n      consultationId: created.id,\n      senderType: \"patient\",\n      body: parsed.data.firstMessage.trim(),\n    });\n    await db.insert(consultationMessagesTable).values({\n      consultationId: created.id,\n      senderType: \"system\",\n      body: \"\u062A\u0645 \u0627\u0633\u062A\u0644\u0627\u0645 \u0637\u0644\u0628\u0643\u060C \u0627\u0644\u062F\u0643\u062A\u0648\u0631 \u0633\u064A\u0631\u062F \u0639\u0644\u064A\u0643 \u0642\u0631\u064A\u0628\u0627\u064B.\",\n    });\n    res.status(201).json({ id: created.id });\n  },\n);\n\nrouter.get(\n  \"/patient-consultations\",\n  requirePatientAuth,\n  async (req: RequestWithPatient, res): Promise<void> => {\n    const me = req.currentPatient!;\n    const rows = await db\n      .select({\n        id: consultationsTable.id,\n        status: consultationsTable.status,\n        chiefComplaint: consultationsTable.chiefComplaint,\n        createdAt: consultationsTable.createdAt,\n        closedAt: consultationsTable.closedAt,\n        doctorName: usersTable.name,\n      })\n      .from(consultationsTable)\n      .leftJoin(usersTable, eq(consultationsTable.doctorId, usersTable.id))\n      .where(eq(consultationsTable.patientId, me.id))\n      .orderBy(desc(consultationsTable.createdAt));\n    res.json(rows);\n  },\n);\n\nrouter.get(\n  \"/patient-consultations/:id\",\n  requirePatientAuth,\n  async (req: RequestWithPatient, res): Promise<void> => {\n    const me = req.currentPatient!;\n    const data = await loadConsultationWithMessages(String(req.params.id));\n    if (!data || data.consultation.patientId !== me.id) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    // Mark doctor messages as read\n    await db\n      .update(consultationMessagesTable)\n      .set({ readAt: new Date() })\n      .where(\n        and(\n          eq(consultationMessagesTable.consultationId, data.consultation.id),\n          eq(consultationMessagesTable.senderType, \"doctor\"),\n          sql`${consultationMessagesTable.readAt} IS NULL`,\n        ),\n      );\n    // Strip summary from patient view (internal medical notes)\n    const { summary: _summary, ...rest } = data.consultation;\n    void _summary;\n    res.json({ consultation: rest, messages: data.messages });\n  },\n);\n\nrouter.post(\n  \"/patient-consultations/:id/messages\",\n  requirePatientAuth,\n  async (req: RequestWithPatient, res): Promise<void> => {\n    const me = req.currentPatient!;\n    const parsed = SendMessageSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({\n        error: parsed.error.issues[0]?.message ?? \"\u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\",\n      });\n      return;\n    }\n    const [c] = await db\n      .select()\n      .from(consultationsTable)\n      .where(eq(consultationsTable.id, String(req.params.id)));\n    if (!c || c.patientId !== me.id) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    if (c.status === \"closed\" || c.status === \"converted\") {\n      res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u0643\u0634\u0641 \u0645\u063A\u0644\u0642\u060C \u0627\u0628\u062F\u0623 \u0643\u0634\u0641 \u062C\u062F\u064A\u062F\" });\n      return;\n    }\n    const [msg] = await db\n      .insert(consultationMessagesTable)\n      .values({\n        consultationId: c.id,\n        senderType: \"patient\",\n        body: parsed.data.body.trim(),\n      })\n      .returning();\n    await db\n      .update(consultationsTable)\n      .set({ updatedAt: new Date() })\n      .where(eq(consultationsTable.id, c.id));\n    res.status(201).json(msg);\n  },\n);\n\n// ===================== DOCTOR/STAFF-FACING =====================\n\nrouter.get(\n  \"/consultations\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const status = String(req.query.status ?? \"all\");\n    const filters = [];\n    if (status !== \"all\") {\n      filters.push(eq(consultationsTable.status, status as \"open\" | \"in_progress\" | \"closed\" | \"converted\"));\n    }\n    const rows = await db\n      .select({\n        id: consultationsTable.id,\n        status: consultationsTable.status,\n        chiefComplaint: consultationsTable.chiefComplaint,\n        createdAt: consultationsTable.createdAt,\n        closedAt: consultationsTable.closedAt,\n        convertedVisitId: consultationsTable.convertedVisitId,\n        patientId: consultationsTable.patientId,\n        patientName: patientsTable.fullName,\n        patientCode: patientsTable.code,\n        patientPhone: patientsTable.phone,\n        doctorId: consultationsTable.doctorId,\n        doctorName: usersTable.name,\n        unreadCount: sql<number>`(\n          SELECT COUNT(*)::int FROM consultation_messages cm\n          WHERE cm.consultation_id = ${consultationsTable.id}\n          AND cm.sender_type = 'patient'\n          AND cm.read_at IS NULL\n        )`,\n        lastMessageAt: sql<Date | null>`(\n          SELECT MAX(cm.created_at) FROM consultation_messages cm\n          WHERE cm.consultation_id = ${consultationsTable.id}\n        )`,\n      })\n      .from(consultationsTable)\n      .innerJoin(patientsTable, eq(consultationsTable.patientId, patientsTable.id))\n      .leftJoin(usersTable, eq(consultationsTable.doctorId, usersTable.id))\n      .where(filters.length ? and(...filters) : undefined)\n      .orderBy(desc(consultationsTable.updatedAt));\n    res.json(rows);\n  },\n);\n\nrouter.get(\n  \"/consultations/:id\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const data = await loadConsultationWithMessages(String(req.params.id));\n    if (!data) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    // Mark patient messages as read\n    await db\n      .update(consultationMessagesTable)\n      .set({ readAt: new Date() })\n      .where(\n        and(\n          eq(consultationMessagesTable.consultationId, data.consultation.id),\n          eq(consultationMessagesTable.senderType, \"patient\"),\n          sql`${consultationMessagesTable.readAt} IS NULL`,\n        ),\n      );\n    res.json(data);\n  },\n);\n\nrouter.post(\n  \"/consultations/:id/assign\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const me = req.currentUser!;\n    const [c] = await db\n      .select()\n      .from(consultationsTable)\n      .where(eq(consultationsTable.id, String(req.params.id)));\n    if (!c) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    const [updated] = await db\n      .update(consultationsTable)\n      .set({\n        doctorId: me.id,\n        status: c.status === \"open\" ? \"in_progress\" : c.status,\n      })\n      .where(eq(consultationsTable.id, c.id))\n      .returning();\n    res.json(updated);\n  },\n);\n\nrouter.post(\n  \"/consultations/:id/messages\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const me = req.currentUser!;\n    const parsed = SendMessageSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({\n        error: parsed.error.issues[0]?.message ?? \"\u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\",\n      });\n      return;\n    }\n    const [c] = await db\n      .select()\n      .from(consultationsTable)\n      .where(eq(consultationsTable.id, String(req.params.id)));\n    if (!c) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    if (c.status === \"closed\" || c.status === \"converted\") {\n      res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u0643\u0634\u0641 \u0645\u063A\u0644\u0642\" });\n      return;\n    }\n    // Auto-assign on first reply + bump updatedAt so list ordering stays fresh\n    const updates: { doctorId?: string; status?: \"in_progress\"; updatedAt: Date } = {\n      updatedAt: new Date(),\n    };\n    if (!c.doctorId) updates.doctorId = me.id;\n    if (c.status === \"open\") updates.status = \"in_progress\";\n    await db\n      .update(consultationsTable)\n      .set(updates)\n      .where(eq(consultationsTable.id, c.id));\n    const [msg] = await db\n      .insert(consultationMessagesTable)\n      .values({\n        consultationId: c.id,\n        senderType: \"doctor\",\n        senderUserId: me.id,\n        body: parsed.data.body.trim(),\n      })\n      .returning();\n    res.status(201).json(msg);\n  },\n);\n\nrouter.post(\n  \"/consultations/:id/summarize\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    if (!isAiConfigured()) {\n      res.status(503).json({\n        error: \"\u062E\u062F\u0645\u0629 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u0649 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D\u0629 \u062D\u0627\u0644\u064A\u0627\u064B\",\n      });\n      return;\n    }\n    const data = await loadConsultationWithMessages(String(req.params.id));\n    if (!data) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    const conversationOnly = data.messages.filter(\n      (m) => m.senderType !== \"system\",\n    );\n    if (conversationOnly.length < 2) {\n      res.status(400).json({\n        error: \"\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629 \u0642\u0635\u064A\u0631\u0629 \u062C\u062F\u0627\u064B \u0644\u0644\u062A\u0644\u062E\u064A\u0635 \u2014 \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0641\u064A\u0647\u0627 \u0631\u0633\u0627\u0626\u0644 \u0645\u0646 \u0627\u0644\u0637\u0628\u064A\u0628 \u0648\u0627\u0644\u0645\u0631\u064A\u0636\",\n      });\n      return;\n    }\n    try {\n      const summary = await summarizeConsultation({\n        patientName: data.consultation.patientFullName,\n        patientAgeYears: ageInYears(String(data.consultation.patientBirthDate)),\n        patientGender: data.consultation.patientGender as \"male\" | \"female\",\n        messages: conversationOnly.map((m) => ({\n          senderType: m.senderType as \"patient\" | \"doctor\" | \"system\",\n          body: m.body,\n          createdAt: m.createdAt,\n        })),\n      });\n      const [updated] = await db\n        .update(consultationsTable)\n        .set({ summary })\n        .where(eq(consultationsTable.id, data.consultation.id))\n        .returning();\n      res.json({ summary, consultation: updated });\n    } catch (err) {\n      logger.error({ err }, \"consultation.summarize failed\");\n      res.status(500).json({\n        error: \"\u062A\u0639\u0630\u0651\u0631 \u062A\u0648\u0644\u064A\u062F \u0627\u0644\u062A\u0644\u062E\u064A\u0635 \u2014 \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\",\n      });\n    }\n  },\n);\n\nconst ConvertSchema = z.object({\n  summary: z.object({\n    chiefComplaint: z.string().default(\"\"),\n    historyOfPresentIllness: z.string().default(\"\"),\n    associatedSymptoms: z.string().default(\"\"),\n    durationOnset: z.string().default(\"\"),\n    examinationFindings: z.string().default(\"\"),\n    provisionalDiagnosis: z.string().default(\"\"),\n    differentialDiagnosis: z.string().default(\"\"),\n    managementPlan: z.string().default(\"\"),\n    medications: z.array(\n      z.object({\n        drugName: z.string().default(\"\"),\n        dosage: z.string().default(\"\"),\n        frequency: z.string().default(\"\"),\n        duration: z.string().default(\"\"),\n        route: z.string().default(\"\"),\n        instructions: z.string().default(\"\"),\n      }),\n    ).default([]),\n    followUpInstructions: z.string().default(\"\"),\n    redFlags: z.string().default(\"\"),\n    notes: z.string().default(\"\"),\n  }),\n  createPrescription: z.boolean().default(true),\n});\n\nrouter.post(\n  \"/consultations/:id/convert-to-visit\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const me = req.currentUser!;\n    const parsed = ConvertSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({\n        error: parsed.error.issues[0]?.message ?? \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\",\n      });\n      return;\n    }\n    const consultationId = String(req.params.id);\n    const s = parsed.data.summary;\n\n    let result: { visitId: string; prescriptionId: string | null; alreadyConverted?: { visitId: string } } | null = null;\n    try {\n      result = await db.transaction(async (tx) => {\n        // Lock consultation row to serialize concurrent conversions\n        const [c] = await tx\n          .select()\n          .from(consultationsTable)\n          .where(eq(consultationsTable.id, consultationId))\n          .for(\"update\");\n        if (!c) {\n          return null;\n        }\n        if (c.status === \"converted\" && c.convertedVisitId) {\n          return { visitId: c.convertedVisitId, prescriptionId: null, alreadyConverted: { visitId: c.convertedVisitId } };\n        }\n\n        const doctorReport = {\n          complaint: s.chiefComplaint,\n          complaintDuration: s.durationOnset,\n          historyOfPresentIllness: s.historyOfPresentIllness,\n          associatedSymptoms: s.associatedSymptoms,\n          examination: s.examinationFindings,\n          provisionalDiagnosis: s.provisionalDiagnosis,\n          differentialDiagnosis: s.differentialDiagnosis,\n          managementPlan: s.managementPlan,\n          followUp: s.followUpInstructions,\n          redFlags: s.redFlags,\n          notes: s.notes,\n          source: \"online_consultation\",\n          consultationId: c.id,\n        };\n\n        const [visit] = await tx\n        .insert(visitsTable)\n        .values({\n          patientId: c.patientId,\n          doctorId: me.id,\n          diagnosis: s.provisionalDiagnosis || null,\n          notes: s.managementPlan || null,\n          doctorReport,\n        })\n        .returning();\n\n      let prescriptionId: string | null = null;\n      const validMeds = (s.medications ?? []).filter(\n        (m) => m.drugName && m.drugName.trim(),\n      );\n      if (parsed.data.createPrescription && validMeds.length > 0) {\n        const code = await nextPrescriptionCode();\n        const diagnosisText =\n          (s.provisionalDiagnosis && s.provisionalDiagnosis.trim()) ||\n          (s.chiefComplaint && s.chiefComplaint.trim()) ||\n          \"\u0643\u0634\u0641 \u0627\u0648\u0646\u0644\u0627\u064A\u0646\";\n        const [rx] = await tx\n          .insert(prescriptionsTable)\n          .values({\n            code,\n            patientId: c.patientId,\n            doctorId: me.id,\n            visitId: visit.id,\n            diagnosis: diagnosisText,\n            source: \"online_consultation\",\n            qrToken: crypto.randomUUID(),\n            patientAgeMonths: ageInMonths(\n              String((await tx\n                .select({ b: patientsTable.birthDate })\n                .from(patientsTable)\n                .where(eq(patientsTable.id, c.patientId)))[0]?.b ?? new Date().toISOString().slice(0, 10)),\n            ),\n          })\n          .returning();\n        await tx.insert(prescriptionItemsTable).values(\n          validMeds.map((m, i) => ({\n            prescriptionId: rx.id,\n            drugName: m.drugName.trim(),\n            concentration: null,\n            dosage: (m.dosage && m.dosage.trim()) || \"\u062D\u0633\u0628 \u062A\u0639\u0644\u064A\u0645\u0627\u062A \u0627\u0644\u0637\u0628\u064A\u0628\",\n            frequency: (m.frequency && m.frequency.trim()) || \"\u062D\u0633\u0628 \u0627\u0644\u062D\u0627\u062C\u0629\",\n            duration: (m.duration && m.duration.trim()) || \"\u062D\u0633\u0628 \u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A\",\n            route: normalizeRoute(m.route ?? \"\"),\n            instructions: (m.instructions && m.instructions.trim()) || null,\n            sortOrder: i,\n          })),\n        );\n        prescriptionId = rx.id;\n      }\n\n      await tx\n        .update(consultationsTable)\n        .set({\n          status: \"converted\",\n          summary: s,\n          convertedVisitId: visit.id,\n          closedAt: new Date(),\n        })\n        .where(eq(consultationsTable.id, c.id));\n\n      await tx.insert(consultationMessagesTable).values({\n        consultationId: c.id,\n        senderType: \"system\",\n        body: \"\u062A\u0645 \u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0643\u0634\u0641 \u0627\u0644\u0627\u0648\u0646\u0644\u0627\u064A\u0646 \u0644\u0632\u064A\u0627\u0631\u0629 \u0643\u0627\u0645\u0644\u0629 \u0648\u062D\u0641\u0638 \u0627\u0644\u062A\u0642\u0631\u064A\u0631 \u0627\u0644\u0637\u0628\u0649.\",\n      });\n\n        return { visitId: visit.id, prescriptionId };\n      });\n    } catch (err) {\n      logger.error({ err }, \"consultation.convert failed\");\n      res.status(500).json({ error: \"\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0643\u0634\u0641 \u0644\u0632\u064A\u0627\u0631\u0629\" });\n      return;\n    }\n\n    if (!result) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n\n    if (result.alreadyConverted) {\n      res.status(409).json({\n        error: \"\u062A\u0645 \u062A\u062D\u0648\u064A\u0644 \u0647\u0630\u0627 \u0627\u0644\u0643\u0634\u0641 \u0644\u0632\u064A\u0627\u0631\u0629 \u0628\u0627\u0644\u0641\u0639\u0644\",\n        visitId: result.alreadyConverted.visitId,\n      });\n      return;\n    }\n\n    await logAudit({\n      userId: me.id,\n      action: \"consultation.convert\",\n      entity: \"consultation\",\n      entityId: consultationId,\n      meta: { visitId: result.visitId, prescriptionId: result.prescriptionId },\n    });\n\n    res.status(201).json({ visitId: result.visitId, prescriptionId: result.prescriptionId });\n  },\n);\n\nrouter.post(\n  \"/consultations/:id/close\",\n  requireAuth,\n  async (req: RequestWithUser, res): Promise<void> => {\n    const [c] = await db\n      .select()\n      .from(consultationsTable)\n      .where(eq(consultationsTable.id, String(req.params.id)));\n    if (!c) {\n      res.status(404).json({ error: \"\u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    if (c.status === \"closed\" || c.status === \"converted\") {\n      res.json(c);\n      return;\n    }\n    const [updated] = await db\n      .update(consultationsTable)\n      .set({ status: \"closed\", closedAt: new Date() })\n      .where(eq(consultationsTable.id, c.id))\n      .returning();\n    await db.insert(consultationMessagesTable).values({\n      consultationId: c.id,\n      senderType: \"system\",\n      body: \"\u062A\u0645 \u0625\u0646\u0647\u0627\u0621 \u0627\u0644\u0643\u0634\u0641 \u0627\u0644\u0627\u0648\u0646\u0644\u0627\u064A\u0646.\",\n    });\n    res.json(updated);\n  },\n);\n\nexport default router;\n", "function __classPrivateFieldSet(receiver, state, value, kind, f) {\n    if (kind === \"m\")\n        throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f)\n        throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n        throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return kind === \"a\" ? f.call(receiver, value) : f ? (f.value = value) : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n    if (kind === \"a\" && !f)\n        throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n        throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport { __classPrivateFieldSet, __classPrivateFieldGet };\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * https://stackoverflow.com/a/2117523\n */\nexport let uuid4 = function () {\n  const { crypto } = globalThis as any;\n  if (crypto?.randomUUID) {\n    uuid4 = crypto.randomUUID.bind(crypto);\n    return crypto.randomUUID();\n  }\n  const u8 = new Uint8Array(1);\n  const randomByte = crypto ? () => crypto.getRandomValues(u8)[0]! : () => (Math.random() * 0xff) & 0xff;\n  return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>\n    (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16),\n  );\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nexport function isAbortError(err: unknown) {\n  return (\n    typeof err === 'object' &&\n    err !== null &&\n    // Spec-compliant fetch implementations\n    (('name' in err && (err as any).name === 'AbortError') ||\n      // Expo fetch\n      ('message' in err && String((err as any).message).includes('FetchRequestCanceledException')))\n  );\n}\n\nexport const castToError = (err: any): Error => {\n  if (err instanceof Error) return err;\n  if (typeof err === 'object' && err !== null) {\n    try {\n      if (Object.prototype.toString.call(err) === '[object Error]') {\n        // @ts-ignore - not all envs have native support for cause yet\n        const error = new Error(err.message, err.cause ? { cause: err.cause } : {});\n        if (err.stack) error.stack = err.stack;\n        // @ts-ignore - not all envs have native support for cause yet\n        if (err.cause && !error.cause) error.cause = err.cause;\n        if (err.name) error.name = err.name;\n        return error;\n      }\n    } catch {}\n    try {\n      return new Error(JSON.stringify(err));\n    } catch {}\n  }\n  return new Error(err);\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { castToError } from '../internal/errors';\nimport type { ErrorType } from '../resources/shared';\n\nexport class AnthropicError extends Error {}\n\nexport class APIError<\n  TStatus extends number | undefined = number | undefined,\n  THeaders extends Headers | undefined = Headers | undefined,\n  TError extends Object | undefined = Object | undefined,\n> extends AnthropicError {\n  /** HTTP status for the response that caused the error */\n  readonly status: TStatus;\n  /** HTTP headers for the response that caused the error */\n  readonly headers: THeaders;\n  /** JSON body of the response that caused the error */\n  readonly error: TError;\n\n  readonly requestID: string | null | undefined;\n\n  /** The `error.type` from the API response body, e.g. `\"rate_limit_error\"` */\n  readonly type: ErrorType | null;\n\n  constructor(\n    status: TStatus,\n    error: TError,\n    message: string | undefined,\n    headers: THeaders,\n    type?: ErrorType | null,\n  ) {\n    super(`${APIError.makeMessage(status, error, message)}`);\n    this.status = status;\n    this.headers = headers;\n    this.requestID = headers?.get('request-id');\n    this.error = error;\n    this.type = type ?? null;\n  }\n\n  private static makeMessage(status: number | undefined, error: any, message: string | undefined) {\n    const msg =\n      error?.message ?\n        typeof error.message === 'string' ?\n          error.message\n        : JSON.stringify(error.message)\n      : error ? JSON.stringify(error)\n      : message;\n\n    if (status && msg) {\n      return `${status} ${msg}`;\n    }\n    if (status) {\n      return `${status} status code (no body)`;\n    }\n    if (msg) {\n      return msg;\n    }\n    return '(no status code or body)';\n  }\n\n  static generate(\n    status: number | undefined,\n    errorResponse: Object | undefined,\n    message: string | undefined,\n    headers: Headers | undefined,\n  ): APIError {\n    if (!status || !headers) {\n      return new APIConnectionError({ message, cause: castToError(errorResponse) });\n    }\n\n    const error = errorResponse as Record<string, any>;\n    const type = error?.['error']?.['type'] as ErrorType | undefined;\n\n    if (status === 400) {\n      return new BadRequestError(status, error, message, headers, type);\n    }\n\n    if (status === 401) {\n      return new AuthenticationError(status, error, message, headers, type);\n    }\n\n    if (status === 403) {\n      return new PermissionDeniedError(status, error, message, headers, type);\n    }\n\n    if (status === 404) {\n      return new NotFoundError(status, error, message, headers, type);\n    }\n\n    if (status === 409) {\n      return new ConflictError(status, error, message, headers, type);\n    }\n\n    if (status === 422) {\n      return new UnprocessableEntityError(status, error, message, headers, type);\n    }\n\n    if (status === 429) {\n      return new RateLimitError(status, error, message, headers, type);\n    }\n\n    if (status >= 500) {\n      return new InternalServerError(status, error, message, headers, type);\n    }\n\n    return new APIError(status, error, message, headers, type);\n  }\n}\n\nexport class APIUserAbortError extends APIError<undefined, undefined, undefined> {\n  constructor({ message }: { message?: string } = {}) {\n    super(undefined, undefined, message || 'Request was aborted.', undefined);\n  }\n}\n\nexport class APIConnectionError extends APIError<undefined, undefined, undefined> {\n  constructor({ message, cause }: { message?: string | undefined; cause?: Error | undefined }) {\n    super(undefined, undefined, message || 'Connection error.', undefined);\n    // in some environments the 'cause' property is already declared\n    // @ts-ignore\n    if (cause) this.cause = cause;\n  }\n}\n\nexport class APIConnectionTimeoutError extends APIConnectionError {\n  constructor({ message }: { message?: string } = {}) {\n    super({ message: message ?? 'Request timed out.' });\n  }\n}\n\nexport class BadRequestError extends APIError<400, Headers> {}\n\nexport class AuthenticationError extends APIError<401, Headers> {}\n\nexport class PermissionDeniedError extends APIError<403, Headers> {}\n\nexport class NotFoundError extends APIError<404, Headers> {}\n\nexport class ConflictError extends APIError<409, Headers> {}\n\nexport class UnprocessableEntityError extends APIError<422, Headers> {}\n\nexport class RateLimitError extends APIError<429, Headers> {}\n\nexport class InternalServerError extends APIError<number, Headers> {}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from '../../core/error';\n\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\n\nexport const isAbsoluteURL = (url: string): boolean => {\n  return startsWithSchemeRegexp.test(url);\n};\n\nexport let isArray = (val: unknown): val is unknown[] => ((isArray = Array.isArray), isArray(val));\nexport let isReadonlyArray = isArray as (val: unknown) => val is readonly unknown[];\n\n/** Returns an object if the given value isn't an object, otherwise returns as-is */\nexport function maybeObj(x: unknown): object {\n  if (typeof x !== 'object') {\n    return {};\n  }\n\n  return x ?? {};\n}\n\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj: Object | null | undefined): boolean {\n  if (!obj) return true;\n  for (const _k in obj) return false;\n  return true;\n}\n\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn<T extends object = object>(obj: T, key: PropertyKey): key is keyof T {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function isObj(obj: unknown): obj is Record<string, unknown> {\n  return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n\nexport const ensurePresent = <T>(value: T | null | undefined): T => {\n  if (value == null) {\n    throw new AnthropicError(`Expected a value to be given but received ${value} instead.`);\n  }\n\n  return value;\n};\n\nexport const validatePositiveInteger = (name: string, n: unknown): number => {\n  if (typeof n !== 'number' || !Number.isInteger(n)) {\n    throw new AnthropicError(`${name} must be an integer`);\n  }\n  if (n < 0) {\n    throw new AnthropicError(`${name} must be a positive integer`);\n  }\n  return n;\n};\n\nexport const coerceInteger = (value: unknown): number => {\n  if (typeof value === 'number') return Math.round(value);\n  if (typeof value === 'string') return parseInt(value, 10);\n\n  throw new AnthropicError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceFloat = (value: unknown): number => {\n  if (typeof value === 'number') return value;\n  if (typeof value === 'string') return parseFloat(value);\n\n  throw new AnthropicError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceBoolean = (value: unknown): boolean => {\n  if (typeof value === 'boolean') return value;\n  if (typeof value === 'string') return value === 'true';\n  return Boolean(value);\n};\n\nexport const maybeCoerceInteger = (value: unknown): number | undefined => {\n  if (value == null) {\n    return undefined;\n  }\n  return coerceInteger(value);\n};\n\nexport const maybeCoerceFloat = (value: unknown): number | undefined => {\n  if (value == null) {\n    return undefined;\n  }\n  return coerceFloat(value);\n};\n\nexport const maybeCoerceBoolean = (value: unknown): boolean | undefined => {\n  if (value == null) {\n    return undefined;\n  }\n  return coerceBoolean(value);\n};\n\nexport const safeJSON = (text: string) => {\n  try {\n    return JSON.parse(text);\n  } catch (err) {\n    return undefined;\n  }\n};\n\n// Gets a value from an object, deletes the key, and returns the value (or undefined if not found)\nexport const pop = <T extends Record<string, any>, K extends string>(obj: T, key: K): T[K] => {\n  const value = obj[key];\n  delete obj[key];\n  return value;\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nexport const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n", "export const VERSION = '0.91.1'; // x-release-please-version\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { VERSION } from '../version';\n\nexport const isRunningInBrowser = () => {\n  return (\n    // @ts-ignore\n    typeof window !== 'undefined' &&\n    // @ts-ignore\n    typeof window.document !== 'undefined' &&\n    // @ts-ignore\n    typeof navigator !== 'undefined'\n  );\n};\n\ntype DetectedPlatform = 'deno' | 'node' | 'edge' | 'unknown';\n\n/**\n * Note this does not detect 'browser'; for that, use getBrowserInfo().\n */\nfunction getDetectedPlatform(): DetectedPlatform {\n  if (typeof Deno !== 'undefined' && Deno.build != null) {\n    return 'deno';\n  }\n  if (typeof EdgeRuntime !== 'undefined') {\n    return 'edge';\n  }\n  if (\n    Object.prototype.toString.call(\n      typeof (globalThis as any).process !== 'undefined' ? (globalThis as any).process : 0,\n    ) === '[object process]'\n  ) {\n    return 'node';\n  }\n  return 'unknown';\n}\n\ndeclare const Deno: any;\ndeclare const EdgeRuntime: any;\ntype Arch = 'x32' | 'x64' | 'arm' | 'arm64' | `other:${string}` | 'unknown';\ntype PlatformName =\n  | 'MacOS'\n  | 'Linux'\n  | 'Windows'\n  | 'FreeBSD'\n  | 'OpenBSD'\n  | 'iOS'\n  | 'Android'\n  | `Other:${string}`\n  | 'Unknown';\ntype Browser = 'ie' | 'edge' | 'chrome' | 'firefox' | 'safari';\ntype PlatformProperties = {\n  'X-Stainless-Lang': 'js';\n  'X-Stainless-Package-Version': string;\n  'X-Stainless-OS': PlatformName;\n  'X-Stainless-Arch': Arch;\n  'X-Stainless-Runtime': 'node' | 'deno' | 'edge' | `browser:${Browser}` | 'unknown';\n  'X-Stainless-Runtime-Version': string;\n};\nconst getPlatformProperties = (): PlatformProperties => {\n  const detectedPlatform = getDetectedPlatform();\n  if (detectedPlatform === 'deno') {\n    return {\n      'X-Stainless-Lang': 'js',\n      'X-Stainless-Package-Version': VERSION,\n      'X-Stainless-OS': normalizePlatform(Deno.build.os),\n      'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n      'X-Stainless-Runtime': 'deno',\n      'X-Stainless-Runtime-Version':\n        typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n    };\n  }\n  if (typeof EdgeRuntime !== 'undefined') {\n    return {\n      'X-Stainless-Lang': 'js',\n      'X-Stainless-Package-Version': VERSION,\n      'X-Stainless-OS': 'Unknown',\n      'X-Stainless-Arch': `other:${EdgeRuntime}`,\n      'X-Stainless-Runtime': 'edge',\n      'X-Stainless-Runtime-Version': (globalThis as any).process.version,\n    };\n  }\n  // Check if Node.js\n  if (detectedPlatform === 'node') {\n    return {\n      'X-Stainless-Lang': 'js',\n      'X-Stainless-Package-Version': VERSION,\n      'X-Stainless-OS': normalizePlatform((globalThis as any).process.platform ?? 'unknown'),\n      'X-Stainless-Arch': normalizeArch((globalThis as any).process.arch ?? 'unknown'),\n      'X-Stainless-Runtime': 'node',\n      'X-Stainless-Runtime-Version': (globalThis as any).process.version ?? 'unknown',\n    };\n  }\n\n  const browserInfo = getBrowserInfo();\n  if (browserInfo) {\n    return {\n      'X-Stainless-Lang': 'js',\n      'X-Stainless-Package-Version': VERSION,\n      'X-Stainless-OS': 'Unknown',\n      'X-Stainless-Arch': 'unknown',\n      'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n      'X-Stainless-Runtime-Version': browserInfo.version,\n    };\n  }\n\n  // TODO add support for Cloudflare workers, etc.\n  return {\n    'X-Stainless-Lang': 'js',\n    'X-Stainless-Package-Version': VERSION,\n    'X-Stainless-OS': 'Unknown',\n    'X-Stainless-Arch': 'unknown',\n    'X-Stainless-Runtime': 'unknown',\n    'X-Stainless-Runtime-Version': 'unknown',\n  };\n};\n\ntype BrowserInfo = {\n  browser: Browser;\n  version: string;\n};\n\ndeclare const navigator: { userAgent: string } | undefined;\n\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo(): BrowserInfo | null {\n  if (typeof navigator === 'undefined' || !navigator) {\n    return null;\n  }\n\n  // NOTE: The order matters here!\n  const browserPatterns = [\n    { key: 'edge' as const, pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n    { key: 'ie' as const, pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n    { key: 'ie' as const, pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n    { key: 'chrome' as const, pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n    { key: 'firefox' as const, pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n    { key: 'safari' as const, pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n  ];\n\n  // Find the FIRST matching browser\n  for (const { key, pattern } of browserPatterns) {\n    const match = pattern.exec(navigator.userAgent);\n    if (match) {\n      const major = match[1] || 0;\n      const minor = match[2] || 0;\n      const patch = match[3] || 0;\n\n      return { browser: key, version: `${major}.${minor}.${patch}` };\n    }\n  }\n\n  return null;\n}\n\nconst normalizeArch = (arch: string): Arch => {\n  // Node docs:\n  // - https://nodejs.org/api/process.html#processarch\n  // Deno docs:\n  // - https://doc.deno.land/deno/stable/~/Deno.build\n  if (arch === 'x32') return 'x32';\n  if (arch === 'x86_64' || arch === 'x64') return 'x64';\n  if (arch === 'arm') return 'arm';\n  if (arch === 'aarch64' || arch === 'arm64') return 'arm64';\n  if (arch) return `other:${arch}`;\n  return 'unknown';\n};\n\nconst normalizePlatform = (platform: string): PlatformName => {\n  // Node platforms:\n  // - https://nodejs.org/api/process.html#processplatform\n  // Deno platforms:\n  // - https://doc.deno.land/deno/stable/~/Deno.build\n  // - https://github.com/denoland/deno/issues/14799\n\n  platform = platform.toLowerCase();\n\n  // NOTE: this iOS check is untested and may not work\n  // Node does not work natively on IOS, there is a fork at\n  // https://github.com/nodejs-mobile/nodejs-mobile\n  // however it is unknown at the time of writing how to detect if it is running\n  if (platform.includes('ios')) return 'iOS';\n  if (platform === 'android') return 'Android';\n  if (platform === 'darwin') return 'MacOS';\n  if (platform === 'win32') return 'Windows';\n  if (platform === 'freebsd') return 'FreeBSD';\n  if (platform === 'openbsd') return 'OpenBSD';\n  if (platform === 'linux') return 'Linux';\n  if (platform) return `Other:${platform}`;\n  return 'Unknown';\n};\n\nlet _platformHeaders: PlatformProperties;\nexport const getPlatformHeaders = () => {\n  return (_platformHeaders ??= getPlatformProperties());\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * This module provides internal shims and utility functions for environments where certain Node.js or global types may not be available.\n *\n * These are used to ensure we can provide a consistent behaviour between different JavaScript environments and good error\n * messages in cases where an environment isn't fully supported.\n */\n\nimport type { Fetch } from './builtin-types';\nimport type { ReadableStream } from './shim-types';\n\nexport function getDefaultFetch(): Fetch {\n  if (typeof fetch !== 'undefined') {\n    return fetch as any;\n  }\n\n  throw new Error(\n    '`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`',\n  );\n}\n\ntype ReadableStreamArgs = ConstructorParameters<typeof ReadableStream>;\n\nexport function makeReadableStream(...args: ReadableStreamArgs): ReadableStream {\n  const ReadableStream = (globalThis as any).ReadableStream;\n  if (typeof ReadableStream === 'undefined') {\n    // Note: All of the platforms / runtimes we officially support already define\n    // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.\n    throw new Error(\n      '`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`',\n    );\n  }\n\n  return new ReadableStream(...args);\n}\n\nexport function ReadableStreamFrom<T>(iterable: Iterable<T> | AsyncIterable<T>): ReadableStream<T> {\n  let iter: AsyncIterator<T> | Iterator<T> =\n    Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n\n  return makeReadableStream({\n    start() {},\n    async pull(controller: any) {\n      const { done, value } = await iter.next();\n      if (done) {\n        controller.close();\n      } else {\n        controller.enqueue(value);\n      }\n    },\n    async cancel() {\n      await iter.return?.();\n    },\n  });\n}\n\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {\n  if (stream[Symbol.asyncIterator]) return stream;\n\n  const reader = stream.getReader();\n  return {\n    async next() {\n      try {\n        const result = await reader.read();\n        if (result?.done) reader.releaseLock(); // release lock when stream becomes closed\n        return result;\n      } catch (e) {\n        reader.releaseLock(); // release lock when stream becomes errored\n        throw e;\n      }\n    },\n    async return() {\n      const cancelPromise = reader.cancel();\n      reader.releaseLock();\n      await cancelPromise;\n      return { done: true, value: undefined };\n    },\n    [Symbol.asyncIterator]() {\n      return this;\n    },\n  };\n}\n\n/**\n * Cancels a ReadableStream we don't need to consume.\n * See https://undici.nodejs.org/#/?id=garbage-collection\n */\nexport async function CancelReadableStream(stream: any): Promise<void> {\n  if (stream === null || typeof stream !== 'object') return;\n\n  if (stream[Symbol.asyncIterator]) {\n    await stream[Symbol.asyncIterator]().return?.();\n    return;\n  }\n\n  const reader = stream.getReader();\n  const cancelPromise = reader.cancel();\n  reader.releaseLock();\n  await cancelPromise;\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { NullableHeaders } from './headers';\n\nimport type { BodyInit } from './builtin-types';\nimport { Stream } from '../core/streaming';\nimport type { HTTPMethod, MergedRequestInit } from './types';\nimport { type HeadersLike } from './headers';\n\nexport type FinalRequestOptions = RequestOptions & { method: HTTPMethod; path: string };\n\nexport type RequestOptions = {\n  /**\n   * The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').\n   */\n  method?: HTTPMethod;\n\n  /**\n   * The URL path for the request.\n   *\n   * @example \"/v1/foo\"\n   */\n  path?: string;\n\n  /**\n   * Query parameters to include in the request URL.\n   */\n  query?: object | undefined | null;\n\n  /**\n   * The request body. Can be a string, JSON object, FormData, or other supported types.\n   */\n  body?: unknown;\n\n  /**\n   * HTTP headers to include with the request. Can be a Headers object, plain object, or array of tuples.\n   */\n  headers?: HeadersLike;\n\n  /**\n   * The maximum number of times that the client will retry a request in case of a\n   * temporary failure, like a network error or a 5XX error from the server.\n   *\n   * @default 2\n   */\n  maxRetries?: number;\n\n  stream?: boolean | undefined;\n\n  /**\n   * The maximum amount of time (in milliseconds) that the client should wait for a response\n   * from the server before timing out a single request.\n   *\n   * @unit milliseconds\n   */\n  timeout?: number;\n\n  /**\n   * Additional `RequestInit` options to be passed to the underlying `fetch` call.\n   * These options will be merged with the client's default fetch options.\n   */\n  fetchOptions?: MergedRequestInit;\n\n  /**\n   * An AbortSignal that can be used to cancel the request.\n   */\n  signal?: AbortSignal | undefined | null;\n\n  /**\n   * A unique key for this request to enable idempotency.\n   */\n  idempotencyKey?: string;\n\n  /**\n   * Override the default base URL for this specific request.\n   */\n  defaultBaseURL?: string | undefined;\n\n  __binaryResponse?: boolean | undefined;\n  __streamClass?: typeof Stream;\n};\n\nexport type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };\nexport type RequestEncoder = (request: { headers: NullableHeaders; body: unknown }) => EncodedContent;\n\nexport const FallbackEncoder: RequestEncoder = ({ headers, body }) => {\n  return {\n    bodyHeaders: {\n      'content-type': 'application/json',\n    },\n    body: JSON.stringify(body),\n  };\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from '../../core/error';\n\n/**\n * Basic re-implementation of `qs.stringify` for primitive types.\n */\nexport function stringifyQuery(query: object | Record<string, unknown>) {\n  return Object.entries(query)\n    .filter(([_, value]) => typeof value !== 'undefined')\n    .map(([key, value]) => {\n      if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n      }\n      if (value === null) {\n        return `${encodeURIComponent(key)}=`;\n      }\n      throw new AnthropicError(\n        `Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`,\n      );\n    })\n    .join('&');\n}\n", "export function concatBytes(buffers: Uint8Array[]): Uint8Array {\n  let length = 0;\n  for (const buffer of buffers) {\n    length += buffer.length;\n  }\n  const output = new Uint8Array(length);\n  let index = 0;\n  for (const buffer of buffers) {\n    output.set(buffer, index);\n    index += buffer.length;\n  }\n\n  return output;\n}\n\nlet encodeUTF8_: (str: string) => Uint8Array;\nexport function encodeUTF8(str: string) {\n  let encoder;\n  return (\n    encodeUTF8_ ??\n    ((encoder = new (globalThis as any).TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder)))\n  )(str);\n}\n\nlet decodeUTF8_: (bytes: Uint8Array) => string;\nexport function decodeUTF8(bytes: Uint8Array) {\n  let decoder;\n  return (\n    decodeUTF8_ ??\n    ((decoder = new (globalThis as any).TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder)))\n  )(bytes);\n}\n", "import { concatBytes, decodeUTF8, encodeUTF8 } from '../utils/bytes';\n\nexport type Bytes = string | ArrayBuffer | Uint8Array | null | undefined;\n\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n  // prettier-ignore\n  static NEWLINE_CHARS = new Set(['\\n', '\\r']);\n  static NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n\n  #buffer: Uint8Array;\n  #carriageReturnIndex: number | null;\n\n  constructor() {\n    this.#buffer = new Uint8Array();\n    this.#carriageReturnIndex = null;\n  }\n\n  decode(chunk: Bytes): string[] {\n    if (chunk == null) {\n      return [];\n    }\n\n    const binaryChunk =\n      chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n      : typeof chunk === 'string' ? encodeUTF8(chunk)\n      : chunk;\n\n    this.#buffer = concatBytes([this.#buffer, binaryChunk]);\n\n    const lines: string[] = [];\n    let patternIndex;\n    while ((patternIndex = findNewlineIndex(this.#buffer, this.#carriageReturnIndex)) != null) {\n      if (patternIndex.carriage && this.#carriageReturnIndex == null) {\n        // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n        this.#carriageReturnIndex = patternIndex.index;\n        continue;\n      }\n\n      // we got double \\r or \\rtext\\n\n      if (\n        this.#carriageReturnIndex != null &&\n        (patternIndex.index !== this.#carriageReturnIndex + 1 || patternIndex.carriage)\n      ) {\n        lines.push(decodeUTF8(this.#buffer.subarray(0, this.#carriageReturnIndex - 1)));\n        this.#buffer = this.#buffer.subarray(this.#carriageReturnIndex);\n        this.#carriageReturnIndex = null;\n        continue;\n      }\n\n      const endIndex =\n        this.#carriageReturnIndex !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n\n      const line = decodeUTF8(this.#buffer.subarray(0, endIndex));\n      lines.push(line);\n\n      this.#buffer = this.#buffer.subarray(patternIndex.index);\n      this.#carriageReturnIndex = null;\n    }\n\n    return lines;\n  }\n\n  flush(): string[] {\n    if (!this.#buffer.length) {\n      return [];\n    }\n    return this.decode('\\n');\n  }\n}\n\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(\n  buffer: Uint8Array,\n  startIndex: number | null,\n): { preceding: number; index: number; carriage: boolean } | null {\n  const newline = 0x0a; // \\n\n  const carriage = 0x0d; // \\r\n\n  for (let i = startIndex ?? 0; i < buffer.length; i++) {\n    if (buffer[i] === newline) {\n      return { preceding: i, index: i + 1, carriage: false };\n    }\n\n    if (buffer[i] === carriage) {\n      return { preceding: i, index: i + 1, carriage: true };\n    }\n  }\n\n  return null;\n}\n\nexport function findDoubleNewlineIndex(buffer: Uint8Array): number {\n  // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n  // and returns the index right after the first occurrence of any pattern,\n  // or -1 if none of the patterns are found.\n  const newline = 0x0a; // \\n\n  const carriage = 0x0d; // \\r\n\n  for (let i = 0; i < buffer.length - 1; i++) {\n    if (buffer[i] === newline && buffer[i + 1] === newline) {\n      // \\n\\n\n      return i + 2;\n    }\n    if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n      // \\r\\r\n      return i + 2;\n    }\n    if (\n      buffer[i] === carriage &&\n      buffer[i + 1] === newline &&\n      i + 3 < buffer.length &&\n      buffer[i + 2] === carriage &&\n      buffer[i + 3] === newline\n    ) {\n      // \\r\\n\\r\\n\n      return i + 4;\n    }\n  }\n\n  return -1;\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { hasOwn } from './values';\nimport { type BaseAnthropic } from '../../client';\nimport { RequestOptions } from '../request-options';\n\ntype LogFn = (message: string, ...rest: unknown[]) => void;\nexport type Logger = {\n  error: LogFn;\n  warn: LogFn;\n  info: LogFn;\n  debug: LogFn;\n};\nexport type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';\n\nconst levelNumbers = {\n  off: 0,\n  error: 200,\n  warn: 300,\n  info: 400,\n  debug: 500,\n};\n\nexport const parseLogLevel = (\n  maybeLevel: string | undefined,\n  sourceName: string,\n  client: BaseAnthropic,\n): LogLevel | undefined => {\n  if (!maybeLevel) {\n    return undefined;\n  }\n  if (hasOwn(levelNumbers, maybeLevel)) {\n    return maybeLevel;\n  }\n  loggerFor(client).warn(\n    `${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(\n      Object.keys(levelNumbers),\n    )}`,\n  );\n  return undefined;\n};\n\nfunction noop() {}\n\nfunction makeLogFn(fnLevel: keyof Logger, logger: Logger | undefined, logLevel: LogLevel) {\n  if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {\n    return noop;\n  } else {\n    // Don't wrap logger functions, we want the stacktrace intact!\n    return logger[fnLevel].bind(logger);\n  }\n}\n\nconst noopLogger = {\n  error: noop,\n  warn: noop,\n  info: noop,\n  debug: noop,\n};\n\nlet cachedLoggers = /* @__PURE__ */ new WeakMap<Logger, [LogLevel, Logger]>();\n\nexport function loggerFor(client: BaseAnthropic): Logger {\n  const logger = client.logger;\n  const logLevel = client.logLevel ?? 'off';\n  if (!logger) {\n    return noopLogger;\n  }\n\n  const cachedLogger = cachedLoggers.get(logger);\n  if (cachedLogger && cachedLogger[0] === logLevel) {\n    return cachedLogger[1];\n  }\n\n  const levelLogger = {\n    error: makeLogFn('error', logger, logLevel),\n    warn: makeLogFn('warn', logger, logLevel),\n    info: makeLogFn('info', logger, logLevel),\n    debug: makeLogFn('debug', logger, logLevel),\n  };\n\n  cachedLoggers.set(logger, [logLevel, levelLogger]);\n\n  return levelLogger;\n}\n\nexport const formatRequestDetails = (details: {\n  options?: RequestOptions | undefined;\n  headers?: Headers | Record<string, string> | undefined;\n  retryOfRequestLogID?: string | undefined;\n  retryOf?: string | undefined;\n  url?: string | undefined;\n  status?: number | undefined;\n  method?: string | undefined;\n  durationMs?: number | undefined;\n  message?: unknown;\n  body?: unknown;\n}) => {\n  if (details.options) {\n    details.options = { ...details.options };\n    delete details.options['headers']; // redundant + leaks internals\n  }\n  if (details.headers) {\n    details.headers = Object.fromEntries(\n      (details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(\n        ([name, value]) => [\n          name,\n          (\n            name.toLowerCase() === 'x-api-key' ||\n            name.toLowerCase() === 'authorization' ||\n            name.toLowerCase() === 'cookie' ||\n            name.toLowerCase() === 'set-cookie'\n          ) ?\n            '***'\n          : value,\n        ],\n      ),\n    );\n  }\n  if ('retryOfRequestLogID' in details) {\n    if (details.retryOfRequestLogID) {\n      details.retryOf = details.retryOfRequestLogID;\n    }\n    delete details.retryOfRequestLogID;\n  }\n  return details;\n};\n", "import { AnthropicError } from './error';\nimport { type ReadableStream } from '../internal/shim-types';\nimport { makeReadableStream } from '../internal/shims';\nimport { findDoubleNewlineIndex, LineDecoder } from '../internal/decoders/line';\nimport { ReadableStreamToAsyncIterable } from '../internal/shims';\nimport { isAbortError } from '../internal/errors';\nimport { safeJSON } from '../internal/utils/values';\nimport { encodeUTF8 } from '../internal/utils/bytes';\nimport { loggerFor } from '../internal/utils/log';\nimport type { BaseAnthropic } from '../client';\n\nimport { APIError } from './error';\nimport type { ErrorType } from '../resources/shared';\n\ntype Bytes = string | ArrayBuffer | Uint8Array | null | undefined;\n\nexport type ServerSentEvent = {\n  event: string | null;\n  data: string;\n  raw: string[];\n};\n\nexport class Stream<Item> implements AsyncIterable<Item> {\n  controller: AbortController;\n  #client: BaseAnthropic | undefined;\n\n  constructor(\n    private iterator: () => AsyncIterator<Item>,\n    controller: AbortController,\n    client?: BaseAnthropic,\n  ) {\n    this.controller = controller;\n    this.#client = client;\n  }\n\n  static fromSSEResponse<Item>(\n    response: Response,\n    controller: AbortController,\n    client?: BaseAnthropic,\n  ): Stream<Item> {\n    let consumed = false;\n    const logger = client ? loggerFor(client) : console;\n\n    async function* iterator(): AsyncIterator<Item, any, undefined> {\n      if (consumed) {\n        throw new AnthropicError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n      }\n      consumed = true;\n      let done = false;\n      try {\n        for await (const sse of _iterSSEMessages(response, controller)) {\n          if (sse.event === 'completion') {\n            try {\n              yield JSON.parse(sse.data) as Item;\n            } catch (e) {\n              logger.error(`Could not parse message into JSON:`, sse.data);\n              logger.error(`From chunk:`, sse.raw);\n              throw e;\n            }\n          }\n\n          if (\n            sse.event === 'message_start' ||\n            sse.event === 'message_delta' ||\n            sse.event === 'message_stop' ||\n            sse.event === 'content_block_start' ||\n            sse.event === 'content_block_delta' ||\n            sse.event === 'content_block_stop' ||\n            sse.event === 'message' ||\n            sse.event === 'user.message' ||\n            sse.event === 'user.interrupt' ||\n            sse.event === 'user.tool_confirmation' ||\n            sse.event === 'user.custom_tool_result' ||\n            sse.event === 'agent.message' ||\n            sse.event === 'agent.thinking' ||\n            sse.event === 'agent.tool_use' ||\n            sse.event === 'agent.tool_result' ||\n            sse.event === 'agent.mcp_tool_use' ||\n            sse.event === 'agent.mcp_tool_result' ||\n            sse.event === 'agent.custom_tool_use' ||\n            sse.event === 'agent.thread_context_compacted' ||\n            sse.event === 'session.status_running' ||\n            sse.event === 'session.status_idle' ||\n            sse.event === 'session.status_rescheduled' ||\n            sse.event === 'session.status_terminated' ||\n            sse.event === 'session.error' ||\n            sse.event === 'session.deleted' ||\n            sse.event === 'span.model_request_start' ||\n            sse.event === 'span.model_request_end'\n          ) {\n            try {\n              yield JSON.parse(sse.data) as Item;\n            } catch (e) {\n              logger.error(`Could not parse message into JSON:`, sse.data);\n              logger.error(`From chunk:`, sse.raw);\n              throw e;\n            }\n          }\n\n          if (sse.event === 'ping') {\n            continue;\n          }\n\n          if (sse.event === 'error') {\n            const body = safeJSON(sse.data) ?? sse.data;\n            const type = body?.error?.type as ErrorType | undefined;\n            throw new APIError(undefined, body, undefined, response.headers, type);\n          }\n        }\n        done = true;\n      } catch (e) {\n        // If the user calls `stream.controller.abort()`, we should exit without throwing.\n        if (isAbortError(e)) return;\n        throw e;\n      } finally {\n        // If the user `break`s, abort the ongoing request.\n        if (!done) controller.abort();\n      }\n    }\n\n    return new Stream(iterator, controller, client);\n  }\n\n  /**\n   * Generates a Stream from a newline-separated ReadableStream\n   * where each item is a JSON value.\n   */\n  static fromReadableStream<Item>(\n    readableStream: ReadableStream,\n    controller: AbortController,\n    client?: BaseAnthropic,\n  ): Stream<Item> {\n    let consumed = false;\n\n    async function* iterLines(): AsyncGenerator<string, void, unknown> {\n      const lineDecoder = new LineDecoder();\n\n      const iter = ReadableStreamToAsyncIterable<Bytes>(readableStream);\n      for await (const chunk of iter) {\n        for (const line of lineDecoder.decode(chunk)) {\n          yield line;\n        }\n      }\n\n      for (const line of lineDecoder.flush()) {\n        yield line;\n      }\n    }\n\n    async function* iterator(): AsyncIterator<Item, any, undefined> {\n      if (consumed) {\n        throw new AnthropicError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n      }\n      consumed = true;\n      let done = false;\n      try {\n        for await (const line of iterLines()) {\n          if (done) continue;\n          if (line) yield JSON.parse(line) as Item;\n        }\n        done = true;\n      } catch (e) {\n        // If the user calls `stream.controller.abort()`, we should exit without throwing.\n        if (isAbortError(e)) return;\n        throw e;\n      } finally {\n        // If the user `break`s, abort the ongoing request.\n        if (!done) controller.abort();\n      }\n    }\n\n    return new Stream(iterator, controller, client);\n  }\n\n  [Symbol.asyncIterator](): AsyncIterator<Item> {\n    return this.iterator();\n  }\n\n  /**\n   * Splits the stream into two streams which can be\n   * independently read from at different speeds.\n   */\n  tee(): [Stream<Item>, Stream<Item>] {\n    const left: Array<Promise<IteratorResult<Item>>> = [];\n    const right: Array<Promise<IteratorResult<Item>>> = [];\n    const iterator = this.iterator();\n\n    const teeIterator = (queue: Array<Promise<IteratorResult<Item>>>): AsyncIterator<Item> => {\n      return {\n        next: () => {\n          if (queue.length === 0) {\n            const result = iterator.next();\n            left.push(result);\n            right.push(result);\n          }\n          return queue.shift()!;\n        },\n      };\n    };\n\n    return [\n      new Stream(() => teeIterator(left), this.controller, this.#client),\n      new Stream(() => teeIterator(right), this.controller, this.#client),\n    ];\n  }\n\n  /**\n   * Converts this stream to a newline-separated ReadableStream of\n   * JSON stringified values in the stream\n   * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n   */\n  toReadableStream(): ReadableStream {\n    const self = this;\n    let iter: AsyncIterator<Item>;\n\n    return makeReadableStream({\n      async start() {\n        iter = self[Symbol.asyncIterator]();\n      },\n      async pull(ctrl: any) {\n        try {\n          const { value, done } = await iter.next();\n          if (done) return ctrl.close();\n\n          const bytes = encodeUTF8(JSON.stringify(value) + '\\n');\n\n          ctrl.enqueue(bytes);\n        } catch (err) {\n          ctrl.error(err);\n        }\n      },\n      async cancel() {\n        await iter.return?.();\n      },\n    });\n  }\n}\n\nexport async function* _iterSSEMessages(\n  response: Response,\n  controller: AbortController,\n): AsyncGenerator<ServerSentEvent, void, unknown> {\n  if (!response.body) {\n    controller.abort();\n    if (\n      typeof (globalThis as any).navigator !== 'undefined' &&\n      (globalThis as any).navigator.product === 'ReactNative'\n    ) {\n      throw new AnthropicError(\n        `The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`,\n      );\n    }\n    throw new AnthropicError(`Attempted to iterate over a response with no body`);\n  }\n\n  const sseDecoder = new SSEDecoder();\n  const lineDecoder = new LineDecoder();\n\n  const iter = ReadableStreamToAsyncIterable<Bytes>(response.body);\n  for await (const sseChunk of iterSSEChunks(iter)) {\n    for (const line of lineDecoder.decode(sseChunk)) {\n      const sse = sseDecoder.decode(line);\n      if (sse) yield sse;\n    }\n  }\n\n  for (const line of lineDecoder.flush()) {\n    const sse = sseDecoder.decode(line);\n    if (sse) yield sse;\n  }\n}\n\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator: AsyncIterableIterator<Bytes>): AsyncGenerator<Uint8Array> {\n  let data = new Uint8Array();\n\n  for await (const chunk of iterator) {\n    if (chunk == null) {\n      continue;\n    }\n\n    const binaryChunk =\n      chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n      : typeof chunk === 'string' ? encodeUTF8(chunk)\n      : chunk;\n\n    let newData = new Uint8Array(data.length + binaryChunk.length);\n    newData.set(data);\n    newData.set(binaryChunk, data.length);\n    data = newData;\n\n    let patternIndex;\n    while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n      yield data.slice(0, patternIndex);\n      data = data.slice(patternIndex);\n    }\n  }\n\n  if (data.length > 0) {\n    yield data;\n  }\n}\n\nclass SSEDecoder {\n  private data: string[];\n  private event: string | null;\n  private chunks: string[];\n\n  constructor() {\n    this.event = null;\n    this.data = [];\n    this.chunks = [];\n  }\n\n  decode(line: string) {\n    if (line.endsWith('\\r')) {\n      line = line.substring(0, line.length - 1);\n    }\n\n    if (!line) {\n      // empty line and we didn't previously encounter any messages\n      if (!this.event && !this.data.length) return null;\n\n      const sse: ServerSentEvent = {\n        event: this.event,\n        data: this.data.join('\\n'),\n        raw: this.chunks,\n      };\n\n      this.event = null;\n      this.data = [];\n      this.chunks = [];\n\n      return sse;\n    }\n\n    this.chunks.push(line);\n\n    if (line.startsWith(':')) {\n      return null;\n    }\n\n    let [fieldname, _, value] = partition(line, ':');\n\n    if (value.startsWith(' ')) {\n      value = value.substring(1);\n    }\n\n    if (fieldname === 'event') {\n      this.event = value;\n    } else if (fieldname === 'data') {\n      this.data.push(value);\n    }\n\n    return null;\n  }\n}\n\nfunction partition(str: string, delimiter: string): [string, string, string] {\n  const index = str.indexOf(delimiter);\n  if (index !== -1) {\n    return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n  }\n\n  return [str, '', ''];\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport type { FinalRequestOptions } from './request-options';\nimport { Stream } from '../core/streaming';\nimport { type BaseAnthropic } from '../client';\nimport { formatRequestDetails, loggerFor } from './utils/log';\nimport type { AbstractPage } from '../core/pagination';\n\nexport type APIResponseProps = {\n  response: Response;\n  options: FinalRequestOptions;\n  controller: AbortController;\n  requestLogID: string;\n  retryOfRequestLogID: string | undefined;\n  startTime: number;\n};\n\nexport async function defaultParseResponse<T>(\n  client: BaseAnthropic,\n  props: APIResponseProps,\n): Promise<WithRequestID<T>> {\n  const { response, requestLogID, retryOfRequestLogID, startTime } = props;\n  const body = await (async () => {\n    if (props.options.stream) {\n      loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);\n\n      // Note: there is an invariant here that isn't represented in the type system\n      // that if you set `stream: true` the response type must also be `Stream<T>`\n\n      if (props.options.__streamClass) {\n        return props.options.__streamClass.fromSSEResponse(response, props.controller) as any;\n      }\n\n      return Stream.fromSSEResponse(response, props.controller) as any;\n    }\n\n    // fetch refuses to read the body when the status code is 204.\n    if (response.status === 204) {\n      return null as T;\n    }\n\n    if (props.options.__binaryResponse) {\n      return response as unknown as T;\n    }\n\n    const contentType = response.headers.get('content-type');\n    const mediaType = contentType?.split(';')[0]?.trim();\n    const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n    if (isJSON) {\n      const contentLength = response.headers.get('content-length');\n      if (contentLength === '0') {\n        // if there is no content we can't do anything\n        return undefined as T;\n      }\n\n      const json = await response.json();\n      return addRequestID(json as T, response);\n    }\n\n    const text = await response.text();\n    return text as unknown as T;\n  })();\n  loggerFor(client).debug(\n    `[${requestLogID}] response parsed`,\n    formatRequestDetails({\n      retryOfRequestLogID,\n      url: response.url,\n      status: response.status,\n      body,\n      durationMs: Date.now() - startTime,\n    }),\n  );\n  return body;\n}\n\nexport type WithRequestID<T> =\n  T extends Array<any> | Response | AbstractPage<any> ? T\n  : T extends Record<string, any> ? T & { _request_id?: string | null }\n  : T;\n\nexport function addRequestID<T>(value: T, response: Response): WithRequestID<T> {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) {\n    return value as WithRequestID<T>;\n  }\n\n  return Object.defineProperty(value, '_request_id', {\n    value: response.headers.get('request-id'),\n    enumerable: false,\n  }) as WithRequestID<T>;\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { type BaseAnthropic } from '../client';\n\nimport { type PromiseOrValue } from '../internal/types';\nimport {\n  type APIResponseProps,\n  type WithRequestID,\n  defaultParseResponse,\n  addRequestID,\n} from '../internal/parse';\n\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise<T> extends Promise<WithRequestID<T>> {\n  private parsedPromise: Promise<WithRequestID<T>> | undefined;\n  #client: BaseAnthropic;\n\n  constructor(\n    client: BaseAnthropic,\n    private responsePromise: Promise<APIResponseProps>,\n    private parseResponse: (\n      client: BaseAnthropic,\n      props: APIResponseProps,\n    ) => PromiseOrValue<WithRequestID<T>> = defaultParseResponse,\n  ) {\n    super((resolve) => {\n      // this is maybe a bit weird but this has to be a no-op to not implicitly\n      // parse the response body; instead .then, .catch, .finally are overridden\n      // to parse the response\n      resolve(null as any);\n    });\n    this.#client = client;\n  }\n\n  _thenUnwrap<U>(transform: (data: T, props: APIResponseProps) => U): APIPromise<U> {\n    return new APIPromise(this.#client, this.responsePromise, async (client, props) =>\n      addRequestID(transform(await this.parseResponse(client, props), props), props.response),\n    );\n  }\n\n  /**\n   * Gets the raw `Response` instance instead of parsing the response\n   * data.\n   *\n   * If you want to parse the response body but still get the `Response`\n   * instance, you can use {@link withResponse()}.\n   *\n   * \uD83D\uDC4B Getting the wrong TypeScript type for `Response`?\n   * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n   * to your `tsconfig.json`.\n   */\n  asResponse(): Promise<Response> {\n    return this.responsePromise.then((p) => p.response);\n  }\n\n  /**\n   * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n   * returned via the `request-id` header which is useful for debugging requests and resporting\n   * issues to Anthropic.\n   *\n   * If you just want to get the raw `Response` instance without parsing it,\n   * you can use {@link asResponse()}.\n   *\n   * \uD83D\uDC4B Getting the wrong TypeScript type for `Response`?\n   * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n   * to your `tsconfig.json`.\n   */\n  async withResponse(): Promise<{ data: T; response: Response; request_id: string | null | undefined }> {\n    const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n    return { data, response, request_id: response.headers.get('request-id') };\n  }\n\n  private parse(): Promise<WithRequestID<T>> {\n    if (!this.parsedPromise) {\n      this.parsedPromise = this.responsePromise.then(\n        (data) => this.parseResponse(this.#client, data) as any as Promise<WithRequestID<T>>,\n      );\n    }\n    return this.parsedPromise;\n  }\n\n  override then<TResult1 = WithRequestID<T>, TResult2 = never>(\n    onfulfilled?: ((value: WithRequestID<T>) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n  ): Promise<TResult1 | TResult2> {\n    return this.parse().then(onfulfilled, onrejected);\n  }\n\n  override catch<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null,\n  ): Promise<WithRequestID<T> | TResult> {\n    return this.parse().catch(onrejected);\n  }\n\n  override finally(onfinally?: (() => void) | undefined | null): Promise<WithRequestID<T>> {\n    return this.parse().finally(onfinally);\n  }\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from './error';\nimport { FinalRequestOptions } from '../internal/request-options';\nimport { defaultParseResponse, WithRequestID } from '../internal/parse';\nimport { type BaseAnthropic } from '../client';\nimport { APIPromise } from './api-promise';\nimport { type APIResponseProps } from '../internal/parse';\nimport { maybeObj } from '../internal/utils/values';\n\nexport type PageRequestOptions = Pick<FinalRequestOptions, 'query' | 'headers' | 'body' | 'path' | 'method'>;\n\nexport abstract class AbstractPage<Item> implements AsyncIterable<Item> {\n  #client: BaseAnthropic;\n  protected options: FinalRequestOptions;\n\n  protected response: Response;\n  protected body: unknown;\n\n  constructor(client: BaseAnthropic, response: Response, body: unknown, options: FinalRequestOptions) {\n    this.#client = client;\n    this.options = options;\n    this.response = response;\n    this.body = body;\n  }\n\n  abstract nextPageRequestOptions(): PageRequestOptions | null;\n\n  abstract getPaginatedItems(): Item[];\n\n  hasNextPage(): boolean {\n    const items = this.getPaginatedItems();\n    if (!items.length) return false;\n    return this.nextPageRequestOptions() != null;\n  }\n\n  async getNextPage(): Promise<this> {\n    const nextOptions = this.nextPageRequestOptions();\n    if (!nextOptions) {\n      throw new AnthropicError(\n        'No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.',\n      );\n    }\n\n    return await this.#client.requestAPIList(this.constructor as any, nextOptions);\n  }\n\n  async *iterPages(): AsyncGenerator<this> {\n    let page: this = this;\n    yield page;\n    while (page.hasNextPage()) {\n      page = await page.getNextPage();\n      yield page;\n    }\n  }\n\n  async *[Symbol.asyncIterator](): AsyncGenerator<Item> {\n    for await (const page of this.iterPages()) {\n      for (const item of page.getPaginatedItems()) {\n        yield item;\n      }\n    }\n  }\n}\n\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n *    for await (const item of client.items.list()) {\n *      console.log(item)\n *    }\n */\nexport class PagePromise<\n    PageClass extends AbstractPage<Item>,\n    Item = ReturnType<PageClass['getPaginatedItems']>[number],\n  >\n  extends APIPromise<PageClass>\n  implements AsyncIterable<Item>\n{\n  constructor(\n    client: BaseAnthropic,\n    request: Promise<APIResponseProps>,\n    Page: new (...args: ConstructorParameters<typeof AbstractPage>) => PageClass,\n  ) {\n    super(\n      client,\n      request,\n      async (client, props) =>\n        new Page(\n          client,\n          props.response,\n          await defaultParseResponse(client, props),\n          props.options,\n        ) as WithRequestID<PageClass>,\n    );\n  }\n\n  /**\n   * Allow auto-paginating iteration on an unawaited list call, eg:\n   *\n   *    for await (const item of client.items.list()) {\n   *      console.log(item)\n   *    }\n   */\n  async *[Symbol.asyncIterator](): AsyncGenerator<Item> {\n    const page = await this;\n    for await (const item of page) {\n      yield item;\n    }\n  }\n}\n\nexport interface PageResponse<Item> {\n  data: Array<Item>;\n\n  has_more: boolean;\n\n  first_id: string | null;\n\n  last_id: string | null;\n}\n\nexport interface PageParams {\n  /**\n   * Number of items per page.\n   */\n  limit?: number;\n\n  before_id?: string;\n\n  after_id?: string;\n}\n\nexport class Page<Item> extends AbstractPage<Item> implements PageResponse<Item> {\n  data: Array<Item>;\n\n  has_more: boolean;\n\n  first_id: string | null;\n\n  last_id: string | null;\n\n  constructor(\n    client: BaseAnthropic,\n    response: Response,\n    body: PageResponse<Item>,\n    options: FinalRequestOptions,\n  ) {\n    super(client, response, body, options);\n\n    this.data = body.data || [];\n    this.has_more = body.has_more || false;\n    this.first_id = body.first_id || null;\n    this.last_id = body.last_id || null;\n  }\n\n  getPaginatedItems(): Item[] {\n    return this.data ?? [];\n  }\n\n  override hasNextPage(): boolean {\n    if (this.has_more === false) {\n      return false;\n    }\n\n    return super.hasNextPage();\n  }\n\n  nextPageRequestOptions(): PageRequestOptions | null {\n    if ((this.options.query as Record<string, unknown>)?.['before_id']) {\n      // in reverse\n      const first_id = this.first_id;\n      if (!first_id) {\n        return null;\n      }\n\n      return {\n        ...this.options,\n        query: {\n          ...maybeObj(this.options.query),\n          before_id: first_id,\n        },\n      };\n    }\n\n    const cursor = this.last_id;\n    if (!cursor) {\n      return null;\n    }\n\n    return {\n      ...this.options,\n      query: {\n        ...maybeObj(this.options.query),\n        after_id: cursor,\n      },\n    };\n  }\n}\n\nexport interface TokenPageResponse<Item> {\n  data: Array<Item>;\n\n  has_more: boolean;\n\n  next_page: string | null;\n}\n\nexport interface TokenPageParams {\n  /**\n   * Number of items per page.\n   */\n  limit?: number;\n\n  page_token?: string;\n}\n\nexport class TokenPage<Item> extends AbstractPage<Item> implements TokenPageResponse<Item> {\n  data: Array<Item>;\n\n  has_more: boolean;\n\n  next_page: string | null;\n\n  constructor(\n    client: BaseAnthropic,\n    response: Response,\n    body: TokenPageResponse<Item>,\n    options: FinalRequestOptions,\n  ) {\n    super(client, response, body, options);\n\n    this.data = body.data || [];\n    this.has_more = body.has_more || false;\n    this.next_page = body.next_page || null;\n  }\n\n  getPaginatedItems(): Item[] {\n    return this.data ?? [];\n  }\n\n  override hasNextPage(): boolean {\n    if (this.has_more === false) {\n      return false;\n    }\n\n    return super.hasNextPage();\n  }\n\n  nextPageRequestOptions(): PageRequestOptions | null {\n    const cursor = this.next_page;\n    if (!cursor) {\n      return null;\n    }\n\n    return {\n      ...this.options,\n      query: {\n        ...maybeObj(this.options.query),\n        page_token: cursor,\n      },\n    };\n  }\n}\n\nexport interface PageCursorResponse<Item> {\n  data: Array<Item>;\n\n  next_page: string | null;\n}\n\nexport interface PageCursorParams {\n  /**\n   * Number of items per page.\n   */\n  limit?: number;\n\n  page?: string | null;\n}\n\nexport class PageCursor<Item> extends AbstractPage<Item> implements PageCursorResponse<Item> {\n  data: Array<Item>;\n\n  next_page: string | null;\n\n  constructor(\n    client: BaseAnthropic,\n    response: Response,\n    body: PageCursorResponse<Item>,\n    options: FinalRequestOptions,\n  ) {\n    super(client, response, body, options);\n\n    this.data = body.data || [];\n    this.next_page = body.next_page || null;\n  }\n\n  getPaginatedItems(): Item[] {\n    return this.data ?? [];\n  }\n\n  nextPageRequestOptions(): PageRequestOptions | null {\n    const cursor = this.next_page;\n    if (!cursor) {\n      return null;\n    }\n\n    return {\n      ...this.options,\n      query: {\n        ...maybeObj(this.options.query),\n        page: cursor,\n      },\n    };\n  }\n}\n", "import { type RequestOptions } from './request-options';\nimport type { FilePropertyBag, Fetch } from './builtin-types';\nimport type { BaseAnthropic } from '../client';\nimport { ReadableStreamFrom } from './shims';\n\nexport type BlobPart = string | ArrayBuffer | ArrayBufferView | Blob | DataView;\ntype FsReadStream = AsyncIterable<Uint8Array> & { path: string | { toString(): string } };\n\n// https://github.com/oven-sh/bun/issues/5980\ninterface BunFile extends Blob {\n  readonly name?: string | undefined;\n}\n\nexport const checkFileSupport = () => {\n  if (typeof File === 'undefined') {\n    const { process } = globalThis as any;\n    const isOldNode =\n      typeof process?.versions?.node === 'string' && parseInt(process.versions.node.split('.')) < 20;\n    throw new Error(\n      '`File` is not defined as a global, which is required for file uploads.' +\n        (isOldNode ?\n          \" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.\"\n        : ''),\n    );\n  }\n};\n\n/**\n * Typically, this is a native \"File\" class.\n *\n * We provide the {@link toFile} utility to convert a variety of objects\n * into the File class.\n *\n * For convenience, you can also pass a fetch Response, or in Node,\n * the result of fs.createReadStream().\n */\nexport type Uploadable = File | Response | FsReadStream | BunFile;\n\n/**\n * Construct a `File` instance. This is used to ensure a helpful error is thrown\n * for environments that don't define a global `File` yet.\n */\nexport function makeFile(\n  fileBits: BlobPart[],\n  fileName: string | undefined,\n  options?: FilePropertyBag,\n): File {\n  checkFileSupport();\n  return new File(fileBits as any, fileName ?? 'unknown_file', options);\n}\n\nexport function getName(value: any, stripPath: boolean): string | undefined {\n  const val =\n    (typeof value === 'object' &&\n      value !== null &&\n      (('name' in value && value.name && String(value.name)) ||\n        ('url' in value && value.url && String(value.url)) ||\n        ('filename' in value && value.filename && String(value.filename)) ||\n        ('path' in value && value.path && String(value.path)))) ||\n    '';\n\n  return stripPath ? val.split(/[\\\\/]/).pop() || undefined : val;\n}\n\nexport const isAsyncIterable = (value: any): value is AsyncIterable<any> =>\n  value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (\n  opts: RequestOptions,\n  fetch: BaseAnthropic | Fetch,\n): Promise<RequestOptions> => {\n  if (!hasUploadableValue(opts.body)) return opts;\n\n  return { ...opts, body: await createForm(opts.body, fetch) };\n};\n\ntype MultipartFormRequestOptions = Omit<RequestOptions, 'body'> & { body: unknown };\n\nexport const multipartFormRequestOptions = async (\n  opts: MultipartFormRequestOptions,\n  fetch: BaseAnthropic | Fetch,\n  stripFilenames: boolean = true,\n): Promise<RequestOptions> => {\n  return { ...opts, body: await createForm(opts.body, fetch, stripFilenames) };\n};\n\nconst supportsFormDataMap = /* @__PURE__ */ new WeakMap<Fetch, Promise<boolean>>();\n\n/**\n * node-fetch doesn't support the global FormData object in recent node versions. Instead of sending\n * properly-encoded form data, it just stringifies the object, resulting in a request body of \"[object FormData]\".\n * This function detects if the fetch function provided supports the global FormData object to avoid\n * confusing error messages later on.\n */\nfunction supportsFormData(fetchObject: BaseAnthropic | Fetch): Promise<boolean> {\n  const fetch: Fetch = typeof fetchObject === 'function' ? fetchObject : (fetchObject as any).fetch;\n  const cached = supportsFormDataMap.get(fetch);\n  if (cached) return cached;\n  const promise = (async () => {\n    try {\n      const FetchResponse = (\n        'Response' in fetch ?\n          fetch.Response\n        : (await fetch('data:,')).constructor) as typeof Response;\n      const data = new FormData();\n      if (data.toString() === (await new FetchResponse(data).text())) {\n        return false;\n      }\n      return true;\n    } catch {\n      // avoid false negatives\n      return true;\n    }\n  })();\n  supportsFormDataMap.set(fetch, promise);\n  return promise;\n}\n\nexport const createForm = async <T = Record<string, unknown>>(\n  body: T | undefined,\n  fetch: BaseAnthropic | Fetch,\n  stripFilenames: boolean = true,\n): Promise<FormData> => {\n  if (!(await supportsFormData(fetch))) {\n    throw new TypeError(\n      'The provided fetch function does not support file uploads with the current global FormData class.',\n    );\n  }\n  const form = new FormData();\n  await Promise.all(\n    Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value, stripFilenames)),\n  );\n  return form;\n};\n\n// We check for Blob not File because Bun.File doesn't inherit from File,\n// but they both inherit from Blob and have a `name` property at runtime.\nconst isNamedBlob = (value: unknown): value is Blob => value instanceof Blob && 'name' in value;\n\nconst isUploadable = (value: unknown) =>\n  typeof value === 'object' &&\n  value !== null &&\n  (value instanceof Response || isAsyncIterable(value) || isNamedBlob(value));\n\nconst hasUploadableValue = (value: unknown): boolean => {\n  if (isUploadable(value)) return true;\n  if (Array.isArray(value)) return value.some(hasUploadableValue);\n  if (value && typeof value === 'object') {\n    for (const k in value) {\n      if (hasUploadableValue((value as any)[k])) return true;\n    }\n  }\n  return false;\n};\n\nconst addFormValue = async (\n  form: FormData,\n  key: string,\n  value: unknown,\n  stripFilenames: boolean,\n): Promise<void> => {\n  if (value === undefined) return;\n  if (value == null) {\n    throw new TypeError(\n      `Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`,\n    );\n  }\n\n  // TODO: make nested formats configurable\n  if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n    form.append(key, String(value));\n  } else if (value instanceof Response) {\n    let options = {} as FilePropertyBag;\n    const contentType = value.headers.get('Content-Type');\n    if (contentType) {\n      options = { type: contentType };\n    }\n\n    form.append(key, makeFile([await value.blob()], getName(value, stripFilenames), options));\n  } else if (isAsyncIterable(value)) {\n    form.append(\n      key,\n      makeFile([await new Response(ReadableStreamFrom(value)).blob()], getName(value, stripFilenames)),\n    );\n  } else if (isNamedBlob(value)) {\n    form.append(key, makeFile([value], getName(value, stripFilenames), { type: value.type }));\n  } else if (Array.isArray(value)) {\n    await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry, stripFilenames)));\n  } else if (typeof value === 'object') {\n    await Promise.all(\n      Object.entries(value).map(([name, prop]) =>\n        addFormValue(form, `${key}[${name}]`, prop, stripFilenames),\n      ),\n    );\n  } else {\n    throw new TypeError(\n      `Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`,\n    );\n  }\n};\n", "import { BlobPart, getName, makeFile, isAsyncIterable } from './uploads';\nimport type { FilePropertyBag } from './builtin-types';\nimport { checkFileSupport } from './uploads';\n\ntype BlobLikePart = string | ArrayBuffer | ArrayBufferView | BlobLike | DataView;\n\n/**\n * Intended to match DOM Blob, node-fetch Blob, node:buffer Blob, etc.\n * Don't add arrayBuffer here, node-fetch doesn't have it\n */\ninterface BlobLike {\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */\n  readonly size: number;\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */\n  readonly type: string;\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */\n  text(): Promise<string>;\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */\n  slice(start?: number, end?: number): BlobLike;\n}\n\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value: any): value is BlobLike & { arrayBuffer(): Promise<ArrayBuffer> } =>\n  value != null &&\n  typeof value === 'object' &&\n  typeof value.size === 'number' &&\n  typeof value.type === 'string' &&\n  typeof value.text === 'function' &&\n  typeof value.slice === 'function' &&\n  typeof value.arrayBuffer === 'function';\n\n/**\n * Intended to match DOM File, node:buffer File, undici File, etc.\n */\ninterface FileLike extends BlobLike {\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */\n  readonly lastModified: number;\n  /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */\n  readonly name?: string | undefined;\n}\n\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isFileLike = (value: any): value is FileLike & { arrayBuffer(): Promise<ArrayBuffer> } =>\n  value != null &&\n  typeof value === 'object' &&\n  typeof value.name === 'string' &&\n  typeof value.lastModified === 'number' &&\n  isBlobLike(value);\n\n/**\n * Intended to match DOM Response, node-fetch Response, undici Response, etc.\n */\nexport interface ResponseLike {\n  url: string;\n  blob(): Promise<BlobLike>;\n}\n\nconst isResponseLike = (value: any): value is ResponseLike =>\n  value != null &&\n  typeof value === 'object' &&\n  typeof value.url === 'string' &&\n  typeof value.blob === 'function';\n\nexport type ToFileInput =\n  | FileLike\n  | ResponseLike\n  | Exclude<BlobLikePart, string>\n  | AsyncIterable<BlobLikePart>;\n\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(\n  value: ToFileInput | PromiseLike<ToFileInput>,\n  name?: string | null | undefined,\n  options?: FilePropertyBag | undefined,\n): Promise<File> {\n  checkFileSupport();\n\n  // If it's a promise, resolve it.\n  value = await value;\n\n  name ||= getName(value, true);\n\n  // If we've been given a `File` we don't need to do anything if the name / options\n  // have not been customised.\n  if (isFileLike(value)) {\n    if (value instanceof File && name == null && options == null) {\n      return value;\n    }\n    return makeFile([await value.arrayBuffer()], name ?? value.name, {\n      type: value.type,\n      lastModified: value.lastModified,\n      ...options,\n    });\n  }\n\n  if (isResponseLike(value)) {\n    const blob = await value.blob();\n    name ||= new URL(value.url).pathname.split(/[\\\\/]/).pop();\n\n    return makeFile(await getBytes(blob), name, options);\n  }\n\n  const parts = await getBytes(value);\n\n  if (!options?.type) {\n    const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);\n    if (typeof type === 'string') {\n      options = { ...options, type };\n    }\n  }\n\n  return makeFile(parts, name, options);\n}\n\nasync function getBytes(value: BlobLikePart | AsyncIterable<BlobLikePart>): Promise<Array<BlobPart>> {\n  let parts: Array<BlobPart> = [];\n  if (\n    typeof value === 'string' ||\n    ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n    value instanceof ArrayBuffer\n  ) {\n    parts.push(value);\n  } else if (isBlobLike(value)) {\n    parts.push(value instanceof Blob ? value : await value.arrayBuffer());\n  } else if (\n    isAsyncIterable(value) // includes Readable, ReadableStream, etc.\n  ) {\n    for await (const chunk of value) {\n      parts.push(...(await getBytes(chunk as BlobLikePart))); // TODO, consider validating?\n    }\n  } else {\n    const constructor = value?.constructor?.name;\n    throw new Error(\n      `Unexpected data type: ${typeof value}${\n        constructor ? `; constructor: ${constructor}` : ''\n      }${propsForError(value)}`,\n    );\n  }\n\n  return parts;\n}\n\nfunction propsForError(value: unknown): string {\n  if (typeof value !== 'object' || value === null) return '';\n  const props = Object.getOwnPropertyNames(value);\n  return `; props: [${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { BaseAnthropic } from '../client';\n\nexport abstract class APIResource {\n  protected _client: BaseAnthropic;\n\n  constructor(client: BaseAnthropic) {\n    this._client = client;\n  }\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { isReadonlyArray } from './utils/values';\n\ntype HeaderValue = string | undefined | null;\nexport type HeadersLike =\n  | Headers\n  | readonly HeaderValue[][]\n  | Record<string, HeaderValue | readonly HeaderValue[]>\n  | undefined\n  | null\n  | NullableHeaders;\n\nconst brand_privateNullableHeaders = Symbol.for('brand.privateNullableHeaders') as symbol & {\n  description: 'brand.privateNullableHeaders';\n};\n\n/**\n * @internal\n * Users can pass explicit nulls to unset default headers. When we parse them\n * into a standard headers type we need to preserve that information.\n */\nexport type NullableHeaders = {\n  /** Brand check, prevent users from creating a NullableHeaders. */\n  [_: typeof brand_privateNullableHeaders]: true;\n  /** Parsed headers. */\n  values: Headers;\n  /** Set of lowercase header names explicitly set to null. */\n  nulls: Set<string>;\n};\n\nfunction* iterateHeaders(headers: HeadersLike): IterableIterator<readonly [string, string | null]> {\n  if (!headers) return;\n\n  if (brand_privateNullableHeaders in headers) {\n    const { values, nulls } = headers as NullableHeaders;\n    yield* values.entries();\n    for (const name of nulls) {\n      yield [name, null];\n    }\n    return;\n  }\n\n  let shouldClear = false;\n  let iter: Iterable<readonly (HeaderValue | readonly HeaderValue[])[]>;\n  if (headers instanceof Headers) {\n    iter = headers.entries();\n  } else if (isReadonlyArray(headers)) {\n    iter = headers;\n  } else {\n    shouldClear = true;\n    iter = Object.entries(headers ?? {});\n  }\n  for (let row of iter) {\n    const name = row[0];\n    if (typeof name !== 'string') throw new TypeError('expected header name to be a string');\n    const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];\n    let didClear = false;\n    for (const value of values) {\n      if (value === undefined) continue;\n\n      // Objects keys always overwrite older headers, they never append.\n      // Yield a null to clear the header before adding the new values.\n      if (shouldClear && !didClear) {\n        didClear = true;\n        yield [name, null];\n      }\n      yield [name, value];\n    }\n  }\n}\n\nexport const buildHeaders = (newHeaders: HeadersLike[]): NullableHeaders => {\n  const targetHeaders = new Headers();\n  const nullHeaders = new Set<string>();\n  for (const headers of newHeaders) {\n    const seenHeaders = new Set<string>();\n    for (const [name, value] of iterateHeaders(headers)) {\n      const lowerName = name.toLowerCase();\n      if (!seenHeaders.has(lowerName)) {\n        targetHeaders.delete(name);\n        seenHeaders.add(lowerName);\n      }\n      if (value === null) {\n        targetHeaders.delete(name);\n        nullHeaders.add(lowerName);\n      } else {\n        targetHeaders.append(name, value);\n        nullHeaders.delete(lowerName);\n      }\n    }\n  }\n  return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };\n};\n\nexport const isEmptyHeaders = (headers: HeadersLike) => {\n  for (const _ of iterateHeaders(headers)) return false;\n  return true;\n};\n", "import { AnthropicError } from '../../core/error';\n\n/**\n * Percent-encode everything that isn't safe to have in a path without encoding safe chars.\n *\n * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:\n * > unreserved  = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * > sub-delims  = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * > pchar       = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n */\nexport function encodeURIPath(str: string) {\n  return str.replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);\n}\n\nconst EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));\n\nexport const createPathTagFunction = (pathEncoder = encodeURIPath) =>\n  function path(statics: readonly string[], ...params: readonly unknown[]): string {\n    // If there are no params, no processing is needed.\n    if (statics.length === 1) return statics[0]!;\n\n    let postPath = false;\n    const invalidSegments = [];\n    const path = statics.reduce((previousValue, currentValue, index) => {\n      if (/[?#]/.test(currentValue)) {\n        postPath = true;\n      }\n      const value = params[index];\n      let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);\n      if (\n        index !== params.length &&\n        (value == null ||\n          (typeof value === 'object' &&\n            // handle values from other realms\n            value.toString ===\n              Object.getPrototypeOf(Object.getPrototypeOf((value as any).hasOwnProperty ?? EMPTY) ?? EMPTY)\n                ?.toString))\n      ) {\n        encoded = value + '';\n        invalidSegments.push({\n          start: previousValue.length + currentValue.length,\n          length: encoded.length,\n          error: `Value of type ${Object.prototype.toString\n            .call(value)\n            .slice(8, -1)} is not a valid path parameter`,\n        });\n      }\n      return previousValue + currentValue + (index === params.length ? '' : encoded);\n    }, '');\n\n    const pathOnly = path.split(/[?#]/, 1)[0]!;\n    const invalidSegmentPattern = /(?<=^|\\/)(?:\\.|%2e){1,2}(?=\\/|$)/gi;\n    let match;\n\n    // Find all invalid segments\n    while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {\n      invalidSegments.push({\n        start: match.index,\n        length: match[0].length,\n        error: `Value \"${match[0]}\" can\\'t be safely passed as a path parameter`,\n      });\n    }\n\n    invalidSegments.sort((a, b) => a.start - b.start);\n\n    if (invalidSegments.length > 0) {\n      let lastEnd = 0;\n      const underline = invalidSegments.reduce((acc, segment) => {\n        const spaces = ' '.repeat(segment.start - lastEnd);\n        const arrows = '^'.repeat(segment.length);\n        lastEnd = segment.start + segment.length;\n        return acc + spaces + arrows;\n      }, '');\n\n      throw new AnthropicError(\n        `Path parameters result in path with invalid segments:\\n${invalidSegments\n          .map((e) => e.error)\n          .join('\\n')}\\n${path}\\n${underline}`,\n      );\n    }\n\n    return path;\n  };\n\n/**\n * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.\n */\nexport const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { path } from '../../internal/utils/path';\n\nexport class Environments extends APIResource {\n  /**\n   * Create a new environment with the specified configuration.\n   *\n   * @example\n   * ```ts\n   * const betaEnvironment =\n   *   await client.beta.environments.create({\n   *     name: 'python-data-analysis',\n   *   });\n   * ```\n   */\n  create(params: EnvironmentCreateParams, options?: RequestOptions): APIPromise<BetaEnvironment> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/environments?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Retrieve a specific environment by ID.\n   *\n   * @example\n   * ```ts\n   * const betaEnvironment =\n   *   await client.beta.environments.retrieve(\n   *     'env_011CZkZ9X2dpNyB7HsEFoRfW',\n   *   );\n   * ```\n   */\n  retrieve(\n    environmentID: string,\n    params: EnvironmentRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaEnvironment> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/environments/${environmentID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update an existing environment's configuration.\n   *\n   * @example\n   * ```ts\n   * const betaEnvironment =\n   *   await client.beta.environments.update(\n   *     'env_011CZkZ9X2dpNyB7HsEFoRfW',\n   *   );\n   * ```\n   */\n  update(\n    environmentID: string,\n    params: EnvironmentUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaEnvironment> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/environments/${environmentID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List environments with pagination support.\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaEnvironment of client.beta.environments.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: EnvironmentListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaEnvironmentsPageCursor, BetaEnvironment> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/environments?beta=true', PageCursor<BetaEnvironment>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete an environment by ID. Returns a confirmation of the deletion.\n   *\n   * @example\n   * ```ts\n   * const betaEnvironmentDeleteResponse =\n   *   await client.beta.environments.delete(\n   *     'env_011CZkZ9X2dpNyB7HsEFoRfW',\n   *   );\n   * ```\n   */\n  delete(\n    environmentID: string,\n    params: EnvironmentDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaEnvironmentDeleteResponse> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/environments/${environmentID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Archive an environment by ID. Archived environments cannot be used to create new\n   * sessions.\n   *\n   * @example\n   * ```ts\n   * const betaEnvironment =\n   *   await client.beta.environments.archive(\n   *     'env_011CZkZ9X2dpNyB7HsEFoRfW',\n   *   );\n   * ```\n   */\n  archive(\n    environmentID: string,\n    params: EnvironmentArchiveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaEnvironment> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/environments/${environmentID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaEnvironmentsPageCursor = PageCursor<BetaEnvironment>;\n\n/**\n * `cloud` environment configuration.\n */\nexport interface BetaCloudConfig {\n  /**\n   * Network configuration policy.\n   */\n  networking: BetaUnrestrictedNetwork | BetaLimitedNetwork;\n\n  /**\n   * Package manager configuration.\n   */\n  packages: BetaPackages;\n\n  /**\n   * Environment type\n   */\n  type: 'cloud';\n}\n\n/**\n * Request params for `cloud` environment configuration.\n *\n * Fields default to null; on update, omitted fields preserve the existing value.\n */\nexport interface BetaCloudConfigParams {\n  /**\n   * Environment type\n   */\n  type: 'cloud';\n\n  /**\n   * Network configuration policy. Omit on update to preserve the existing value.\n   */\n  networking?: BetaUnrestrictedNetwork | BetaLimitedNetworkParams | null;\n\n  /**\n   * Specify packages (and optionally their versions) available in this environment.\n   *\n   * When versioning, use the version semantics relevant for the package manager,\n   * e.g. for `pip` use `package==1.0.0`. You are responsible for validating the\n   * package and version exist. Unversioned installs the latest.\n   */\n  packages?: BetaPackagesParams | null;\n}\n\n/**\n * Unified Environment resource for both cloud and BYOC environments.\n */\nexport interface BetaEnvironment {\n  /**\n   * Environment identifier (e.g., 'env\\_...')\n   */\n  id: string;\n\n  /**\n   * RFC 3339 timestamp when environment was archived, or null if not archived\n   */\n  archived_at: string | null;\n\n  /**\n   * `cloud` environment configuration.\n   */\n  config: BetaCloudConfig;\n\n  /**\n   * RFC 3339 timestamp when environment was created\n   */\n  created_at: string;\n\n  /**\n   * User-provided description for the environment\n   */\n  description: string;\n\n  /**\n   * User-provided metadata key-value pairs\n   */\n  metadata: { [key: string]: string };\n\n  /**\n   * Human-readable name for the environment\n   */\n  name: string;\n\n  /**\n   * The type of object (always 'environment')\n   */\n  type: 'environment';\n\n  /**\n   * RFC 3339 timestamp when environment was last updated\n   */\n  updated_at: string;\n}\n\n/**\n * Response after deleting an environment.\n */\nexport interface BetaEnvironmentDeleteResponse {\n  /**\n   * Environment identifier\n   */\n  id: string;\n\n  /**\n   * The type of response\n   */\n  type: 'environment_deleted';\n}\n\n/**\n * Limited network access.\n */\nexport interface BetaLimitedNetwork {\n  /**\n   * Permits outbound access to MCP server endpoints configured on the agent, beyond\n   * those listed in the `allowed_hosts` array.\n   */\n  allow_mcp_servers: boolean;\n\n  /**\n   * Permits outbound access to public package registries (PyPI, npm, etc.) beyond\n   * those listed in the `allowed_hosts` array.\n   */\n  allow_package_managers: boolean;\n\n  /**\n   * Specifies domains the container can reach.\n   */\n  allowed_hosts: Array<string>;\n\n  /**\n   * Network policy type\n   */\n  type: 'limited';\n}\n\n/**\n * Limited network request params.\n *\n * Fields default to null; on update, omitted fields preserve the existing value.\n */\nexport interface BetaLimitedNetworkParams {\n  /**\n   * Network policy type\n   */\n  type: 'limited';\n\n  /**\n   * Permits outbound access to MCP server endpoints configured on the agent, beyond\n   * those listed in the `allowed_hosts` array. Defaults to `false`.\n   */\n  allow_mcp_servers?: boolean | null;\n\n  /**\n   * Permits outbound access to public package registries (PyPI, npm, etc.) beyond\n   * those listed in the `allowed_hosts` array. Defaults to `false`.\n   */\n  allow_package_managers?: boolean | null;\n\n  /**\n   * Specifies domains the container can reach.\n   */\n  allowed_hosts?: Array<string> | null;\n}\n\n/**\n * Packages (and their versions) available in this environment.\n */\nexport interface BetaPackages {\n  /**\n   * Ubuntu/Debian packages to install\n   */\n  apt: Array<string>;\n\n  /**\n   * Rust packages to install\n   */\n  cargo: Array<string>;\n\n  /**\n   * Ruby packages to install\n   */\n  gem: Array<string>;\n\n  /**\n   * Go packages to install\n   */\n  go: Array<string>;\n\n  /**\n   * Node.js packages to install\n   */\n  npm: Array<string>;\n\n  /**\n   * Python packages to install\n   */\n  pip: Array<string>;\n\n  /**\n   * Package configuration type\n   */\n  type?: 'packages';\n}\n\n/**\n * Specify packages (and optionally their versions) available in this environment.\n *\n * When versioning, use the version semantics relevant for the package manager,\n * e.g. for `pip` use `package==1.0.0`. You are responsible for validating the\n * package and version exist. Unversioned installs the latest.\n */\nexport interface BetaPackagesParams {\n  /**\n   * Ubuntu/Debian packages to install\n   */\n  apt?: Array<string> | null;\n\n  /**\n   * Rust packages to install\n   */\n  cargo?: Array<string> | null;\n\n  /**\n   * Ruby packages to install\n   */\n  gem?: Array<string> | null;\n\n  /**\n   * Go packages to install\n   */\n  go?: Array<string> | null;\n\n  /**\n   * Node.js packages to install\n   */\n  npm?: Array<string> | null;\n\n  /**\n   * Python packages to install\n   */\n  pip?: Array<string> | null;\n\n  /**\n   * Package configuration type\n   */\n  type?: 'packages';\n}\n\n/**\n * Unrestricted network access.\n */\nexport interface BetaUnrestrictedNetwork {\n  /**\n   * Network policy type\n   */\n  type: 'unrestricted';\n}\n\nexport interface EnvironmentCreateParams {\n  /**\n   * Body param: Human-readable name for the environment\n   */\n  name: string;\n\n  /**\n   * Body param: Request params for `cloud` environment configuration.\n   *\n   * Fields default to null; on update, omitted fields preserve the existing value.\n   */\n  config?: BetaCloudConfigParams | null;\n\n  /**\n   * Body param: Optional description of the environment\n   */\n  description?: string | null;\n\n  /**\n   * Body param: User-provided metadata key-value pairs\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EnvironmentRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EnvironmentUpdateParams {\n  /**\n   * Body param: Request params for `cloud` environment configuration.\n   *\n   * Fields default to null; on update, omitted fields preserve the existing value.\n   */\n  config?: BetaCloudConfigParams | null;\n\n  /**\n   * Body param: Updated description of the environment\n   */\n  description?: string | null;\n\n  /**\n   * Body param: User-provided metadata key-value pairs. Set a value to null or empty\n   * string to delete the key.\n   */\n  metadata?: { [key: string]: string | null };\n\n  /**\n   * Body param: Updated name for the environment\n   */\n  name?: string | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EnvironmentListParams extends PageCursorParams {\n  /**\n   * Query param: Include archived environments in the response\n   */\n  include_archived?: boolean;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EnvironmentDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EnvironmentArchiveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Environments {\n  export {\n    type BetaCloudConfig as BetaCloudConfig,\n    type BetaCloudConfigParams as BetaCloudConfigParams,\n    type BetaEnvironment as BetaEnvironment,\n    type BetaEnvironmentDeleteResponse as BetaEnvironmentDeleteResponse,\n    type BetaLimitedNetwork as BetaLimitedNetwork,\n    type BetaLimitedNetworkParams as BetaLimitedNetworkParams,\n    type BetaPackages as BetaPackages,\n    type BetaPackagesParams as BetaPackagesParams,\n    type BetaUnrestrictedNetwork as BetaUnrestrictedNetwork,\n    type BetaEnvironmentsPageCursor as BetaEnvironmentsPageCursor,\n    type EnvironmentCreateParams as EnvironmentCreateParams,\n    type EnvironmentRetrieveParams as EnvironmentRetrieveParams,\n    type EnvironmentUpdateParams as EnvironmentUpdateParams,\n    type EnvironmentListParams as EnvironmentListParams,\n    type EnvironmentDeleteParams as EnvironmentDeleteParams,\n    type EnvironmentArchiveParams as EnvironmentArchiveParams,\n  };\n}\n", "/**\n * Shared utilities for tracking SDK helper usage.\n */\n\nimport type { BetaMessageParam, BetaToolUnion } from '../resources/beta';\n\n/**\n * Symbol used to mark objects created by SDK helpers for tracking.\n * The value is the helper name (e.g., 'mcpTool', 'betaZodTool').\n */\nexport const SDK_HELPER_SYMBOL = Symbol('anthropic.sdk.stainlessHelper');\n\ntype StainlessHelperObject = { [SDK_HELPER_SYMBOL]: string };\n\nexport function wasCreatedByStainlessHelper(value: unknown): value is StainlessHelperObject {\n  return typeof value === 'object' && value !== null && SDK_HELPER_SYMBOL in value;\n}\n\n/**\n * Collects helper names from tools and messages arrays.\n * Returns a deduplicated array of helper names found.\n */\nexport function collectStainlessHelpers(\n  tools: BetaToolUnion[] | undefined,\n  messages: BetaMessageParam[] | undefined,\n): string[] {\n  const helpers = new Set<string>();\n\n  // Collect from tools\n  if (tools) {\n    for (const tool of tools) {\n      if (wasCreatedByStainlessHelper(tool)) {\n        helpers.add(tool[SDK_HELPER_SYMBOL]);\n      }\n    }\n  }\n\n  // Collect from messages and their content blocks\n  if (messages) {\n    for (const message of messages) {\n      if (wasCreatedByStainlessHelper(message)) {\n        helpers.add(message[SDK_HELPER_SYMBOL]);\n      }\n\n      if (Array.isArray(message.content)) {\n        for (const block of message.content) {\n          if (wasCreatedByStainlessHelper(block)) {\n            helpers.add(block[SDK_HELPER_SYMBOL]);\n          }\n        }\n      }\n    }\n  }\n\n  return Array.from(helpers);\n}\n\n/**\n * Builds x-stainless-helper header value from tools and messages.\n * Returns an empty object if no helpers are found.\n */\nexport function stainlessHelperHeader(\n  tools: BetaToolUnion[] | undefined,\n  messages: BetaMessageParam[] | undefined,\n): { 'x-stainless-helper'?: string } {\n  const helpers = collectStainlessHelpers(tools, messages);\n  if (helpers.length === 0) return {};\n  return { 'x-stainless-helper': helpers.join(', ') };\n}\n\n/**\n * Builds x-stainless-helper header value from a file object.\n * Returns an empty object if the file is not marked with a helper.\n */\nexport function stainlessHelperHeaderFromFile(file: unknown): { 'x-stainless-helper'?: string } {\n  if (wasCreatedByStainlessHelper(file)) {\n    return { 'x-stainless-helper': file[SDK_HELPER_SYMBOL] };\n  }\n  return {};\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { type Uploadable } from '../../core/uploads';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { stainlessHelperHeaderFromFile } from '../../lib/stainless-helper-header';\nimport { multipartFormRequestOptions } from '../../internal/uploads';\nimport { path } from '../../internal/utils/path';\n\nexport class Files extends APIResource {\n  /**\n   * List Files\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const fileMetadata of client.beta.files.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: FileListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<FileMetadataPage, FileMetadata> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/files?beta=true', Page<FileMetadata>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete File\n   *\n   * @example\n   * ```ts\n   * const deletedFile = await client.beta.files.delete(\n   *   'file_id',\n   * );\n   * ```\n   */\n  delete(\n    fileID: string,\n    params: FileDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<DeletedFile> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/files/${fileID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Download File\n   *\n   * @example\n   * ```ts\n   * const response = await client.beta.files.download(\n   *   'file_id',\n   * );\n   *\n   * const content = await response.blob();\n   * console.log(content);\n   * ```\n   */\n  download(\n    fileID: string,\n    params: FileDownloadParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<Response> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/files/${fileID}/content?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        {\n          'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString(),\n          Accept: 'application/binary',\n        },\n        options?.headers,\n      ]),\n      __binaryResponse: true,\n    });\n  }\n\n  /**\n   * Get File Metadata\n   *\n   * @example\n   * ```ts\n   * const fileMetadata =\n   *   await client.beta.files.retrieveMetadata('file_id');\n   * ```\n   */\n  retrieveMetadata(\n    fileID: string,\n    params: FileRetrieveMetadataParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<FileMetadata> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/files/${fileID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Upload File\n   *\n   * @example\n   * ```ts\n   * const fileMetadata = await client.beta.files.upload({\n   *   file: fs.createReadStream('path/to/file'),\n   * });\n   * ```\n   */\n  upload(params: FileUploadParams, options?: RequestOptions): APIPromise<FileMetadata> {\n    const { betas, ...body } = params;\n\n    return this._client.post(\n      '/v1/files?beta=true',\n      multipartFormRequestOptions(\n        {\n          body,\n          ...options,\n          headers: buildHeaders([\n            { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n            stainlessHelperHeaderFromFile(body.file),\n            options?.headers,\n          ]),\n        },\n        this._client,\n      ),\n    );\n  }\n}\n\nexport type FileMetadataPage = Page<FileMetadata>;\n\nexport interface BetaFileScope {\n  /**\n   * The ID of the scoping resource (e.g., the session ID).\n   */\n  id: string;\n\n  /**\n   * The type of scope (e.g., `\"session\"`).\n   */\n  type: 'session';\n}\n\nexport interface DeletedFile {\n  /**\n   * ID of the deleted file.\n   */\n  id: string;\n\n  /**\n   * Deleted object type.\n   *\n   * For file deletion, this is always `\"file_deleted\"`.\n   */\n  type?: 'file_deleted';\n}\n\nexport interface FileMetadata {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * RFC 3339 datetime string representing when the file was created.\n   */\n  created_at: string;\n\n  /**\n   * Original filename of the uploaded file.\n   */\n  filename: string;\n\n  /**\n   * MIME type of the file.\n   */\n  mime_type: string;\n\n  /**\n   * Size of the file in bytes.\n   */\n  size_bytes: number;\n\n  /**\n   * Object type.\n   *\n   * For files, this is always `\"file\"`.\n   */\n  type: 'file';\n\n  /**\n   * Whether the file can be downloaded.\n   */\n  downloadable?: boolean;\n\n  /**\n   * The scope of this file, indicating the context in which it was created (e.g., a\n   * session).\n   */\n  scope?: BetaFileScope | null;\n}\n\nexport interface FileListParams extends PageParams {\n  /**\n   * Query param: Filter by scope ID. Only returns files associated with the\n   * specified scope (e.g., a session ID).\n   */\n  scope_id?: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileDownloadParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileRetrieveMetadataParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileUploadParams {\n  /**\n   * Body param: The file to upload\n   */\n  file: Uploadable;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Files {\n  export {\n    type BetaFileScope as BetaFileScope,\n    type DeletedFile as DeletedFile,\n    type FileMetadata as FileMetadata,\n    type FileMetadataPage as FileMetadataPage,\n    type FileListParams as FileListParams,\n    type FileDeleteParams as FileDeleteParams,\n    type FileDownloadParams as FileDownloadParams,\n    type FileRetrieveMetadataParams as FileRetrieveMetadataParams,\n    type FileUploadParams as FileUploadParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { path } from '../../internal/utils/path';\n\nexport class Models extends APIResource {\n  /**\n   * Get a specific model.\n   *\n   * The Models API response can be used to determine information about a specific\n   * model or resolve a model alias to a model ID.\n   *\n   * @example\n   * ```ts\n   * const betaModelInfo = await client.beta.models.retrieve(\n   *   'model_id',\n   * );\n   * ```\n   */\n  retrieve(\n    modelID: string,\n    params: ModelRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaModelInfo> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/models/${modelID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List available models.\n   *\n   * The Models API response can be used to determine which models are available for\n   * use in the API. More recently released models are listed first.\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaModelInfo of client.beta.models.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: ModelListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaModelInfosPage, BetaModelInfo> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/models?beta=true', Page<BetaModelInfo>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaModelInfosPage = Page<BetaModelInfo>;\n\n/**\n * Indicates whether a capability is supported.\n */\nexport interface BetaCapabilitySupport {\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n}\n\n/**\n * Context management capability details.\n */\nexport interface BetaContextManagementCapability {\n  /**\n   * Indicates whether a capability is supported.\n   */\n  clear_thinking_20251015: BetaCapabilitySupport | null;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  clear_tool_uses_20250919: BetaCapabilitySupport | null;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  compact_20260112: BetaCapabilitySupport | null;\n\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n}\n\n/**\n * Effort (reasoning_effort) capability details.\n */\nexport interface BetaEffortCapability {\n  /**\n   * Whether the model supports high effort level.\n   */\n  high: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports low effort level.\n   */\n  low: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports max effort level.\n   */\n  max: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports medium effort level.\n   */\n  medium: BetaCapabilitySupport;\n\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  xhigh: BetaCapabilitySupport | null;\n}\n\n/**\n * Model capability information.\n */\nexport interface BetaModelCapabilities {\n  /**\n   * Whether the model supports the Batch API.\n   */\n  batch: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports citation generation.\n   */\n  citations: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports code execution tools.\n   */\n  code_execution: BetaCapabilitySupport;\n\n  /**\n   * Context management support and available strategies.\n   */\n  context_management: BetaContextManagementCapability;\n\n  /**\n   * Effort (reasoning_effort) support and available levels.\n   */\n  effort: BetaEffortCapability;\n\n  /**\n   * Whether the model accepts image content blocks.\n   */\n  image_input: BetaCapabilitySupport;\n\n  /**\n   * Whether the model accepts PDF content blocks.\n   */\n  pdf_input: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports structured output / JSON mode / strict tool schemas.\n   */\n  structured_outputs: BetaCapabilitySupport;\n\n  /**\n   * Thinking capability and supported type configurations.\n   */\n  thinking: BetaThinkingCapability;\n}\n\nexport interface BetaModelInfo {\n  /**\n   * Unique model identifier.\n   */\n  id: string;\n\n  /**\n   * Model capability information.\n   */\n  capabilities: BetaModelCapabilities | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the model was released.\n   * May be set to an epoch value if the release date is unknown.\n   */\n  created_at: string;\n\n  /**\n   * A human-readable name for the model.\n   */\n  display_name: string;\n\n  /**\n   * Maximum input context window size in tokens for this model.\n   */\n  max_input_tokens: number | null;\n\n  /**\n   * Maximum value for the `max_tokens` parameter when using this model.\n   */\n  max_tokens: number | null;\n\n  /**\n   * Object type.\n   *\n   * For Models, this is always `\"model\"`.\n   */\n  type: 'model';\n}\n\n/**\n * Thinking capability details.\n */\nexport interface BetaThinkingCapability {\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n\n  /**\n   * Supported thinking type configurations.\n   */\n  types: BetaThinkingTypes;\n}\n\n/**\n * Supported thinking type configurations.\n */\nexport interface BetaThinkingTypes {\n  /**\n   * Whether the model supports thinking with type 'adaptive' (auto).\n   */\n  adaptive: BetaCapabilitySupport;\n\n  /**\n   * Whether the model supports thinking with type 'enabled'.\n   */\n  enabled: BetaCapabilitySupport;\n}\n\nexport interface ModelRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ModelListParams extends PageParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Models {\n  export {\n    type BetaCapabilitySupport as BetaCapabilitySupport,\n    type BetaContextManagementCapability as BetaContextManagementCapability,\n    type BetaEffortCapability as BetaEffortCapability,\n    type BetaModelCapabilities as BetaModelCapabilities,\n    type BetaModelInfo as BetaModelInfo,\n    type BetaThinkingCapability as BetaThinkingCapability,\n    type BetaThinkingTypes as BetaThinkingTypes,\n    type BetaModelInfosPage as BetaModelInfosPage,\n    type ModelRetrieveParams as ModelRetrieveParams,\n    type ModelListParams as ModelListParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { path } from '../../internal/utils/path';\n\nexport class UserProfiles extends APIResource {\n  /**\n   * Create User Profile\n   *\n   * @example\n   * ```ts\n   * const betaUserProfile =\n   *   await client.beta.userProfiles.create();\n   * ```\n   */\n  create(params: UserProfileCreateParams, options?: RequestOptions): APIPromise<BetaUserProfile> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/user_profiles?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'user-profiles-2026-03-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Get User Profile\n   *\n   * @example\n   * ```ts\n   * const betaUserProfile =\n   *   await client.beta.userProfiles.retrieve(\n   *     'uprof_011CZkZCu8hGbp5mYRQgUmz9',\n   *   );\n   * ```\n   */\n  retrieve(\n    userProfileID: string,\n    params: UserProfileRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaUserProfile> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/user_profiles/${userProfileID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'user-profiles-2026-03-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update User Profile\n   *\n   * @example\n   * ```ts\n   * const betaUserProfile =\n   *   await client.beta.userProfiles.update(\n   *     'uprof_011CZkZCu8hGbp5mYRQgUmz9',\n   *   );\n   * ```\n   */\n  update(\n    userProfileID: string,\n    params: UserProfileUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaUserProfile> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/user_profiles/${userProfileID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'user-profiles-2026-03-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List User Profiles\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaUserProfile of client.beta.userProfiles.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: UserProfileListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaUserProfilesPageCursor, BetaUserProfile> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/user_profiles?beta=true', PageCursor<BetaUserProfile>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'user-profiles-2026-03-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Create Enrollment URL\n   *\n   * @example\n   * ```ts\n   * const betaUserProfileEnrollmentURL =\n   *   await client.beta.userProfiles.createEnrollmentURL(\n   *     'uprof_011CZkZCu8hGbp5mYRQgUmz9',\n   *   );\n   * ```\n   */\n  createEnrollmentURL(\n    userProfileID: string,\n    params: UserProfileCreateEnrollmentURLParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaUserProfileEnrollmentURL> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/user_profiles/${userProfileID}/enrollment_url?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'user-profiles-2026-03-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaUserProfilesPageCursor = PageCursor<BetaUserProfile>;\n\nexport interface BetaUserProfile {\n  /**\n   * Unique identifier for this user profile, prefixed `uprof_`.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  /**\n   * Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up\n   * to 512 chars.\n   */\n  metadata: { [key: string]: string };\n\n  /**\n   * Trust grants for this profile, keyed by grant name. Key omitted when no grant is\n   * active or in flight.\n   */\n  trust_grants: { [key: string]: BetaUserProfileTrustGrant };\n\n  /**\n   * Object type. Always `user_profile`.\n   */\n  type: 'user_profile';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  /**\n   * Platform's own identifier for this user. Not enforced unique.\n   */\n  external_id?: string | null;\n}\n\nexport interface BetaUserProfileEnrollmentURL {\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  expires_at: string;\n\n  /**\n   * Object type. Always `enrollment_url`.\n   */\n  type: 'enrollment_url';\n\n  /**\n   * Enrollment URL to send to the end user. Valid until `expires_at`.\n   */\n  url: string;\n}\n\nexport interface BetaUserProfileTrustGrant {\n  /**\n   * Status of the trust grant.\n   */\n  status: 'active' | 'pending' | 'rejected';\n}\n\nexport interface UserProfileCreateParams {\n  /**\n   * Body param: Platform's own identifier for this user. Not enforced unique.\n   * Maximum 255 characters.\n   */\n  external_id?: string | null;\n\n  /**\n   * Body param: Free-form key-value data to attach to this user profile. Maximum 16\n   * keys, with keys up to 64 characters and values up to 512 characters. Values must\n   * be non-empty strings.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface UserProfileRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface UserProfileUpdateParams {\n  /**\n   * Body param: If present, replaces the stored external_id. Omit to leave\n   * unchanged. Maximum 255 characters.\n   */\n  external_id?: string | null;\n\n  /**\n   * Body param: Key-value pairs to merge into the stored metadata. Keys provided\n   * overwrite existing values. To remove a key, set its value to an empty string.\n   * Keys not provided are left unchanged. Maximum 16 keys, with keys up to 64\n   * characters and values up to 512 characters.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface UserProfileListParams extends PageCursorParams {\n  /**\n   * Query param: Query parameter for order\n   */\n  order?: 'asc' | 'desc';\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface UserProfileCreateEnrollmentURLParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace UserProfiles {\n  export {\n    type BetaUserProfile as BetaUserProfile,\n    type BetaUserProfileEnrollmentURL as BetaUserProfileEnrollmentURL,\n    type BetaUserProfileTrustGrant as BetaUserProfileTrustGrant,\n    type BetaUserProfilesPageCursor as BetaUserProfilesPageCursor,\n    type UserProfileCreateParams as UserProfileCreateParams,\n    type UserProfileRetrieveParams as UserProfileRetrieveParams,\n    type UserProfileUpdateParams as UserProfileUpdateParams,\n    type UserProfileListParams as UserProfileListParams,\n    type UserProfileCreateEnrollmentURLParams as UserProfileCreateEnrollmentURLParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as AgentsAPI from './agents';\nimport { BetaManagedAgentsAgentsPageCursor } from './agents';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Versions extends APIResource {\n  /**\n   * List Agent Versions\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsAgent of client.beta.agents.versions.list(\n   *   'agent_011CZkYpogX7uDKUyvBTophP',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    agentID: string,\n    params: VersionListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsAgentsPageCursor, AgentsAPI.BetaManagedAgentsAgent> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/agents/${agentID}/versions?beta=true`,\n      PageCursor<AgentsAPI.BetaManagedAgentsAgent>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n}\n\nexport interface VersionListParams extends PageCursorParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Versions {\n  export { type VersionListParams as VersionListParams };\n}\n\nexport { type BetaManagedAgentsAgentsPageCursor };\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as VersionsAPI from './versions';\nimport { VersionListParams, Versions } from './versions';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Agents extends APIResource {\n  versions: VersionsAPI.Versions = new VersionsAPI.Versions(this._client);\n\n  /**\n   * Create Agent\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsAgent =\n   *   await client.beta.agents.create({\n   *     model: 'claude-sonnet-4-6',\n   *     name: 'My First Agent',\n   *   });\n   * ```\n   */\n  create(params: AgentCreateParams, options?: RequestOptions): APIPromise<BetaManagedAgentsAgent> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/agents?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Get Agent\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsAgent =\n   *   await client.beta.agents.retrieve(\n   *     'agent_011CZkYpogX7uDKUyvBTophP',\n   *   );\n   * ```\n   */\n  retrieve(\n    agentID: string,\n    params: AgentRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsAgent> {\n    const { betas, ...query } = params ?? {};\n    return this._client.get(path`/v1/agents/${agentID}?beta=true`, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update Agent\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsAgent =\n   *   await client.beta.agents.update(\n   *     'agent_011CZkYpogX7uDKUyvBTophP',\n   *     { version: 1 },\n   *   );\n   * ```\n   */\n  update(\n    agentID: string,\n    params: AgentUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsAgent> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/agents/${agentID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Agents\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsAgent of client.beta.agents.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: AgentListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsAgentsPageCursor, BetaManagedAgentsAgent> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/agents?beta=true', PageCursor<BetaManagedAgentsAgent>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Archive Agent\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsAgent =\n   *   await client.beta.agents.archive(\n   *     'agent_011CZkYpogX7uDKUyvBTophP',\n   *   );\n   * ```\n   */\n  archive(\n    agentID: string,\n    params: AgentArchiveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsAgent> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/agents/${agentID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsAgentsPageCursor = PageCursor<BetaManagedAgentsAgent>;\n\n/**\n * A Managed Agents `agent`.\n */\nexport interface BetaManagedAgentsAgent {\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  archived_at: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  description: string | null;\n\n  mcp_servers: Array<BetaManagedAgentsMCPServerURLDefinition>;\n\n  metadata: { [key: string]: string };\n\n  /**\n   * Model identifier and configuration.\n   */\n  model: BetaManagedAgentsModelConfig;\n\n  name: string;\n\n  skills: Array<BetaManagedAgentsAnthropicSkill | BetaManagedAgentsCustomSkill>;\n\n  system: string | null;\n\n  tools: Array<\n    BetaManagedAgentsAgentToolset20260401 | BetaManagedAgentsMCPToolset | BetaManagedAgentsCustomTool\n  >;\n\n  type: 'agent';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  /**\n   * The agent's current version. Starts at 1 and increments when the agent is\n   * modified.\n   */\n  version: number;\n}\n\n/**\n * Configuration for a specific agent tool.\n */\nexport interface BetaManagedAgentsAgentToolConfig {\n  enabled: boolean;\n\n  /**\n   * Built-in agent tool identifier.\n   */\n  name: 'bash' | 'edit' | 'read' | 'write' | 'glob' | 'grep' | 'web_fetch' | 'web_search';\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy;\n}\n\n/**\n * Configuration override for a specific tool within a toolset.\n */\nexport interface BetaManagedAgentsAgentToolConfigParams {\n  /**\n   * Built-in agent tool identifier.\n   */\n  name: 'bash' | 'edit' | 'read' | 'write' | 'glob' | 'grep' | 'web_fetch' | 'web_search';\n\n  /**\n   * Whether this tool is enabled and available to Claude. Overrides the\n   * default_config setting.\n   */\n  enabled?: boolean | null;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy?: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy | null;\n}\n\n/**\n * Resolved default configuration for agent tools.\n */\nexport interface BetaManagedAgentsAgentToolsetDefaultConfig {\n  enabled: boolean;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy;\n}\n\n/**\n * Default configuration for all tools in a toolset.\n */\nexport interface BetaManagedAgentsAgentToolsetDefaultConfigParams {\n  /**\n   * Whether tools are enabled and available to Claude by default. Defaults to true\n   * if not specified.\n   */\n  enabled?: boolean | null;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy?: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy | null;\n}\n\nexport interface BetaManagedAgentsAgentToolset20260401 {\n  configs: Array<BetaManagedAgentsAgentToolConfig>;\n\n  /**\n   * Resolved default configuration for agent tools.\n   */\n  default_config: BetaManagedAgentsAgentToolsetDefaultConfig;\n\n  type: 'agent_toolset_20260401';\n}\n\n/**\n * Configuration for built-in agent tools. Use this to enable or disable groups of\n * tools available to the agent.\n */\nexport interface BetaManagedAgentsAgentToolset20260401Params {\n  type: 'agent_toolset_20260401';\n\n  /**\n   * Per-tool configuration overrides.\n   */\n  configs?: Array<BetaManagedAgentsAgentToolConfigParams>;\n\n  /**\n   * Default configuration for all tools in a toolset.\n   */\n  default_config?: BetaManagedAgentsAgentToolsetDefaultConfigParams | null;\n}\n\n/**\n * Tool calls are automatically approved without user confirmation.\n */\nexport interface BetaManagedAgentsAlwaysAllowPolicy {\n  type: 'always_allow';\n}\n\n/**\n * Tool calls require user confirmation before execution.\n */\nexport interface BetaManagedAgentsAlwaysAskPolicy {\n  type: 'always_ask';\n}\n\n/**\n * A resolved Anthropic-managed skill.\n */\nexport interface BetaManagedAgentsAnthropicSkill {\n  skill_id: string;\n\n  type: 'anthropic';\n\n  version: string;\n}\n\n/**\n * An Anthropic-managed skill.\n */\nexport interface BetaManagedAgentsAnthropicSkillParams {\n  /**\n   * Identifier of the Anthropic skill (e.g., \"xlsx\").\n   */\n  skill_id: string;\n\n  type: 'anthropic';\n\n  /**\n   * Version to pin. Defaults to latest if omitted.\n   */\n  version?: string | null;\n}\n\n/**\n * A resolved user-created custom skill.\n */\nexport interface BetaManagedAgentsCustomSkill {\n  skill_id: string;\n\n  type: 'custom';\n\n  version: string;\n}\n\n/**\n * A user-created custom skill.\n */\nexport interface BetaManagedAgentsCustomSkillParams {\n  /**\n   * Tagged ID of the custom skill (e.g., \"skill_01XJ5...\").\n   */\n  skill_id: string;\n\n  type: 'custom';\n\n  /**\n   * Version to pin. Defaults to latest if omitted.\n   */\n  version?: string | null;\n}\n\n/**\n * A custom tool as returned in API responses.\n */\nexport interface BetaManagedAgentsCustomTool {\n  description: string;\n\n  /**\n   * JSON Schema for custom tool input parameters.\n   */\n  input_schema: BetaManagedAgentsCustomToolInputSchema;\n\n  name: string;\n\n  type: 'custom';\n}\n\n/**\n * JSON Schema for custom tool input parameters.\n */\nexport interface BetaManagedAgentsCustomToolInputSchema {\n  /**\n   * JSON Schema properties defining the tool's input parameters.\n   */\n  properties?: { [key: string]: unknown } | null;\n\n  /**\n   * List of required property names.\n   */\n  required?: Array<string>;\n\n  /**\n   * Must be 'object' for tool input schemas.\n   */\n  type?: 'object';\n}\n\n/**\n * A custom tool that is executed by the API client rather than the agent. When the\n * agent calls this tool, an `agent.custom_tool_use` event is emitted and the\n * session goes idle, waiting for the client to provide the result via a\n * `user.custom_tool_result` event.\n */\nexport interface BetaManagedAgentsCustomToolParams {\n  /**\n   * Description of what the tool does, shown to the agent to help it decide when to\n   * use the tool. 1-1024 characters.\n   */\n  description: string;\n\n  /**\n   * JSON Schema for custom tool input parameters.\n   */\n  input_schema: BetaManagedAgentsCustomToolInputSchema;\n\n  /**\n   * Unique name for the tool. 1-128 characters; letters, digits, underscores, and\n   * hyphens.\n   */\n  name: string;\n\n  type: 'custom';\n}\n\n/**\n * URL-based MCP server connection as returned in API responses.\n */\nexport interface BetaManagedAgentsMCPServerURLDefinition {\n  name: string;\n\n  type: 'url';\n\n  url: string;\n}\n\n/**\n * Resolved configuration for a specific MCP tool.\n */\nexport interface BetaManagedAgentsMCPToolConfig {\n  enabled: boolean;\n\n  name: string;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy;\n}\n\n/**\n * Configuration override for a specific MCP tool.\n */\nexport interface BetaManagedAgentsMCPToolConfigParams {\n  /**\n   * Name of the MCP tool to configure. 1-128 characters.\n   */\n  name: string;\n\n  /**\n   * Whether this tool is enabled. Overrides the `default_config` setting.\n   */\n  enabled?: boolean | null;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy?: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy | null;\n}\n\nexport interface BetaManagedAgentsMCPToolset {\n  configs: Array<BetaManagedAgentsMCPToolConfig>;\n\n  /**\n   * Resolved default configuration for all tools from an MCP server.\n   */\n  default_config: BetaManagedAgentsMCPToolsetDefaultConfig;\n\n  mcp_server_name: string;\n\n  type: 'mcp_toolset';\n}\n\n/**\n * Resolved default configuration for all tools from an MCP server.\n */\nexport interface BetaManagedAgentsMCPToolsetDefaultConfig {\n  enabled: boolean;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy;\n}\n\n/**\n * Default configuration for all tools from an MCP server.\n */\nexport interface BetaManagedAgentsMCPToolsetDefaultConfigParams {\n  /**\n   * Whether tools are enabled by default. Defaults to true if not specified.\n   */\n  enabled?: boolean | null;\n\n  /**\n   * Permission policy for tool execution.\n   */\n  permission_policy?: BetaManagedAgentsAlwaysAllowPolicy | BetaManagedAgentsAlwaysAskPolicy | null;\n}\n\n/**\n * Configuration for tools from an MCP server defined in `mcp_servers`.\n */\nexport interface BetaManagedAgentsMCPToolsetParams {\n  /**\n   * Name of the MCP server. Must match a server name from the mcp_servers array.\n   * 1-255 characters.\n   */\n  mcp_server_name: string;\n\n  type: 'mcp_toolset';\n\n  /**\n   * Per-tool configuration overrides.\n   */\n  configs?: Array<BetaManagedAgentsMCPToolConfigParams>;\n\n  /**\n   * Default configuration for all tools from an MCP server.\n   */\n  default_config?: BetaManagedAgentsMCPToolsetDefaultConfigParams | null;\n}\n\n/**\n * The model that will power your agent.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\nexport type BetaManagedAgentsModel =\n  | 'claude-opus-4-7'\n  | 'claude-opus-4-6'\n  | 'claude-sonnet-4-6'\n  | 'claude-haiku-4-5'\n  | 'claude-haiku-4-5-20251001'\n  | 'claude-opus-4-5'\n  | 'claude-opus-4-5-20251101'\n  | 'claude-sonnet-4-5'\n  | 'claude-sonnet-4-5-20250929'\n  | (string & {});\n\n/**\n * Model identifier and configuration.\n */\nexport interface BetaManagedAgentsModelConfig {\n  /**\n   * The model that will power your agent.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  id: BetaManagedAgentsModel;\n\n  /**\n   * Inference speed mode. `fast` provides significantly faster output token\n   * generation at premium pricing. Not all models support `fast`; invalid\n   * combinations are rejected at create time.\n   */\n  speed?: 'standard' | 'fast';\n}\n\n/**\n * An object that defines additional configuration control over model use\n */\nexport interface BetaManagedAgentsModelConfigParams {\n  /**\n   * The model that will power your agent.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  id: BetaManagedAgentsModel;\n\n  /**\n   * Inference speed mode. `fast` provides significantly faster output token\n   * generation at premium pricing. Not all models support `fast`; invalid\n   * combinations are rejected at create time.\n   */\n  speed?: 'standard' | 'fast' | null;\n}\n\n/**\n * Skill to load in the session container.\n */\nexport type BetaManagedAgentsSkillParams =\n  | BetaManagedAgentsAnthropicSkillParams\n  | BetaManagedAgentsCustomSkillParams;\n\n/**\n * URL-based MCP server connection.\n */\nexport interface BetaManagedAgentsURLMCPServerParams {\n  /**\n   * Unique name for this server, referenced by mcp_toolset configurations. 1-255\n   * characters.\n   */\n  name: string;\n\n  type: 'url';\n\n  /**\n   * Endpoint URL for the MCP server.\n   */\n  url: string;\n}\n\nexport interface AgentCreateParams {\n  /**\n   * Body param: Model identifier. Accepts the\n   * [model string](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison),\n   * e.g. `claude-opus-4-6`, or a `model_config` object for additional configuration\n   * control\n   */\n  model: BetaManagedAgentsModel | BetaManagedAgentsModelConfigParams;\n\n  /**\n   * Body param: Human-readable name for the agent. 1-256 characters.\n   */\n  name: string;\n\n  /**\n   * Body param: Description of what the agent does. Up to 2048 characters.\n   */\n  description?: string | null;\n\n  /**\n   * Body param: MCP servers this agent connects to. Maximum 20. Names must be unique\n   * within the array.\n   */\n  mcp_servers?: Array<BetaManagedAgentsURLMCPServerParams>;\n\n  /**\n   * Body param: Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars,\n   * values up to 512 chars.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Body param: Skills available to the agent. Maximum 20.\n   */\n  skills?: Array<BetaManagedAgentsSkillParams>;\n\n  /**\n   * Body param: System prompt for the agent. Up to 100,000 characters.\n   */\n  system?: string | null;\n\n  /**\n   * Body param: Tool configurations available to the agent. Maximum of 128 tools\n   * across all toolsets allowed.\n   */\n  tools?: Array<\n    | BetaManagedAgentsAgentToolset20260401Params\n    | BetaManagedAgentsMCPToolsetParams\n    | BetaManagedAgentsCustomToolParams\n  >;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface AgentRetrieveParams {\n  /**\n   * Query param: Agent version. Omit for the most recent version. Must be at least 1\n   * if specified.\n   */\n  version?: number;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface AgentUpdateParams {\n  /**\n   * Body param: The agent's current version, used to prevent concurrent overwrites.\n   * Obtain this value from a create or retrieve response. The request fails if this\n   * does not match the server's current version.\n   */\n  version: number;\n\n  /**\n   * Body param: Description. Up to 2048 characters. Omit to preserve; send empty\n   * string or null to clear.\n   */\n  description?: string | null;\n\n  /**\n   * Body param: MCP servers. Full replacement. Omit to preserve; send empty array or\n   * null to clear. Names must be unique. Maximum 20.\n   */\n  mcp_servers?: Array<BetaManagedAgentsURLMCPServerParams> | null;\n\n  /**\n   * Body param: Metadata patch. Set a key to a string to upsert it, or to null to\n   * delete it. Omit the field to preserve. The stored bag is limited to 16 keys (up\n   * to 64 chars each) with values up to 512 chars.\n   */\n  metadata?: { [key: string]: string | null } | null;\n\n  /**\n   * Body param: Model identifier. Accepts the\n   * [model string](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison),\n   * e.g. `claude-opus-4-6`, or a `model_config` object for additional configuration\n   * control. Omit to preserve. Cannot be cleared.\n   */\n  model?: BetaManagedAgentsModel | BetaManagedAgentsModelConfigParams;\n\n  /**\n   * Body param: Human-readable name. 1-256 characters. Omit to preserve. Cannot be\n   * cleared.\n   */\n  name?: string;\n\n  /**\n   * Body param: Skills. Full replacement. Omit to preserve; send empty array or null\n   * to clear. Maximum 20.\n   */\n  skills?: Array<BetaManagedAgentsSkillParams> | null;\n\n  /**\n   * Body param: System prompt. Up to 100,000 characters. Omit to preserve; send\n   * empty string or null to clear.\n   */\n  system?: string | null;\n\n  /**\n   * Body param: Tool configurations available to the agent. Full replacement. Omit\n   * to preserve; send empty array or null to clear. Maximum of 128 tools across all\n   * toolsets allowed.\n   */\n  tools?: Array<\n    | BetaManagedAgentsAgentToolset20260401Params\n    | BetaManagedAgentsMCPToolsetParams\n    | BetaManagedAgentsCustomToolParams\n  > | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface AgentListParams extends PageCursorParams {\n  /**\n   * Query param: Return agents created at or after this time (inclusive).\n   */\n  'created_at[gte]'?: string;\n\n  /**\n   * Query param: Return agents created at or before this time (inclusive).\n   */\n  'created_at[lte]'?: string;\n\n  /**\n   * Query param: Include archived agents in results. Defaults to false.\n   */\n  include_archived?: boolean;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface AgentArchiveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nAgents.Versions = Versions;\n\nexport declare namespace Agents {\n  export {\n    type BetaManagedAgentsAgent as BetaManagedAgentsAgent,\n    type BetaManagedAgentsAgentToolConfig as BetaManagedAgentsAgentToolConfig,\n    type BetaManagedAgentsAgentToolConfigParams as BetaManagedAgentsAgentToolConfigParams,\n    type BetaManagedAgentsAgentToolsetDefaultConfig as BetaManagedAgentsAgentToolsetDefaultConfig,\n    type BetaManagedAgentsAgentToolsetDefaultConfigParams as BetaManagedAgentsAgentToolsetDefaultConfigParams,\n    type BetaManagedAgentsAgentToolset20260401 as BetaManagedAgentsAgentToolset20260401,\n    type BetaManagedAgentsAgentToolset20260401Params as BetaManagedAgentsAgentToolset20260401Params,\n    type BetaManagedAgentsAlwaysAllowPolicy as BetaManagedAgentsAlwaysAllowPolicy,\n    type BetaManagedAgentsAlwaysAskPolicy as BetaManagedAgentsAlwaysAskPolicy,\n    type BetaManagedAgentsAnthropicSkill as BetaManagedAgentsAnthropicSkill,\n    type BetaManagedAgentsAnthropicSkillParams as BetaManagedAgentsAnthropicSkillParams,\n    type BetaManagedAgentsCustomSkill as BetaManagedAgentsCustomSkill,\n    type BetaManagedAgentsCustomSkillParams as BetaManagedAgentsCustomSkillParams,\n    type BetaManagedAgentsCustomTool as BetaManagedAgentsCustomTool,\n    type BetaManagedAgentsCustomToolInputSchema as BetaManagedAgentsCustomToolInputSchema,\n    type BetaManagedAgentsCustomToolParams as BetaManagedAgentsCustomToolParams,\n    type BetaManagedAgentsMCPServerURLDefinition as BetaManagedAgentsMCPServerURLDefinition,\n    type BetaManagedAgentsMCPToolConfig as BetaManagedAgentsMCPToolConfig,\n    type BetaManagedAgentsMCPToolConfigParams as BetaManagedAgentsMCPToolConfigParams,\n    type BetaManagedAgentsMCPToolset as BetaManagedAgentsMCPToolset,\n    type BetaManagedAgentsMCPToolsetDefaultConfig as BetaManagedAgentsMCPToolsetDefaultConfig,\n    type BetaManagedAgentsMCPToolsetDefaultConfigParams as BetaManagedAgentsMCPToolsetDefaultConfigParams,\n    type BetaManagedAgentsMCPToolsetParams as BetaManagedAgentsMCPToolsetParams,\n    type BetaManagedAgentsModel as BetaManagedAgentsModel,\n    type BetaManagedAgentsModelConfig as BetaManagedAgentsModelConfig,\n    type BetaManagedAgentsModelConfigParams as BetaManagedAgentsModelConfigParams,\n    type BetaManagedAgentsSkillParams as BetaManagedAgentsSkillParams,\n    type BetaManagedAgentsURLMCPServerParams as BetaManagedAgentsURLMCPServerParams,\n    type BetaManagedAgentsAgentsPageCursor as BetaManagedAgentsAgentsPageCursor,\n    type AgentCreateParams as AgentCreateParams,\n    type AgentRetrieveParams as AgentRetrieveParams,\n    type AgentUpdateParams as AgentUpdateParams,\n    type AgentListParams as AgentListParams,\n    type AgentArchiveParams as AgentArchiveParams,\n  };\n\n  export { Versions as Versions, type VersionListParams as VersionListParams };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Memories extends APIResource {\n  /**\n   * CreateMemory\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemory =\n   *   await client.beta.memoryStores.memories.create(\n   *     'memory_store_id',\n   *     { content: 'content', path: 'xx' },\n   *   );\n   * ```\n   */\n  create(\n    memoryStoreID: string,\n    params: MemoryCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemory> {\n    const { view, betas, ...body } = params;\n    return this._client.post(path`/v1/memory_stores/${memoryStoreID}/memories?beta=true`, {\n      query: { view },\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * GetMemory\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemory =\n   *   await client.beta.memoryStores.memories.retrieve(\n   *     'memory_id',\n   *     { memory_store_id: 'memory_store_id' },\n   *   );\n   * ```\n   */\n  retrieve(\n    memoryID: string,\n    params: MemoryRetrieveParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemory> {\n    const { memory_store_id, betas, ...query } = params;\n    return this._client.get(path`/v1/memory_stores/${memory_store_id}/memories/${memoryID}?beta=true`, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * UpdateMemory\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemory =\n   *   await client.beta.memoryStores.memories.update(\n   *     'memory_id',\n   *     { memory_store_id: 'memory_store_id' },\n   *   );\n   * ```\n   */\n  update(\n    memoryID: string,\n    params: MemoryUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemory> {\n    const { memory_store_id, view, betas, ...body } = params;\n    return this._client.post(path`/v1/memory_stores/${memory_store_id}/memories/${memoryID}?beta=true`, {\n      query: { view },\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * ListMemories\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsMemoryListItem of client.beta.memoryStores.memories.list(\n   *   'memory_store_id',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    memoryStoreID: string,\n    params: MemoryListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsMemoryListItemsPageCursor, BetaManagedAgentsMemoryListItem> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/memory_stores/${memoryStoreID}/memories?beta=true`,\n      PageCursor<BetaManagedAgentsMemoryListItem>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * DeleteMemory\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeletedMemory =\n   *   await client.beta.memoryStores.memories.delete(\n   *     'memory_id',\n   *     { memory_store_id: 'memory_store_id' },\n   *   );\n   * ```\n   */\n  delete(\n    memoryID: string,\n    params: MemoryDeleteParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeletedMemory> {\n    const { memory_store_id, expected_content_sha256, betas } = params;\n    return this._client.delete(path`/v1/memory_stores/${memory_store_id}/memories/${memoryID}?beta=true`, {\n      query: { expected_content_sha256 },\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsMemoryListItemsPageCursor = PageCursor<BetaManagedAgentsMemoryListItem>;\n\nexport interface BetaManagedAgentsConflictError {\n  type: 'conflict_error';\n\n  message?: string;\n}\n\nexport interface BetaManagedAgentsContentSha256Precondition {\n  type: 'content_sha256';\n\n  content_sha256?: string;\n}\n\nexport interface BetaManagedAgentsDeletedMemory {\n  id: string;\n\n  type: 'memory_deleted';\n}\n\nexport type BetaManagedAgentsError =\n  | BetaAPI.BetaInvalidRequestError\n  | BetaAPI.BetaAuthenticationError\n  | BetaAPI.BetaBillingError\n  | BetaAPI.BetaPermissionError\n  | BetaAPI.BetaNotFoundError\n  | BetaAPI.BetaRateLimitError\n  | BetaAPI.BetaGatewayTimeoutError\n  | BetaAPI.BetaAPIError\n  | BetaAPI.BetaOverloadedError\n  | BetaManagedAgentsMemoryPreconditionFailedError\n  | BetaManagedAgentsMemoryPathConflictError\n  | BetaManagedAgentsConflictError;\n\nexport interface BetaManagedAgentsMemory {\n  id: string;\n\n  content_sha256: string;\n\n  content_size_bytes: number;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  memory_store_id: string;\n\n  memory_version_id: string;\n\n  path: string;\n\n  type: 'memory';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  content?: string | null;\n}\n\nexport type BetaManagedAgentsMemoryListItem = BetaManagedAgentsMemory | BetaManagedAgentsMemoryPrefix;\n\nexport interface BetaManagedAgentsMemoryPathConflictError {\n  type: 'memory_path_conflict_error';\n\n  conflicting_memory_id?: string;\n\n  conflicting_path?: string;\n\n  message?: string;\n}\n\nexport interface BetaManagedAgentsMemoryPreconditionFailedError {\n  type: 'memory_precondition_failed_error';\n\n  message?: string;\n}\n\nexport interface BetaManagedAgentsMemoryPrefix {\n  path: string;\n\n  type: 'memory_prefix';\n}\n\n/**\n * MemoryView enum\n */\nexport type BetaManagedAgentsMemoryView = 'basic' | 'full';\n\nexport interface BetaManagedAgentsPrecondition {\n  type: 'content_sha256';\n\n  content_sha256?: string;\n}\n\nexport interface MemoryCreateParams {\n  /**\n   * Body param\n   */\n  content: string | null;\n\n  /**\n   * Body param\n   */\n  path: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: BetaManagedAgentsMemoryView;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryRetrieveParams {\n  /**\n   * Path param: Path parameter memory_store_id\n   */\n  memory_store_id: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: BetaManagedAgentsMemoryView;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryUpdateParams {\n  /**\n   * Path param: Path parameter memory_store_id\n   */\n  memory_store_id: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: BetaManagedAgentsMemoryView;\n\n  /**\n   * Body param\n   */\n  content?: string | null;\n\n  /**\n   * Body param\n   */\n  path?: string | null;\n\n  /**\n   * Body param\n   */\n  precondition?: BetaManagedAgentsPrecondition;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryListParams extends PageCursorParams {\n  /**\n   * Query param: Query parameter for depth\n   */\n  depth?: number;\n\n  /**\n   * Query param: Query parameter for order\n   */\n  order?: 'asc' | 'desc';\n\n  /**\n   * Query param: Query parameter for order_by\n   */\n  order_by?: string;\n\n  /**\n   * Query param: Optional path prefix filter (raw string-prefix match; include a\n   * trailing slash for directory-scoped lists). This value appears in request URLs.\n   * Do not include secrets or personally identifiable information.\n   */\n  path_prefix?: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: BetaManagedAgentsMemoryView;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryDeleteParams {\n  /**\n   * Path param: Path parameter memory_store_id\n   */\n  memory_store_id: string;\n\n  /**\n   * Query param: Query parameter for expected_content_sha256\n   */\n  expected_content_sha256?: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Memories {\n  export {\n    type BetaManagedAgentsConflictError as BetaManagedAgentsConflictError,\n    type BetaManagedAgentsContentSha256Precondition as BetaManagedAgentsContentSha256Precondition,\n    type BetaManagedAgentsDeletedMemory as BetaManagedAgentsDeletedMemory,\n    type BetaManagedAgentsError as BetaManagedAgentsError,\n    type BetaManagedAgentsMemory as BetaManagedAgentsMemory,\n    type BetaManagedAgentsMemoryListItem as BetaManagedAgentsMemoryListItem,\n    type BetaManagedAgentsMemoryPathConflictError as BetaManagedAgentsMemoryPathConflictError,\n    type BetaManagedAgentsMemoryPreconditionFailedError as BetaManagedAgentsMemoryPreconditionFailedError,\n    type BetaManagedAgentsMemoryPrefix as BetaManagedAgentsMemoryPrefix,\n    type BetaManagedAgentsMemoryView as BetaManagedAgentsMemoryView,\n    type BetaManagedAgentsPrecondition as BetaManagedAgentsPrecondition,\n    type BetaManagedAgentsMemoryListItemsPageCursor as BetaManagedAgentsMemoryListItemsPageCursor,\n    type MemoryCreateParams as MemoryCreateParams,\n    type MemoryRetrieveParams as MemoryRetrieveParams,\n    type MemoryUpdateParams as MemoryUpdateParams,\n    type MemoryListParams as MemoryListParams,\n    type MemoryDeleteParams as MemoryDeleteParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as MemoriesAPI from './memories';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class MemoryVersions extends APIResource {\n  /**\n   * GetMemoryVersion\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryVersion =\n   *   await client.beta.memoryStores.memoryVersions.retrieve(\n   *     'memory_version_id',\n   *     { memory_store_id: 'memory_store_id' },\n   *   );\n   * ```\n   */\n  retrieve(\n    memoryVersionID: string,\n    params: MemoryVersionRetrieveParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryVersion> {\n    const { memory_store_id, betas, ...query } = params;\n    return this._client.get(\n      path`/v1/memory_stores/${memory_store_id}/memory_versions/${memoryVersionID}?beta=true`,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * ListMemoryVersions\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsMemoryVersion of client.beta.memoryStores.memoryVersions.list(\n   *   'memory_store_id',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    memoryStoreID: string,\n    params: MemoryVersionListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsMemoryVersionsPageCursor, BetaManagedAgentsMemoryVersion> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/memory_stores/${memoryStoreID}/memory_versions?beta=true`,\n      PageCursor<BetaManagedAgentsMemoryVersion>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * RedactMemoryVersion\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryVersion =\n   *   await client.beta.memoryStores.memoryVersions.redact(\n   *     'memory_version_id',\n   *     { memory_store_id: 'memory_store_id' },\n   *   );\n   * ```\n   */\n  redact(\n    memoryVersionID: string,\n    params: MemoryVersionRedactParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryVersion> {\n    const { memory_store_id, betas } = params;\n    return this._client.post(\n      path`/v1/memory_stores/${memory_store_id}/memory_versions/${memoryVersionID}/redact?beta=true`,\n      {\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n}\n\nexport type BetaManagedAgentsMemoryVersionsPageCursor = PageCursor<BetaManagedAgentsMemoryVersion>;\n\nexport type BetaManagedAgentsActor =\n  | BetaManagedAgentsSessionActor\n  | BetaManagedAgentsAPIActor\n  | BetaManagedAgentsUserActor;\n\nexport interface BetaManagedAgentsAPIActor {\n  api_key_id: string;\n\n  type: 'api_actor';\n}\n\nexport interface BetaManagedAgentsMemoryVersion {\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  memory_id: string;\n\n  memory_store_id: string;\n\n  /**\n   * MemoryVersionOperation enum\n   */\n  operation: BetaManagedAgentsMemoryVersionOperation;\n\n  type: 'memory_version';\n\n  content?: string | null;\n\n  content_sha256?: string | null;\n\n  content_size_bytes?: number | null;\n\n  created_by?: BetaManagedAgentsActor;\n\n  path?: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  redacted_at?: string | null;\n\n  redacted_by?: BetaManagedAgentsActor;\n}\n\n/**\n * MemoryVersionOperation enum\n */\nexport type BetaManagedAgentsMemoryVersionOperation = 'created' | 'modified' | 'deleted';\n\nexport interface BetaManagedAgentsSessionActor {\n  session_id: string;\n\n  type: 'session_actor';\n}\n\nexport interface BetaManagedAgentsUserActor {\n  type: 'user_actor';\n\n  user_id: string;\n}\n\nexport interface MemoryVersionRetrieveParams {\n  /**\n   * Path param: Path parameter memory_store_id\n   */\n  memory_store_id: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: MemoriesAPI.BetaManagedAgentsMemoryView;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryVersionListParams extends PageCursorParams {\n  /**\n   * Query param: Query parameter for api_key_id\n   */\n  api_key_id?: string;\n\n  /**\n   * Query param: Return versions created at or after this time (inclusive).\n   */\n  'created_at[gte]'?: string;\n\n  /**\n   * Query param: Return versions created at or before this time (inclusive).\n   */\n  'created_at[lte]'?: string;\n\n  /**\n   * Query param: Query parameter for memory_id\n   */\n  memory_id?: string;\n\n  /**\n   * Query param: Query parameter for operation\n   */\n  operation?: BetaManagedAgentsMemoryVersionOperation;\n\n  /**\n   * Query param: Query parameter for session_id\n   */\n  session_id?: string;\n\n  /**\n   * Query param: Query parameter for view\n   */\n  view?: MemoriesAPI.BetaManagedAgentsMemoryView;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryVersionRedactParams {\n  /**\n   * Path param: Path parameter memory_store_id\n   */\n  memory_store_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace MemoryVersions {\n  export {\n    type BetaManagedAgentsActor as BetaManagedAgentsActor,\n    type BetaManagedAgentsAPIActor as BetaManagedAgentsAPIActor,\n    type BetaManagedAgentsMemoryVersion as BetaManagedAgentsMemoryVersion,\n    type BetaManagedAgentsMemoryVersionOperation as BetaManagedAgentsMemoryVersionOperation,\n    type BetaManagedAgentsSessionActor as BetaManagedAgentsSessionActor,\n    type BetaManagedAgentsUserActor as BetaManagedAgentsUserActor,\n    type BetaManagedAgentsMemoryVersionsPageCursor as BetaManagedAgentsMemoryVersionsPageCursor,\n    type MemoryVersionRetrieveParams as MemoryVersionRetrieveParams,\n    type MemoryVersionListParams as MemoryVersionListParams,\n    type MemoryVersionRedactParams as MemoryVersionRedactParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as MemoriesAPI from './memories';\nimport {\n  BetaManagedAgentsConflictError,\n  BetaManagedAgentsContentSha256Precondition,\n  BetaManagedAgentsDeletedMemory,\n  BetaManagedAgentsError,\n  BetaManagedAgentsMemory,\n  BetaManagedAgentsMemoryListItem,\n  BetaManagedAgentsMemoryListItemsPageCursor,\n  BetaManagedAgentsMemoryPathConflictError,\n  BetaManagedAgentsMemoryPreconditionFailedError,\n  BetaManagedAgentsMemoryPrefix,\n  BetaManagedAgentsMemoryView,\n  BetaManagedAgentsPrecondition,\n  Memories,\n  MemoryCreateParams,\n  MemoryDeleteParams,\n  MemoryListParams,\n  MemoryRetrieveParams,\n  MemoryUpdateParams,\n} from './memories';\nimport * as MemoryVersionsAPI from './memory-versions';\nimport {\n  BetaManagedAgentsAPIActor,\n  BetaManagedAgentsActor,\n  BetaManagedAgentsMemoryVersion,\n  BetaManagedAgentsMemoryVersionOperation,\n  BetaManagedAgentsMemoryVersionsPageCursor,\n  BetaManagedAgentsSessionActor,\n  BetaManagedAgentsUserActor,\n  MemoryVersionListParams,\n  MemoryVersionRedactParams,\n  MemoryVersionRetrieveParams,\n  MemoryVersions,\n} from './memory-versions';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class MemoryStores extends APIResource {\n  memories: MemoriesAPI.Memories = new MemoriesAPI.Memories(this._client);\n  memoryVersions: MemoryVersionsAPI.MemoryVersions = new MemoryVersionsAPI.MemoryVersions(this._client);\n\n  /**\n   * CreateMemoryStore\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryStore =\n   *   await client.beta.memoryStores.create({ name: 'x' });\n   * ```\n   */\n  create(\n    params: MemoryStoreCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryStore> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/memory_stores?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * GetMemoryStore\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryStore =\n   *   await client.beta.memoryStores.retrieve(\n   *     'memory_store_id',\n   *   );\n   * ```\n   */\n  retrieve(\n    memoryStoreID: string,\n    params: MemoryStoreRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryStore> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/memory_stores/${memoryStoreID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * UpdateMemoryStore\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryStore =\n   *   await client.beta.memoryStores.update('memory_store_id');\n   * ```\n   */\n  update(\n    memoryStoreID: string,\n    params: MemoryStoreUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryStore> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/memory_stores/${memoryStoreID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * ListMemoryStores\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsMemoryStore of client.beta.memoryStores.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: MemoryStoreListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsMemoryStoresPageCursor, BetaManagedAgentsMemoryStore> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/memory_stores?beta=true', PageCursor<BetaManagedAgentsMemoryStore>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * DeleteMemoryStore\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeletedMemoryStore =\n   *   await client.beta.memoryStores.delete('memory_store_id');\n   * ```\n   */\n  delete(\n    memoryStoreID: string,\n    params: MemoryStoreDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeletedMemoryStore> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/memory_stores/${memoryStoreID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * ArchiveMemoryStore\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsMemoryStore =\n   *   await client.beta.memoryStores.archive('memory_store_id');\n   * ```\n   */\n  archive(\n    memoryStoreID: string,\n    params: MemoryStoreArchiveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsMemoryStore> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/memory_stores/${memoryStoreID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsMemoryStoresPageCursor = PageCursor<BetaManagedAgentsMemoryStore>;\n\nexport interface BetaManagedAgentsDeletedMemoryStore {\n  id: string;\n\n  type: 'memory_store_deleted';\n}\n\nexport interface BetaManagedAgentsMemoryStore {\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  name: string;\n\n  type: 'memory_store';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  archived_at?: string | null;\n\n  description?: string;\n\n  metadata?: { [key: string]: string };\n}\n\nexport interface MemoryStoreCreateParams {\n  /**\n   * Body param\n   */\n  name: string;\n\n  /**\n   * Body param\n   */\n  description?: string;\n\n  /**\n   * Body param\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryStoreRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryStoreUpdateParams {\n  /**\n   * Body param\n   */\n  description?: string | null;\n\n  /**\n   * Body param: Metadata patch. Set a key to a string to upsert it, or to null to\n   * delete it. Omit the field to preserve. The stored bag is limited to 16 keys (up\n   * to 64 chars each) with values up to 512 chars.\n   */\n  metadata?: { [key: string]: string | null } | null;\n\n  /**\n   * Body param\n   */\n  name?: string | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryStoreListParams extends PageCursorParams {\n  /**\n   * Query param: Return stores created at or after this time (inclusive).\n   */\n  'created_at[gte]'?: string;\n\n  /**\n   * Query param: Return stores created at or before this time (inclusive).\n   */\n  'created_at[lte]'?: string;\n\n  /**\n   * Query param: Query parameter for include_archived\n   */\n  include_archived?: boolean;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryStoreDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface MemoryStoreArchiveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nMemoryStores.Memories = Memories;\nMemoryStores.MemoryVersions = MemoryVersions;\n\nexport declare namespace MemoryStores {\n  export {\n    type BetaManagedAgentsDeletedMemoryStore as BetaManagedAgentsDeletedMemoryStore,\n    type BetaManagedAgentsMemoryStore as BetaManagedAgentsMemoryStore,\n    type BetaManagedAgentsMemoryStoresPageCursor as BetaManagedAgentsMemoryStoresPageCursor,\n    type MemoryStoreCreateParams as MemoryStoreCreateParams,\n    type MemoryStoreRetrieveParams as MemoryStoreRetrieveParams,\n    type MemoryStoreUpdateParams as MemoryStoreUpdateParams,\n    type MemoryStoreListParams as MemoryStoreListParams,\n    type MemoryStoreDeleteParams as MemoryStoreDeleteParams,\n    type MemoryStoreArchiveParams as MemoryStoreArchiveParams,\n  };\n\n  export {\n    Memories as Memories,\n    type BetaManagedAgentsConflictError as BetaManagedAgentsConflictError,\n    type BetaManagedAgentsContentSha256Precondition as BetaManagedAgentsContentSha256Precondition,\n    type BetaManagedAgentsDeletedMemory as BetaManagedAgentsDeletedMemory,\n    type BetaManagedAgentsError as BetaManagedAgentsError,\n    type BetaManagedAgentsMemory as BetaManagedAgentsMemory,\n    type BetaManagedAgentsMemoryListItem as BetaManagedAgentsMemoryListItem,\n    type BetaManagedAgentsMemoryPathConflictError as BetaManagedAgentsMemoryPathConflictError,\n    type BetaManagedAgentsMemoryPreconditionFailedError as BetaManagedAgentsMemoryPreconditionFailedError,\n    type BetaManagedAgentsMemoryPrefix as BetaManagedAgentsMemoryPrefix,\n    type BetaManagedAgentsMemoryView as BetaManagedAgentsMemoryView,\n    type BetaManagedAgentsPrecondition as BetaManagedAgentsPrecondition,\n    type BetaManagedAgentsMemoryListItemsPageCursor as BetaManagedAgentsMemoryListItemsPageCursor,\n    type MemoryCreateParams as MemoryCreateParams,\n    type MemoryRetrieveParams as MemoryRetrieveParams,\n    type MemoryUpdateParams as MemoryUpdateParams,\n    type MemoryListParams as MemoryListParams,\n    type MemoryDeleteParams as MemoryDeleteParams,\n  };\n\n  export {\n    MemoryVersions as MemoryVersions,\n    type BetaManagedAgentsActor as BetaManagedAgentsActor,\n    type BetaManagedAgentsAPIActor as BetaManagedAgentsAPIActor,\n    type BetaManagedAgentsMemoryVersion as BetaManagedAgentsMemoryVersion,\n    type BetaManagedAgentsMemoryVersionOperation as BetaManagedAgentsMemoryVersionOperation,\n    type BetaManagedAgentsSessionActor as BetaManagedAgentsSessionActor,\n    type BetaManagedAgentsUserActor as BetaManagedAgentsUserActor,\n    type BetaManagedAgentsMemoryVersionsPageCursor as BetaManagedAgentsMemoryVersionsPageCursor,\n    type MemoryVersionRetrieveParams as MemoryVersionRetrieveParams,\n    type MemoryVersionListParams as MemoryVersionListParams,\n    type MemoryVersionRedactParams as MemoryVersionRedactParams,\n  };\n}\n", "// File containing shared constants\n\n/**\n * Model-specific timeout constraints for non-streaming requests\n */\nexport const MODEL_NONSTREAMING_TOKENS: Record<string, number> = {\n  'claude-opus-4-20250514': 8192,\n  'claude-opus-4-0': 8192,\n  'claude-4-opus-20250514': 8192,\n  'anthropic.claude-opus-4-20250514-v1:0': 8192,\n  'claude-opus-4@20250514': 8192,\n  'claude-opus-4-1-20250805': 8192,\n  'anthropic.claude-opus-4-1-20250805-v1:0': 8192,\n  'claude-opus-4-1@20250805': 8192,\n};\n", "import type { Logger } from '../client';\nimport { AnthropicError } from '../core/error';\nimport {\n  BetaContentBlock,\n  BetaJSONOutputFormat,\n  BetaMessage,\n  BetaOutputConfig,\n  BetaTextBlock,\n  MessageCreateParams,\n} from '../resources/beta/messages/messages';\n\n// vendored from typefest just to make things look a bit nicer on hover\ntype Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};\n\ntype AutoParseableBetaOutputConfig = Omit<BetaOutputConfig, 'format'> & {\n  format?: BetaJSONOutputFormat | AutoParseableBetaOutputFormat<any> | null;\n};\n\nexport type BetaParseableMessageCreateParams = Simplify<\n  Omit<MessageCreateParams, 'output_format' | 'output_config'> & {\n    /**\n     * @deprecated Use `output_config.format` instead. This parameter will be removed in a future\n     *   release.\n     */\n    output_format?: BetaJSONOutputFormat | AutoParseableBetaOutputFormat<any> | null;\n    output_config?: AutoParseableBetaOutputConfig | null;\n  }\n>;\n\nexport type ExtractParsedContentFromBetaParams<Params extends BetaParseableMessageCreateParams> =\n  Params['output_format'] extends AutoParseableBetaOutputFormat<infer P> ? P\n  : Params['output_config'] extends { format: AutoParseableBetaOutputFormat<infer P> } ? P\n  : null;\n\nexport type AutoParseableBetaOutputFormat<ParsedT> = BetaJSONOutputFormat & {\n  parse(content: string): ParsedT;\n};\n\nexport type ParsedBetaMessage<ParsedT> = BetaMessage & {\n  content: Array<ParsedBetaContentBlock<ParsedT>>;\n  parsed_output: ParsedT | null;\n};\n\nexport type ParsedBetaContentBlock<ParsedT> =\n  | (BetaTextBlock & { parsed_output: ParsedT | null })\n  | Exclude<BetaContentBlock, BetaTextBlock>;\n\nfunction getOutputFormat(\n  params: BetaParseableMessageCreateParams | null,\n): BetaJSONOutputFormat | AutoParseableBetaOutputFormat<any> | null | undefined {\n  // Prefer output_format (deprecated) over output_config.format for backward compatibility\n  return params?.output_format ?? params?.output_config?.format;\n}\n\nexport function maybeParseBetaMessage<Params extends BetaParseableMessageCreateParams | null>(\n  message: BetaMessage,\n  params: Params,\n  opts: { logger: Logger },\n): ParsedBetaMessage<ExtractParsedContentFromBetaParams<NonNullable<Params>>> {\n  const outputFormat = getOutputFormat(params);\n  if (!params || !('parse' in (outputFormat ?? {}))) {\n    return {\n      ...message,\n      content: message.content.map((block) => {\n        if (block.type === 'text') {\n          const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', {\n            value: null,\n            enumerable: false,\n          }) as ParsedBetaContentBlock<ExtractParsedContentFromBetaParams<NonNullable<Params>>>;\n\n          return Object.defineProperty(parsedBlock, 'parsed', {\n            get() {\n              opts.logger.warn(\n                'The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead.',\n              );\n              return null;\n            },\n            enumerable: false,\n          });\n        }\n        return block;\n      }),\n      parsed_output: null,\n    } as ParsedBetaMessage<ExtractParsedContentFromBetaParams<NonNullable<Params>>>;\n  }\n\n  return parseBetaMessage(message, params, opts);\n}\n\nexport function parseBetaMessage<Params extends BetaParseableMessageCreateParams>(\n  message: BetaMessage,\n  params: Params,\n  opts: { logger: Logger },\n): ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>> {\n  let firstParsedOutput: ReturnType<typeof parseBetaOutputFormat<Params>> | null = null;\n\n  const content: Array<ParsedBetaContentBlock<ExtractParsedContentFromBetaParams<Params>>> =\n    message.content.map((block) => {\n      if (block.type === 'text') {\n        const parsedOutput = parseBetaOutputFormat(params, block.text);\n\n        if (firstParsedOutput === null) {\n          firstParsedOutput = parsedOutput;\n        }\n\n        const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', {\n          value: parsedOutput,\n          enumerable: false,\n        }) as ParsedBetaContentBlock<ExtractParsedContentFromBetaParams<Params>>;\n        return Object.defineProperty(parsedBlock, 'parsed', {\n          get() {\n            opts.logger.warn(\n              'The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead.',\n            );\n            return parsedOutput;\n          },\n          enumerable: false,\n        });\n      }\n      return block;\n    });\n\n  return {\n    ...message,\n    content,\n    parsed_output: firstParsedOutput,\n  } as ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>;\n}\n\nfunction parseBetaOutputFormat<Params extends BetaParseableMessageCreateParams>(\n  params: Params,\n  content: string,\n): ExtractParsedContentFromBetaParams<Params> | null {\n  const outputFormat = getOutputFormat(params);\n  if (outputFormat?.type !== 'json_schema') {\n    return null;\n  }\n\n  try {\n    if ('parse' in outputFormat) {\n      return outputFormat.parse(content);\n    }\n\n    return JSON.parse(content);\n  } catch (error) {\n    throw new AnthropicError(`Failed to parse structured output: ${error}`);\n  }\n}\n", "type Token = {\n  type: string;\n  value: string;\n};\n\nconst tokenize = (input: string): Token[] => {\n    let current = 0;\n    let tokens: Token[] = [];\n\n    while (current < input.length) {\n      let char = input[current];\n\n      if (char === '\\\\') {\n        current++;\n        continue;\n      }\n\n      if (char === '{') {\n        tokens.push({\n          type: 'brace',\n          value: '{',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === '}') {\n        tokens.push({\n          type: 'brace',\n          value: '}',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === '[') {\n        tokens.push({\n          type: 'paren',\n          value: '[',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === ']') {\n        tokens.push({\n          type: 'paren',\n          value: ']',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === ':') {\n        tokens.push({\n          type: 'separator',\n          value: ':',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === ',') {\n        tokens.push({\n          type: 'delimiter',\n          value: ',',\n        });\n\n        current++;\n        continue;\n      }\n\n      if (char === '\"') {\n        let value = '';\n        let danglingQuote = false;\n\n        char = input[++current];\n\n        while (char !== '\"') {\n          if (current === input.length) {\n            danglingQuote = true;\n            break;\n          }\n\n          if (char === '\\\\') {\n            current++;\n            if (current === input.length) {\n              danglingQuote = true;\n              break;\n            }\n            value += char + input[current];\n            char = input[++current];\n          } else {\n            value += char;\n            char = input[++current];\n          }\n        }\n\n        char = input[++current];\n\n        if (!danglingQuote) {\n          tokens.push({\n            type: 'string',\n            value,\n          });\n        }\n        continue;\n      }\n\n      let WHITESPACE = /\\s/;\n      if (char && WHITESPACE.test(char)) {\n        current++;\n        continue;\n      }\n\n      let NUMBERS = /[0-9]/;\n      if ((char && NUMBERS.test(char)) || char === '-' || char === '.') {\n        let value = '';\n\n        if (char === '-') {\n          value += char;\n          char = input[++current];\n        }\n\n        while ((char && NUMBERS.test(char)) || char === '.') {\n          value += char;\n          char = input[++current];\n        }\n\n        tokens.push({\n          type: 'number',\n          value,\n        });\n        continue;\n      }\n\n      let LETTERS = /[a-z]/i;\n      if (char && LETTERS.test(char)) {\n        let value = '';\n\n        while (char && LETTERS.test(char)) {\n          if (current === input.length) {\n            break;\n          }\n          value += char;\n          char = input[++current];\n        }\n\n        if (value == 'true' || value == 'false' || value === 'null') {\n          tokens.push({\n            type: 'name',\n            value,\n          });\n        } else {\n          // unknown token, e.g. `nul` which isn't quite `null`\n          current++;\n          continue;\n        }\n        continue;\n      }\n\n      current++;\n    }\n\n    return tokens;\n  },\n  strip = (tokens: Token[]): Token[] => {\n    if (tokens.length === 0) {\n      return tokens;\n    }\n\n    let lastToken = tokens[tokens.length - 1]!;\n\n    switch (lastToken.type) {\n      case 'separator':\n        tokens = tokens.slice(0, tokens.length - 1);\n        return strip(tokens);\n        break;\n      case 'number':\n        let lastCharacterOfLastToken = lastToken.value[lastToken.value.length - 1];\n        if (lastCharacterOfLastToken === '.' || lastCharacterOfLastToken === '-') {\n          tokens = tokens.slice(0, tokens.length - 1);\n          return strip(tokens);\n        }\n      case 'string':\n        let tokenBeforeTheLastToken = tokens[tokens.length - 2];\n        if (tokenBeforeTheLastToken?.type === 'delimiter') {\n          tokens = tokens.slice(0, tokens.length - 1);\n          return strip(tokens);\n        } else if (tokenBeforeTheLastToken?.type === 'brace' && tokenBeforeTheLastToken.value === '{') {\n          tokens = tokens.slice(0, tokens.length - 1);\n          return strip(tokens);\n        }\n        break;\n      case 'delimiter':\n        tokens = tokens.slice(0, tokens.length - 1);\n        return strip(tokens);\n        break;\n    }\n\n    return tokens;\n  },\n  unstrip = (tokens: Token[]): Token[] => {\n    let tail: string[] = [];\n\n    tokens.map((token) => {\n      if (token.type === 'brace') {\n        if (token.value === '{') {\n          tail.push('}');\n        } else {\n          tail.splice(tail.lastIndexOf('}'), 1);\n        }\n      }\n      if (token.type === 'paren') {\n        if (token.value === '[') {\n          tail.push(']');\n        } else {\n          tail.splice(tail.lastIndexOf(']'), 1);\n        }\n      }\n    });\n\n    if (tail.length > 0) {\n      tail.reverse().map((item) => {\n        if (item === '}') {\n          tokens.push({\n            type: 'brace',\n            value: '}',\n          });\n        } else if (item === ']') {\n          tokens.push({\n            type: 'paren',\n            value: ']',\n          });\n        }\n      });\n    }\n\n    return tokens;\n  },\n  generate = (tokens: Token[]): string => {\n    let output = '';\n\n    tokens.map((token) => {\n      switch (token.type) {\n        case 'string':\n          output += '\"' + token.value + '\"';\n          break;\n        default:\n          output += token.value;\n          break;\n      }\n    });\n\n    return output;\n  },\n  partialParse = (input: string): unknown => JSON.parse(generate(unstrip(strip(tokenize(input)))));\n\nexport { partialParse };\n", "import { partialParse } from '../_vendor/partial-json-parser/parser';\nimport type { Logger } from '../client';\nimport { AnthropicError, APIUserAbortError } from '../error';\nimport { isAbortError } from '../internal/errors';\nimport { type RequestOptions } from '../internal/request-options';\nimport {\n  type BetaContentBlock,\n  type BetaMCPToolUseBlock,\n  type BetaMessage,\n  type BetaMessageParam,\n  Messages as BetaMessages,\n  type BetaRawMessageStreamEvent as BetaMessageStreamEvent,\n  type BetaServerToolUseBlock,\n  type BetaTextBlock,\n  type BetaTextCitation,\n  type BetaToolUseBlock,\n  type MessageCreateParams,\n  type MessageCreateParamsBase,\n  MessageCreateParamsStreaming,\n} from '../resources/beta/messages/messages';\nimport { Stream } from '../streaming';\nimport { maybeParseBetaMessage, type ParsedBetaMessage } from './beta-parser';\n\nexport interface MessageStreamEvents {\n  connect: () => void;\n  streamEvent: (event: BetaMessageStreamEvent, snapshot: BetaMessage) => void;\n  text: (textDelta: string, textSnapshot: string) => void;\n  citation: (citation: BetaTextCitation, citationsSnapshot: BetaTextCitation[]) => void;\n  inputJson: (partialJson: string, jsonSnapshot: unknown) => void;\n  thinking: (thinkingDelta: string, thinkingSnapshot: string) => void;\n  signature: (signature: string) => void;\n  compaction: (compactedContent: string) => void;\n  message: (message: BetaMessage) => void;\n  contentBlock: (content: BetaContentBlock) => void;\n  finalMessage: (message: BetaMessage) => void;\n  error: (error: AnthropicError) => void;\n  abort: (error: APIUserAbortError) => void;\n  end: () => void;\n}\n\ntype MessageStreamEventListeners<Event extends keyof MessageStreamEvents> = {\n  listener: MessageStreamEvents[Event];\n  once?: boolean;\n}[];\n\nconst JSON_BUF_PROPERTY = '__json_buf';\n\nexport type TracksToolInput = BetaToolUseBlock | BetaServerToolUseBlock | BetaMCPToolUseBlock;\n\nfunction tracksToolInput(content: BetaContentBlock): content is TracksToolInput {\n  return content.type === 'tool_use' || content.type === 'server_tool_use' || content.type === 'mcp_tool_use';\n}\n\nexport class BetaMessageStream<ParsedT = null> implements AsyncIterable<BetaMessageStreamEvent> {\n  messages: BetaMessageParam[] = [];\n  receivedMessages: ParsedBetaMessage<ParsedT>[] = [];\n  #currentMessageSnapshot: BetaMessage | undefined;\n  #params: MessageCreateParams | null = null;\n\n  controller: AbortController = new AbortController();\n\n  #connectedPromise: Promise<Response | null>;\n  #resolveConnectedPromise: (response: Response | null) => void = () => {};\n  #rejectConnectedPromise: (error: AnthropicError) => void = () => {};\n\n  #endPromise: Promise<void>;\n  #resolveEndPromise: () => void = () => {};\n  #rejectEndPromise: (error: AnthropicError) => void = () => {};\n\n  #listeners: { [Event in keyof MessageStreamEvents]?: MessageStreamEventListeners<Event> } = {};\n\n  #ended = false;\n  #errored = false;\n  #aborted = false;\n  #catchingPromiseCreated = false;\n  #response: Response | null | undefined;\n  #request_id: string | null | undefined;\n  #logger: Logger;\n\n  constructor(params: MessageCreateParamsBase | null, opts?: { logger?: Logger | undefined }) {\n    this.#connectedPromise = new Promise<Response | null>((resolve, reject) => {\n      this.#resolveConnectedPromise = resolve;\n      this.#rejectConnectedPromise = reject;\n    });\n\n    this.#endPromise = new Promise<void>((resolve, reject) => {\n      this.#resolveEndPromise = resolve;\n      this.#rejectEndPromise = reject;\n    });\n\n    // Don't let these promises cause unhandled rejection errors.\n    // we will manually cause an unhandled rejection error later\n    // if the user hasn't registered any error listener or called\n    // any promise-returning method.\n    this.#connectedPromise.catch(() => {});\n    this.#endPromise.catch(() => {});\n\n    this.#params = params;\n    this.#logger = opts?.logger ?? console;\n  }\n\n  get response(): Response | null | undefined {\n    return this.#response;\n  }\n\n  get request_id(): string | null | undefined {\n    return this.#request_id;\n  }\n\n  /**\n   * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n   * returned vie the `request-id` header which is useful for debugging requests and resporting\n   * issues to Anthropic.\n   *\n   * This is the same as the `APIPromise.withResponse()` method.\n   *\n   * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n   * as no `Response` is available.\n   */\n  async withResponse(): Promise<{\n    data: BetaMessageStream<ParsedT>;\n    response: Response;\n    request_id: string | null | undefined;\n  }> {\n    this.#catchingPromiseCreated = true;\n\n    const response = await this.#connectedPromise;\n    if (!response) {\n      throw new Error('Could not resolve a `Response` object');\n    }\n\n    return {\n      data: this,\n      response,\n      request_id: response.headers.get('request-id'),\n    };\n  }\n\n  /**\n   * Intended for use on the frontend, consuming a stream produced with\n   * `.toReadableStream()` on the backend.\n   *\n   * Note that messages sent to the model do not appear in `.on('message')`\n   * in this context.\n   */\n  static fromReadableStream(stream: ReadableStream): BetaMessageStream {\n    const runner = new BetaMessageStream(null);\n    runner._run(() => runner._fromReadableStream(stream));\n    return runner;\n  }\n\n  static createMessage<ParsedT>(\n    messages: BetaMessages,\n    params: MessageCreateParamsBase,\n    options?: RequestOptions,\n    { logger }: { logger?: Logger | undefined } = {},\n  ): BetaMessageStream<ParsedT> {\n    const runner = new BetaMessageStream<ParsedT>(params as MessageCreateParamsStreaming, { logger });\n    for (const message of params.messages) {\n      runner._addMessageParam(message);\n    }\n    runner.#params = { ...params, stream: true };\n    runner._run(() =>\n      runner._createMessage(\n        messages,\n        { ...params, stream: true },\n        { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },\n      ),\n    );\n    return runner;\n  }\n\n  protected _run(executor: () => Promise<any>) {\n    executor().then(() => {\n      this._emitFinal();\n      this._emit('end');\n    }, this.#handleError);\n  }\n\n  protected _addMessageParam(message: BetaMessageParam) {\n    this.messages.push(message);\n  }\n\n  protected _addMessage(message: ParsedBetaMessage<ParsedT>, emit = true) {\n    this.receivedMessages.push(message);\n    if (emit) {\n      this._emit('message', message);\n    }\n  }\n\n  protected async _createMessage(\n    messages: BetaMessages,\n    params: MessageCreateParams,\n    options?: RequestOptions,\n  ): Promise<void> {\n    const signal = options?.signal;\n    let abortHandler: (() => void) | undefined;\n    if (signal) {\n      if (signal.aborted) this.controller.abort();\n      abortHandler = this.controller.abort.bind(this.controller);\n      signal.addEventListener('abort', abortHandler);\n    }\n    try {\n      this.#beginRequest();\n      const { response, data: stream } = await messages\n        .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n        .withResponse();\n      this._connected(response);\n      for await (const event of stream) {\n        this.#addStreamEvent(event);\n      }\n      if (stream.controller.signal?.aborted) {\n        throw new APIUserAbortError();\n      }\n      this.#endRequest();\n    } finally {\n      if (signal && abortHandler) {\n        signal.removeEventListener('abort', abortHandler);\n      }\n    }\n  }\n\n  protected _connected(response: Response | null) {\n    if (this.ended) return;\n    this.#response = response;\n    this.#request_id = response?.headers.get('request-id');\n    this.#resolveConnectedPromise(response);\n    this._emit('connect');\n  }\n\n  get ended(): boolean {\n    return this.#ended;\n  }\n\n  get errored(): boolean {\n    return this.#errored;\n  }\n\n  get aborted(): boolean {\n    return this.#aborted;\n  }\n\n  abort() {\n    this.controller.abort();\n  }\n\n  /**\n   * Adds the listener function to the end of the listeners array for the event.\n   * No checks are made to see if the listener has already been added. Multiple calls passing\n   * the same combination of event and listener will result in the listener being added, and\n   * called, multiple times.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  on<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n    const listeners: MessageStreamEventListeners<Event> =\n      this.#listeners[event] || (this.#listeners[event] = []);\n    listeners.push({ listener });\n    return this;\n  }\n\n  /**\n   * Removes the specified listener from the listener array for the event.\n   * off() will remove, at most, one instance of a listener from the listener array. If any single\n   * listener has been added multiple times to the listener array for the specified event, then\n   * off() must be called multiple times to remove each instance.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  off<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n    const listeners = this.#listeners[event];\n    if (!listeners) return this;\n    const index = listeners.findIndex((l) => l.listener === listener);\n    if (index >= 0) listeners.splice(index, 1);\n    return this;\n  }\n\n  /**\n   * Adds a one-time listener function for the event. The next time the event is triggered,\n   * this listener is removed and then invoked.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  once<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n    const listeners: MessageStreamEventListeners<Event> =\n      this.#listeners[event] || (this.#listeners[event] = []);\n    listeners.push({ listener, once: true });\n    return this;\n  }\n\n  /**\n   * This is similar to `.once()`, but returns a Promise that resolves the next time\n   * the event is triggered, instead of calling a listener callback.\n   * @returns a Promise that resolves the next time given event is triggered,\n   * or rejects if an error is emitted.  (If you request the 'error' event,\n   * returns a promise that resolves with the error).\n   *\n   * Example:\n   *\n   *   const message = await stream.emitted('message') // rejects if the stream errors\n   */\n  emitted<Event extends keyof MessageStreamEvents>(\n    event: Event,\n  ): Promise<\n    Parameters<MessageStreamEvents[Event]> extends [infer Param] ? Param\n    : Parameters<MessageStreamEvents[Event]> extends [] ? void\n    : Parameters<MessageStreamEvents[Event]>\n  > {\n    return new Promise((resolve, reject) => {\n      this.#catchingPromiseCreated = true;\n      if (event !== 'error') this.once('error', reject);\n      this.once(event, resolve as any);\n    });\n  }\n\n  async done(): Promise<void> {\n    this.#catchingPromiseCreated = true;\n    await this.#endPromise;\n  }\n\n  get currentMessage(): BetaMessage | undefined {\n    return this.#currentMessageSnapshot;\n  }\n\n  #getFinalMessage(): ParsedBetaMessage<ParsedT> {\n    if (this.receivedMessages.length === 0) {\n      throw new AnthropicError('stream ended without producing a Message with role=assistant');\n    }\n    return this.receivedMessages.at(-1)!;\n  }\n\n  /**\n   * @returns a promise that resolves with the the final assistant Message response,\n   * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n   * If structured outputs were used, this will be a ParsedMessage with a `parsed` field.\n   */\n  async finalMessage(): Promise<ParsedBetaMessage<ParsedT>> {\n    await this.done();\n    return this.#getFinalMessage();\n  }\n\n  #getFinalText(): string {\n    if (this.receivedMessages.length === 0) {\n      throw new AnthropicError('stream ended without producing a Message with role=assistant');\n    }\n    const textBlocks = this.receivedMessages\n      .at(-1)!\n      .content.filter((block): block is BetaTextBlock => block.type === 'text')\n      .map((block) => block.text);\n    if (textBlocks.length === 0) {\n      throw new AnthropicError('stream ended without producing a content block with type=text');\n    }\n    return textBlocks.join(' ');\n  }\n\n  /**\n   * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n   * together if there are more than one text blocks.\n   * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n   */\n  async finalText(): Promise<string> {\n    await this.done();\n    return this.#getFinalText();\n  }\n\n  #handleError = (error: unknown) => {\n    this.#errored = true;\n    if (isAbortError(error)) {\n      error = new APIUserAbortError();\n    }\n    if (error instanceof APIUserAbortError) {\n      this.#aborted = true;\n      return this._emit('abort', error);\n    }\n    if (error instanceof AnthropicError) {\n      return this._emit('error', error);\n    }\n    if (error instanceof Error) {\n      const anthropicError: AnthropicError = new AnthropicError(error.message);\n      // @ts-ignore\n      anthropicError.cause = error;\n      return this._emit('error', anthropicError);\n    }\n    return this._emit('error', new AnthropicError(String(error)));\n  };\n\n  protected _emit<Event extends keyof MessageStreamEvents>(\n    event: Event,\n    ...args: Parameters<MessageStreamEvents[Event]>\n  ) {\n    // make sure we don't emit any MessageStreamEvents after end\n    if (this.#ended) return;\n\n    if (event === 'end') {\n      this.#ended = true;\n      this.#resolveEndPromise();\n    }\n\n    const listeners: MessageStreamEventListeners<Event> | undefined = this.#listeners[event];\n    if (listeners) {\n      this.#listeners[event] = listeners.filter((l) => !l.once) as any;\n      listeners.forEach(({ listener }: any) => listener(...args));\n    }\n\n    if (event === 'abort') {\n      const error = args[0] as APIUserAbortError;\n      if (!this.#catchingPromiseCreated && !listeners?.length) {\n        Promise.reject(error);\n      }\n      this.#rejectConnectedPromise(error);\n      this.#rejectEndPromise(error);\n      this._emit('end');\n      return;\n    }\n\n    if (event === 'error') {\n      // NOTE: _emit('error', error) should only be called from #handleError().\n\n      const error = args[0] as AnthropicError;\n      if (!this.#catchingPromiseCreated && !listeners?.length) {\n        // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n        // If you are seeing stack traces here, make sure to handle errors via either:\n        // - runner.on('error', () => ...)\n        // - await runner.done()\n        // - await runner.final...()\n        // - etc.\n        Promise.reject(error);\n      }\n      this.#rejectConnectedPromise(error);\n      this.#rejectEndPromise(error);\n      this._emit('end');\n    }\n  }\n\n  protected _emitFinal() {\n    const finalMessage = this.receivedMessages.at(-1);\n    if (finalMessage) {\n      this._emit('finalMessage', this.#getFinalMessage());\n    }\n  }\n\n  #beginRequest() {\n    if (this.ended) return;\n    this.#currentMessageSnapshot = undefined;\n  }\n  #addStreamEvent(event: BetaMessageStreamEvent) {\n    if (this.ended) return;\n    const messageSnapshot = this.#accumulateMessage(event);\n    this._emit('streamEvent', event, messageSnapshot);\n\n    switch (event.type) {\n      case 'content_block_delta': {\n        const content = messageSnapshot.content.at(-1)!;\n        switch (event.delta.type) {\n          case 'text_delta': {\n            if (content.type === 'text') {\n              this._emit('text', event.delta.text, content.text || '');\n            }\n            break;\n          }\n          case 'citations_delta': {\n            if (content.type === 'text') {\n              this._emit('citation', event.delta.citation, content.citations ?? []);\n            }\n            break;\n          }\n          case 'input_json_delta': {\n            if (tracksToolInput(content) && content.input) {\n              this._emit('inputJson', event.delta.partial_json, content.input);\n            }\n            break;\n          }\n          case 'thinking_delta': {\n            if (content.type === 'thinking') {\n              this._emit('thinking', event.delta.thinking, content.thinking);\n            }\n            break;\n          }\n          case 'signature_delta': {\n            if (content.type === 'thinking') {\n              this._emit('signature', content.signature);\n            }\n            break;\n          }\n          case 'compaction_delta': {\n            if (content.type === 'compaction' && content.content) {\n              this._emit('compaction', content.content);\n            }\n            break;\n          }\n          default:\n            checkNever(event.delta);\n        }\n        break;\n      }\n      case 'message_stop': {\n        this._addMessageParam(messageSnapshot);\n        this._addMessage(\n          maybeParseBetaMessage(messageSnapshot, this.#params, { logger: this.#logger }),\n          true,\n        );\n        break;\n      }\n      case 'content_block_stop': {\n        this._emit('contentBlock', messageSnapshot.content.at(-1)!);\n        break;\n      }\n      case 'message_start': {\n        this.#currentMessageSnapshot = messageSnapshot;\n        break;\n      }\n      case 'content_block_start':\n      case 'message_delta':\n        break;\n    }\n  }\n  #endRequest(): ParsedBetaMessage<ParsedT> {\n    if (this.ended) {\n      throw new AnthropicError(`stream has ended, this shouldn't happen`);\n    }\n    const snapshot = this.#currentMessageSnapshot;\n    if (!snapshot) {\n      throw new AnthropicError(`request ended without sending any chunks`);\n    }\n    this.#currentMessageSnapshot = undefined;\n    return maybeParseBetaMessage(snapshot, this.#params, { logger: this.#logger });\n  }\n\n  protected async _fromReadableStream(\n    readableStream: ReadableStream,\n    options?: RequestOptions,\n  ): Promise<void> {\n    const signal = options?.signal;\n    let abortHandler: (() => void) | undefined;\n    if (signal) {\n      if (signal.aborted) this.controller.abort();\n      abortHandler = this.controller.abort.bind(this.controller);\n      signal.addEventListener('abort', abortHandler);\n    }\n    try {\n      this.#beginRequest();\n      this._connected(null);\n      const stream = Stream.fromReadableStream<BetaMessageStreamEvent>(readableStream, this.controller);\n      for await (const event of stream) {\n        this.#addStreamEvent(event);\n      }\n      if (stream.controller.signal?.aborted) {\n        throw new APIUserAbortError();\n      }\n      this.#endRequest();\n    } finally {\n      if (signal && abortHandler) {\n        signal.removeEventListener('abort', abortHandler);\n      }\n    }\n  }\n\n  /**\n   * Mutates this.#currentMessage with the current event. Handling the accumulation of multiple messages\n   * will be needed to be handled by the caller, this method will throw if you try to accumulate for multiple\n   * messages.\n   */\n  #accumulateMessage(event: BetaMessageStreamEvent): BetaMessage {\n    let snapshot = this.#currentMessageSnapshot;\n\n    if (event.type === 'message_start') {\n      if (snapshot) {\n        throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n      }\n      return event.message;\n    }\n\n    if (!snapshot) {\n      throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n    }\n\n    switch (event.type) {\n      case 'message_stop':\n        return snapshot;\n      case 'message_delta':\n        snapshot.container = event.delta.container;\n        snapshot.stop_reason = event.delta.stop_reason;\n        snapshot.stop_sequence = event.delta.stop_sequence;\n        snapshot.usage.output_tokens = event.usage.output_tokens;\n        snapshot.context_management = event.context_management;\n\n        if (event.usage.input_tokens != null) {\n          snapshot.usage.input_tokens = event.usage.input_tokens;\n        }\n\n        if (event.usage.cache_creation_input_tokens != null) {\n          snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n        }\n\n        if (event.usage.cache_read_input_tokens != null) {\n          snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n        }\n\n        if (event.usage.server_tool_use != null) {\n          snapshot.usage.server_tool_use = event.usage.server_tool_use;\n        }\n\n        if (event.usage.iterations != null) {\n          snapshot.usage.iterations = event.usage.iterations;\n        }\n\n        return snapshot;\n      case 'content_block_start':\n        snapshot.content.push(event.content_block);\n        return snapshot;\n      case 'content_block_delta': {\n        const snapshotContent = snapshot.content.at(event.index);\n\n        switch (event.delta.type) {\n          case 'text_delta': {\n            if (snapshotContent?.type === 'text') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                text: (snapshotContent.text || '') + event.delta.text,\n              };\n            }\n            break;\n          }\n          case 'citations_delta': {\n            if (snapshotContent?.type === 'text') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n              };\n            }\n            break;\n          }\n          case 'input_json_delta': {\n            if (snapshotContent && tracksToolInput(snapshotContent)) {\n              // we need to keep track of the raw JSON string as well so that we can\n              // re-parse it for each delta, for now we just store it as an untyped\n              // non-enumerable property on the snapshot\n              let jsonBuf = (snapshotContent as any)[JSON_BUF_PROPERTY] || '';\n              jsonBuf += event.delta.partial_json;\n\n              const newContent = { ...snapshotContent };\n              Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n                value: jsonBuf,\n                enumerable: false,\n                writable: true,\n              });\n\n              if (jsonBuf) {\n                try {\n                  newContent.input = partialParse(jsonBuf);\n                } catch (err) {\n                  const error = new AnthropicError(\n                    `Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`,\n                  );\n                  this.#handleError(error);\n                }\n              }\n              snapshot.content[event.index] = newContent;\n            }\n            break;\n          }\n          case 'thinking_delta': {\n            if (snapshotContent?.type === 'thinking') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                thinking: snapshotContent.thinking + event.delta.thinking,\n              };\n            }\n            break;\n          }\n          case 'signature_delta': {\n            if (snapshotContent?.type === 'thinking') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                signature: event.delta.signature,\n              };\n            }\n            break;\n          }\n          case 'compaction_delta': {\n            if (snapshotContent?.type === 'compaction') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                content: (snapshotContent.content || '') + event.delta.content,\n              };\n            }\n            break;\n          }\n          default:\n            checkNever(event.delta);\n        }\n        return snapshot;\n      }\n      case 'content_block_stop':\n        return snapshot;\n    }\n  }\n\n  [Symbol.asyncIterator](): AsyncIterator<BetaMessageStreamEvent> {\n    const pushQueue: BetaMessageStreamEvent[] = [];\n    const readQueue: {\n      resolve: (chunk: BetaMessageStreamEvent | undefined) => void;\n      reject: (error: unknown) => void;\n    }[] = [];\n    let done = false;\n\n    this.on('streamEvent', (event) => {\n      const reader = readQueue.shift();\n      if (reader) {\n        reader.resolve(event);\n      } else {\n        pushQueue.push(event);\n      }\n    });\n\n    this.on('end', () => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.resolve(undefined);\n      }\n      readQueue.length = 0;\n    });\n\n    this.on('abort', (err) => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.reject(err);\n      }\n      readQueue.length = 0;\n    });\n\n    this.on('error', (err) => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.reject(err);\n      }\n      readQueue.length = 0;\n    });\n\n    return {\n      next: async (): Promise<IteratorResult<BetaMessageStreamEvent>> => {\n        if (!pushQueue.length) {\n          if (done) {\n            return { value: undefined, done: true };\n          }\n          return new Promise<BetaMessageStreamEvent | undefined>((resolve, reject) =>\n            readQueue.push({ resolve, reject }),\n          ).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n        }\n        const chunk = pushQueue.shift()!;\n        return { value: chunk, done: false };\n      },\n      return: async () => {\n        this.abort();\n        return { value: undefined, done: true };\n      },\n    };\n  }\n\n  toReadableStream(): ReadableStream {\n    const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n    return stream.toReadableStream();\n  }\n}\n\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x: never) {}\n", "import { BetaToolResultContentBlockParam } from '../../resources/beta';\n\n/**\n * An error that can be thrown from a tool's `run` method to return structured\n * content blocks as the error result, rather than just a string message.\n *\n * When the ToolRunner catches this error, it will use the `content` property\n * as the tool result with `is_error: true`.\n *\n * @example\n * ```ts\n * const tool = {\n *   name: 'my_tool',\n *   run: async (input) => {\n *     if (somethingWentWrong) {\n *       throw new ToolError([\n *         { type: 'text', text: 'Error details here' },\n *         { type: 'image', source: { type: 'base64', data: '...', media_type: 'image/png' } },\n *       ]);\n *     }\n *     return 'success';\n *   },\n * };\n * ```\n */\nexport class ToolError extends Error {\n  /**\n   * The content to return as the tool result. This will be sent back to the model\n   * with `is_error: true`.\n   */\n  readonly content: string | Array<BetaToolResultContentBlockParam>;\n\n  constructor(content: string | Array<BetaToolResultContentBlockParam>) {\n    const message =\n      typeof content === 'string' ? content : (\n        content\n          .map((block) => {\n            if (block.type === 'text') return block.text;\n            return `[${block.type}]`;\n          })\n          .join(' ')\n      );\n    super(message);\n    this.name = 'ToolError';\n    this.content = content;\n  }\n}\n", "import { Model } from '../../resources';\n\nexport const DEFAULT_TOKEN_THRESHOLD = 100_000;\n\nexport const DEFAULT_SUMMARY_PROMPT = `You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:\n1. Task Overview\nThe user's core request and success criteria\nAny clarifications or constraints they specified\n2. Current State\nWhat has been completed so far\nFiles created, modified, or analyzed (with paths if relevant)\nKey outputs or artifacts produced\n3. Important Discoveries\nTechnical constraints or requirements uncovered\nDecisions made and their rationale\nErrors encountered and how they were resolved\nWhat approaches were tried that didn't work (and why)\n4. Next Steps\nSpecific actions needed to complete the task\nAny blockers or open questions to resolve\nPriority order if multiple steps remain\n5. Context to Preserve\nUser preferences or style requirements\nDomain-specific details that aren't obvious\nAny promises made to the user\nBe concise but complete\u2014err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.\nWrap your summary in <summary></summary> tags.`;\n\n/**\n * @deprecated Use server-side compaction instead by passing\n * `edits: [{ type: 'compact_20260112' }]` in the params passed to `toolRunner()`.\n * See https://platform.claude.com/docs/en/build-with-claude/compaction\n */\nexport interface CompactionControl {\n  /**\n   * The context token threshold at which to trigger compaction.\n   *\n   * When the cumulative token count (input + output) across all messages exceeds this threshold,\n   * the message history will be automatically summarized and compressed.\n   *\n   * @default 100000\n   */\n  contextTokenThreshold?: number;\n\n  /**\n   * The model to use for generating the compaction summary.\n   * If not specified, defaults to the same model used for the tool runner.\n   */\n  model?: Model;\n\n  /**\n   * The prompt used to instruct the model on how to generate the summary.\n   */\n  summaryPrompt?: string;\n\n  enabled: boolean;\n}\n", "import { BetaRunnableTool } from './BetaRunnableTool';\nimport { ToolError } from './ToolError';\nimport { Anthropic } from '../..';\nimport { AnthropicError } from '../../core/error';\nimport { BetaMessage, BetaMessageParam, BetaToolUnion, MessageCreateParams } from '../../resources/beta';\nimport { BetaMessageStream } from '../BetaMessageStream';\nimport { RequestOptions } from '../../internal/request-options';\nimport { buildHeaders } from '../../internal/headers';\nimport { CompactionControl, DEFAULT_SUMMARY_PROMPT, DEFAULT_TOKEN_THRESHOLD } from './CompactionControl';\nimport { collectStainlessHelpers } from '../stainless-helper-header';\n\n/**\n * Just Promise.withResolvers(), which is not available in all environments.\n */\nfunction promiseWithResolvers<T>(): {\n  promise: Promise<T>;\n  resolve: (value: T) => void;\n  reject: (reason?: any) => void;\n} {\n  let resolve: (value: T) => void;\n  let reject: (reason?: any) => void;\n  const promise = new Promise<T>((res, rej) => {\n    resolve = res;\n    reject = rej;\n  });\n  return { promise, resolve: resolve!, reject: reject! };\n}\n\n/**\n * A ToolRunner handles the automatic conversation loop between the assistant and tools.\n *\n * A ToolRunner is an async iterable that yields either BetaMessage or BetaMessageStream objects\n * depending on the streaming configuration.\n */\nexport class BetaToolRunner<Stream extends boolean> {\n  /** Whether the async iterator has been consumed */\n  #consumed = false;\n  /** Whether parameters have been mutated since the last API call */\n  #mutated = false;\n  /** Current state containing the request parameters */\n  #state: { params: BetaToolRunnerParams };\n  #options: BetaToolRunnerRequestOptions;\n  /** Promise for the last message received from the assistant */\n  #message?: Promise<BetaMessage> | undefined;\n  /** Cached tool response to avoid redundant executions */\n  #toolResponse?: Promise<BetaMessageParam | null> | undefined;\n  /** Promise resolvers for waiting on completion */\n  #completion: {\n    promise: Promise<BetaMessage>;\n    resolve: (value: BetaMessage) => void;\n    reject: (reason?: any) => void;\n  };\n  /** Number of iterations (API requests) made so far */\n  #iterationCount = 0;\n\n  constructor(\n    private client: Anthropic,\n    params: BetaToolRunnerParams,\n    options?: BetaToolRunnerRequestOptions,\n  ) {\n    this.#state = {\n      params: {\n        // You can't clone the entire params since there are functions as handlers.\n        // You also don't really need to clone params.messages, but it probably will prevent a foot gun\n        // somewhere.\n        ...params,\n        messages: structuredClone(params.messages),\n      },\n    };\n\n    const helpers = collectStainlessHelpers(params.tools, params.messages);\n    const helperValue = ['BetaToolRunner', ...helpers].join(', ');\n\n    this.#options = {\n      ...options,\n      headers: buildHeaders([{ 'x-stainless-helper': helperValue }, options?.headers]),\n    };\n    this.#completion = promiseWithResolvers();\n\n    if (params.compactionControl?.enabled) {\n      console.warn(\n        'Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. ' +\n          'Use server-side compaction instead by passing `edits: [{ type: \"compact_20260112\" }]` in the params passed to `toolRunner()`. ' +\n          'See https://platform.claude.com/docs/en/build-with-claude/compaction',\n      );\n    }\n  }\n\n  async #checkAndCompact(): Promise<boolean> {\n    const compactionControl = this.#state.params.compactionControl;\n    if (!compactionControl || !compactionControl.enabled) {\n      return false;\n    }\n\n    let tokensUsed = 0;\n    if (this.#message !== undefined) {\n      try {\n        const message = await this.#message;\n        const totalInputTokens =\n          message.usage.input_tokens +\n          (message.usage.cache_creation_input_tokens ?? 0) +\n          (message.usage.cache_read_input_tokens ?? 0);\n        tokensUsed = totalInputTokens + message.usage.output_tokens;\n      } catch {\n        // If we can't get the message, skip compaction\n        return false;\n      }\n    }\n\n    const threshold = compactionControl.contextTokenThreshold ?? DEFAULT_TOKEN_THRESHOLD;\n\n    if (tokensUsed < threshold) {\n      return false;\n    }\n\n    const model = compactionControl.model ?? this.#state.params.model;\n    const summaryPrompt = compactionControl.summaryPrompt ?? DEFAULT_SUMMARY_PROMPT;\n\n    const messages = this.#state.params.messages;\n\n    if (messages[messages.length - 1]!.role === 'assistant') {\n      // Remove tool_use blocks from the last message to avoid 400 error\n      // (tool_use requires tool_result, which we don't have yet)\n      const lastMessage = messages[messages.length - 1]!;\n      if (Array.isArray(lastMessage.content)) {\n        const nonToolBlocks = lastMessage.content.filter((block) => block.type !== 'tool_use');\n\n        if (nonToolBlocks.length === 0) {\n          // If all blocks were tool_use, just remove the message entirely\n          messages.pop();\n        } else {\n          lastMessage.content = nonToolBlocks;\n        }\n      }\n    }\n\n    const response = await this.client.beta.messages.create(\n      {\n        model,\n        messages: [\n          ...messages,\n          {\n            role: 'user',\n            content: [\n              {\n                type: 'text',\n                text: summaryPrompt,\n              },\n            ],\n          },\n        ],\n        max_tokens: this.#state.params.max_tokens,\n      },\n      {\n        signal: this.#options.signal,\n        headers: buildHeaders([this.#options.headers, { 'x-stainless-helper': 'compaction' }]),\n      },\n    );\n\n    if (response.content[0]?.type !== 'text') {\n      throw new AnthropicError('Expected text response for compaction');\n    }\n    this.#state.params.messages = [\n      {\n        role: 'user',\n        content: response.content,\n      },\n    ];\n    return true;\n  }\n\n  async *[Symbol.asyncIterator](): AsyncIterator<\n    Stream extends true ? BetaMessageStream\n    : Stream extends false ? BetaMessage\n    : BetaMessage | BetaMessageStream\n  > {\n    if (this.#consumed) {\n      throw new AnthropicError('Cannot iterate over a consumed stream');\n    }\n\n    this.#consumed = true;\n    this.#mutated = true;\n    this.#toolResponse = undefined;\n\n    try {\n      while (true) {\n        let stream;\n        try {\n          if (\n            this.#state.params.max_iterations &&\n            this.#iterationCount >= this.#state.params.max_iterations\n          ) {\n            break;\n          }\n\n          this.#mutated = false;\n          this.#toolResponse = undefined;\n          this.#iterationCount++;\n          this.#message = undefined;\n\n          const { max_iterations, compactionControl, ...params } = this.#state.params;\n\n          if (params.stream) {\n            stream = this.client.beta.messages.stream({ ...params }, this.#options);\n            this.#message = stream.finalMessage();\n            // Make sure that this promise doesn't throw before we get the option to do something about it.\n            // Error will be caught when we call await this.#message ultimately\n            this.#message.catch(() => {});\n            yield stream as any;\n          } else {\n            this.#message = this.client.beta.messages.create({ ...params, stream: false }, this.#options);\n            yield this.#message as any;\n          }\n\n          const isCompacted = await this.#checkAndCompact();\n          if (!isCompacted) {\n            if (!this.#mutated) {\n              const { role, content } = await this.#message;\n              this.#state.params.messages.push({ role, content });\n            }\n\n            const toolMessage = await this.#generateToolResponse(this.#state.params.messages.at(-1)!);\n            if (toolMessage) {\n              this.#state.params.messages.push(toolMessage);\n            } else if (!this.#mutated) {\n              break;\n            }\n          }\n        } finally {\n          if (stream) {\n            stream.abort();\n          }\n        }\n      }\n\n      if (!this.#message) {\n        throw new AnthropicError('ToolRunner concluded without a message from the server');\n      }\n\n      this.#completion.resolve(await this.#message);\n    } catch (error) {\n      this.#consumed = false;\n      // Silence unhandled promise errors\n      this.#completion.promise.catch(() => {});\n      this.#completion.reject(error);\n      this.#completion = promiseWithResolvers();\n      throw error;\n    }\n  }\n\n  /**\n   * Update the parameters for the next API call. This invalidates any cached tool responses.\n   *\n   * @param paramsOrMutator - Either new parameters or a function to mutate existing parameters\n   *\n   * @example\n   * // Direct parameter update\n   * runner.setMessagesParams({\n   *   model: 'claude-haiku-4-5',\n   *   max_tokens: 500,\n   * });\n   *\n   * @example\n   * // Using a mutator function\n   * runner.setMessagesParams((params) => ({\n   *   ...params,\n   *   max_tokens: 100,\n   * }));\n   */\n  setMessagesParams(params: BetaToolRunnerParams): void;\n  setMessagesParams(mutator: (prevParams: BetaToolRunnerParams) => BetaToolRunnerParams): void;\n  setMessagesParams(\n    paramsOrMutator: BetaToolRunnerParams | ((prevParams: BetaToolRunnerParams) => BetaToolRunnerParams),\n  ) {\n    if (typeof paramsOrMutator === 'function') {\n      this.#state.params = paramsOrMutator(this.#state.params);\n    } else {\n      this.#state.params = paramsOrMutator;\n    }\n    this.#mutated = true;\n    // Invalidate cached tool response since parameters changed\n    this.#toolResponse = undefined;\n  }\n\n  /**\n   * Update the request options for future API calls.\n   *\n   * @param optionsOrMutator - Either new options or a function to mutate existing options\n   *\n   * @example\n   * // Direct options update\n   * runner.setRequestOptions({\n   *   signal: controller.signal,\n   * });\n   *\n   * @example\n   * // Using a mutator function\n   * runner.setRequestOptions((prevOptions) => ({\n   *   ...prevOptions,\n   *   signal: controller.signal,\n   * }));\n   */\n  setRequestOptions(options: BetaToolRunnerRequestOptions): void;\n  setRequestOptions(\n    mutator: (prevOptions: BetaToolRunnerRequestOptions) => BetaToolRunnerRequestOptions,\n  ): void;\n  setRequestOptions(\n    optionsOrMutator:\n      | BetaToolRunnerRequestOptions\n      | ((prevOptions: BetaToolRunnerRequestOptions) => BetaToolRunnerRequestOptions),\n  ) {\n    if (typeof optionsOrMutator === 'function') {\n      this.#options = optionsOrMutator(this.#options);\n    } else {\n      this.#options = { ...this.#options, ...optionsOrMutator };\n    }\n  }\n\n  /**\n   * Get the tool response for the last message from the assistant.\n   * Avoids redundant tool executions by caching results.\n   *\n   * @returns A promise that resolves to a BetaMessageParam containing tool results, or null if no tools need to be executed\n   *\n   * @example\n   * const toolResponse = await runner.generateToolResponse();\n   * if (toolResponse) {\n   *   console.log('Tool results:', toolResponse.content);\n   * }\n   */\n  async generateToolResponse(signal: AbortSignal | null | undefined = this.#options.signal) {\n    const message = (await this.#message) ?? this.params.messages.at(-1);\n    if (!message) {\n      return null;\n    }\n    return this.#generateToolResponse(message, signal);\n  }\n\n  async #generateToolResponse(\n    lastMessage: BetaMessageParam,\n    signal: AbortSignal | null | undefined = this.#options.signal,\n  ) {\n    if (this.#toolResponse !== undefined) {\n      return this.#toolResponse;\n    }\n    this.#toolResponse = generateToolResponse(this.#state.params, lastMessage, {\n      ...this.#options,\n      signal,\n    });\n    return this.#toolResponse;\n  }\n\n  /**\n   * Wait for the async iterator to complete. This works even if the async iterator hasn't yet started, and\n   * will wait for an instance to start and go to completion.\n   *\n   * @returns A promise that resolves to the final BetaMessage when the iterator completes\n   *\n   * @example\n   * // Start consuming the iterator\n   * for await (const message of runner) {\n   *   console.log('Message:', message.content);\n   * }\n   *\n   * // Meanwhile, wait for completion from another part of the code\n   * const finalMessage = await runner.done();\n   * console.log('Final response:', finalMessage.content);\n   */\n  done(): Promise<BetaMessage> {\n    return this.#completion.promise;\n  }\n\n  /**\n   * Returns a promise indicating that the stream is done. Unlike .done(), this will eagerly read the stream:\n   * * If the iterator has not been consumed, consume the entire iterator and return the final message from the\n   * assistant.\n   * * If the iterator has been consumed, waits for it to complete and returns the final message.\n   *\n   * @returns A promise that resolves to the final BetaMessage from the conversation\n   * @throws {AnthropicError} If no messages were processed during the conversation\n   *\n   * @example\n   * const finalMessage = await runner.runUntilDone();\n   * console.log('Final response:', finalMessage.content);\n   */\n  async runUntilDone(): Promise<BetaMessage> {\n    // If not yet consumed, start consuming and wait for completion\n    if (!this.#consumed) {\n      for await (const _ of this) {\n        // Iterator naturally populates this.#message\n      }\n    }\n\n    // If consumed but not completed, wait for completion\n    return this.done();\n  }\n\n  /**\n   * Get the current parameters being used by the ToolRunner.\n   *\n   * @returns A readonly view of the current ToolRunnerParams\n   *\n   * @example\n   * const currentParams = runner.params;\n   * console.log('Current model:', currentParams.model);\n   * console.log('Message count:', currentParams.messages.length);\n   */\n  get params(): Readonly<BetaToolRunnerParams> {\n    return this.#state.params as Readonly<BetaToolRunnerParams>;\n  }\n\n  /**\n   * Add one or more messages to the conversation history.\n   *\n   * @param messages - One or more BetaMessageParam objects to add to the conversation\n   *\n   * @example\n   * runner.pushMessages(\n   *   { role: 'user', content: 'Also, what about the weather in NYC?' }\n   * );\n   *\n   * @example\n   * // Adding multiple messages\n   * runner.pushMessages(\n   *   { role: 'user', content: 'What about NYC?' },\n   *   { role: 'user', content: 'And Boston?' }\n   * );\n   */\n  pushMessages(...messages: BetaMessageParam[]) {\n    this.setMessagesParams((params) => ({\n      ...params,\n      messages: [...params.messages, ...messages],\n    }));\n  }\n\n  /**\n   * Makes the ToolRunner directly awaitable, equivalent to calling .runUntilDone()\n   * This allows using `await runner` instead of `await runner.runUntilDone()`\n   */\n  then<TResult1 = BetaMessage, TResult2 = never>(\n    onfulfilled?: ((value: BetaMessage) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n  ): Promise<TResult1 | TResult2> {\n    return this.runUntilDone().then(onfulfilled, onrejected);\n  }\n}\n\nasync function generateToolResponse(\n  params: BetaToolRunnerParams,\n  lastMessage = params.messages.at(-1),\n  requestOptions?: BetaToolRunnerRequestOptions,\n): Promise<BetaMessageParam | null> {\n  // Only process if the last message is from the assistant and has tool use blocks\n  if (\n    !lastMessage ||\n    lastMessage.role !== 'assistant' ||\n    !lastMessage.content ||\n    typeof lastMessage.content === 'string'\n  ) {\n    return null;\n  }\n\n  const toolUseBlocks = lastMessage.content.filter((content) => content.type === 'tool_use');\n  if (toolUseBlocks.length === 0) {\n    return null;\n  }\n\n  const toolResults = await Promise.all(\n    toolUseBlocks.map(async (toolUse) => {\n      const tool = params.tools.find((t) => ('name' in t ? t.name : t.mcp_server_name) === toolUse.name);\n      if (!tool || !('run' in tool)) {\n        return {\n          type: 'tool_result' as const,\n          tool_use_id: toolUse.id,\n          content: `Error: Tool '${toolUse.name}' not found`,\n          is_error: true,\n        };\n      }\n\n      try {\n        let input = toolUse.input;\n        if ('parse' in tool && tool.parse) {\n          input = tool.parse(input);\n        }\n\n        const result = await tool.run(input, {\n          toolUseBlock: toolUse,\n          signal: requestOptions?.signal,\n        });\n        return {\n          type: 'tool_result' as const,\n          tool_use_id: toolUse.id,\n          content: result,\n        };\n      } catch (error) {\n        return {\n          type: 'tool_result' as const,\n          tool_use_id: toolUse.id,\n          content:\n            error instanceof ToolError ?\n              error.content\n            : `Error: ${error instanceof Error ? error.message : String(error)}`,\n          is_error: true,\n        };\n      }\n    }),\n  );\n\n  return {\n    role: 'user' as const,\n    content: toolResults,\n  };\n}\n\n// vendored from typefest just to make things look a bit nicer on hover\ntype Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};\n\n/**\n * Parameters for creating a ToolRunner, extending MessageCreateParams with runnable tools.\n */\nexport type BetaToolRunnerParams = Simplify<\n  Omit<MessageCreateParams, 'tools'> & {\n    tools: (BetaToolUnion | BetaRunnableTool<any>)[];\n    /**\n     * Maximum number of iterations (API requests) to make in the tool execution loop.\n     * Each iteration consists of: assistant response \u2192 tool execution \u2192 tool results.\n     * When exceeded, the loop will terminate even if tools are still being requested.\n     */\n    max_iterations?: number;\n    /**\n     * @deprecated Use server-side compaction instead by passing\n     * `edits: [{ type: 'compact_20260112' }]` in the params passed to `toolRunner()`.\n     * See https://platform.claude.com/docs/en/build-with-claude/compaction\n     */\n    compactionControl?: CompactionControl;\n  }\n>;\n\nexport type BetaToolRunnerRequestOptions = Pick<RequestOptions, 'headers' | 'signal'>;\n", "import { AnthropicError } from '../../core/error';\nimport { ReadableStreamToAsyncIterable } from '../shims';\nimport { LineDecoder, type Bytes } from './line';\n\nexport class JSONLDecoder<T> {\n  controller: AbortController;\n\n  constructor(\n    private iterator: AsyncIterableIterator<Bytes>,\n    controller: AbortController,\n  ) {\n    this.controller = controller;\n  }\n\n  private async *decoder(): AsyncIterator<T, any, undefined> {\n    const lineDecoder = new LineDecoder();\n    for await (const chunk of this.iterator) {\n      for (const line of lineDecoder.decode(chunk)) {\n        yield JSON.parse(line) as T;\n      }\n    }\n\n    for (const line of lineDecoder.flush()) {\n      yield JSON.parse(line) as T;\n    }\n  }\n\n  [Symbol.asyncIterator](): AsyncIterator<T> {\n    return this.decoder();\n  }\n\n  static fromResponse<T>(response: Response, controller: AbortController): JSONLDecoder<T> {\n    if (!response.body) {\n      controller.abort();\n      if (\n        typeof (globalThis as any).navigator !== 'undefined' &&\n        (globalThis as any).navigator.product === 'ReactNative'\n      ) {\n        throw new AnthropicError(\n          `The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`,\n        );\n      }\n      throw new AnthropicError(`Attempted to iterate over a response with no body`);\n    }\n\n    return new JSONLDecoder(ReadableStreamToAsyncIterable<Bytes>(response.body), controller);\n  }\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport * as BetaMessagesAPI from './messages';\nimport { Page, type PageParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { JSONLDecoder } from '../../../internal/decoders/jsonl';\nimport { AnthropicError } from '../../../error';\nimport { path } from '../../../internal/utils/path';\nimport * as MessagesApi from '../../messages/messages';\n\nexport class Batches extends APIResource {\n  /**\n   * Send a batch of Message creation requests.\n   *\n   * The Message Batches API can be used to process multiple Messages API requests at\n   * once. Once a Message Batch is created, it begins processing immediately. Batches\n   * can take up to 24 hours to complete.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const betaMessageBatch =\n   *   await client.beta.messages.batches.create({\n   *     requests: [\n   *       {\n   *         custom_id: 'my-custom-id-1',\n   *         params: {\n   *           max_tokens: 1024,\n   *           messages: [\n   *             { content: 'Hello, world', role: 'user' },\n   *           ],\n   *           model: 'claude-opus-4-6',\n   *         },\n   *       },\n   *     ],\n   *   });\n   * ```\n   */\n  create(params: BatchCreateParams, options?: RequestOptions): APIPromise<BetaMessageBatch> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/messages/batches?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * This endpoint is idempotent and can be used to poll for Message Batch\n   * completion. To access the results of a Message Batch, make a request to the\n   * `results_url` field in the response.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const betaMessageBatch =\n   *   await client.beta.messages.batches.retrieve(\n   *     'message_batch_id',\n   *   );\n   * ```\n   */\n  retrieve(\n    messageBatchID: string,\n    params: BatchRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaMessageBatch> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/messages/batches/${messageBatchID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List all Message Batches within a Workspace. Most recently created batches are\n   * returned first.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaMessageBatch of client.beta.messages.batches.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: BatchListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaMessageBatchesPage, BetaMessageBatch> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/messages/batches?beta=true', Page<BetaMessageBatch>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete a Message Batch.\n   *\n   * Message Batches can only be deleted once they've finished processing. If you'd\n   * like to delete an in-progress batch, you must first cancel it.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const betaDeletedMessageBatch =\n   *   await client.beta.messages.batches.delete(\n   *     'message_batch_id',\n   *   );\n   * ```\n   */\n  delete(\n    messageBatchID: string,\n    params: BatchDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaDeletedMessageBatch> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/messages/batches/${messageBatchID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Batches may be canceled any time before processing ends. Once cancellation is\n   * initiated, the batch enters a `canceling` state, at which time the system may\n   * complete any in-progress, non-interruptible requests before finalizing\n   * cancellation.\n   *\n   * The number of canceled requests is specified in `request_counts`. To determine\n   * which requests were canceled, check the individual results within the batch.\n   * Note that cancellation may not result in any canceled requests if they were\n   * non-interruptible.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const betaMessageBatch =\n   *   await client.beta.messages.batches.cancel(\n   *     'message_batch_id',\n   *   );\n   * ```\n   */\n  cancel(\n    messageBatchID: string,\n    params: BatchCancelParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaMessageBatch> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/messages/batches/${messageBatchID}/cancel?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Streams the results of a Message Batch as a `.jsonl` file.\n   *\n   * Each line in the file is a JSON object containing the result of a single request\n   * in the Message Batch. Results are not guaranteed to be in the same order as\n   * requests. Use the `custom_id` field to match results to requests.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const betaMessageBatchIndividualResponse =\n   *   await client.beta.messages.batches.results(\n   *     'message_batch_id',\n   *   );\n   * ```\n   */\n  async results(\n    messageBatchID: string,\n    params: BatchResultsParams | undefined = {},\n    options?: RequestOptions,\n  ): Promise<JSONLDecoder<BetaMessageBatchIndividualResponse>> {\n    const batch = await this.retrieve(messageBatchID);\n    if (!batch.results_url) {\n      throw new AnthropicError(\n        `No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`,\n      );\n    }\n\n    const { betas } = params ?? {};\n    return this._client\n      .get(batch.results_url, {\n        ...options,\n        headers: buildHeaders([\n          {\n            'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString(),\n            Accept: 'application/binary',\n          },\n          options?.headers,\n        ]),\n        stream: true,\n        __binaryResponse: true,\n      })\n      ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller)) as APIPromise<\n      JSONLDecoder<BetaMessageBatchIndividualResponse>\n    >;\n  }\n}\n\nexport type BetaMessageBatchesPage = Page<BetaMessageBatch>;\n\nexport interface BetaDeletedMessageBatch {\n  /**\n   * ID of the Message Batch.\n   */\n  id: string;\n\n  /**\n   * Deleted object type.\n   *\n   * For Message Batches, this is always `\"message_batch_deleted\"`.\n   */\n  type: 'message_batch_deleted';\n}\n\nexport interface BetaMessageBatch {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch was\n   * archived and its results became unavailable.\n   */\n  archived_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which cancellation was\n   * initiated for the Message Batch. Specified only if cancellation was initiated.\n   */\n  cancel_initiated_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch was\n   * created.\n   */\n  created_at: string;\n\n  /**\n   * RFC 3339 datetime string representing the time at which processing for the\n   * Message Batch ended. Specified only once processing ends.\n   *\n   * Processing ends when every request in a Message Batch has either succeeded,\n   * errored, canceled, or expired.\n   */\n  ended_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch will\n   * expire and end processing, which is 24 hours after creation.\n   */\n  expires_at: string;\n\n  /**\n   * Processing status of the Message Batch.\n   */\n  processing_status: 'in_progress' | 'canceling' | 'ended';\n\n  /**\n   * Tallies requests within the Message Batch, categorized by their status.\n   *\n   * Requests start as `processing` and move to one of the other statuses only once\n   * processing of the entire batch ends. The sum of all values always matches the\n   * total number of requests in the batch.\n   */\n  request_counts: BetaMessageBatchRequestCounts;\n\n  /**\n   * URL to a `.jsonl` file containing the results of the Message Batch requests.\n   * Specified only once processing ends.\n   *\n   * Results in the file are not guaranteed to be in the same order as requests. Use\n   * the `custom_id` field to match results to requests.\n   */\n  results_url: string | null;\n\n  /**\n   * Object type.\n   *\n   * For Message Batches, this is always `\"message_batch\"`.\n   */\n  type: 'message_batch';\n}\n\nexport interface BetaMessageBatchCanceledResult {\n  type: 'canceled';\n}\n\nexport interface BetaMessageBatchErroredResult {\n  error: BetaAPI.BetaErrorResponse;\n\n  type: 'errored';\n}\n\nexport interface BetaMessageBatchExpiredResult {\n  type: 'expired';\n}\n\n/**\n * This is a single line in the response `.jsonl` file and does not represent the\n * response as a whole.\n */\nexport interface BetaMessageBatchIndividualResponse {\n  /**\n   * Developer-provided ID created for each request in a Message Batch. Useful for\n   * matching results to requests, as results may be given out of request order.\n   *\n   * Must be unique for each request within the Message Batch.\n   */\n  custom_id: string;\n\n  /**\n   * Processing result for this request.\n   *\n   * Contains a Message output if processing was successful, an error response if\n   * processing failed, or the reason why processing was not attempted, such as\n   * cancellation or expiration.\n   */\n  result: BetaMessageBatchResult;\n}\n\nexport interface BetaMessageBatchRequestCounts {\n  /**\n   * Number of requests in the Message Batch that have been canceled.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  canceled: number;\n\n  /**\n   * Number of requests in the Message Batch that encountered an error.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  errored: number;\n\n  /**\n   * Number of requests in the Message Batch that have expired.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  expired: number;\n\n  /**\n   * Number of requests in the Message Batch that are processing.\n   */\n  processing: number;\n\n  /**\n   * Number of requests in the Message Batch that have completed successfully.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  succeeded: number;\n}\n\n/**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\nexport type BetaMessageBatchResult =\n  | BetaMessageBatchSucceededResult\n  | BetaMessageBatchErroredResult\n  | BetaMessageBatchCanceledResult\n  | BetaMessageBatchExpiredResult;\n\nexport interface BetaMessageBatchSucceededResult {\n  message: BetaMessagesAPI.BetaMessage;\n\n  type: 'succeeded';\n}\n\nexport interface BatchCreateParams {\n  /**\n   * Body param: List of requests for prompt completion. Each is an individual\n   * request to create a Message.\n   */\n  requests: Array<BatchCreateParams.Request>;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace BatchCreateParams {\n  export interface Request {\n    /**\n     * Developer-provided ID created for each request in a Message Batch. Useful for\n     * matching results to requests, as results may be given out of request order.\n     *\n     * Must be unique for each request within the Message Batch.\n     */\n    custom_id: string;\n\n    /**\n     * Messages API creation parameters for the individual request.\n     *\n     * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n     * full documentation on available parameters.\n     */\n    params: Request.Params;\n  }\n\n  export namespace Request {\n    /**\n     * Messages API creation parameters for the individual request.\n     *\n     * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n     * full documentation on available parameters.\n     */\n    export interface Params {\n      /**\n       * The maximum number of tokens to generate before stopping.\n       *\n       * Note that our models may stop _before_ reaching this maximum. This parameter\n       * only specifies the absolute maximum number of tokens to generate.\n       *\n       * Different models have different maximum values for this parameter. See\n       * [models](https://docs.claude.com/en/docs/models-overview) for details.\n       */\n      max_tokens: number;\n\n      /**\n       * Input messages.\n       *\n       * Our models are trained to operate on alternating `user` and `assistant`\n       * conversational turns. When creating a new `Message`, you specify the prior\n       * conversational turns with the `messages` parameter, and the model then generates\n       * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n       * in your request will be combined into a single turn.\n       *\n       * Each input message must be an object with a `role` and `content`. You can\n       * specify a single `user`-role message, or you can include multiple `user` and\n       * `assistant` messages.\n       *\n       * If the final message uses the `assistant` role, the response content will\n       * continue immediately from the content in that message. This can be used to\n       * constrain part of the model's response.\n       *\n       * Example with a single `user` message:\n       *\n       * ```json\n       * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n       * ```\n       *\n       * Example with multiple conversational turns:\n       *\n       * ```json\n       * [\n       *   { \"role\": \"user\", \"content\": \"Hello there.\" },\n       *   { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n       *   { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n       * ]\n       * ```\n       *\n       * Example with a partially-filled response from Claude:\n       *\n       * ```json\n       * [\n       *   {\n       *     \"role\": \"user\",\n       *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n       *   },\n       *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n       * ]\n       * ```\n       *\n       * Each input message `content` may be either a single `string` or an array of\n       * content blocks, where each block has a specific `type`. Using a `string` for\n       * `content` is shorthand for an array of one content block of type `\"text\"`. The\n       * following input messages are equivalent:\n       *\n       * ```json\n       * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n       * ```\n       *\n       * ```json\n       * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n       * ```\n       *\n       * See [input examples](https://docs.claude.com/en/api/messages-examples).\n       *\n       * Note that if you want to include a\n       * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n       * top-level `system` parameter \u2014 there is no `\"system\"` role for input messages in\n       * the Messages API.\n       *\n       * There is a limit of 100,000 messages in a single request.\n       */\n      messages: Array<BetaMessagesAPI.BetaMessageParam>;\n\n      /**\n       * The model that will complete your prompt.\\n\\nSee\n       * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n       * details and options.\n       */\n      model: MessagesApi.Model;\n\n      /**\n       * Top-level cache control automatically applies a cache_control marker to the last\n       * cacheable block in the request.\n       */\n      cache_control?: BetaMessagesAPI.BetaCacheControlEphemeral | null;\n\n      /**\n       * Container identifier for reuse across requests.\n       */\n      container?: BetaMessagesAPI.BetaContainerParams | string | null;\n\n      /**\n       * Context management configuration.\n       *\n       * This allows you to control how Claude manages context across multiple requests,\n       * such as whether to clear function results or not.\n       */\n      context_management?: BetaMessagesAPI.BetaContextManagementConfig | null;\n\n      /**\n       * Specifies the geographic region for inference processing. If not specified, the\n       * workspace's `default_inference_geo` is used.\n       */\n      inference_geo?: string | null;\n\n      /**\n       * MCP servers to be utilized in this request\n       */\n      mcp_servers?: Array<BetaMessagesAPI.BetaRequestMCPServerURLDefinition>;\n\n      /**\n       * An object describing metadata about the request.\n       */\n      metadata?: BetaMessagesAPI.BetaMetadata;\n\n      /**\n       * Configuration options for the model's output, such as the output format.\n       */\n      output_config?: BetaMessagesAPI.BetaOutputConfig;\n\n      /**\n       * @deprecated Deprecated: Use `output_config.format` instead. See\n       * [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n       *\n       * A schema to specify Claude's output format in responses. This parameter will be\n       * removed in a future release.\n       */\n      output_format?: BetaMessagesAPI.BetaJSONOutputFormat | null;\n\n      /**\n       * Determines whether to use priority capacity (if available) or standard capacity\n       * for this request.\n       *\n       * Anthropic offers different levels of service for your API requests. See\n       * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n       */\n      service_tier?: 'auto' | 'standard_only';\n\n      /**\n       * The inference speed mode for this request. `\"fast\"` enables high\n       * output-tokens-per-second inference.\n       */\n      speed?: 'standard' | 'fast' | null;\n\n      /**\n       * Custom text sequences that will cause the model to stop generating.\n       *\n       * Our models will normally stop when they have naturally completed their turn,\n       * which will result in a response `stop_reason` of `\"end_turn\"`.\n       *\n       * If you want the model to stop generating when it encounters custom strings of\n       * text, you can use the `stop_sequences` parameter. If the model encounters one of\n       * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n       * and the response `stop_sequence` value will contain the matched stop sequence.\n       */\n      stop_sequences?: Array<string>;\n\n      /**\n       * Whether to incrementally stream the response using server-sent events.\n       *\n       * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n       */\n      stream?: boolean;\n\n      /**\n       * System prompt.\n       *\n       * A system prompt is a way of providing context and instructions to Claude, such\n       * as specifying a particular goal or role. See our\n       * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n       */\n      system?: string | Array<BetaMessagesAPI.BetaTextBlockParam>;\n\n      /**\n       * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n       * setting temperature. A value of 1.0 of will be accepted for backwards\n       * compatibility, all other values will be rejected with a 400 error.\n       */\n      temperature?: number;\n\n      /**\n       * Configuration for enabling Claude's extended thinking.\n       *\n       * When enabled, responses include `thinking` content blocks showing Claude's\n       * thinking process before the final answer. Requires a minimum budget of 1,024\n       * tokens and counts towards your `max_tokens` limit.\n       *\n       * See\n       * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n       * for details.\n       */\n      thinking?: BetaMessagesAPI.BetaThinkingConfigParam;\n\n      /**\n       * How the model should use the provided tools. The model can use a specific tool,\n       * any available tool, decide by itself, or not use tools at all.\n       */\n      tool_choice?: BetaMessagesAPI.BetaToolChoice;\n\n      /**\n       * Definitions of tools that the model may use.\n       *\n       * If you include `tools` in your API request, the model may return `tool_use`\n       * content blocks that represent the model's use of those tools. You can then run\n       * those tools using the tool input generated by the model and then optionally\n       * return results back to the model using `tool_result` content blocks.\n       *\n       * There are two types of tools: **client tools** and **server tools**. The\n       * behavior described below applies to client tools. For\n       * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n       * see their individual documentation as each has its own behavior (e.g., the\n       * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n       *\n       * Each tool definition includes:\n       *\n       * - `name`: Name of the tool.\n       * - `description`: Optional, but strongly-recommended description of the tool.\n       * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n       *   tool `input` shape that the model will produce in `tool_use` output content\n       *   blocks.\n       *\n       * For example, if you defined `tools` as:\n       *\n       * ```json\n       * [\n       *   {\n       *     \"name\": \"get_stock_price\",\n       *     \"description\": \"Get the current stock price for a given ticker symbol.\",\n       *     \"input_schema\": {\n       *       \"type\": \"object\",\n       *       \"properties\": {\n       *         \"ticker\": {\n       *           \"type\": \"string\",\n       *           \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n       *         }\n       *       },\n       *       \"required\": [\"ticker\"]\n       *     }\n       *   }\n       * ]\n       * ```\n       *\n       * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n       * `tool_use` content blocks in the response like this:\n       *\n       * ```json\n       * [\n       *   {\n       *     \"type\": \"tool_use\",\n       *     \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n       *     \"name\": \"get_stock_price\",\n       *     \"input\": { \"ticker\": \"^GSPC\" }\n       *   }\n       * ]\n       * ```\n       *\n       * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n       * input, and return the following back to the model in a subsequent `user`\n       * message:\n       *\n       * ```json\n       * [\n       *   {\n       *     \"type\": \"tool_result\",\n       *     \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n       *     \"content\": \"259.75 USD\"\n       *   }\n       * ]\n       * ```\n       *\n       * Tools can be used for workflows that include running client-side tools and\n       * functions, or more generally whenever you want the model to produce a particular\n       * JSON structure of output.\n       *\n       * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n       */\n      tools?: Array<BetaMessagesAPI.BetaToolUnion>;\n\n      /**\n       * @deprecated Deprecated. Models released after Claude Opus 4.6 do not accept\n       * top_k; any value will be rejected with a 400 error.\n       */\n      top_k?: number;\n\n      /**\n       * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n       * setting top_p. A value >= 0.99 will be accepted for backwards compatibility, all\n       * other values will be rejected with a 400 error.\n       */\n      top_p?: number;\n\n      /**\n       * The user profile ID to attribute this request to. Use when acting on behalf of a\n       * party other than your organization.\n       */\n      user_profile_id?: string | null;\n    }\n  }\n}\n\nexport interface BatchRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchListParams extends PageParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchCancelParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchResultsParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Batches {\n  export {\n    type BetaDeletedMessageBatch as BetaDeletedMessageBatch,\n    type BetaMessageBatch as BetaMessageBatch,\n    type BetaMessageBatchCanceledResult as BetaMessageBatchCanceledResult,\n    type BetaMessageBatchErroredResult as BetaMessageBatchErroredResult,\n    type BetaMessageBatchExpiredResult as BetaMessageBatchExpiredResult,\n    type BetaMessageBatchIndividualResponse as BetaMessageBatchIndividualResponse,\n    type BetaMessageBatchRequestCounts as BetaMessageBatchRequestCounts,\n    type BetaMessageBatchResult as BetaMessageBatchResult,\n    type BetaMessageBatchSucceededResult as BetaMessageBatchSucceededResult,\n    type BetaMessageBatchesPage as BetaMessageBatchesPage,\n    type BatchCreateParams as BatchCreateParams,\n    type BatchRetrieveParams as BatchRetrieveParams,\n    type BatchListParams as BatchListParams,\n    type BatchDeleteParams as BatchDeleteParams,\n    type BatchCancelParams as BatchCancelParams,\n    type BatchResultsParams as BatchResultsParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from '../../../error';\nimport { Anthropic } from '../../../client';\nimport { APIPromise } from '../../../core/api-promise';\nimport { APIResource } from '../../../core/resource';\nimport { Stream } from '../../../core/streaming';\nimport { MODEL_NONSTREAMING_TOKENS } from '../../../internal/constants';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { stainlessHelperHeader } from '../../../lib/stainless-helper-header';\nimport {\n  parseBetaMessage,\n  type ExtractParsedContentFromBetaParams,\n  type ParsedBetaMessage,\n} from '../../../lib/beta-parser';\nimport { BetaMessageStream } from '../../../lib/BetaMessageStream';\nimport {\n  BetaToolRunner,\n  BetaToolRunnerParams,\n  BetaToolRunnerRequestOptions,\n} from '../../../lib/tools/BetaToolRunner';\nimport { ToolError } from '../../../lib/tools/ToolError';\nimport type { Model } from '../../messages/messages';\nimport * as BetaMessagesAPI from './messages';\nimport * as MessagesAPI from '../../messages/messages';\nimport * as BetaAPI from '../beta';\nimport * as BatchesAPI from './batches';\nimport {\n  BatchCancelParams,\n  BatchCreateParams,\n  BatchDeleteParams,\n  BatchListParams,\n  BatchResultsParams,\n  BatchRetrieveParams,\n  Batches,\n  BetaDeletedMessageBatch,\n  BetaMessageBatch,\n  BetaMessageBatchCanceledResult,\n  BetaMessageBatchErroredResult,\n  BetaMessageBatchExpiredResult,\n  BetaMessageBatchIndividualResponse,\n  BetaMessageBatchRequestCounts,\n  BetaMessageBatchResult,\n  BetaMessageBatchSucceededResult,\n  BetaMessageBatchesPage,\n} from './batches';\n\nconst DEPRECATED_MODELS: {\n  [K in Model]?: string;\n} = {\n  'claude-1.3': 'November 6th, 2024',\n  'claude-1.3-100k': 'November 6th, 2024',\n  'claude-instant-1.1': 'November 6th, 2024',\n  'claude-instant-1.1-100k': 'November 6th, 2024',\n  'claude-instant-1.2': 'November 6th, 2024',\n  'claude-3-sonnet-20240229': 'July 21st, 2025',\n  'claude-3-opus-20240229': 'January 5th, 2026',\n  'claude-2.1': 'July 21st, 2025',\n  'claude-2.0': 'July 21st, 2025',\n  'claude-3-7-sonnet-latest': 'February 19th, 2026',\n  'claude-3-7-sonnet-20250219': 'February 19th, 2026',\n};\n\nconst MODELS_TO_WARN_WITH_THINKING_ENABLED: Model[] = ['claude-mythos-preview', 'claude-opus-4-6'];\n\nexport class Messages extends APIResource {\n  batches: BatchesAPI.Batches = new BatchesAPI.Batches(this._client);\n\n  /**\n   * Send a structured list of input messages with text and/or image content, and the\n   * model will generate the next message in the conversation.\n   *\n   * The Messages API can be used for either single queries or stateless multi-turn\n   * conversations.\n   *\n   * Learn more about the Messages API in our\n   * [user guide](https://docs.claude.com/en/docs/initial-setup)\n   *\n   * @example\n   * ```ts\n   * const betaMessage = await client.beta.messages.create({\n   *   max_tokens: 1024,\n   *   messages: [{ content: 'Hello, world', role: 'user' }],\n   *   model: 'claude-opus-4-6',\n   * });\n   * ```\n   */\n  create(params: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<BetaMessage>;\n  create(\n    params: MessageCreateParamsStreaming,\n    options?: RequestOptions,\n  ): APIPromise<Stream<BetaRawMessageStreamEvent>>;\n  create(\n    params: MessageCreateParamsBase,\n    options?: RequestOptions,\n  ): APIPromise<Stream<BetaRawMessageStreamEvent> | BetaMessage>;\n  create(\n    params: MessageCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>> {\n    // Transform deprecated output_format to output_config.format\n    const modifiedParams = transformOutputFormat(params);\n\n    const { betas, ...body } = modifiedParams;\n\n    if (body.model in DEPRECATED_MODELS) {\n      console.warn(\n        `The model '${body.model}' is deprecated and will reach end-of-life on ${\n          DEPRECATED_MODELS[body.model]\n        }\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`,\n      );\n    }\n\n    if (\n      MODELS_TO_WARN_WITH_THINKING_ENABLED.includes(body.model) &&\n      body.thinking &&\n      body.thinking.type === 'enabled'\n    ) {\n      console.warn(\n        `Using Claude with ${body.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`,\n      );\n    }\n\n    let timeout = (this._client as any)._options.timeout as number | null;\n    if (!body.stream && timeout == null) {\n      const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n      timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n    }\n\n    // Collect helper info from tools and messages\n    const helperHeader = stainlessHelperHeader(body.tools, body.messages);\n\n    return this._client.post('/v1/messages?beta=true', {\n      body,\n      timeout: timeout ?? 600000,\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        helperHeader,\n        options?.headers,\n      ]),\n      stream: modifiedParams.stream ?? false,\n    }) as APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>>;\n  }\n\n  /**\n   * Send a structured list of input messages with text and/or image content, along with an expected `output_format` and\n   * the response will be automatically parsed and available in the `parsed_output` property of the message.\n   *\n   * @example\n   * ```ts\n   * const message = await client.beta.messages.parse({\n   *   model: 'claude-3-5-sonnet-20241022',\n   *   max_tokens: 1024,\n   *   messages: [{ role: 'user', content: 'What is 2+2?' }],\n   *   output_format: zodOutputFormat(z.object({ answer: z.number() }), 'math'),\n   * });\n   *\n   * console.log(message.parsed_output?.answer); // 4\n   * ```\n   */\n  parse<Params extends MessageCreateParamsNonStreaming>(\n    params: Params,\n    options?: RequestOptions,\n  ): APIPromise<ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>> {\n    options = {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(params.betas ?? []), 'structured-outputs-2025-12-15'].toString() },\n        options?.headers,\n      ]),\n    };\n\n    return this.create(params, options).then((message) =>\n      parseBetaMessage(message, params, { logger: this._client.logger ?? console }),\n    ) as APIPromise<ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>>;\n  }\n\n  /**\n   * Create a Message stream\n   */\n  stream<Params extends BetaMessageStreamParams>(\n    body: Params,\n    options?: RequestOptions,\n  ): BetaMessageStream<ExtractParsedContentFromBetaParams<Params>> {\n    return BetaMessageStream.createMessage(this, body, options);\n  }\n\n  /**\n   * Count the number of tokens in a Message.\n   *\n   * The Token Count API can be used to count the number of tokens in a Message,\n   * including tools, images, and documents, without creating it.\n   *\n   * Learn more about token counting in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/token-counting)\n   *\n   * @example\n   * ```ts\n   * const betaMessageTokensCount =\n   *   await client.beta.messages.countTokens({\n   *     messages: [{ content: 'Hello, world', role: 'user' }],\n   *     model: 'claude-opus-4-6',\n   *   });\n   * ```\n   */\n  countTokens(\n    params: MessageCountTokensParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaMessageTokensCount> {\n    // Transform deprecated output_format to output_config.format\n    const modifiedParams = transformOutputFormat(params);\n\n    const { betas, ...body } = modifiedParams;\n    return this._client.post('/v1/messages/count_tokens?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'token-counting-2024-11-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  toolRunner(\n    body: BetaToolRunnerParams & { stream?: false },\n    options?: BetaToolRunnerRequestOptions,\n  ): BetaToolRunner<false>;\n  toolRunner(\n    body: BetaToolRunnerParams & { stream: true },\n    options?: BetaToolRunnerRequestOptions,\n  ): BetaToolRunner<true>;\n  toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean>;\n  toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean> {\n    return new BetaToolRunner(this._client as Anthropic, body, options);\n  }\n}\n\n/**\n * Transform deprecated output_format to output_config.format\n * Returns a modified copy of the params without mutating the original\n */\nfunction transformOutputFormat<T extends MessageCreateParams | MessageCountTokensParams>(params: T): T {\n  if (!params.output_format) {\n    return params;\n  }\n\n  if (params.output_config?.format) {\n    throw new AnthropicError(\n      'Both output_format and output_config.format were provided. ' +\n        'Please use only output_config.format (output_format is deprecated).',\n    );\n  }\n\n  const { output_format, ...rest } = params;\n\n  return {\n    ...rest,\n    output_config: {\n      ...params.output_config,\n      format: output_format,\n    },\n  } as T;\n}\n\n/**\n * Token usage for an advisor sub-inference iteration.\n */\nexport interface BetaAdvisorMessageIterationUsage {\n  /**\n   * Breakdown of cached tokens by TTL\n   */\n  cache_creation: BetaCacheCreation | null;\n\n  /**\n   * The number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number;\n\n  /**\n   * The number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number;\n\n  /**\n   * The number of input tokens which were used.\n   */\n  input_tokens: number;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * The number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * Usage for an advisor sub-inference iteration\n   */\n  type: 'advisor_message';\n}\n\nexport interface BetaAdvisorRedactedResultBlock {\n  /**\n   * Opaque blob containing the advisor's output. Round-trip verbatim; do not inspect\n   * or modify.\n   */\n  encrypted_content: string;\n\n  type: 'advisor_redacted_result';\n}\n\nexport interface BetaAdvisorRedactedResultBlockParam {\n  /**\n   * Opaque blob produced by a prior response; must be round-tripped verbatim.\n   */\n  encrypted_content: string;\n\n  type: 'advisor_redacted_result';\n}\n\nexport interface BetaAdvisorResultBlock {\n  text: string;\n\n  type: 'advisor_result';\n}\n\nexport interface BetaAdvisorResultBlockParam {\n  text: string;\n\n  type: 'advisor_result';\n}\n\nexport interface BetaAdvisorTool20260301 {\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'advisor';\n\n  type: 'advisor_20260301';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Caching for the advisor's own prompt. When set, each advisor call writes a cache\n   * entry at the given TTL so subsequent calls in the same conversation read the\n   * stable prefix. When omitted, the advisor prompt is not cached.\n   */\n  caching?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaAdvisorToolResultBlock {\n  content: BetaAdvisorToolResultError | BetaAdvisorResultBlock | BetaAdvisorRedactedResultBlock;\n\n  tool_use_id: string;\n\n  type: 'advisor_tool_result';\n}\n\nexport interface BetaAdvisorToolResultBlockParam {\n  content:\n    | BetaAdvisorToolResultErrorParam\n    | BetaAdvisorResultBlockParam\n    | BetaAdvisorRedactedResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'advisor_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaAdvisorToolResultError {\n  error_code:\n    | 'max_uses_exceeded'\n    | 'prompt_too_long'\n    | 'too_many_requests'\n    | 'overloaded'\n    | 'unavailable'\n    | 'execution_time_exceeded';\n\n  type: 'advisor_tool_result_error';\n}\n\nexport interface BetaAdvisorToolResultErrorParam {\n  error_code:\n    | 'max_uses_exceeded'\n    | 'prompt_too_long'\n    | 'too_many_requests'\n    | 'overloaded'\n    | 'unavailable'\n    | 'execution_time_exceeded';\n\n  type: 'advisor_tool_result_error';\n}\n\nexport interface BetaAllThinkingTurns {\n  type: 'all';\n}\n\nexport type BetaMessageStreamParams = MessageCreateParamsBase;\n\nexport interface BetaBase64ImageSource {\n  data: string;\n\n  media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';\n\n  type: 'base64';\n}\n\nexport interface BetaBase64PDFSource {\n  data: string;\n\n  media_type: 'application/pdf';\n\n  type: 'base64';\n}\n\nexport interface BetaBashCodeExecutionOutputBlock {\n  file_id: string;\n\n  type: 'bash_code_execution_output';\n}\n\nexport interface BetaBashCodeExecutionOutputBlockParam {\n  file_id: string;\n\n  type: 'bash_code_execution_output';\n}\n\nexport interface BetaBashCodeExecutionResultBlock {\n  content: Array<BetaBashCodeExecutionOutputBlock>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'bash_code_execution_result';\n}\n\nexport interface BetaBashCodeExecutionResultBlockParam {\n  content: Array<BetaBashCodeExecutionOutputBlockParam>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'bash_code_execution_result';\n}\n\nexport interface BetaBashCodeExecutionToolResultBlock {\n  content: BetaBashCodeExecutionToolResultError | BetaBashCodeExecutionResultBlock;\n\n  tool_use_id: string;\n\n  type: 'bash_code_execution_tool_result';\n}\n\nexport interface BetaBashCodeExecutionToolResultBlockParam {\n  content: BetaBashCodeExecutionToolResultErrorParam | BetaBashCodeExecutionResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'bash_code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaBashCodeExecutionToolResultError {\n  error_code:\n    | 'invalid_tool_input'\n    | 'unavailable'\n    | 'too_many_requests'\n    | 'execution_time_exceeded'\n    | 'output_file_too_large';\n\n  type: 'bash_code_execution_tool_result_error';\n}\n\nexport interface BetaBashCodeExecutionToolResultErrorParam {\n  error_code:\n    | 'invalid_tool_input'\n    | 'unavailable'\n    | 'too_many_requests'\n    | 'execution_time_exceeded'\n    | 'output_file_too_large';\n\n  type: 'bash_code_execution_tool_result_error';\n}\n\nexport interface BetaCacheControlEphemeral {\n  type: 'ephemeral';\n\n  /**\n   * The time-to-live for the cache control breakpoint.\n   *\n   * This may be one the following values:\n   *\n   * - `5m`: 5 minutes\n   * - `1h`: 1 hour\n   *\n   * Defaults to `5m`.\n   */\n  ttl?: '5m' | '1h';\n}\n\nexport interface BetaCacheCreation {\n  /**\n   * The number of input tokens used to create the 1 hour cache entry.\n   */\n  ephemeral_1h_input_tokens: number;\n\n  /**\n   * The number of input tokens used to create the 5 minute cache entry.\n   */\n  ephemeral_5m_input_tokens: number;\n}\n\nexport interface BetaCitationCharLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_char_index: number;\n\n  file_id: string | null;\n\n  start_char_index: number;\n\n  type: 'char_location';\n}\n\nexport interface BetaCitationCharLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_char_index: number;\n\n  start_char_index: number;\n\n  type: 'char_location';\n}\n\nexport interface BetaCitationConfig {\n  enabled: boolean;\n}\n\nexport interface BetaCitationContentBlockLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_block_index: number;\n\n  file_id: string | null;\n\n  start_block_index: number;\n\n  type: 'content_block_location';\n}\n\nexport interface BetaCitationContentBlockLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_block_index: number;\n\n  start_block_index: number;\n\n  type: 'content_block_location';\n}\n\nexport interface BetaCitationPageLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_page_number: number;\n\n  file_id: string | null;\n\n  start_page_number: number;\n\n  type: 'page_location';\n}\n\nexport interface BetaCitationPageLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_page_number: number;\n\n  start_page_number: number;\n\n  type: 'page_location';\n}\n\nexport interface BetaCitationSearchResultLocation {\n  cited_text: string;\n\n  end_block_index: number;\n\n  search_result_index: number;\n\n  source: string;\n\n  start_block_index: number;\n\n  title: string | null;\n\n  type: 'search_result_location';\n}\n\nexport interface BetaCitationSearchResultLocationParam {\n  cited_text: string;\n\n  end_block_index: number;\n\n  search_result_index: number;\n\n  source: string;\n\n  start_block_index: number;\n\n  title: string | null;\n\n  type: 'search_result_location';\n}\n\nexport interface BetaCitationWebSearchResultLocationParam {\n  cited_text: string;\n\n  encrypted_index: string;\n\n  title: string | null;\n\n  type: 'web_search_result_location';\n\n  url: string;\n}\n\nexport interface BetaCitationsConfigParam {\n  enabled?: boolean;\n}\n\nexport interface BetaCitationsDelta {\n  citation:\n    | BetaCitationCharLocation\n    | BetaCitationPageLocation\n    | BetaCitationContentBlockLocation\n    | BetaCitationsWebSearchResultLocation\n    | BetaCitationSearchResultLocation;\n\n  type: 'citations_delta';\n}\n\nexport interface BetaCitationsWebSearchResultLocation {\n  cited_text: string;\n\n  encrypted_index: string;\n\n  title: string | null;\n\n  type: 'web_search_result_location';\n\n  url: string;\n}\n\nexport interface BetaClearThinking20251015Edit {\n  type: 'clear_thinking_20251015';\n\n  /**\n   * Number of most recent assistant turns to keep thinking blocks for. Older turns\n   * will have their thinking blocks removed.\n   */\n  keep?: BetaThinkingTurns | BetaAllThinkingTurns | 'all';\n}\n\nexport interface BetaClearThinking20251015EditResponse {\n  /**\n   * Number of input tokens cleared by this edit.\n   */\n  cleared_input_tokens: number;\n\n  /**\n   * Number of thinking turns that were cleared.\n   */\n  cleared_thinking_turns: number;\n\n  /**\n   * The type of context management edit applied.\n   */\n  type: 'clear_thinking_20251015';\n}\n\nexport interface BetaClearToolUses20250919Edit {\n  type: 'clear_tool_uses_20250919';\n\n  /**\n   * Minimum number of tokens that must be cleared when triggered. Context will only\n   * be modified if at least this many tokens can be removed.\n   */\n  clear_at_least?: BetaInputTokensClearAtLeast | null;\n\n  /**\n   * Whether to clear all tool inputs (bool) or specific tool inputs to clear (list)\n   */\n  clear_tool_inputs?: boolean | Array<string> | null;\n\n  /**\n   * Tool names whose uses are preserved from clearing\n   */\n  exclude_tools?: Array<string> | null;\n\n  /**\n   * Number of tool uses to retain in the conversation\n   */\n  keep?: BetaToolUsesKeep;\n\n  /**\n   * Condition that triggers the context management strategy\n   */\n  trigger?: BetaInputTokensTrigger | BetaToolUsesTrigger;\n}\n\nexport interface BetaClearToolUses20250919EditResponse {\n  /**\n   * Number of input tokens cleared by this edit.\n   */\n  cleared_input_tokens: number;\n\n  /**\n   * Number of tool uses that were cleared.\n   */\n  cleared_tool_uses: number;\n\n  /**\n   * The type of context management edit applied.\n   */\n  type: 'clear_tool_uses_20250919';\n}\n\nexport interface BetaCodeExecutionOutputBlock {\n  file_id: string;\n\n  type: 'code_execution_output';\n}\n\nexport interface BetaCodeExecutionOutputBlockParam {\n  file_id: string;\n\n  type: 'code_execution_output';\n}\n\nexport interface BetaCodeExecutionResultBlock {\n  content: Array<BetaCodeExecutionOutputBlock>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'code_execution_result';\n}\n\nexport interface BetaCodeExecutionResultBlockParam {\n  content: Array<BetaCodeExecutionOutputBlockParam>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'code_execution_result';\n}\n\nexport interface BetaCodeExecutionTool20250522 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20250522';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaCodeExecutionTool20250825 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20250825';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Code execution tool with REPL state persistence (daemon mode + gVisor\n * checkpoint).\n */\nexport interface BetaCodeExecutionTool20260120 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20260120';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaCodeExecutionToolResultBlock {\n  /**\n   * Code execution result with encrypted stdout for PFC + web_search results.\n   */\n  content: BetaCodeExecutionToolResultBlockContent;\n\n  tool_use_id: string;\n\n  type: 'code_execution_tool_result';\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport type BetaCodeExecutionToolResultBlockContent =\n  | BetaCodeExecutionToolResultError\n  | BetaCodeExecutionResultBlock\n  | BetaEncryptedCodeExecutionResultBlock;\n\nexport interface BetaCodeExecutionToolResultBlockParam {\n  /**\n   * Code execution result with encrypted stdout for PFC + web_search results.\n   */\n  content: BetaCodeExecutionToolResultBlockParamContent;\n\n  tool_use_id: string;\n\n  type: 'code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport type BetaCodeExecutionToolResultBlockParamContent =\n  | BetaCodeExecutionToolResultErrorParam\n  | BetaCodeExecutionResultBlockParam\n  | BetaEncryptedCodeExecutionResultBlockParam;\n\nexport interface BetaCodeExecutionToolResultError {\n  error_code: BetaCodeExecutionToolResultErrorCode;\n\n  type: 'code_execution_tool_result_error';\n}\n\nexport type BetaCodeExecutionToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'too_many_requests'\n  | 'execution_time_exceeded';\n\nexport interface BetaCodeExecutionToolResultErrorParam {\n  error_code: BetaCodeExecutionToolResultErrorCode;\n\n  type: 'code_execution_tool_result_error';\n}\n\n/**\n * Automatically compact older context when reaching the configured trigger\n * threshold.\n */\nexport interface BetaCompact20260112Edit {\n  type: 'compact_20260112';\n\n  /**\n   * Additional instructions for summarization.\n   */\n  instructions?: string | null;\n\n  /**\n   * Whether to pause after compaction and return the compaction block to the user.\n   */\n  pause_after_compaction?: boolean;\n\n  /**\n   * When to trigger compaction. Defaults to 150000 input tokens.\n   */\n  trigger?: BetaInputTokensTrigger | null;\n}\n\n/**\n * A compaction block returned when autocompact is triggered.\n *\n * When content is None, it indicates the compaction failed to produce a valid\n * summary (e.g., malformed output from the model). Clients may round-trip\n * compaction blocks with null content; the server treats them as no-ops.\n */\nexport interface BetaCompactionBlock {\n  /**\n   * Summary of compacted content, or null if compaction failed\n   */\n  content: string | null;\n\n  /**\n   * Opaque metadata from prior compaction, to be round-tripped verbatim\n   */\n  encrypted_content: string | null;\n\n  type: 'compaction';\n}\n\n/**\n * A compaction block containing summary of previous context.\n *\n * Users should round-trip these blocks from responses to subsequent requests to\n * maintain context across compaction boundaries.\n *\n * When content is None, the block represents a failed compaction. The server\n * treats these as no-ops. Empty string content is not allowed.\n */\nexport interface BetaCompactionBlockParam {\n  /**\n   * Summary of previously compacted content, or null if compaction failed\n   */\n  content: string | null;\n\n  type: 'compaction';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Opaque metadata from prior compaction, to be round-tripped verbatim\n   */\n  encrypted_content?: string | null;\n}\n\nexport interface BetaCompactionContentBlockDelta {\n  content: string | null;\n\n  /**\n   * Opaque metadata from prior compaction, to be round-tripped verbatim\n   */\n  encrypted_content: string | null;\n\n  type: 'compaction_delta';\n}\n\n/**\n * Token usage for a compaction iteration.\n */\nexport interface BetaCompactionIterationUsage {\n  /**\n   * Breakdown of cached tokens by TTL\n   */\n  cache_creation: BetaCacheCreation | null;\n\n  /**\n   * The number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number;\n\n  /**\n   * The number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number;\n\n  /**\n   * The number of input tokens which were used.\n   */\n  input_tokens: number;\n\n  /**\n   * The number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * Usage for a compaction iteration\n   */\n  type: 'compaction';\n}\n\n/**\n * Information about the container used in the request (for the code execution\n * tool)\n */\nexport interface BetaContainer {\n  /**\n   * Identifier for the container used in this request\n   */\n  id: string;\n\n  /**\n   * The time at which the container will expire.\n   */\n  expires_at: string;\n\n  /**\n   * Skills loaded in the container\n   */\n  skills: Array<BetaSkill> | null;\n}\n\n/**\n * Container parameters with skills to be loaded.\n */\nexport interface BetaContainerParams {\n  /**\n   * Container id\n   */\n  id?: string | null;\n\n  /**\n   * List of skills to load in the container\n   */\n  skills?: Array<BetaSkillParams> | null;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport interface BetaContainerUploadBlock {\n  file_id: string;\n\n  type: 'container_upload';\n}\n\n/**\n * A content block that represents a file to be uploaded to the container Files\n * uploaded via this block will be available in the container's input directory.\n */\nexport interface BetaContainerUploadBlockParam {\n  file_id: string;\n\n  type: 'container_upload';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport type BetaContentBlock =\n  | BetaTextBlock\n  | BetaThinkingBlock\n  | BetaRedactedThinkingBlock\n  | BetaToolUseBlock\n  | BetaServerToolUseBlock\n  | BetaWebSearchToolResultBlock\n  | BetaWebFetchToolResultBlock\n  | BetaAdvisorToolResultBlock\n  | BetaCodeExecutionToolResultBlock\n  | BetaBashCodeExecutionToolResultBlock\n  | BetaTextEditorCodeExecutionToolResultBlock\n  | BetaToolSearchToolResultBlock\n  | BetaMCPToolUseBlock\n  | BetaMCPToolResultBlock\n  | BetaContainerUploadBlock\n  | BetaCompactionBlock;\n\n/**\n * Regular text content.\n */\nexport type BetaContentBlockParam =\n  | BetaTextBlockParam\n  | BetaImageBlockParam\n  | BetaRequestDocumentBlock\n  | BetaSearchResultBlockParam\n  | BetaThinkingBlockParam\n  | BetaRedactedThinkingBlockParam\n  | BetaToolUseBlockParam\n  | BetaToolResultBlockParam\n  | BetaServerToolUseBlockParam\n  | BetaWebSearchToolResultBlockParam\n  | BetaWebFetchToolResultBlockParam\n  | BetaAdvisorToolResultBlockParam\n  | BetaCodeExecutionToolResultBlockParam\n  | BetaBashCodeExecutionToolResultBlockParam\n  | BetaTextEditorCodeExecutionToolResultBlockParam\n  | BetaToolSearchToolResultBlockParam\n  | BetaMCPToolUseBlockParam\n  | BetaRequestMCPToolResultBlockParam\n  | BetaContainerUploadBlockParam\n  | BetaCompactionBlockParam;\n\nexport interface BetaContentBlockSource {\n  content: string | Array<BetaContentBlockSourceContent>;\n\n  type: 'content';\n}\n\nexport type BetaContentBlockSourceContent = BetaTextBlockParam | BetaImageBlockParam;\n\nexport interface BetaContextManagementConfig {\n  /**\n   * List of context management edits to apply\n   */\n  edits?: Array<BetaClearToolUses20250919Edit | BetaClearThinking20251015Edit | BetaCompact20260112Edit>;\n}\n\nexport interface BetaContextManagementResponse {\n  /**\n   * List of context management edits that were applied.\n   */\n  applied_edits: Array<BetaClearToolUses20250919EditResponse | BetaClearThinking20251015EditResponse>;\n}\n\nexport interface BetaCountTokensContextManagementResponse {\n  /**\n   * The original token count before context management was applied\n   */\n  original_input_tokens: number;\n}\n\n/**\n * Tool invocation directly from the model.\n */\nexport interface BetaDirectCaller {\n  type: 'direct';\n}\n\nexport interface BetaDocumentBlock {\n  /**\n   * Citation configuration for the document\n   */\n  citations: BetaCitationConfig | null;\n\n  source: BetaBase64PDFSource | BetaPlainTextSource;\n\n  /**\n   * The title of the document\n   */\n  title: string | null;\n\n  type: 'document';\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport interface BetaEncryptedCodeExecutionResultBlock {\n  content: Array<BetaCodeExecutionOutputBlock>;\n\n  encrypted_stdout: string;\n\n  return_code: number;\n\n  stderr: string;\n\n  type: 'encrypted_code_execution_result';\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport interface BetaEncryptedCodeExecutionResultBlockParam {\n  content: Array<BetaCodeExecutionOutputBlockParam>;\n\n  encrypted_stdout: string;\n\n  return_code: number;\n\n  stderr: string;\n\n  type: 'encrypted_code_execution_result';\n}\n\nexport interface BetaFileDocumentSource {\n  file_id: string;\n\n  type: 'file';\n}\n\nexport interface BetaFileImageSource {\n  file_id: string;\n\n  type: 'file';\n}\n\nexport interface BetaImageBlockParam {\n  source: BetaBase64ImageSource | BetaURLImageSource | BetaFileImageSource;\n\n  type: 'image';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaInputJSONDelta {\n  partial_json: string;\n\n  type: 'input_json_delta';\n}\n\nexport interface BetaInputTokensClearAtLeast {\n  type: 'input_tokens';\n\n  value: number;\n}\n\nexport interface BetaInputTokensTrigger {\n  type: 'input_tokens';\n\n  value: number;\n}\n\n/**\n * Per-iteration token usage breakdown.\n *\n * Each entry represents one sampling iteration, with its own input/output token\n * counts and cache statistics. This allows you to:\n *\n * - Determine which iterations exceeded long context thresholds (>=200k tokens)\n * - Calculate the true context window size from the last iteration\n * - Understand token accumulation across server-side tool use loops\n */\nexport type BetaIterationsUsage = Array<\n  BetaMessageIterationUsage | BetaCompactionIterationUsage | BetaAdvisorMessageIterationUsage\n>;\n\nexport interface BetaJSONOutputFormat {\n  /**\n   * The JSON schema of the format\n   */\n  schema: { [key: string]: unknown };\n\n  type: 'json_schema';\n}\n\n/**\n * Configuration for a specific tool in an MCP toolset.\n */\nexport interface BetaMCPToolConfig {\n  defer_loading?: boolean;\n\n  enabled?: boolean;\n}\n\n/**\n * Default configuration for tools in an MCP toolset.\n */\nexport interface BetaMCPToolDefaultConfig {\n  defer_loading?: boolean;\n\n  enabled?: boolean;\n}\n\nexport interface BetaMCPToolResultBlock {\n  content: string | Array<BetaTextBlock>;\n\n  is_error: boolean;\n\n  tool_use_id: string;\n\n  type: 'mcp_tool_result';\n}\n\nexport interface BetaMCPToolUseBlock {\n  id: string;\n\n  input: unknown;\n\n  /**\n   * The name of the MCP tool\n   */\n  name: string;\n\n  /**\n   * The name of the MCP server\n   */\n  server_name: string;\n\n  type: 'mcp_tool_use';\n}\n\nexport interface BetaMCPToolUseBlockParam {\n  id: string;\n\n  input: unknown;\n\n  name: string;\n\n  /**\n   * The name of the MCP server\n   */\n  server_name: string;\n\n  type: 'mcp_tool_use';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\n/**\n * Configuration for a group of tools from an MCP server.\n *\n * Allows configuring enabled status and defer_loading for all tools from an MCP\n * server, with optional per-tool overrides.\n */\nexport interface BetaMCPToolset {\n  /**\n   * Name of the MCP server to configure tools for\n   */\n  mcp_server_name: string;\n\n  type: 'mcp_toolset';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Configuration overrides for specific tools, keyed by tool name\n   */\n  configs?: { [key: string]: BetaMCPToolConfig } | null;\n\n  /**\n   * Default configuration applied to all tools from this server\n   */\n  default_config?: BetaMCPToolDefaultConfig;\n}\n\nexport interface BetaMemoryTool20250818 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'memory';\n\n  type: 'memory_20250818';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport type BetaMemoryTool20250818Command =\n  | BetaMemoryTool20250818ViewCommand\n  | BetaMemoryTool20250818CreateCommand\n  | BetaMemoryTool20250818StrReplaceCommand\n  | BetaMemoryTool20250818InsertCommand\n  | BetaMemoryTool20250818DeleteCommand\n  | BetaMemoryTool20250818RenameCommand;\n\nexport interface BetaMemoryTool20250818CreateCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'create';\n\n  /**\n   * Content to write to the file\n   */\n  file_text: string;\n\n  /**\n   * Path where the file should be created\n   */\n  path: string;\n}\n\nexport interface BetaMemoryTool20250818DeleteCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'delete';\n\n  /**\n   * Path to the file or directory to delete\n   */\n  path: string;\n}\n\nexport interface BetaMemoryTool20250818InsertCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'insert';\n\n  /**\n   * Line number where text should be inserted\n   */\n  insert_line: number;\n\n  /**\n   * Text to insert at the specified line\n   */\n  insert_text: string;\n\n  /**\n   * Path to the file where text should be inserted\n   */\n  path: string;\n}\n\nexport interface BetaMemoryTool20250818RenameCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'rename';\n\n  /**\n   * New path for the file or directory\n   */\n  new_path: string;\n\n  /**\n   * Current path of the file or directory\n   */\n  old_path: string;\n}\n\nexport interface BetaMemoryTool20250818StrReplaceCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'str_replace';\n\n  /**\n   * Text to replace with\n   */\n  new_str: string;\n\n  /**\n   * Text to search for and replace\n   */\n  old_str: string;\n\n  /**\n   * Path to the file where text should be replaced\n   */\n  path: string;\n}\n\nexport interface BetaMemoryTool20250818ViewCommand {\n  /**\n   * Command type identifier\n   */\n  command: 'view';\n\n  /**\n   * Path to directory or file to view\n   */\n  path: string;\n\n  /**\n   * Optional line range for viewing specific lines\n   */\n  view_range?: Array<number>;\n}\n\nexport interface BetaMessage {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * Information about the container used in the request (for the code execution\n   * tool)\n   */\n  container: BetaContainer | null;\n\n  /**\n   * Content generated by the model.\n   *\n   * This is an array of content blocks, each of which has a `type` that determines\n   * its shape.\n   *\n   * Example:\n   *\n   * ```json\n   * [{ \"type\": \"text\", \"text\": \"Hi, I'm Claude.\" }]\n   * ```\n   *\n   * If the request input `messages` ended with an `assistant` turn, then the\n   * response `content` will continue directly from that last turn. You can use this\n   * to constrain the model's output.\n   *\n   * For example, if the input `messages` were:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Then the response `content` might be:\n   *\n   * ```json\n   * [{ \"type\": \"text\", \"text\": \"B)\" }]\n   * ```\n   */\n  content: Array<BetaContentBlock>;\n\n  /**\n   * Context management response.\n   *\n   * Information about context management strategies applied during the request.\n   */\n  context_management: BetaContextManagementResponse | null;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * Conversational role of the generated message.\n   *\n   * This will always be `\"assistant\"`.\n   */\n  role: 'assistant';\n\n  /**\n   * Structured information about a refusal.\n   */\n  stop_details: BetaRefusalStopDetails | null;\n\n  /**\n   * The reason that we stopped.\n   *\n   * This may be one the following values:\n   *\n   * - `\"end_turn\"`: the model reached a natural stopping point\n   * - `\"max_tokens\"`: we exceeded the requested `max_tokens` or the model's maximum\n   * - `\"stop_sequence\"`: one of your provided custom `stop_sequences` was generated\n   * - `\"tool_use\"`: the model invoked one or more tools\n   * - `\"pause_turn\"`: we paused a long-running turn. You may provide the response\n   *   back as-is in a subsequent request to let the model continue.\n   * - `\"refusal\"`: when streaming classifiers intervene to handle potential policy\n   *   violations\n   *\n   * In non-streaming mode this value is always non-null. In streaming mode, it is\n   * null in the `message_start` event and non-null otherwise.\n   */\n  stop_reason: BetaStopReason | null;\n\n  /**\n   * Which custom stop sequence was generated, if any.\n   *\n   * This value will be a non-null string if one of your custom stop sequences was\n   * generated.\n   */\n  stop_sequence: string | null;\n\n  /**\n   * Object type.\n   *\n   * For Messages, this is always `\"message\"`.\n   */\n  type: 'message';\n\n  /**\n   * Billing and rate-limit usage.\n   *\n   * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n   * underlying cost to our systems.\n   *\n   * Under the hood, the API transforms requests into a format suitable for the\n   * model. The model's output then goes through a parsing stage before becoming an\n   * API response. As a result, the token counts in `usage` will not match one-to-one\n   * with the exact visible content of an API request or response.\n   *\n   * For example, `output_tokens` will be non-zero, even for an empty string response\n   * from Claude.\n   *\n   * Total input tokens in a request is the summation of `input_tokens`,\n   * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n   */\n  usage: BetaUsage;\n}\n\nexport interface BetaMessageDeltaUsage {\n  /**\n   * The cumulative number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number | null;\n\n  /**\n   * The cumulative number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number | null;\n\n  /**\n   * The cumulative number of input tokens which were used.\n   */\n  input_tokens: number | null;\n\n  /**\n   * Per-iteration token usage breakdown.\n   *\n   * Each entry represents one sampling iteration, with its own input/output token\n   * counts and cache statistics. This allows you to:\n   *\n   * - Determine which iterations exceeded long context thresholds (>=200k tokens)\n   * - Calculate the true context window size from the last iteration\n   * - Understand token accumulation across server-side tool use loops\n   */\n  iterations: BetaIterationsUsage | null;\n\n  /**\n   * The cumulative number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * The number of server tool requests.\n   */\n  server_tool_use: BetaServerToolUsage | null;\n}\n\n/**\n * Token usage for a sampling iteration.\n */\nexport interface BetaMessageIterationUsage {\n  /**\n   * Breakdown of cached tokens by TTL\n   */\n  cache_creation: BetaCacheCreation | null;\n\n  /**\n   * The number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number;\n\n  /**\n   * The number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number;\n\n  /**\n   * The number of input tokens which were used.\n   */\n  input_tokens: number;\n\n  /**\n   * The number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * Usage for a sampling iteration\n   */\n  type: 'message';\n}\n\nexport interface BetaMessageParam {\n  content: string | Array<BetaContentBlockParam>;\n\n  role: 'user' | 'assistant';\n}\n\nexport interface BetaMessageTokensCount {\n  /**\n   * Information about context management applied to the message.\n   */\n  context_management: BetaCountTokensContextManagementResponse | null;\n\n  /**\n   * The total number of tokens across the provided list of messages, system prompt,\n   * and tools.\n   */\n  input_tokens: number;\n}\n\nexport interface BetaMetadata {\n  /**\n   * An external identifier for the user who is associated with the request.\n   *\n   * This should be a uuid, hash value, or other opaque identifier. Anthropic may use\n   * this id to help detect abuse. Do not include any identifying information such as\n   * name, email address, or phone number.\n   */\n  user_id?: string | null;\n}\n\nexport interface BetaOutputConfig {\n  /**\n   * All possible effort levels.\n   */\n  effort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max' | null;\n\n  /**\n   * A schema to specify Claude's output format in responses. See\n   * [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n   */\n  format?: BetaJSONOutputFormat | null;\n\n  /**\n   * User-configurable total token budget across contexts.\n   */\n  task_budget?: BetaTokenTaskBudget | null;\n}\n\nexport interface BetaPlainTextSource {\n  data: string;\n\n  media_type: 'text/plain';\n\n  type: 'text';\n}\n\nexport type BetaRawContentBlockDelta =\n  | BetaTextDelta\n  | BetaInputJSONDelta\n  | BetaCitationsDelta\n  | BetaThinkingDelta\n  | BetaSignatureDelta\n  | BetaCompactionContentBlockDelta;\n\nexport interface BetaRawContentBlockDeltaEvent {\n  delta: BetaRawContentBlockDelta;\n\n  index: number;\n\n  type: 'content_block_delta';\n}\n\nexport interface BetaRawContentBlockStartEvent {\n  /**\n   * Response model for a file uploaded to the container.\n   */\n  content_block:\n    | BetaTextBlock\n    | BetaThinkingBlock\n    | BetaRedactedThinkingBlock\n    | BetaToolUseBlock\n    | BetaServerToolUseBlock\n    | BetaWebSearchToolResultBlock\n    | BetaWebFetchToolResultBlock\n    | BetaAdvisorToolResultBlock\n    | BetaCodeExecutionToolResultBlock\n    | BetaBashCodeExecutionToolResultBlock\n    | BetaTextEditorCodeExecutionToolResultBlock\n    | BetaToolSearchToolResultBlock\n    | BetaMCPToolUseBlock\n    | BetaMCPToolResultBlock\n    | BetaContainerUploadBlock\n    | BetaCompactionBlock;\n\n  index: number;\n\n  type: 'content_block_start';\n}\n\nexport interface BetaRawContentBlockStopEvent {\n  index: number;\n\n  type: 'content_block_stop';\n}\n\nexport interface BetaRawMessageDeltaEvent {\n  /**\n   * Information about context management strategies applied during the request\n   */\n  context_management: BetaContextManagementResponse | null;\n\n  delta: BetaRawMessageDeltaEvent.Delta;\n\n  type: 'message_delta';\n\n  /**\n   * Billing and rate-limit usage.\n   *\n   * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n   * underlying cost to our systems.\n   *\n   * Under the hood, the API transforms requests into a format suitable for the\n   * model. The model's output then goes through a parsing stage before becoming an\n   * API response. As a result, the token counts in `usage` will not match one-to-one\n   * with the exact visible content of an API request or response.\n   *\n   * For example, `output_tokens` will be non-zero, even for an empty string response\n   * from Claude.\n   *\n   * Total input tokens in a request is the summation of `input_tokens`,\n   * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n   */\n  usage: BetaMessageDeltaUsage;\n}\n\nexport namespace BetaRawMessageDeltaEvent {\n  export interface Delta {\n    /**\n     * Information about the container used in the request (for the code execution\n     * tool)\n     */\n    container: BetaMessagesAPI.BetaContainer | null;\n\n    /**\n     * Structured information about a refusal.\n     */\n    stop_details: BetaMessagesAPI.BetaRefusalStopDetails | null;\n\n    stop_reason: BetaMessagesAPI.BetaStopReason | null;\n\n    stop_sequence: string | null;\n  }\n}\n\nexport interface BetaRawMessageStartEvent {\n  message: BetaMessage;\n\n  type: 'message_start';\n}\n\nexport interface BetaRawMessageStopEvent {\n  type: 'message_stop';\n}\n\nexport type BetaRawMessageStreamEvent =\n  | BetaRawMessageStartEvent\n  | BetaRawMessageDeltaEvent\n  | BetaRawMessageStopEvent\n  | BetaRawContentBlockStartEvent\n  | BetaRawContentBlockDeltaEvent\n  | BetaRawContentBlockStopEvent;\n\nexport interface BetaRedactedThinkingBlock {\n  data: string;\n\n  type: 'redacted_thinking';\n}\n\nexport interface BetaRedactedThinkingBlockParam {\n  data: string;\n\n  type: 'redacted_thinking';\n}\n\n/**\n * Structured information about a refusal.\n */\nexport interface BetaRefusalStopDetails {\n  /**\n   * The policy category that triggered the refusal.\n   *\n   * `null` when the refusal doesn't map to a named category.\n   */\n  category: 'cyber' | 'bio' | null;\n\n  /**\n   * Human-readable explanation of the refusal.\n   *\n   * This text is not guaranteed to be stable. `null` when no explanation is\n   * available for the category.\n   */\n  explanation: string | null;\n\n  type: 'refusal';\n}\n\nexport interface BetaRequestDocumentBlock {\n  source:\n    | BetaBase64PDFSource\n    | BetaPlainTextSource\n    | BetaContentBlockSource\n    | BetaURLPDFSource\n    | BetaFileDocumentSource;\n\n  type: 'document';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  citations?: BetaCitationsConfigParam | null;\n\n  context?: string | null;\n\n  title?: string | null;\n}\n\nexport interface BetaRequestMCPServerToolConfiguration {\n  allowed_tools?: Array<string> | null;\n\n  enabled?: boolean | null;\n}\n\nexport interface BetaRequestMCPServerURLDefinition {\n  name: string;\n\n  type: 'url';\n\n  url: string;\n\n  authorization_token?: string | null;\n\n  tool_configuration?: BetaRequestMCPServerToolConfiguration | null;\n}\n\nexport interface BetaRequestMCPToolResultBlockParam {\n  tool_use_id: string;\n\n  type: 'mcp_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  content?: string | Array<BetaTextBlockParam>;\n\n  is_error?: boolean;\n}\n\nexport interface BetaSearchResultBlockParam {\n  content: Array<BetaTextBlockParam>;\n\n  source: string;\n\n  title: string;\n\n  type: 'search_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  citations?: BetaCitationsConfigParam;\n}\n\n/**\n * Tool invocation generated by a server-side tool.\n */\nexport interface BetaServerToolCaller {\n  tool_id: string;\n\n  type: 'code_execution_20250825';\n}\n\nexport interface BetaServerToolCaller20260120 {\n  tool_id: string;\n\n  type: 'code_execution_20260120';\n}\n\nexport interface BetaServerToolUsage {\n  /**\n   * The number of web fetch tool requests.\n   */\n  web_fetch_requests: number;\n\n  /**\n   * The number of web search tool requests.\n   */\n  web_search_requests: number;\n}\n\nexport interface BetaServerToolUseBlock {\n  id: string;\n\n  input: { [key: string]: unknown };\n\n  name:\n    | 'advisor'\n    | 'web_search'\n    | 'web_fetch'\n    | 'code_execution'\n    | 'bash_code_execution'\n    | 'text_editor_code_execution'\n    | 'tool_search_tool_regex'\n    | 'tool_search_tool_bm25';\n\n  type: 'server_tool_use';\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaServerToolUseBlockParam {\n  id: string;\n\n  input: unknown;\n\n  name:\n    | 'advisor'\n    | 'web_search'\n    | 'web_fetch'\n    | 'code_execution'\n    | 'bash_code_execution'\n    | 'text_editor_code_execution'\n    | 'tool_search_tool_regex'\n    | 'tool_search_tool_bm25';\n\n  type: 'server_tool_use';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaSignatureDelta {\n  signature: string;\n\n  type: 'signature_delta';\n}\n\n/**\n * A skill that was loaded in a container (response model).\n */\nexport interface BetaSkill {\n  /**\n   * Skill ID\n   */\n  skill_id: string;\n\n  /**\n   * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)\n   */\n  type: 'anthropic' | 'custom';\n\n  /**\n   * Skill version or 'latest' for most recent version\n   */\n  version: string;\n}\n\n/**\n * Specification for a skill to be loaded in a container (request model).\n */\nexport interface BetaSkillParams {\n  /**\n   * Skill ID\n   */\n  skill_id: string;\n\n  /**\n   * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)\n   */\n  type: 'anthropic' | 'custom';\n\n  /**\n   * Skill version or 'latest' for most recent version\n   */\n  version?: string;\n}\n\nexport type BetaStopReason =\n  | 'end_turn'\n  | 'max_tokens'\n  | 'stop_sequence'\n  | 'tool_use'\n  | 'pause_turn'\n  | 'compaction'\n  | 'refusal'\n  | 'model_context_window_exceeded';\n\nexport interface BetaTextBlock {\n  /**\n   * Citations supporting the text block.\n   *\n   * The type of citation returned will depend on the type of document being cited.\n   * Citing a PDF results in `page_location`, plain text results in `char_location`,\n   * and content document results in `content_block_location`.\n   */\n  citations: Array<BetaTextCitation> | null;\n\n  text: string;\n\n  type: 'text';\n}\n\nexport interface BetaTextBlockParam {\n  text: string;\n\n  type: 'text';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  citations?: Array<BetaTextCitationParam> | null;\n}\n\nexport type BetaTextCitation =\n  | BetaCitationCharLocation\n  | BetaCitationPageLocation\n  | BetaCitationContentBlockLocation\n  | BetaCitationsWebSearchResultLocation\n  | BetaCitationSearchResultLocation;\n\nexport type BetaTextCitationParam =\n  | BetaCitationCharLocationParam\n  | BetaCitationPageLocationParam\n  | BetaCitationContentBlockLocationParam\n  | BetaCitationWebSearchResultLocationParam\n  | BetaCitationSearchResultLocationParam;\n\nexport interface BetaTextDelta {\n  text: string;\n\n  type: 'text_delta';\n}\n\nexport interface BetaTextEditorCodeExecutionCreateResultBlock {\n  is_file_update: boolean;\n\n  type: 'text_editor_code_execution_create_result';\n}\n\nexport interface BetaTextEditorCodeExecutionCreateResultBlockParam {\n  is_file_update: boolean;\n\n  type: 'text_editor_code_execution_create_result';\n}\n\nexport interface BetaTextEditorCodeExecutionStrReplaceResultBlock {\n  lines: Array<string> | null;\n\n  new_lines: number | null;\n\n  new_start: number | null;\n\n  old_lines: number | null;\n\n  old_start: number | null;\n\n  type: 'text_editor_code_execution_str_replace_result';\n}\n\nexport interface BetaTextEditorCodeExecutionStrReplaceResultBlockParam {\n  type: 'text_editor_code_execution_str_replace_result';\n\n  lines?: Array<string> | null;\n\n  new_lines?: number | null;\n\n  new_start?: number | null;\n\n  old_lines?: number | null;\n\n  old_start?: number | null;\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultBlock {\n  content:\n    | BetaTextEditorCodeExecutionToolResultError\n    | BetaTextEditorCodeExecutionViewResultBlock\n    | BetaTextEditorCodeExecutionCreateResultBlock\n    | BetaTextEditorCodeExecutionStrReplaceResultBlock;\n\n  tool_use_id: string;\n\n  type: 'text_editor_code_execution_tool_result';\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultBlockParam {\n  content:\n    | BetaTextEditorCodeExecutionToolResultErrorParam\n    | BetaTextEditorCodeExecutionViewResultBlockParam\n    | BetaTextEditorCodeExecutionCreateResultBlockParam\n    | BetaTextEditorCodeExecutionStrReplaceResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'text_editor_code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultError {\n  error_code:\n    | 'invalid_tool_input'\n    | 'unavailable'\n    | 'too_many_requests'\n    | 'execution_time_exceeded'\n    | 'file_not_found';\n\n  error_message: string | null;\n\n  type: 'text_editor_code_execution_tool_result_error';\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultErrorParam {\n  error_code:\n    | 'invalid_tool_input'\n    | 'unavailable'\n    | 'too_many_requests'\n    | 'execution_time_exceeded'\n    | 'file_not_found';\n\n  type: 'text_editor_code_execution_tool_result_error';\n\n  error_message?: string | null;\n}\n\nexport interface BetaTextEditorCodeExecutionViewResultBlock {\n  content: string;\n\n  file_type: 'text' | 'image' | 'pdf';\n\n  num_lines: number | null;\n\n  start_line: number | null;\n\n  total_lines: number | null;\n\n  type: 'text_editor_code_execution_view_result';\n}\n\nexport interface BetaTextEditorCodeExecutionViewResultBlockParam {\n  content: string;\n\n  file_type: 'text' | 'image' | 'pdf';\n\n  type: 'text_editor_code_execution_view_result';\n\n  num_lines?: number | null;\n\n  start_line?: number | null;\n\n  total_lines?: number | null;\n}\n\nexport interface BetaThinkingBlock {\n  signature: string;\n\n  thinking: string;\n\n  type: 'thinking';\n}\n\nexport interface BetaThinkingBlockParam {\n  signature: string;\n\n  thinking: string;\n\n  type: 'thinking';\n}\n\nexport interface BetaThinkingConfigAdaptive {\n  type: 'adaptive';\n\n  /**\n   * Controls how thinking content appears in the response. When set to `summarized`,\n   * thinking is returned normally. When set to `omitted`, thinking content is\n   * redacted but a signature is returned for multi-turn continuity. Defaults to\n   * `summarized`.\n   */\n  display?: 'summarized' | 'omitted' | null;\n}\n\nexport interface BetaThinkingConfigDisabled {\n  type: 'disabled';\n}\n\nexport interface BetaThinkingConfigEnabled {\n  /**\n   * Determines how many tokens Claude can use for its internal reasoning process.\n   * Larger budgets can enable more thorough analysis for complex problems, improving\n   * response quality.\n   *\n   * Must be \u22651024 and less than `max_tokens`.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  budget_tokens: number;\n\n  type: 'enabled';\n\n  /**\n   * Controls how thinking content appears in the response. When set to `summarized`,\n   * thinking is returned normally. When set to `omitted`, thinking content is\n   * redacted but a signature is returned for multi-turn continuity. Defaults to\n   * `summarized`.\n   */\n  display?: 'summarized' | 'omitted' | null;\n}\n\n/**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\nexport type BetaThinkingConfigParam =\n  | BetaThinkingConfigEnabled\n  | BetaThinkingConfigDisabled\n  | BetaThinkingConfigAdaptive;\n\nexport interface BetaThinkingDelta {\n  thinking: string;\n\n  type: 'thinking_delta';\n}\n\nexport interface BetaThinkingTurns {\n  type: 'thinking_turns';\n\n  value: number;\n}\n\n/**\n * User-configurable total token budget across contexts.\n */\nexport interface BetaTokenTaskBudget {\n  /**\n   * Total token budget across all contexts in the session.\n   */\n  total: number;\n\n  /**\n   * The budget type. Currently only 'tokens' is supported.\n   */\n  type: 'tokens';\n\n  /**\n   * Remaining tokens in the budget. Use this to track usage across contexts when\n   * implementing compaction client-side. Defaults to total if not provided.\n   */\n  remaining?: number | null;\n}\n\nexport interface BetaTool {\n  /**\n   * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n   *\n   * This defines the shape of the `input` that your tool accepts and that the model\n   * will produce.\n   */\n  input_schema: BetaTool.InputSchema;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: string;\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Description of what this tool does.\n   *\n   * Tool descriptions should be as detailed as possible. The more information that\n   * the model has about what the tool is and how to use it, the better it will\n   * perform. You can use natural language descriptions to reinforce important\n   * aspects of the tool input JSON schema.\n   */\n  description?: string;\n\n  /**\n   * Enable eager input streaming for this tool. When true, tool input parameters\n   * will be streamed incrementally as they are generated, and types will be inferred\n   * on-the-fly rather than buffering the full JSON output. When false, streaming is\n   * disabled for this tool even if the fine-grained-tool-streaming beta is active.\n   * When null (default), uses the default behavior based on beta headers.\n   */\n  eager_input_streaming?: boolean | null;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  type?: 'custom' | null;\n}\n\nexport namespace BetaTool {\n  /**\n   * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n   *\n   * This defines the shape of the `input` that your tool accepts and that the model\n   * will produce.\n   */\n  export interface InputSchema {\n    type: 'object';\n\n    properties?: unknown | null;\n\n    required?: string[] | readonly string[] | null;\n\n    [k: string]: unknown;\n  }\n}\n\nexport interface BetaToolBash20241022 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'bash';\n\n  type: 'bash_20241022';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolBash20250124 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'bash';\n\n  type: 'bash_20250124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\nexport type BetaToolChoice = BetaToolChoiceAuto | BetaToolChoiceAny | BetaToolChoiceTool | BetaToolChoiceNone;\n\n/**\n * The model will use any available tools.\n */\nexport interface BetaToolChoiceAny {\n  type: 'any';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output exactly one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will automatically decide whether to use tools.\n */\nexport interface BetaToolChoiceAuto {\n  type: 'auto';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output at most one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will not be allowed to use tools.\n */\nexport interface BetaToolChoiceNone {\n  type: 'none';\n}\n\n/**\n * The model will use the specified tool with `tool_choice.name`.\n */\nexport interface BetaToolChoiceTool {\n  /**\n   * The name of the tool to use.\n   */\n  name: string;\n\n  type: 'tool';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output exactly one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\nexport interface BetaToolComputerUse20241022 {\n  /**\n   * The height of the display in pixels.\n   */\n  display_height_px: number;\n\n  /**\n   * The width of the display in pixels.\n   */\n  display_width_px: number;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'computer';\n\n  type: 'computer_20241022';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * The X11 display number (e.g. 0, 1) for the display.\n   */\n  display_number?: number | null;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolComputerUse20250124 {\n  /**\n   * The height of the display in pixels.\n   */\n  display_height_px: number;\n\n  /**\n   * The width of the display in pixels.\n   */\n  display_width_px: number;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'computer';\n\n  type: 'computer_20250124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * The X11 display number (e.g. 0, 1) for the display.\n   */\n  display_number?: number | null;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolComputerUse20251124 {\n  /**\n   * The height of the display in pixels.\n   */\n  display_height_px: number;\n\n  /**\n   * The width of the display in pixels.\n   */\n  display_width_px: number;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'computer';\n\n  type: 'computer_20251124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * The X11 display number (e.g. 0, 1) for the display.\n   */\n  display_number?: number | null;\n\n  /**\n   * Whether to enable an action to take a zoomed-in screenshot of the screen.\n   */\n  enable_zoom?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolReferenceBlock {\n  tool_name: string;\n\n  type: 'tool_reference';\n}\n\n/**\n * Tool reference block that can be included in tool_result content.\n */\nexport interface BetaToolReferenceBlockParam {\n  tool_name: string;\n\n  type: 'tool_reference';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaToolResultBlockParam {\n  tool_use_id: string;\n\n  type: 'tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  content?:\n    | string\n    | Array<\n        | BetaTextBlockParam\n        | BetaImageBlockParam\n        | BetaSearchResultBlockParam\n        | BetaRequestDocumentBlock\n        | BetaToolReferenceBlockParam\n      >;\n\n  is_error?: boolean;\n}\n\nexport interface BetaToolSearchToolBm25_20251119 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'tool_search_tool_bm25';\n\n  type: 'tool_search_tool_bm25_20251119' | 'tool_search_tool_bm25';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolSearchToolRegex20251119 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'tool_search_tool_regex';\n\n  type: 'tool_search_tool_regex_20251119' | 'tool_search_tool_regex';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolSearchToolResultBlock {\n  content: BetaToolSearchToolResultError | BetaToolSearchToolSearchResultBlock;\n\n  tool_use_id: string;\n\n  type: 'tool_search_tool_result';\n}\n\nexport interface BetaToolSearchToolResultBlockParam {\n  content: BetaToolSearchToolResultErrorParam | BetaToolSearchToolSearchResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'tool_search_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaToolSearchToolResultError {\n  error_code: 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded';\n\n  error_message: string | null;\n\n  type: 'tool_search_tool_result_error';\n}\n\nexport interface BetaToolSearchToolResultErrorParam {\n  error_code: 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded';\n\n  type: 'tool_search_tool_result_error';\n}\n\nexport interface BetaToolSearchToolSearchResultBlock {\n  tool_references: Array<BetaToolReferenceBlock>;\n\n  type: 'tool_search_tool_search_result';\n}\n\nexport interface BetaToolSearchToolSearchResultBlockParam {\n  tool_references: Array<BetaToolReferenceBlockParam>;\n\n  type: 'tool_search_tool_search_result';\n}\n\nexport type BetaToolResultContentBlockParam = Extract<BetaToolResultBlockParam['content'], any[]>[number];\n\nexport interface BetaToolTextEditor20241022 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_editor';\n\n  type: 'text_editor_20241022';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250124 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_editor';\n\n  type: 'text_editor_20250124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250429 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_based_edit_tool';\n\n  type: 'text_editor_20250429';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250728 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_based_edit_tool';\n\n  type: 'text_editor_20250728';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * Maximum number of characters to display when viewing a file. If not specified,\n   * defaults to displaying the full file.\n   */\n  max_characters?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Code execution tool with REPL state persistence (daemon mode + gVisor\n * checkpoint).\n */\nexport type BetaToolUnion =\n  | BetaTool\n  | BetaToolBash20241022\n  | BetaToolBash20250124\n  | BetaCodeExecutionTool20250522\n  | BetaCodeExecutionTool20250825\n  | BetaCodeExecutionTool20260120\n  | BetaToolComputerUse20241022\n  | BetaMemoryTool20250818\n  | BetaToolComputerUse20250124\n  | BetaToolTextEditor20241022\n  | BetaToolComputerUse20251124\n  | BetaToolTextEditor20250124\n  | BetaToolTextEditor20250429\n  | BetaToolTextEditor20250728\n  | BetaWebSearchTool20250305\n  | BetaWebFetchTool20250910\n  | BetaWebSearchTool20260209\n  | BetaWebFetchTool20260209\n  | BetaWebFetchTool20260309\n  | BetaAdvisorTool20260301\n  | BetaToolSearchToolBm25_20251119\n  | BetaToolSearchToolRegex20251119\n  | BetaMCPToolset;\n\nexport interface BetaToolUseBlock {\n  id: string;\n\n  input: unknown;\n\n  name: string;\n\n  type: 'tool_use';\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaToolUseBlockParam {\n  id: string;\n\n  input: unknown;\n\n  name: string;\n\n  type: 'tool_use';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaToolUsesKeep {\n  type: 'tool_uses';\n\n  value: number;\n}\n\nexport interface BetaToolUsesTrigger {\n  type: 'tool_uses';\n\n  value: number;\n}\n\nexport interface BetaURLImageSource {\n  type: 'url';\n\n  url: string;\n}\n\nexport interface BetaURLPDFSource {\n  type: 'url';\n\n  url: string;\n}\n\nexport interface BetaUsage {\n  /**\n   * Breakdown of cached tokens by TTL\n   */\n  cache_creation: BetaCacheCreation | null;\n\n  /**\n   * The number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number | null;\n\n  /**\n   * The number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number | null;\n\n  /**\n   * The geographic region where inference was performed for this request.\n   */\n  inference_geo: string | null;\n\n  /**\n   * The number of input tokens which were used.\n   */\n  input_tokens: number;\n\n  /**\n   * Per-iteration token usage breakdown.\n   *\n   * Each entry represents one sampling iteration, with its own input/output token\n   * counts and cache statistics. This allows you to:\n   *\n   * - Determine which iterations exceeded long context thresholds (>=200k tokens)\n   * - Calculate the true context window size from the last iteration\n   * - Understand token accumulation across server-side tool use loops\n   */\n  iterations: BetaIterationsUsage | null;\n\n  /**\n   * The number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * The number of server tool requests.\n   */\n  server_tool_use: BetaServerToolUsage | null;\n\n  /**\n   * If the request used the priority, standard, or batch tier.\n   */\n  service_tier: 'standard' | 'priority' | 'batch' | null;\n\n  /**\n   * The inference speed mode used for this request.\n   */\n  speed: 'standard' | 'fast' | null;\n}\n\nexport interface BetaUserLocation {\n  type: 'approximate';\n\n  /**\n   * The city of the user.\n   */\n  city?: string | null;\n\n  /**\n   * The two letter\n   * [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the\n   * user.\n   */\n  country?: string | null;\n\n  /**\n   * The region of the user.\n   */\n  region?: string | null;\n\n  /**\n   * The [IANA timezone](https://nodatime.org/TimeZones) of the user.\n   */\n  timezone?: string | null;\n}\n\nexport interface BetaWebFetchBlock {\n  content: BetaDocumentBlock;\n\n  /**\n   * ISO 8601 timestamp when the content was retrieved\n   */\n  retrieved_at: string | null;\n\n  type: 'web_fetch_result';\n\n  /**\n   * Fetched content URL\n   */\n  url: string;\n}\n\nexport interface BetaWebFetchBlockParam {\n  content: BetaRequestDocumentBlock;\n\n  type: 'web_fetch_result';\n\n  /**\n   * Fetched content URL\n   */\n  url: string;\n\n  /**\n   * ISO 8601 timestamp when the content was retrieved\n   */\n  retrieved_at?: string | null;\n}\n\nexport interface BetaWebFetchTool20250910 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20250910';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: BetaCitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface BetaWebFetchTool20260209 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20260209';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: BetaCitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Web fetch tool with use_cache parameter for bypassing cached content.\n */\nexport interface BetaWebFetchTool20260309 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20260309';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: BetaCitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Whether to use cached content. Set to false to bypass the cache and fetch fresh\n   * content. Only set to false when the user explicitly requests fresh content or\n   * when fetching rapidly-changing sources.\n   */\n  use_cache?: boolean;\n}\n\nexport interface BetaWebFetchToolResultBlock {\n  content: BetaWebFetchToolResultErrorBlock | BetaWebFetchBlock;\n\n  tool_use_id: string;\n\n  type: 'web_fetch_tool_result';\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaWebFetchToolResultBlockParam {\n  content: BetaWebFetchToolResultErrorBlockParam | BetaWebFetchBlockParam;\n\n  tool_use_id: string;\n\n  type: 'web_fetch_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport interface BetaWebFetchToolResultErrorBlock {\n  error_code: BetaWebFetchToolResultErrorCode;\n\n  type: 'web_fetch_tool_result_error';\n}\n\nexport interface BetaWebFetchToolResultErrorBlockParam {\n  error_code: BetaWebFetchToolResultErrorCode;\n\n  type: 'web_fetch_tool_result_error';\n}\n\nexport type BetaWebFetchToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'url_too_long'\n  | 'url_not_allowed'\n  | 'url_not_accessible'\n  | 'unsupported_content_type'\n  | 'too_many_requests'\n  | 'max_uses_exceeded'\n  | 'unavailable';\n\nexport interface BetaWebSearchResultBlock {\n  encrypted_content: string;\n\n  page_age: string | null;\n\n  title: string;\n\n  type: 'web_search_result';\n\n  url: string;\n}\n\nexport interface BetaWebSearchResultBlockParam {\n  encrypted_content: string;\n\n  title: string;\n\n  type: 'web_search_result';\n\n  url: string;\n\n  page_age?: string | null;\n}\n\nexport interface BetaWebSearchTool20250305 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_search';\n\n  type: 'web_search_20250305';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * If provided, only these domains will be included in results. Cannot be used\n   * alongside `blocked_domains`.\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * If provided, these domains will never appear in results. Cannot be used\n   * alongside `allowed_domains`.\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Parameters for the user's location. Used to provide more relevant search\n   * results.\n   */\n  user_location?: BetaUserLocation | null;\n}\n\nexport interface BetaWebSearchTool20260209 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_search';\n\n  type: 'web_search_20260209';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * If provided, only these domains will be included in results. Cannot be used\n   * alongside `blocked_domains`.\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * If provided, these domains will never appear in results. Cannot be used\n   * alongside `allowed_domains`.\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Parameters for the user's location. Used to provide more relevant search\n   * results.\n   */\n  user_location?: BetaUserLocation | null;\n}\n\nexport interface BetaWebSearchToolRequestError {\n  error_code: BetaWebSearchToolResultErrorCode;\n\n  type: 'web_search_tool_result_error';\n}\n\nexport interface BetaWebSearchToolResultBlock {\n  content: BetaWebSearchToolResultBlockContent;\n\n  tool_use_id: string;\n\n  type: 'web_search_tool_result';\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport type BetaWebSearchToolResultBlockContent =\n  | BetaWebSearchToolResultError\n  | Array<BetaWebSearchResultBlock>;\n\nexport interface BetaWebSearchToolResultBlockParam {\n  content: BetaWebSearchToolResultBlockParamContent;\n\n  tool_use_id: string;\n\n  type: 'web_search_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: BetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120;\n}\n\nexport type BetaWebSearchToolResultBlockParamContent =\n  | Array<BetaWebSearchResultBlockParam>\n  | BetaWebSearchToolRequestError;\n\nexport interface BetaWebSearchToolResultError {\n  error_code: BetaWebSearchToolResultErrorCode;\n\n  type: 'web_search_tool_result_error';\n}\n\nexport type BetaWebSearchToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'max_uses_exceeded'\n  | 'too_many_requests'\n  | 'query_too_long'\n  | 'request_too_large';\n\n/**\n * @deprecated BetaRequestDocumentBlock should be used insated\n */\nexport type BetaBase64PDFBlock = BetaRequestDocumentBlock;\n\nexport type MessageCreateParams = MessageCreateParamsNonStreaming | MessageCreateParamsStreaming;\n\nexport interface MessageCreateParamsBase {\n  /**\n   * Body param: The maximum number of tokens to generate before stopping.\n   *\n   * Note that our models may stop _before_ reaching this maximum. This parameter\n   * only specifies the absolute maximum number of tokens to generate.\n   *\n   * Different models have different maximum values for this parameter. See\n   * [models](https://docs.claude.com/en/docs/models-overview) for details.\n   */\n  max_tokens: number;\n\n  /**\n   * Body param: Input messages.\n   *\n   * Our models are trained to operate on alternating `user` and `assistant`\n   * conversational turns. When creating a new `Message`, you specify the prior\n   * conversational turns with the `messages` parameter, and the model then generates\n   * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n   * in your request will be combined into a single turn.\n   *\n   * Each input message must be an object with a `role` and `content`. You can\n   * specify a single `user`-role message, or you can include multiple `user` and\n   * `assistant` messages.\n   *\n   * If the final message uses the `assistant` role, the response content will\n   * continue immediately from the content in that message. This can be used to\n   * constrain part of the model's response.\n   *\n   * Example with a single `user` message:\n   *\n   * ```json\n   * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n   * ```\n   *\n   * Example with multiple conversational turns:\n   *\n   * ```json\n   * [\n   *   { \"role\": \"user\", \"content\": \"Hello there.\" },\n   *   { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n   *   { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n   * ]\n   * ```\n   *\n   * Example with a partially-filled response from Claude:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Each input message `content` may be either a single `string` or an array of\n   * content blocks, where each block has a specific `type`. Using a `string` for\n   * `content` is shorthand for an array of one content block of type `\"text\"`. The\n   * following input messages are equivalent:\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n   * ```\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n   * ```\n   *\n   * See [input examples](https://docs.claude.com/en/api/messages-examples).\n   *\n   * Note that if you want to include a\n   * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n   * top-level `system` parameter \u2014 there is no `\"system\"` role for input messages in\n   * the Messages API.\n   *\n   * There is a limit of 100,000 messages in a single request.\n   */\n  messages: Array<BetaMessageParam>;\n\n  /**\n   * Body param: The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * Body param: Top-level cache control automatically applies a cache_control marker\n   * to the last cacheable block in the request.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Body param: Container identifier for reuse across requests.\n   */\n  container?: BetaContainerParams | string | null;\n\n  /**\n   * Body param: Context management configuration.\n   *\n   * This allows you to control how Claude manages context across multiple requests,\n   * such as whether to clear function results or not.\n   */\n  context_management?: BetaContextManagementConfig | null;\n\n  /**\n   * Body param: Specifies the geographic region for inference processing. If not\n   * specified, the workspace's `default_inference_geo` is used.\n   */\n  inference_geo?: string | null;\n\n  /**\n   * Body param: MCP servers to be utilized in this request\n   */\n  mcp_servers?: Array<BetaRequestMCPServerURLDefinition>;\n\n  /**\n   * Body param: An object describing metadata about the request.\n   */\n  metadata?: BetaMetadata;\n\n  /**\n   * Body param: Configuration options for the model's output, such as the output\n   * format.\n   */\n  output_config?: BetaOutputConfig;\n\n  /**\n   * Body param: Deprecated: Use `output_config.format` instead. See\n   * [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n   *\n   * A schema to specify Claude's output format in responses. This parameter will be\n   * removed in a future release.\n   */\n  output_format?: BetaJSONOutputFormat | null;\n\n  /**\n   * Body param: Determines whether to use priority capacity (if available) or\n   * standard capacity for this request.\n   *\n   * Anthropic offers different levels of service for your API requests. See\n   * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n   */\n  service_tier?: 'auto' | 'standard_only';\n\n  /**\n   * Body param: The inference speed mode for this request. `\"fast\"` enables high\n   * output-tokens-per-second inference.\n   */\n  speed?: 'standard' | 'fast' | null;\n\n  /**\n   * Body param: Custom text sequences that will cause the model to stop generating.\n   *\n   * Our models will normally stop when they have naturally completed their turn,\n   * which will result in a response `stop_reason` of `\"end_turn\"`.\n   *\n   * If you want the model to stop generating when it encounters custom strings of\n   * text, you can use the `stop_sequences` parameter. If the model encounters one of\n   * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n   * and the response `stop_sequence` value will contain the matched stop sequence.\n   */\n  stop_sequences?: Array<string>;\n\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream?: boolean;\n\n  /**\n   * Body param: System prompt.\n   *\n   * A system prompt is a way of providing context and instructions to Claude, such\n   * as specifying a particular goal or role. See our\n   * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n   */\n  system?: string | Array<BetaTextBlockParam>;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting temperature. A value of 1.0 of will be accepted for backwards\n   * compatibility, all other values will be rejected with a 400 error.\n   */\n  temperature?: number;\n\n  /**\n   * Body param: Configuration for enabling Claude's extended thinking.\n   *\n   * When enabled, responses include `thinking` content blocks showing Claude's\n   * thinking process before the final answer. Requires a minimum budget of 1,024\n   * tokens and counts towards your `max_tokens` limit.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  thinking?: BetaThinkingConfigParam;\n\n  /**\n   * Body param: How the model should use the provided tools. The model can use a\n   * specific tool, any available tool, decide by itself, or not use tools at all.\n   */\n  tool_choice?: BetaToolChoice;\n\n  /**\n   * Body param: Definitions of tools that the model may use.\n   *\n   * If you include `tools` in your API request, the model may return `tool_use`\n   * content blocks that represent the model's use of those tools. You can then run\n   * those tools using the tool input generated by the model and then optionally\n   * return results back to the model using `tool_result` content blocks.\n   *\n   * There are two types of tools: **client tools** and **server tools**. The\n   * behavior described below applies to client tools. For\n   * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n   * see their individual documentation as each has its own behavior (e.g., the\n   * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n   *\n   * Each tool definition includes:\n   *\n   * - `name`: Name of the tool.\n   * - `description`: Optional, but strongly-recommended description of the tool.\n   * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n   *   tool `input` shape that the model will produce in `tool_use` output content\n   *   blocks.\n   *\n   * For example, if you defined `tools` as:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"name\": \"get_stock_price\",\n   *     \"description\": \"Get the current stock price for a given ticker symbol.\",\n   *     \"input_schema\": {\n   *       \"type\": \"object\",\n   *       \"properties\": {\n   *         \"ticker\": {\n   *           \"type\": \"string\",\n   *           \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n   *         }\n   *       },\n   *       \"required\": [\"ticker\"]\n   *     }\n   *   }\n   * ]\n   * ```\n   *\n   * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n   * `tool_use` content blocks in the response like this:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_use\",\n   *     \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"name\": \"get_stock_price\",\n   *     \"input\": { \"ticker\": \"^GSPC\" }\n   *   }\n   * ]\n   * ```\n   *\n   * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n   * input, and return the following back to the model in a subsequent `user`\n   * message:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_result\",\n   *     \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"content\": \"259.75 USD\"\n   *   }\n   * ]\n   * ```\n   *\n   * Tools can be used for workflows that include running client-side tools and\n   * functions, or more generally whenever you want the model to produce a particular\n   * JSON structure of output.\n   *\n   * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n   */\n  tools?: Array<BetaToolUnion>;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not accept\n   * top_k; any value will be rejected with a 400 error.\n   */\n  top_k?: number;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting top_p. A value >= 0.99 will be accepted for backwards compatibility, all\n   * other values will be rejected with a 400 error.\n   */\n  top_p?: number;\n\n  /**\n   * Body param: The user profile ID to attribute this request to. Use when acting on\n   * behalf of a party other than your organization.\n   */\n  user_profile_id?: string | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace MessageCreateParams {\n  export type MessageCreateParamsNonStreaming = BetaMessagesAPI.MessageCreateParamsNonStreaming;\n  export type MessageCreateParamsStreaming = BetaMessagesAPI.MessageCreateParamsStreaming;\n}\n\nexport interface MessageCreateParamsNonStreaming extends MessageCreateParamsBase {\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream?: false;\n}\n\nexport interface MessageCreateParamsStreaming extends MessageCreateParamsBase {\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream: true;\n}\n\nexport interface MessageCountTokensParams {\n  /**\n   * Body param: Input messages.\n   *\n   * Our models are trained to operate on alternating `user` and `assistant`\n   * conversational turns. When creating a new `Message`, you specify the prior\n   * conversational turns with the `messages` parameter, and the model then generates\n   * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n   * in your request will be combined into a single turn.\n   *\n   * Each input message must be an object with a `role` and `content`. You can\n   * specify a single `user`-role message, or you can include multiple `user` and\n   * `assistant` messages.\n   *\n   * If the final message uses the `assistant` role, the response content will\n   * continue immediately from the content in that message. This can be used to\n   * constrain part of the model's response.\n   *\n   * Example with a single `user` message:\n   *\n   * ```json\n   * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n   * ```\n   *\n   * Example with multiple conversational turns:\n   *\n   * ```json\n   * [\n   *   { \"role\": \"user\", \"content\": \"Hello there.\" },\n   *   { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n   *   { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n   * ]\n   * ```\n   *\n   * Example with a partially-filled response from Claude:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Each input message `content` may be either a single `string` or an array of\n   * content blocks, where each block has a specific `type`. Using a `string` for\n   * `content` is shorthand for an array of one content block of type `\"text\"`. The\n   * following input messages are equivalent:\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n   * ```\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n   * ```\n   *\n   * See [input examples](https://docs.claude.com/en/api/messages-examples).\n   *\n   * Note that if you want to include a\n   * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n   * top-level `system` parameter \u2014 there is no `\"system\"` role for input messages in\n   * the Messages API.\n   *\n   * There is a limit of 100,000 messages in a single request.\n   */\n  messages: Array<BetaMessageParam>;\n\n  /**\n   * Body param: The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * Body param: Top-level cache control automatically applies a cache_control marker\n   * to the last cacheable block in the request.\n   */\n  cache_control?: BetaCacheControlEphemeral | null;\n\n  /**\n   * Body param: Context management configuration.\n   *\n   * This allows you to control how Claude manages context across multiple requests,\n   * such as whether to clear function results or not.\n   */\n  context_management?: BetaContextManagementConfig | null;\n\n  /**\n   * Body param: MCP servers to be utilized in this request\n   */\n  mcp_servers?: Array<BetaRequestMCPServerURLDefinition>;\n\n  /**\n   * Body param: Configuration options for the model's output, such as the output\n   * format.\n   */\n  output_config?: BetaOutputConfig;\n\n  /**\n   * Body param: Deprecated: Use `output_config.format` instead. See\n   * [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n   *\n   * A schema to specify Claude's output format in responses. This parameter will be\n   * removed in a future release.\n   */\n  output_format?: BetaJSONOutputFormat | null;\n\n  /**\n   * Body param: The inference speed mode for this request. `\"fast\"` enables high\n   * output-tokens-per-second inference.\n   */\n  speed?: 'standard' | 'fast' | null;\n\n  /**\n   * Body param: System prompt.\n   *\n   * A system prompt is a way of providing context and instructions to Claude, such\n   * as specifying a particular goal or role. See our\n   * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n   */\n  system?: string | Array<BetaTextBlockParam>;\n\n  /**\n   * Body param: Configuration for enabling Claude's extended thinking.\n   *\n   * When enabled, responses include `thinking` content blocks showing Claude's\n   * thinking process before the final answer. Requires a minimum budget of 1,024\n   * tokens and counts towards your `max_tokens` limit.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  thinking?: BetaThinkingConfigParam;\n\n  /**\n   * Body param: How the model should use the provided tools. The model can use a\n   * specific tool, any available tool, decide by itself, or not use tools at all.\n   */\n  tool_choice?: BetaToolChoice;\n\n  /**\n   * Body param: Definitions of tools that the model may use.\n   *\n   * If you include `tools` in your API request, the model may return `tool_use`\n   * content blocks that represent the model's use of those tools. You can then run\n   * those tools using the tool input generated by the model and then optionally\n   * return results back to the model using `tool_result` content blocks.\n   *\n   * There are two types of tools: **client tools** and **server tools**. The\n   * behavior described below applies to client tools. For\n   * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n   * see their individual documentation as each has its own behavior (e.g., the\n   * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n   *\n   * Each tool definition includes:\n   *\n   * - `name`: Name of the tool.\n   * - `description`: Optional, but strongly-recommended description of the tool.\n   * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n   *   tool `input` shape that the model will produce in `tool_use` output content\n   *   blocks.\n   *\n   * For example, if you defined `tools` as:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"name\": \"get_stock_price\",\n   *     \"description\": \"Get the current stock price for a given ticker symbol.\",\n   *     \"input_schema\": {\n   *       \"type\": \"object\",\n   *       \"properties\": {\n   *         \"ticker\": {\n   *           \"type\": \"string\",\n   *           \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n   *         }\n   *       },\n   *       \"required\": [\"ticker\"]\n   *     }\n   *   }\n   * ]\n   * ```\n   *\n   * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n   * `tool_use` content blocks in the response like this:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_use\",\n   *     \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"name\": \"get_stock_price\",\n   *     \"input\": { \"ticker\": \"^GSPC\" }\n   *   }\n   * ]\n   * ```\n   *\n   * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n   * input, and return the following back to the model in a subsequent `user`\n   * message:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_result\",\n   *     \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"content\": \"259.75 USD\"\n   *   }\n   * ]\n   * ```\n   *\n   * Tools can be used for workflows that include running client-side tools and\n   * functions, or more generally whenever you want the model to produce a particular\n   * JSON structure of output.\n   *\n   * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n   */\n  tools?: Array<\n    | BetaTool\n    | BetaToolBash20241022\n    | BetaToolBash20250124\n    | BetaCodeExecutionTool20250522\n    | BetaCodeExecutionTool20250825\n    | BetaCodeExecutionTool20260120\n    | BetaToolComputerUse20241022\n    | BetaMemoryTool20250818\n    | BetaToolComputerUse20250124\n    | BetaToolTextEditor20241022\n    | BetaToolComputerUse20251124\n    | BetaToolTextEditor20250124\n    | BetaToolTextEditor20250429\n    | BetaToolTextEditor20250728\n    | BetaWebSearchTool20250305\n    | BetaWebFetchTool20250910\n    | BetaWebSearchTool20260209\n    | BetaWebFetchTool20260209\n    | BetaWebFetchTool20260309\n    | BetaAdvisorTool20260301\n    | BetaToolSearchToolBm25_20251119\n    | BetaToolSearchToolRegex20251119\n    | BetaMCPToolset\n  >;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport { BetaToolRunner, type BetaToolRunnerParams } from '../../../lib/tools/BetaToolRunner';\nexport { ToolError } from '../../../lib/tools/ToolError';\n\nMessages.Batches = Batches;\n\nMessages.BetaToolRunner = BetaToolRunner;\nMessages.ToolError = ToolError;\n\nexport declare namespace Messages {\n  export {\n    type BetaAdvisorMessageIterationUsage as BetaAdvisorMessageIterationUsage,\n    type BetaAdvisorRedactedResultBlock as BetaAdvisorRedactedResultBlock,\n    type BetaAdvisorRedactedResultBlockParam as BetaAdvisorRedactedResultBlockParam,\n    type BetaAdvisorResultBlock as BetaAdvisorResultBlock,\n    type BetaAdvisorResultBlockParam as BetaAdvisorResultBlockParam,\n    type BetaAdvisorTool20260301 as BetaAdvisorTool20260301,\n    type BetaAdvisorToolResultBlock as BetaAdvisorToolResultBlock,\n    type BetaAdvisorToolResultBlockParam as BetaAdvisorToolResultBlockParam,\n    type BetaAdvisorToolResultError as BetaAdvisorToolResultError,\n    type BetaAdvisorToolResultErrorParam as BetaAdvisorToolResultErrorParam,\n    type BetaAllThinkingTurns as BetaAllThinkingTurns,\n    type BetaBase64ImageSource as BetaBase64ImageSource,\n    type BetaBase64PDFSource as BetaBase64PDFSource,\n    type BetaBashCodeExecutionOutputBlock as BetaBashCodeExecutionOutputBlock,\n    type BetaBashCodeExecutionOutputBlockParam as BetaBashCodeExecutionOutputBlockParam,\n    type BetaBashCodeExecutionResultBlock as BetaBashCodeExecutionResultBlock,\n    type BetaBashCodeExecutionResultBlockParam as BetaBashCodeExecutionResultBlockParam,\n    type BetaBashCodeExecutionToolResultBlock as BetaBashCodeExecutionToolResultBlock,\n    type BetaBashCodeExecutionToolResultBlockParam as BetaBashCodeExecutionToolResultBlockParam,\n    type BetaBashCodeExecutionToolResultError as BetaBashCodeExecutionToolResultError,\n    type BetaBashCodeExecutionToolResultErrorParam as BetaBashCodeExecutionToolResultErrorParam,\n    type BetaCacheControlEphemeral as BetaCacheControlEphemeral,\n    type BetaCacheCreation as BetaCacheCreation,\n    type BetaCitationCharLocation as BetaCitationCharLocation,\n    type BetaCitationCharLocationParam as BetaCitationCharLocationParam,\n    type BetaCitationConfig as BetaCitationConfig,\n    type BetaCitationContentBlockLocation as BetaCitationContentBlockLocation,\n    type BetaCitationContentBlockLocationParam as BetaCitationContentBlockLocationParam,\n    type BetaCitationPageLocation as BetaCitationPageLocation,\n    type BetaCitationPageLocationParam as BetaCitationPageLocationParam,\n    type BetaCitationSearchResultLocation as BetaCitationSearchResultLocation,\n    type BetaCitationSearchResultLocationParam as BetaCitationSearchResultLocationParam,\n    type BetaCitationWebSearchResultLocationParam as BetaCitationWebSearchResultLocationParam,\n    type BetaCitationsConfigParam as BetaCitationsConfigParam,\n    type BetaCitationsDelta as BetaCitationsDelta,\n    type BetaCitationsWebSearchResultLocation as BetaCitationsWebSearchResultLocation,\n    type BetaClearThinking20251015Edit as BetaClearThinking20251015Edit,\n    type BetaClearThinking20251015EditResponse as BetaClearThinking20251015EditResponse,\n    type BetaClearToolUses20250919Edit as BetaClearToolUses20250919Edit,\n    type BetaClearToolUses20250919EditResponse as BetaClearToolUses20250919EditResponse,\n    type BetaCodeExecutionOutputBlock as BetaCodeExecutionOutputBlock,\n    type BetaCodeExecutionOutputBlockParam as BetaCodeExecutionOutputBlockParam,\n    type BetaCodeExecutionResultBlock as BetaCodeExecutionResultBlock,\n    type BetaCodeExecutionResultBlockParam as BetaCodeExecutionResultBlockParam,\n    type BetaCodeExecutionTool20250522 as BetaCodeExecutionTool20250522,\n    type BetaCodeExecutionTool20250825 as BetaCodeExecutionTool20250825,\n    type BetaCodeExecutionTool20260120 as BetaCodeExecutionTool20260120,\n    type BetaCodeExecutionToolResultBlock as BetaCodeExecutionToolResultBlock,\n    type BetaCodeExecutionToolResultBlockContent as BetaCodeExecutionToolResultBlockContent,\n    type BetaCodeExecutionToolResultBlockParam as BetaCodeExecutionToolResultBlockParam,\n    type BetaCodeExecutionToolResultBlockParamContent as BetaCodeExecutionToolResultBlockParamContent,\n    type BetaCodeExecutionToolResultError as BetaCodeExecutionToolResultError,\n    type BetaCodeExecutionToolResultErrorCode as BetaCodeExecutionToolResultErrorCode,\n    type BetaCodeExecutionToolResultErrorParam as BetaCodeExecutionToolResultErrorParam,\n    type BetaCompact20260112Edit as BetaCompact20260112Edit,\n    type BetaCompactionBlock as BetaCompactionBlock,\n    type BetaCompactionBlockParam as BetaCompactionBlockParam,\n    type BetaCompactionContentBlockDelta as BetaCompactionContentBlockDelta,\n    type BetaCompactionIterationUsage as BetaCompactionIterationUsage,\n    type BetaContainer as BetaContainer,\n    type BetaContainerParams as BetaContainerParams,\n    type BetaContainerUploadBlock as BetaContainerUploadBlock,\n    type BetaContainerUploadBlockParam as BetaContainerUploadBlockParam,\n    type BetaContentBlock as BetaContentBlock,\n    type BetaContentBlockParam as BetaContentBlockParam,\n    type BetaContentBlockSource as BetaContentBlockSource,\n    type BetaContentBlockSourceContent as BetaContentBlockSourceContent,\n    type BetaContextManagementConfig as BetaContextManagementConfig,\n    type BetaContextManagementResponse as BetaContextManagementResponse,\n    type BetaCountTokensContextManagementResponse as BetaCountTokensContextManagementResponse,\n    type BetaDirectCaller as BetaDirectCaller,\n    type BetaDocumentBlock as BetaDocumentBlock,\n    type BetaEncryptedCodeExecutionResultBlock as BetaEncryptedCodeExecutionResultBlock,\n    type BetaEncryptedCodeExecutionResultBlockParam as BetaEncryptedCodeExecutionResultBlockParam,\n    type BetaFileDocumentSource as BetaFileDocumentSource,\n    type BetaFileImageSource as BetaFileImageSource,\n    type BetaImageBlockParam as BetaImageBlockParam,\n    type BetaInputJSONDelta as BetaInputJSONDelta,\n    type BetaInputTokensClearAtLeast as BetaInputTokensClearAtLeast,\n    type BetaInputTokensTrigger as BetaInputTokensTrigger,\n    type BetaIterationsUsage as BetaIterationsUsage,\n    type BetaJSONOutputFormat as BetaJSONOutputFormat,\n    type BetaMCPToolConfig as BetaMCPToolConfig,\n    type BetaMCPToolDefaultConfig as BetaMCPToolDefaultConfig,\n    type BetaMCPToolResultBlock as BetaMCPToolResultBlock,\n    type BetaMCPToolUseBlock as BetaMCPToolUseBlock,\n    type BetaMCPToolUseBlockParam as BetaMCPToolUseBlockParam,\n    type BetaMCPToolset as BetaMCPToolset,\n    type BetaMemoryTool20250818 as BetaMemoryTool20250818,\n    type BetaMemoryTool20250818Command as BetaMemoryTool20250818Command,\n    type BetaMemoryTool20250818CreateCommand as BetaMemoryTool20250818CreateCommand,\n    type BetaMemoryTool20250818DeleteCommand as BetaMemoryTool20250818DeleteCommand,\n    type BetaMemoryTool20250818InsertCommand as BetaMemoryTool20250818InsertCommand,\n    type BetaMemoryTool20250818RenameCommand as BetaMemoryTool20250818RenameCommand,\n    type BetaMemoryTool20250818StrReplaceCommand as BetaMemoryTool20250818StrReplaceCommand,\n    type BetaMemoryTool20250818ViewCommand as BetaMemoryTool20250818ViewCommand,\n    type BetaMessage as BetaMessage,\n    type BetaMessageDeltaUsage as BetaMessageDeltaUsage,\n    type BetaMessageIterationUsage as BetaMessageIterationUsage,\n    type BetaMessageParam as BetaMessageParam,\n    type BetaMessageTokensCount as BetaMessageTokensCount,\n    type BetaMetadata as BetaMetadata,\n    type BetaOutputConfig as BetaOutputConfig,\n    type BetaPlainTextSource as BetaPlainTextSource,\n    type BetaRawContentBlockDelta as BetaRawContentBlockDelta,\n    type BetaRawContentBlockDeltaEvent as BetaRawContentBlockDeltaEvent,\n    type BetaRawContentBlockStartEvent as BetaRawContentBlockStartEvent,\n    type BetaRawContentBlockStopEvent as BetaRawContentBlockStopEvent,\n    type BetaRawMessageDeltaEvent as BetaRawMessageDeltaEvent,\n    type BetaRawMessageStartEvent as BetaRawMessageStartEvent,\n    type BetaRawMessageStopEvent as BetaRawMessageStopEvent,\n    type BetaRawMessageStreamEvent as BetaRawMessageStreamEvent,\n    type BetaRedactedThinkingBlock as BetaRedactedThinkingBlock,\n    type BetaRedactedThinkingBlockParam as BetaRedactedThinkingBlockParam,\n    type BetaRefusalStopDetails as BetaRefusalStopDetails,\n    type BetaRequestDocumentBlock as BetaRequestDocumentBlock,\n    type BetaRequestMCPServerToolConfiguration as BetaRequestMCPServerToolConfiguration,\n    type BetaRequestMCPServerURLDefinition as BetaRequestMCPServerURLDefinition,\n    type BetaRequestMCPToolResultBlockParam as BetaRequestMCPToolResultBlockParam,\n    type BetaSearchResultBlockParam as BetaSearchResultBlockParam,\n    type BetaServerToolCaller as BetaServerToolCaller,\n    type BetaServerToolCaller20260120 as BetaServerToolCaller20260120,\n    type BetaServerToolUsage as BetaServerToolUsage,\n    type BetaServerToolUseBlock as BetaServerToolUseBlock,\n    type BetaServerToolUseBlockParam as BetaServerToolUseBlockParam,\n    type BetaSignatureDelta as BetaSignatureDelta,\n    type BetaSkill as BetaSkill,\n    type BetaSkillParams as BetaSkillParams,\n    type BetaStopReason as BetaStopReason,\n    type BetaTextBlock as BetaTextBlock,\n    type BetaTextBlockParam as BetaTextBlockParam,\n    type BetaTextCitation as BetaTextCitation,\n    type BetaTextCitationParam as BetaTextCitationParam,\n    type BetaTextDelta as BetaTextDelta,\n    type BetaTextEditorCodeExecutionCreateResultBlock as BetaTextEditorCodeExecutionCreateResultBlock,\n    type BetaTextEditorCodeExecutionCreateResultBlockParam as BetaTextEditorCodeExecutionCreateResultBlockParam,\n    type BetaTextEditorCodeExecutionStrReplaceResultBlock as BetaTextEditorCodeExecutionStrReplaceResultBlock,\n    type BetaTextEditorCodeExecutionStrReplaceResultBlockParam as BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n    type BetaTextEditorCodeExecutionToolResultBlock as BetaTextEditorCodeExecutionToolResultBlock,\n    type BetaTextEditorCodeExecutionToolResultBlockParam as BetaTextEditorCodeExecutionToolResultBlockParam,\n    type BetaTextEditorCodeExecutionToolResultError as BetaTextEditorCodeExecutionToolResultError,\n    type BetaTextEditorCodeExecutionToolResultErrorParam as BetaTextEditorCodeExecutionToolResultErrorParam,\n    type BetaTextEditorCodeExecutionViewResultBlock as BetaTextEditorCodeExecutionViewResultBlock,\n    type BetaTextEditorCodeExecutionViewResultBlockParam as BetaTextEditorCodeExecutionViewResultBlockParam,\n    type BetaThinkingBlock as BetaThinkingBlock,\n    type BetaThinkingBlockParam as BetaThinkingBlockParam,\n    type BetaThinkingConfigAdaptive as BetaThinkingConfigAdaptive,\n    type BetaThinkingConfigDisabled as BetaThinkingConfigDisabled,\n    type BetaThinkingConfigEnabled as BetaThinkingConfigEnabled,\n    type BetaThinkingConfigParam as BetaThinkingConfigParam,\n    type BetaThinkingDelta as BetaThinkingDelta,\n    type BetaThinkingTurns as BetaThinkingTurns,\n    type BetaTokenTaskBudget as BetaTokenTaskBudget,\n    type BetaTool as BetaTool,\n    type BetaToolBash20241022 as BetaToolBash20241022,\n    type BetaToolBash20250124 as BetaToolBash20250124,\n    type BetaToolChoice as BetaToolChoice,\n    type BetaToolChoiceAny as BetaToolChoiceAny,\n    type BetaToolChoiceAuto as BetaToolChoiceAuto,\n    type BetaToolChoiceNone as BetaToolChoiceNone,\n    type BetaToolChoiceTool as BetaToolChoiceTool,\n    type BetaToolComputerUse20241022 as BetaToolComputerUse20241022,\n    type BetaToolComputerUse20250124 as BetaToolComputerUse20250124,\n    type BetaToolComputerUse20251124 as BetaToolComputerUse20251124,\n    type BetaToolReferenceBlock as BetaToolReferenceBlock,\n    type BetaToolReferenceBlockParam as BetaToolReferenceBlockParam,\n    type BetaToolResultBlockParam as BetaToolResultBlockParam,\n    type BetaToolResultContentBlockParam as BetaToolResultContentBlockParam,\n    type BetaToolSearchToolBm25_20251119 as BetaToolSearchToolBm25_20251119,\n    type BetaToolSearchToolRegex20251119 as BetaToolSearchToolRegex20251119,\n    type BetaToolSearchToolResultBlock as BetaToolSearchToolResultBlock,\n    type BetaToolSearchToolResultBlockParam as BetaToolSearchToolResultBlockParam,\n    type BetaToolSearchToolResultError as BetaToolSearchToolResultError,\n    type BetaToolSearchToolResultErrorParam as BetaToolSearchToolResultErrorParam,\n    type BetaToolSearchToolSearchResultBlock as BetaToolSearchToolSearchResultBlock,\n    type BetaToolSearchToolSearchResultBlockParam as BetaToolSearchToolSearchResultBlockParam,\n    type BetaToolTextEditor20241022 as BetaToolTextEditor20241022,\n    type BetaToolTextEditor20250124 as BetaToolTextEditor20250124,\n    type BetaToolTextEditor20250429 as BetaToolTextEditor20250429,\n    type BetaToolTextEditor20250728 as BetaToolTextEditor20250728,\n    type BetaToolUnion as BetaToolUnion,\n    type BetaToolUseBlock as BetaToolUseBlock,\n    type BetaToolUseBlockParam as BetaToolUseBlockParam,\n    type BetaToolUsesKeep as BetaToolUsesKeep,\n    type BetaToolUsesTrigger as BetaToolUsesTrigger,\n    type BetaURLImageSource as BetaURLImageSource,\n    type BetaURLPDFSource as BetaURLPDFSource,\n    type BetaUsage as BetaUsage,\n    type BetaUserLocation as BetaUserLocation,\n    type BetaWebFetchBlock as BetaWebFetchBlock,\n    type BetaWebFetchBlockParam as BetaWebFetchBlockParam,\n    type BetaWebFetchTool20250910 as BetaWebFetchTool20250910,\n    type BetaWebFetchTool20260209 as BetaWebFetchTool20260209,\n    type BetaWebFetchTool20260309 as BetaWebFetchTool20260309,\n    type BetaWebFetchToolResultBlock as BetaWebFetchToolResultBlock,\n    type BetaWebFetchToolResultBlockParam as BetaWebFetchToolResultBlockParam,\n    type BetaWebFetchToolResultErrorBlock as BetaWebFetchToolResultErrorBlock,\n    type BetaWebFetchToolResultErrorBlockParam as BetaWebFetchToolResultErrorBlockParam,\n    type BetaWebFetchToolResultErrorCode as BetaWebFetchToolResultErrorCode,\n    type BetaWebSearchResultBlock as BetaWebSearchResultBlock,\n    type BetaWebSearchResultBlockParam as BetaWebSearchResultBlockParam,\n    type BetaWebSearchTool20250305 as BetaWebSearchTool20250305,\n    type BetaWebSearchTool20260209 as BetaWebSearchTool20260209,\n    type BetaWebSearchToolRequestError as BetaWebSearchToolRequestError,\n    type BetaWebSearchToolResultBlock as BetaWebSearchToolResultBlock,\n    type BetaWebSearchToolResultBlockContent as BetaWebSearchToolResultBlockContent,\n    type BetaWebSearchToolResultBlockParam as BetaWebSearchToolResultBlockParam,\n    type BetaWebSearchToolResultBlockParamContent as BetaWebSearchToolResultBlockParamContent,\n    type BetaWebSearchToolResultError as BetaWebSearchToolResultError,\n    type BetaWebSearchToolResultErrorCode as BetaWebSearchToolResultErrorCode,\n    type BetaBase64PDFBlock as BetaBase64PDFBlock,\n    type MessageCreateParams as MessageCreateParams,\n    type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n    type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n    type MessageCountTokensParams as MessageCountTokensParams,\n  };\n\n  export { type BetaToolRunnerParams, BetaToolRunner };\n  export { ToolError };\n\n  export {\n    Batches as Batches,\n    type BetaDeletedMessageBatch as BetaDeletedMessageBatch,\n    type BetaMessageBatch as BetaMessageBatch,\n    type BetaMessageBatchCanceledResult as BetaMessageBatchCanceledResult,\n    type BetaMessageBatchErroredResult as BetaMessageBatchErroredResult,\n    type BetaMessageBatchExpiredResult as BetaMessageBatchExpiredResult,\n    type BetaMessageBatchIndividualResponse as BetaMessageBatchIndividualResponse,\n    type BetaMessageBatchRequestCounts as BetaMessageBatchRequestCounts,\n    type BetaMessageBatchResult as BetaMessageBatchResult,\n    type BetaMessageBatchSucceededResult as BetaMessageBatchSucceededResult,\n    type BetaMessageBatchesPage as BetaMessageBatchesPage,\n    type BatchCreateParams as BatchCreateParams,\n    type BatchRetrieveParams as BatchRetrieveParams,\n    type BatchListParams as BatchListParams,\n    type BatchDeleteParams as BatchDeleteParams,\n    type BatchCancelParams as BatchCancelParams,\n    type BatchResultsParams as BatchResultsParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { Stream } from '../../../core/streaming';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Events extends APIResource {\n  /**\n   * List Events\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsSessionEvent of client.beta.sessions.events.list(\n   *   'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    sessionID: string,\n    params: EventListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsSessionEventsPageCursor, BetaManagedAgentsSessionEvent> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/sessions/${sessionID}/events?beta=true`,\n      PageCursor<BetaManagedAgentsSessionEvent>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * Send Events\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsSendSessionEvents =\n   *   await client.beta.sessions.events.send(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *     {\n   *       events: [\n   *         {\n   *           content: [\n   *             {\n   *               text: 'Where is my order #1234?',\n   *               type: 'text',\n   *             },\n   *           ],\n   *           type: 'user.message',\n   *         },\n   *       ],\n   *     },\n   *   );\n   * ```\n   */\n  send(\n    sessionID: string,\n    params: EventSendParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsSendSessionEvents> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/sessions/${sessionID}/events?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Stream Events\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsStreamSessionEvents =\n   *   await client.beta.sessions.events.stream(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *   );\n   * ```\n   */\n  stream(\n    sessionID: string,\n    params: EventStreamParams | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<Stream<BetaManagedAgentsStreamSessionEvents>> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/sessions/${sessionID}/events/stream?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n      stream: true,\n    }) as APIPromise<Stream<BetaManagedAgentsStreamSessionEvents>>;\n  }\n}\n\nexport type BetaManagedAgentsSessionEventsPageCursor = PageCursor<BetaManagedAgentsSessionEvent>;\n\n/**\n * Event emitted when the agent calls a custom tool. The session goes idle until\n * the client sends a `user.custom_tool_result` event with the result.\n */\nexport interface BetaManagedAgentsAgentCustomToolUseEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Input parameters for the tool call.\n   */\n  input: { [key: string]: unknown };\n\n  /**\n   * Name of the custom tool being called.\n   */\n  name: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.custom_tool_use';\n}\n\n/**\n * Event representing the result of an MCP tool execution.\n */\nexport interface BetaManagedAgentsAgentMCPToolResultEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * The id of the `agent.mcp_tool_use` event this result corresponds to.\n   */\n  mcp_tool_use_id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.mcp_tool_result';\n\n  /**\n   * The result content returned by the tool.\n   */\n  content?: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  /**\n   * Whether the tool execution resulted in an error.\n   */\n  is_error?: boolean | null;\n}\n\n/**\n * Event emitted when the agent invokes a tool provided by an MCP server.\n */\nexport interface BetaManagedAgentsAgentMCPToolUseEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Input parameters for the tool call.\n   */\n  input: { [key: string]: unknown };\n\n  /**\n   * Name of the MCP server providing the tool.\n   */\n  mcp_server_name: string;\n\n  /**\n   * Name of the MCP tool being used.\n   */\n  name: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.mcp_tool_use';\n\n  /**\n   * AgentEvaluatedPermission enum\n   */\n  evaluated_permission?: 'allow' | 'ask' | 'deny';\n}\n\n/**\n * An agent response event in the session conversation.\n */\nexport interface BetaManagedAgentsAgentMessageEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Array of text blocks comprising the agent response.\n   */\n  content: Array<BetaManagedAgentsTextBlock>;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.message';\n}\n\n/**\n * Indicates the agent is making forward progress via extended thinking. A progress\n * signal, not a content carrier.\n */\nexport interface BetaManagedAgentsAgentThinkingEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.thinking';\n}\n\n/**\n * Indicates that context compaction (summarization) occurred during the session.\n */\nexport interface BetaManagedAgentsAgentThreadContextCompactedEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.thread_context_compacted';\n}\n\n/**\n * Event representing the result of an agent tool execution.\n */\nexport interface BetaManagedAgentsAgentToolResultEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  /**\n   * The id of the `agent.tool_use` event this result corresponds to.\n   */\n  tool_use_id: string;\n\n  type: 'agent.tool_result';\n\n  /**\n   * The result content returned by the tool.\n   */\n  content?: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  /**\n   * Whether the tool execution resulted in an error.\n   */\n  is_error?: boolean | null;\n}\n\n/**\n * Event emitted when the agent invokes a built-in agent tool.\n */\nexport interface BetaManagedAgentsAgentToolUseEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Input parameters for the tool call.\n   */\n  input: { [key: string]: unknown };\n\n  /**\n   * Name of the agent tool being used.\n   */\n  name: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'agent.tool_use';\n\n  /**\n   * AgentEvaluatedPermission enum\n   */\n  evaluated_permission?: 'allow' | 'ask' | 'deny';\n}\n\n/**\n * Base64-encoded document data.\n */\nexport interface BetaManagedAgentsBase64DocumentSource {\n  /**\n   * Base64-encoded document data.\n   */\n  data: string;\n\n  /**\n   * MIME type of the document (e.g., \"application/pdf\").\n   */\n  media_type: string;\n\n  type: 'base64';\n}\n\n/**\n * Base64-encoded image data.\n */\nexport interface BetaManagedAgentsBase64ImageSource {\n  /**\n   * Base64-encoded image data.\n   */\n  data: string;\n\n  /**\n   * MIME type of the image (e.g., \"image/png\", \"image/jpeg\", \"image/gif\",\n   * \"image/webp\").\n   */\n  media_type: string;\n\n  type: 'base64';\n}\n\n/**\n * The caller's organization or workspace cannot make model requests \u2014 out of\n * credits or spend limit reached. Retrying with the same credentials will not\n * succeed; the caller must resolve the billing state.\n */\nexport interface BetaManagedAgentsBillingError {\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'billing_error';\n}\n\n/**\n * Document content, either specified directly as base64 data, as text, or as a\n * reference via a URL.\n */\nexport interface BetaManagedAgentsDocumentBlock {\n  /**\n   * Union type for document source variants.\n   */\n  source:\n    | BetaManagedAgentsBase64DocumentSource\n    | BetaManagedAgentsPlainTextDocumentSource\n    | BetaManagedAgentsURLDocumentSource\n    | BetaManagedAgentsFileDocumentSource;\n\n  type: 'document';\n\n  /**\n   * Additional context about the document for the model.\n   */\n  context?: string | null;\n\n  /**\n   * The title of the document.\n   */\n  title?: string | null;\n}\n\n/**\n * Union type for event parameters that can be sent to a session.\n */\nexport type BetaManagedAgentsEventParams =\n  | BetaManagedAgentsUserMessageEventParams\n  | BetaManagedAgentsUserInterruptEventParams\n  | BetaManagedAgentsUserToolConfirmationEventParams\n  | BetaManagedAgentsUserCustomToolResultEventParams;\n\n/**\n * Document referenced by file ID.\n */\nexport interface BetaManagedAgentsFileDocumentSource {\n  /**\n   * ID of a previously uploaded file.\n   */\n  file_id: string;\n\n  type: 'file';\n}\n\n/**\n * Image referenced by file ID.\n */\nexport interface BetaManagedAgentsFileImageSource {\n  /**\n   * ID of a previously uploaded file.\n   */\n  file_id: string;\n\n  type: 'file';\n}\n\n/**\n * Image content specified directly as base64 data or as a reference via a URL.\n */\nexport interface BetaManagedAgentsImageBlock {\n  /**\n   * Union type for image source variants.\n   */\n  source:\n    | BetaManagedAgentsBase64ImageSource\n    | BetaManagedAgentsURLImageSource\n    | BetaManagedAgentsFileImageSource;\n\n  type: 'image';\n}\n\n/**\n * Authentication to an MCP server failed.\n */\nexport interface BetaManagedAgentsMCPAuthenticationFailedError {\n  /**\n   * Name of the MCP server that failed authentication.\n   */\n  mcp_server_name: string;\n\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'mcp_authentication_failed_error';\n}\n\n/**\n * Failed to connect to an MCP server.\n */\nexport interface BetaManagedAgentsMCPConnectionFailedError {\n  /**\n   * Name of the MCP server that failed to connect.\n   */\n  mcp_server_name: string;\n\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'mcp_connection_failed_error';\n}\n\n/**\n * The model is currently overloaded. Emitted after automatic retries are\n * exhausted.\n */\nexport interface BetaManagedAgentsModelOverloadedError {\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'model_overloaded_error';\n}\n\n/**\n * The model request was rate-limited.\n */\nexport interface BetaManagedAgentsModelRateLimitedError {\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'model_rate_limited_error';\n}\n\n/**\n * A model request failed for a reason other than overload or rate-limiting.\n */\nexport interface BetaManagedAgentsModelRequestFailedError {\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'model_request_failed_error';\n}\n\n/**\n * Plain text document content.\n */\nexport interface BetaManagedAgentsPlainTextDocumentSource {\n  /**\n   * The plain text content.\n   */\n  data: string;\n\n  /**\n   * MIME type of the text content. Must be \"text/plain\".\n   */\n  media_type: 'text/plain';\n\n  type: 'text';\n}\n\n/**\n * This turn is dead; queued inputs are flushed and the session returns to idle.\n * Client may send a new prompt.\n */\nexport interface BetaManagedAgentsRetryStatusExhausted {\n  type: 'exhausted';\n}\n\n/**\n * The server is retrying automatically. Client should wait; the same error type\n * may fire again as retrying, then once as exhausted when the retry budget runs\n * out.\n */\nexport interface BetaManagedAgentsRetryStatusRetrying {\n  type: 'retrying';\n}\n\n/**\n * The session encountered a terminal error and will transition to `terminated`\n * state.\n */\nexport interface BetaManagedAgentsRetryStatusTerminal {\n  type: 'terminal';\n}\n\n/**\n * Events that were successfully sent to the session.\n */\nexport interface BetaManagedAgentsSendSessionEvents {\n  /**\n   * Sent events\n   */\n  data?: Array<\n    | BetaManagedAgentsUserMessageEvent\n    | BetaManagedAgentsUserInterruptEvent\n    | BetaManagedAgentsUserToolConfirmationEvent\n    | BetaManagedAgentsUserCustomToolResultEvent\n  >;\n}\n\n/**\n * Emitted when a session has been deleted. Terminates any active event stream \u2014 no\n * further events will be emitted for this session.\n */\nexport interface BetaManagedAgentsSessionDeletedEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'session.deleted';\n}\n\n/**\n * The agent completed its turn naturally and is ready for the next user message.\n */\nexport interface BetaManagedAgentsSessionEndTurn {\n  type: 'end_turn';\n}\n\n/**\n * An error event indicating a problem occurred during session execution.\n */\nexport interface BetaManagedAgentsSessionErrorEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * An unknown or unexpected error occurred during session execution. A fallback\n   * variant; clients that don't recognize a new error code can match on\n   * `retry_status` and `message` alone.\n   */\n  error:\n    | BetaManagedAgentsUnknownError\n    | BetaManagedAgentsModelOverloadedError\n    | BetaManagedAgentsModelRateLimitedError\n    | BetaManagedAgentsModelRequestFailedError\n    | BetaManagedAgentsMCPConnectionFailedError\n    | BetaManagedAgentsMCPAuthenticationFailedError\n    | BetaManagedAgentsBillingError;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'session.error';\n}\n\n/**\n * Union type for all event types in a session.\n */\nexport type BetaManagedAgentsSessionEvent =\n  | BetaManagedAgentsUserMessageEvent\n  | BetaManagedAgentsUserInterruptEvent\n  | BetaManagedAgentsUserToolConfirmationEvent\n  | BetaManagedAgentsUserCustomToolResultEvent\n  | BetaManagedAgentsAgentCustomToolUseEvent\n  | BetaManagedAgentsAgentMessageEvent\n  | BetaManagedAgentsAgentThinkingEvent\n  | BetaManagedAgentsAgentMCPToolUseEvent\n  | BetaManagedAgentsAgentMCPToolResultEvent\n  | BetaManagedAgentsAgentToolUseEvent\n  | BetaManagedAgentsAgentToolResultEvent\n  | BetaManagedAgentsAgentThreadContextCompactedEvent\n  | BetaManagedAgentsSessionErrorEvent\n  | BetaManagedAgentsSessionStatusRescheduledEvent\n  | BetaManagedAgentsSessionStatusRunningEvent\n  | BetaManagedAgentsSessionStatusIdleEvent\n  | BetaManagedAgentsSessionStatusTerminatedEvent\n  | BetaManagedAgentsSpanModelRequestStartEvent\n  | BetaManagedAgentsSpanModelRequestEndEvent\n  | BetaManagedAgentsSessionDeletedEvent;\n\n/**\n * The agent is idle waiting on one or more blocking user-input events (tool\n * confirmation, custom tool result, etc.). Resolving all of them transitions the\n * session back to running.\n */\nexport interface BetaManagedAgentsSessionRequiresAction {\n  /**\n   * The ids of events the agent is blocked on. Resolving fewer than all re-emits\n   * `session.status_idle` with the remainder.\n   */\n  event_ids: Array<string>;\n\n  type: 'requires_action';\n}\n\n/**\n * The turn ended because the retry budget was exhausted (`max_iterations` hit or\n * an error escalated to `retry_status: 'exhausted'`).\n */\nexport interface BetaManagedAgentsSessionRetriesExhausted {\n  type: 'retries_exhausted';\n}\n\n/**\n * Indicates the agent has paused and is awaiting user input.\n */\nexport interface BetaManagedAgentsSessionStatusIdleEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  /**\n   * The agent completed its turn naturally and is ready for the next user message.\n   */\n  stop_reason:\n    | BetaManagedAgentsSessionEndTurn\n    | BetaManagedAgentsSessionRequiresAction\n    | BetaManagedAgentsSessionRetriesExhausted;\n\n  type: 'session.status_idle';\n}\n\n/**\n * Indicates the session is recovering from an error state and is rescheduled for\n * execution.\n */\nexport interface BetaManagedAgentsSessionStatusRescheduledEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'session.status_rescheduled';\n}\n\n/**\n * Indicates the session is actively running and the agent is working.\n */\nexport interface BetaManagedAgentsSessionStatusRunningEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'session.status_running';\n}\n\n/**\n * Indicates the session has terminated, either due to an error or completion.\n */\nexport interface BetaManagedAgentsSessionStatusTerminatedEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'session.status_terminated';\n}\n\n/**\n * Emitted when a model request completes.\n */\nexport interface BetaManagedAgentsSpanModelRequestEndEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Whether the model request resulted in an error.\n   */\n  is_error: boolean | null;\n\n  /**\n   * The id of the corresponding `span.model_request_start` event.\n   */\n  model_request_start_id: string;\n\n  /**\n   * Token usage for a single model request.\n   */\n  model_usage: BetaManagedAgentsSpanModelUsage;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'span.model_request_end';\n}\n\n/**\n * Emitted when a model request is initiated by the agent.\n */\nexport interface BetaManagedAgentsSpanModelRequestStartEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at: string;\n\n  type: 'span.model_request_start';\n}\n\n/**\n * Token usage for a single model request.\n */\nexport interface BetaManagedAgentsSpanModelUsage {\n  /**\n   * Tokens used to create prompt cache in this request.\n   */\n  cache_creation_input_tokens: number;\n\n  /**\n   * Tokens read from prompt cache in this request.\n   */\n  cache_read_input_tokens: number;\n\n  /**\n   * Input tokens consumed by this request.\n   */\n  input_tokens: number;\n\n  /**\n   * Output tokens generated by this request.\n   */\n  output_tokens: number;\n\n  /**\n   * Inference speed mode. `fast` provides significantly faster output token\n   * generation at premium pricing. Not all models support `fast`; invalid\n   * combinations are rejected at create time.\n   */\n  speed?: 'standard' | 'fast' | null;\n}\n\n/**\n * Server-sent event in the session stream.\n */\nexport type BetaManagedAgentsStreamSessionEvents =\n  | BetaManagedAgentsUserMessageEvent\n  | BetaManagedAgentsUserInterruptEvent\n  | BetaManagedAgentsUserToolConfirmationEvent\n  | BetaManagedAgentsUserCustomToolResultEvent\n  | BetaManagedAgentsAgentCustomToolUseEvent\n  | BetaManagedAgentsAgentMessageEvent\n  | BetaManagedAgentsAgentThinkingEvent\n  | BetaManagedAgentsAgentMCPToolUseEvent\n  | BetaManagedAgentsAgentMCPToolResultEvent\n  | BetaManagedAgentsAgentToolUseEvent\n  | BetaManagedAgentsAgentToolResultEvent\n  | BetaManagedAgentsAgentThreadContextCompactedEvent\n  | BetaManagedAgentsSessionErrorEvent\n  | BetaManagedAgentsSessionStatusRescheduledEvent\n  | BetaManagedAgentsSessionStatusRunningEvent\n  | BetaManagedAgentsSessionStatusIdleEvent\n  | BetaManagedAgentsSessionStatusTerminatedEvent\n  | BetaManagedAgentsSpanModelRequestStartEvent\n  | BetaManagedAgentsSpanModelRequestEndEvent\n  | BetaManagedAgentsSessionDeletedEvent;\n\n/**\n * Regular text content.\n */\nexport interface BetaManagedAgentsTextBlock {\n  /**\n   * The text content.\n   */\n  text: string;\n\n  type: 'text';\n}\n\n/**\n * An unknown or unexpected error occurred during session execution. A fallback\n * variant; clients that don't recognize a new error code can match on\n * `retry_status` and `message` alone.\n */\nexport interface BetaManagedAgentsUnknownError {\n  /**\n   * Human-readable error description.\n   */\n  message: string;\n\n  /**\n   * What the client should do next in response to this error.\n   */\n  retry_status:\n    | BetaManagedAgentsRetryStatusRetrying\n    | BetaManagedAgentsRetryStatusExhausted\n    | BetaManagedAgentsRetryStatusTerminal;\n\n  type: 'unknown_error';\n}\n\n/**\n * Document referenced by URL.\n */\nexport interface BetaManagedAgentsURLDocumentSource {\n  type: 'url';\n\n  /**\n   * URL of the document to fetch.\n   */\n  url: string;\n}\n\n/**\n * Image referenced by URL.\n */\nexport interface BetaManagedAgentsURLImageSource {\n  type: 'url';\n\n  /**\n   * URL of the image to fetch.\n   */\n  url: string;\n}\n\n/**\n * Event sent by the client providing the result of a custom tool execution.\n */\nexport interface BetaManagedAgentsUserCustomToolResultEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * The id of the `agent.custom_tool_use` event this result corresponds to, which\n   * can be found in the last `session.status_idle`\n   * [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)\n   * `stop_reason.event_ids` field.\n   */\n  custom_tool_use_id: string;\n\n  type: 'user.custom_tool_result';\n\n  /**\n   * The result content returned by the tool.\n   */\n  content?: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  /**\n   * Whether the tool execution resulted in an error.\n   */\n  is_error?: boolean | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at?: string | null;\n}\n\n/**\n * Parameters for providing the result of a custom tool execution.\n */\nexport interface BetaManagedAgentsUserCustomToolResultEventParams {\n  /**\n   * The id of the `agent.custom_tool_use` event this result corresponds to, which\n   * can be found in the last `session.status_idle`\n   * [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)\n   * `stop_reason.event_ids` field.\n   */\n  custom_tool_use_id: string;\n\n  type: 'user.custom_tool_result';\n\n  /**\n   * The result content returned by the tool.\n   */\n  content?: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  /**\n   * Whether the tool execution resulted in an error.\n   */\n  is_error?: boolean | null;\n}\n\n/**\n * An interrupt event that pauses agent execution and returns control to the user.\n */\nexport interface BetaManagedAgentsUserInterruptEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  type: 'user.interrupt';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at?: string | null;\n}\n\n/**\n * Parameters for sending an interrupt to pause the agent.\n */\nexport interface BetaManagedAgentsUserInterruptEventParams {\n  type: 'user.interrupt';\n}\n\n/**\n * A user message event in the session conversation.\n */\nexport interface BetaManagedAgentsUserMessageEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * Array of content blocks comprising the user message.\n   */\n  content: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  type: 'user.message';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at?: string | null;\n}\n\n/**\n * Parameters for sending a user message to the session.\n */\nexport interface BetaManagedAgentsUserMessageEventParams {\n  /**\n   * Array of content blocks for the user message.\n   */\n  content: Array<BetaManagedAgentsTextBlock | BetaManagedAgentsImageBlock | BetaManagedAgentsDocumentBlock>;\n\n  type: 'user.message';\n}\n\n/**\n * A tool confirmation event that approves or denies a pending tool execution.\n */\nexport interface BetaManagedAgentsUserToolConfirmationEvent {\n  /**\n   * Unique identifier for this event.\n   */\n  id: string;\n\n  /**\n   * UserToolConfirmationResult enum\n   */\n  result: 'allow' | 'deny';\n\n  /**\n   * The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result\n   * corresponds to, which can be found in the last `session.status_idle`\n   * [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)\n   * `stop_reason.event_ids` field.\n   */\n  tool_use_id: string;\n\n  type: 'user.tool_confirmation';\n\n  /**\n   * Optional message providing context for a 'deny' decision. Only allowed when\n   * result is 'deny'.\n   */\n  deny_message?: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  processed_at?: string | null;\n}\n\n/**\n * Parameters for confirming or denying a tool execution request.\n */\nexport interface BetaManagedAgentsUserToolConfirmationEventParams {\n  /**\n   * UserToolConfirmationResult enum\n   */\n  result: 'allow' | 'deny';\n\n  /**\n   * The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result\n   * corresponds to, which can be found in the last `session.status_idle`\n   * [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)\n   * `stop_reason.event_ids` field.\n   */\n  tool_use_id: string;\n\n  type: 'user.tool_confirmation';\n\n  /**\n   * Optional message providing context for a 'deny' decision. Only allowed when\n   * result is 'deny'.\n   */\n  deny_message?: string | null;\n}\n\nexport interface EventListParams extends PageCursorParams {\n  /**\n   * Query param: Sort direction for results, ordered by created_at. Defaults to asc\n   * (chronological).\n   */\n  order?: 'asc' | 'desc';\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EventSendParams {\n  /**\n   * Body param: Events to send to the `session`.\n   */\n  events: Array<BetaManagedAgentsEventParams>;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface EventStreamParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Events {\n  export {\n    type BetaManagedAgentsAgentCustomToolUseEvent as BetaManagedAgentsAgentCustomToolUseEvent,\n    type BetaManagedAgentsAgentMCPToolResultEvent as BetaManagedAgentsAgentMCPToolResultEvent,\n    type BetaManagedAgentsAgentMCPToolUseEvent as BetaManagedAgentsAgentMCPToolUseEvent,\n    type BetaManagedAgentsAgentMessageEvent as BetaManagedAgentsAgentMessageEvent,\n    type BetaManagedAgentsAgentThinkingEvent as BetaManagedAgentsAgentThinkingEvent,\n    type BetaManagedAgentsAgentThreadContextCompactedEvent as BetaManagedAgentsAgentThreadContextCompactedEvent,\n    type BetaManagedAgentsAgentToolResultEvent as BetaManagedAgentsAgentToolResultEvent,\n    type BetaManagedAgentsAgentToolUseEvent as BetaManagedAgentsAgentToolUseEvent,\n    type BetaManagedAgentsBase64DocumentSource as BetaManagedAgentsBase64DocumentSource,\n    type BetaManagedAgentsBase64ImageSource as BetaManagedAgentsBase64ImageSource,\n    type BetaManagedAgentsBillingError as BetaManagedAgentsBillingError,\n    type BetaManagedAgentsDocumentBlock as BetaManagedAgentsDocumentBlock,\n    type BetaManagedAgentsEventParams as BetaManagedAgentsEventParams,\n    type BetaManagedAgentsFileDocumentSource as BetaManagedAgentsFileDocumentSource,\n    type BetaManagedAgentsFileImageSource as BetaManagedAgentsFileImageSource,\n    type BetaManagedAgentsImageBlock as BetaManagedAgentsImageBlock,\n    type BetaManagedAgentsMCPAuthenticationFailedError as BetaManagedAgentsMCPAuthenticationFailedError,\n    type BetaManagedAgentsMCPConnectionFailedError as BetaManagedAgentsMCPConnectionFailedError,\n    type BetaManagedAgentsModelOverloadedError as BetaManagedAgentsModelOverloadedError,\n    type BetaManagedAgentsModelRateLimitedError as BetaManagedAgentsModelRateLimitedError,\n    type BetaManagedAgentsModelRequestFailedError as BetaManagedAgentsModelRequestFailedError,\n    type BetaManagedAgentsPlainTextDocumentSource as BetaManagedAgentsPlainTextDocumentSource,\n    type BetaManagedAgentsRetryStatusExhausted as BetaManagedAgentsRetryStatusExhausted,\n    type BetaManagedAgentsRetryStatusRetrying as BetaManagedAgentsRetryStatusRetrying,\n    type BetaManagedAgentsRetryStatusTerminal as BetaManagedAgentsRetryStatusTerminal,\n    type BetaManagedAgentsSendSessionEvents as BetaManagedAgentsSendSessionEvents,\n    type BetaManagedAgentsSessionDeletedEvent as BetaManagedAgentsSessionDeletedEvent,\n    type BetaManagedAgentsSessionEndTurn as BetaManagedAgentsSessionEndTurn,\n    type BetaManagedAgentsSessionErrorEvent as BetaManagedAgentsSessionErrorEvent,\n    type BetaManagedAgentsSessionEvent as BetaManagedAgentsSessionEvent,\n    type BetaManagedAgentsSessionRequiresAction as BetaManagedAgentsSessionRequiresAction,\n    type BetaManagedAgentsSessionRetriesExhausted as BetaManagedAgentsSessionRetriesExhausted,\n    type BetaManagedAgentsSessionStatusIdleEvent as BetaManagedAgentsSessionStatusIdleEvent,\n    type BetaManagedAgentsSessionStatusRescheduledEvent as BetaManagedAgentsSessionStatusRescheduledEvent,\n    type BetaManagedAgentsSessionStatusRunningEvent as BetaManagedAgentsSessionStatusRunningEvent,\n    type BetaManagedAgentsSessionStatusTerminatedEvent as BetaManagedAgentsSessionStatusTerminatedEvent,\n    type BetaManagedAgentsSpanModelRequestEndEvent as BetaManagedAgentsSpanModelRequestEndEvent,\n    type BetaManagedAgentsSpanModelRequestStartEvent as BetaManagedAgentsSpanModelRequestStartEvent,\n    type BetaManagedAgentsSpanModelUsage as BetaManagedAgentsSpanModelUsage,\n    type BetaManagedAgentsStreamSessionEvents as BetaManagedAgentsStreamSessionEvents,\n    type BetaManagedAgentsTextBlock as BetaManagedAgentsTextBlock,\n    type BetaManagedAgentsUnknownError as BetaManagedAgentsUnknownError,\n    type BetaManagedAgentsURLDocumentSource as BetaManagedAgentsURLDocumentSource,\n    type BetaManagedAgentsURLImageSource as BetaManagedAgentsURLImageSource,\n    type BetaManagedAgentsUserCustomToolResultEvent as BetaManagedAgentsUserCustomToolResultEvent,\n    type BetaManagedAgentsUserCustomToolResultEventParams as BetaManagedAgentsUserCustomToolResultEventParams,\n    type BetaManagedAgentsUserInterruptEvent as BetaManagedAgentsUserInterruptEvent,\n    type BetaManagedAgentsUserInterruptEventParams as BetaManagedAgentsUserInterruptEventParams,\n    type BetaManagedAgentsUserMessageEvent as BetaManagedAgentsUserMessageEvent,\n    type BetaManagedAgentsUserMessageEventParams as BetaManagedAgentsUserMessageEventParams,\n    type BetaManagedAgentsUserToolConfirmationEvent as BetaManagedAgentsUserToolConfirmationEvent,\n    type BetaManagedAgentsUserToolConfirmationEventParams as BetaManagedAgentsUserToolConfirmationEventParams,\n    type BetaManagedAgentsSessionEventsPageCursor as BetaManagedAgentsSessionEventsPageCursor,\n    type EventListParams as EventListParams,\n    type EventSendParams as EventSendParams,\n    type EventStreamParams as EventStreamParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as SessionsAPI from './sessions';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Resources extends APIResource {\n  /**\n   * Get Session Resource\n   *\n   * @example\n   * ```ts\n   * const resource =\n   *   await client.beta.sessions.resources.retrieve(\n   *     'sesrsc_011CZkZBJq5dWxk9fVLNcPht',\n   *     { session_id: 'sesn_011CZkZAtmR3yMPDzynEDxu7' },\n   *   );\n   * ```\n   */\n  retrieve(\n    resourceID: string,\n    params: ResourceRetrieveParams,\n    options?: RequestOptions,\n  ): APIPromise<ResourceRetrieveResponse> {\n    const { session_id, betas } = params;\n    return this._client.get(path`/v1/sessions/${session_id}/resources/${resourceID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update Session Resource\n   *\n   * @example\n   * ```ts\n   * const resource =\n   *   await client.beta.sessions.resources.update(\n   *     'sesrsc_011CZkZBJq5dWxk9fVLNcPht',\n   *     {\n   *       session_id: 'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *       authorization_token: 'ghp_exampletoken',\n   *     },\n   *   );\n   * ```\n   */\n  update(\n    resourceID: string,\n    params: ResourceUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<ResourceUpdateResponse> {\n    const { session_id, betas, ...body } = params;\n    return this._client.post(path`/v1/sessions/${session_id}/resources/${resourceID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Session Resources\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsSessionResource of client.beta.sessions.resources.list(\n   *   'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    sessionID: string,\n    params: ResourceListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsSessionResourcesPageCursor, BetaManagedAgentsSessionResource> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/sessions/${sessionID}/resources?beta=true`,\n      PageCursor<BetaManagedAgentsSessionResource>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * Delete Session Resource\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeleteSessionResource =\n   *   await client.beta.sessions.resources.delete(\n   *     'sesrsc_011CZkZBJq5dWxk9fVLNcPht',\n   *     { session_id: 'sesn_011CZkZAtmR3yMPDzynEDxu7' },\n   *   );\n   * ```\n   */\n  delete(\n    resourceID: string,\n    params: ResourceDeleteParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeleteSessionResource> {\n    const { session_id, betas } = params;\n    return this._client.delete(path`/v1/sessions/${session_id}/resources/${resourceID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Add Session Resource\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsFileResource =\n   *   await client.beta.sessions.resources.add(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *     {\n   *       file_id: 'file_011CNha8iCJcU1wXNR6q4V8w',\n   *       type: 'file',\n   *     },\n   *   );\n   * ```\n   */\n  add(\n    sessionID: string,\n    params: ResourceAddParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsFileResource> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/sessions/${sessionID}/resources?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsSessionResourcesPageCursor = PageCursor<BetaManagedAgentsSessionResource>;\n\n/**\n * Confirmation of resource deletion.\n */\nexport interface BetaManagedAgentsDeleteSessionResource {\n  id: string;\n\n  type: 'session_resource_deleted';\n}\n\nexport interface BetaManagedAgentsFileResource {\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  file_id: string;\n\n  mount_path: string;\n\n  type: 'file';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n}\n\nexport interface BetaManagedAgentsGitHubRepositoryResource {\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  mount_path: string;\n\n  type: 'github_repository';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  url: string;\n\n  checkout?: SessionsAPI.BetaManagedAgentsBranchCheckout | SessionsAPI.BetaManagedAgentsCommitCheckout | null;\n}\n\n/**\n * A memory store attached to an agent session.\n */\nexport interface BetaManagedAgentsMemoryStoreResource {\n  /**\n   * The memory store ID (memstore\\_...). Must belong to the caller's organization\n   * and workspace.\n   */\n  memory_store_id: string;\n\n  type: 'memory_store';\n\n  /**\n   * Access mode for an attached memory store.\n   */\n  access?: 'read_write' | 'read_only' | null;\n\n  /**\n   * Description of the memory store, snapshotted at attach time. Rendered into the\n   * agent's system prompt. Empty string when the store has no description.\n   */\n  description?: string;\n\n  /**\n   * Per-attachment guidance for the agent on how to use this store. Rendered into\n   * the memory section of the system prompt. Max 4096 chars.\n   */\n  instructions?: string | null;\n\n  /**\n   * Filesystem path where the store is mounted in the session container, e.g.\n   * /mnt/memory/user-preferences. Derived from the store's name. Output-only.\n   */\n  mount_path?: string | null;\n\n  /**\n   * Display name of the memory store, snapshotted at attach time. Later edits to the\n   * store's name do not propagate to this resource.\n   */\n  name?: string | null;\n}\n\n/**\n * A memory store attached to an agent session.\n */\nexport type BetaManagedAgentsSessionResource =\n  | BetaManagedAgentsGitHubRepositoryResource\n  | BetaManagedAgentsFileResource\n  | BetaManagedAgentsMemoryStoreResource;\n\n/**\n * The requested session resource.\n */\nexport type ResourceRetrieveResponse =\n  | BetaManagedAgentsGitHubRepositoryResource\n  | BetaManagedAgentsFileResource\n  | BetaManagedAgentsMemoryStoreResource;\n\n/**\n * The updated session resource.\n */\nexport type ResourceUpdateResponse =\n  | BetaManagedAgentsGitHubRepositoryResource\n  | BetaManagedAgentsFileResource\n  | BetaManagedAgentsMemoryStoreResource;\n\nexport interface ResourceRetrieveParams {\n  /**\n   * Path param: Path parameter session_id\n   */\n  session_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ResourceUpdateParams {\n  /**\n   * Path param: Path parameter session_id\n   */\n  session_id: string;\n\n  /**\n   * Body param: New authorization token for the resource. Currently only\n   * `github_repository` resources support token rotation.\n   */\n  authorization_token: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ResourceListParams extends PageCursorParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ResourceDeleteParams {\n  /**\n   * Path param: Path parameter session_id\n   */\n  session_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ResourceAddParams {\n  /**\n   * Body param: ID of a previously uploaded file.\n   */\n  file_id: string;\n\n  /**\n   * Body param\n   */\n  type: 'file';\n\n  /**\n   * Body param: Mount path in the container. Defaults to\n   * `/mnt/session/uploads/<file_id>`.\n   */\n  mount_path?: string | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Resources {\n  export {\n    type BetaManagedAgentsDeleteSessionResource as BetaManagedAgentsDeleteSessionResource,\n    type BetaManagedAgentsFileResource as BetaManagedAgentsFileResource,\n    type BetaManagedAgentsGitHubRepositoryResource as BetaManagedAgentsGitHubRepositoryResource,\n    type BetaManagedAgentsMemoryStoreResource as BetaManagedAgentsMemoryStoreResource,\n    type BetaManagedAgentsSessionResource as BetaManagedAgentsSessionResource,\n    type ResourceRetrieveResponse as ResourceRetrieveResponse,\n    type ResourceUpdateResponse as ResourceUpdateResponse,\n    type BetaManagedAgentsSessionResourcesPageCursor as BetaManagedAgentsSessionResourcesPageCursor,\n    type ResourceRetrieveParams as ResourceRetrieveParams,\n    type ResourceUpdateParams as ResourceUpdateParams,\n    type ResourceListParams as ResourceListParams,\n    type ResourceDeleteParams as ResourceDeleteParams,\n    type ResourceAddParams as ResourceAddParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as AgentsAPI from '../agents/agents';\nimport * as EventsAPI from './events';\nimport {\n  BetaManagedAgentsAgentCustomToolUseEvent,\n  BetaManagedAgentsAgentMCPToolResultEvent,\n  BetaManagedAgentsAgentMCPToolUseEvent,\n  BetaManagedAgentsAgentMessageEvent,\n  BetaManagedAgentsAgentThinkingEvent,\n  BetaManagedAgentsAgentThreadContextCompactedEvent,\n  BetaManagedAgentsAgentToolResultEvent,\n  BetaManagedAgentsAgentToolUseEvent,\n  BetaManagedAgentsBase64DocumentSource,\n  BetaManagedAgentsBase64ImageSource,\n  BetaManagedAgentsBillingError,\n  BetaManagedAgentsDocumentBlock,\n  BetaManagedAgentsEventParams,\n  BetaManagedAgentsFileDocumentSource,\n  BetaManagedAgentsFileImageSource,\n  BetaManagedAgentsImageBlock,\n  BetaManagedAgentsMCPAuthenticationFailedError,\n  BetaManagedAgentsMCPConnectionFailedError,\n  BetaManagedAgentsModelOverloadedError,\n  BetaManagedAgentsModelRateLimitedError,\n  BetaManagedAgentsModelRequestFailedError,\n  BetaManagedAgentsPlainTextDocumentSource,\n  BetaManagedAgentsRetryStatusExhausted,\n  BetaManagedAgentsRetryStatusRetrying,\n  BetaManagedAgentsRetryStatusTerminal,\n  BetaManagedAgentsSendSessionEvents,\n  BetaManagedAgentsSessionDeletedEvent,\n  BetaManagedAgentsSessionEndTurn,\n  BetaManagedAgentsSessionErrorEvent,\n  BetaManagedAgentsSessionEvent,\n  BetaManagedAgentsSessionEventsPageCursor,\n  BetaManagedAgentsSessionRequiresAction,\n  BetaManagedAgentsSessionRetriesExhausted,\n  BetaManagedAgentsSessionStatusIdleEvent,\n  BetaManagedAgentsSessionStatusRescheduledEvent,\n  BetaManagedAgentsSessionStatusRunningEvent,\n  BetaManagedAgentsSessionStatusTerminatedEvent,\n  BetaManagedAgentsSpanModelRequestEndEvent,\n  BetaManagedAgentsSpanModelRequestStartEvent,\n  BetaManagedAgentsSpanModelUsage,\n  BetaManagedAgentsStreamSessionEvents,\n  BetaManagedAgentsTextBlock,\n  BetaManagedAgentsURLDocumentSource,\n  BetaManagedAgentsURLImageSource,\n  BetaManagedAgentsUnknownError,\n  BetaManagedAgentsUserCustomToolResultEvent,\n  BetaManagedAgentsUserCustomToolResultEventParams,\n  BetaManagedAgentsUserInterruptEvent,\n  BetaManagedAgentsUserInterruptEventParams,\n  BetaManagedAgentsUserMessageEvent,\n  BetaManagedAgentsUserMessageEventParams,\n  BetaManagedAgentsUserToolConfirmationEvent,\n  BetaManagedAgentsUserToolConfirmationEventParams,\n  EventListParams,\n  EventSendParams,\n  EventStreamParams,\n  Events,\n} from './events';\nimport * as ResourcesAPI from './resources';\nimport {\n  BetaManagedAgentsDeleteSessionResource,\n  BetaManagedAgentsFileResource,\n  BetaManagedAgentsGitHubRepositoryResource,\n  BetaManagedAgentsMemoryStoreResource,\n  BetaManagedAgentsSessionResource,\n  BetaManagedAgentsSessionResourcesPageCursor,\n  ResourceAddParams,\n  ResourceDeleteParams,\n  ResourceListParams,\n  ResourceRetrieveParams,\n  ResourceRetrieveResponse,\n  ResourceUpdateParams,\n  ResourceUpdateResponse,\n  Resources,\n} from './resources';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Sessions extends APIResource {\n  events: EventsAPI.Events = new EventsAPI.Events(this._client);\n  resources: ResourcesAPI.Resources = new ResourcesAPI.Resources(this._client);\n\n  /**\n   * Create Session\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsSession =\n   *   await client.beta.sessions.create({\n   *     agent: 'agent_011CZkYpogX7uDKUyvBTophP',\n   *     environment_id: 'env_011CZkZ9X2dpNyB7HsEFoRfW',\n   *   });\n   * ```\n   */\n  create(params: SessionCreateParams, options?: RequestOptions): APIPromise<BetaManagedAgentsSession> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/sessions?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Get Session\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsSession =\n   *   await client.beta.sessions.retrieve(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *   );\n   * ```\n   */\n  retrieve(\n    sessionID: string,\n    params: SessionRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsSession> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/sessions/${sessionID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update Session\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsSession =\n   *   await client.beta.sessions.update(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *   );\n   * ```\n   */\n  update(\n    sessionID: string,\n    params: SessionUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsSession> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/sessions/${sessionID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Sessions\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsSession of client.beta.sessions.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: SessionListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsSessionsPageCursor, BetaManagedAgentsSession> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/sessions?beta=true', PageCursor<BetaManagedAgentsSession>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete Session\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeletedSession =\n   *   await client.beta.sessions.delete(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *   );\n   * ```\n   */\n  delete(\n    sessionID: string,\n    params: SessionDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeletedSession> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/sessions/${sessionID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Archive Session\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsSession =\n   *   await client.beta.sessions.archive(\n   *     'sesn_011CZkZAtmR3yMPDzynEDxu7',\n   *   );\n   * ```\n   */\n  archive(\n    sessionID: string,\n    params: SessionArchiveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsSession> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/sessions/${sessionID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsSessionsPageCursor = PageCursor<BetaManagedAgentsSession>;\n\n/**\n * Specification for an Agent. Provide a specific `version` or use the short-form\n * `agent=\"agent_id\"` for the most recent version\n */\nexport interface BetaManagedAgentsAgentParams {\n  /**\n   * The `agent` ID.\n   */\n  id: string;\n\n  type: 'agent';\n\n  /**\n   * The specific `agent` version to use. Omit to use the latest version. Must be at\n   * least 1 if specified.\n   */\n  version?: number;\n}\n\nexport interface BetaManagedAgentsBranchCheckout {\n  /**\n   * Branch name to check out.\n   */\n  name: string;\n\n  type: 'branch';\n}\n\n/**\n * Prompt-cache creation token usage broken down by cache lifetime.\n */\nexport interface BetaManagedAgentsCacheCreationUsage {\n  /**\n   * Tokens used to create 1-hour ephemeral cache entries.\n   */\n  ephemeral_1h_input_tokens?: number;\n\n  /**\n   * Tokens used to create 5-minute ephemeral cache entries.\n   */\n  ephemeral_5m_input_tokens?: number;\n}\n\nexport interface BetaManagedAgentsCommitCheckout {\n  /**\n   * Full commit SHA to check out.\n   */\n  sha: string;\n\n  type: 'commit';\n}\n\n/**\n * Confirmation that a `session` has been permanently deleted.\n */\nexport interface BetaManagedAgentsDeletedSession {\n  id: string;\n\n  type: 'session_deleted';\n}\n\n/**\n * Mount a file uploaded via the Files API into the session.\n */\nexport interface BetaManagedAgentsFileResourceParams {\n  /**\n   * ID of a previously uploaded file.\n   */\n  file_id: string;\n\n  type: 'file';\n\n  /**\n   * Mount path in the container. Defaults to `/mnt/session/uploads/<file_id>`.\n   */\n  mount_path?: string | null;\n}\n\n/**\n * Mount a GitHub repository into the session's container.\n */\nexport interface BetaManagedAgentsGitHubRepositoryResourceParams {\n  /**\n   * GitHub authorization token used to clone the repository.\n   */\n  authorization_token: string;\n\n  type: 'github_repository';\n\n  /**\n   * Github URL of the repository\n   */\n  url: string;\n\n  /**\n   * Branch or commit to check out. Defaults to the repository's default branch.\n   */\n  checkout?: BetaManagedAgentsBranchCheckout | BetaManagedAgentsCommitCheckout | null;\n\n  /**\n   * Mount path in the container. Defaults to `/workspace/<repo-name>`.\n   */\n  mount_path?: string | null;\n}\n\n/**\n * Parameters for attaching a memory store to an agent session.\n */\nexport interface BetaManagedAgentsMemoryStoreResourceParam {\n  /**\n   * The memory store ID (memstore\\_...). Must belong to the caller's organization\n   * and workspace.\n   */\n  memory_store_id: string;\n\n  type: 'memory_store';\n\n  /**\n   * Access mode for an attached memory store.\n   */\n  access?: 'read_write' | 'read_only' | null;\n\n  /**\n   * Per-attachment guidance for the agent on how to use this store. Rendered into\n   * the memory section of the system prompt. Max 4096 chars.\n   */\n  instructions?: string | null;\n}\n\n/**\n * A Managed Agents `session`.\n */\nexport interface BetaManagedAgentsSession {\n  id: string;\n\n  /**\n   * Resolved `agent` definition for a `session`. Snapshot of the `agent` at\n   * `session` creation time.\n   */\n  agent: BetaManagedAgentsSessionAgent;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  archived_at: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  environment_id: string;\n\n  metadata: { [key: string]: string };\n\n  resources: Array<ResourcesAPI.BetaManagedAgentsSessionResource>;\n\n  /**\n   * Timing statistics for a session.\n   */\n  stats: BetaManagedAgentsSessionStats;\n\n  /**\n   * SessionStatus enum\n   */\n  status: 'rescheduling' | 'running' | 'idle' | 'terminated';\n\n  title: string | null;\n\n  type: 'session';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  /**\n   * Cumulative token usage for a session across all turns.\n   */\n  usage: BetaManagedAgentsSessionUsage;\n\n  /**\n   * Vault IDs attached to the session at creation. Empty when no vaults were\n   * supplied.\n   */\n  vault_ids: Array<string>;\n}\n\n/**\n * Resolved `agent` definition for a `session`. Snapshot of the `agent` at\n * `session` creation time.\n */\nexport interface BetaManagedAgentsSessionAgent {\n  id: string;\n\n  description: string | null;\n\n  mcp_servers: Array<AgentsAPI.BetaManagedAgentsMCPServerURLDefinition>;\n\n  /**\n   * Model identifier and configuration.\n   */\n  model: AgentsAPI.BetaManagedAgentsModelConfig;\n\n  name: string;\n\n  skills: Array<AgentsAPI.BetaManagedAgentsAnthropicSkill | AgentsAPI.BetaManagedAgentsCustomSkill>;\n\n  system: string | null;\n\n  tools: Array<\n    | AgentsAPI.BetaManagedAgentsAgentToolset20260401\n    | AgentsAPI.BetaManagedAgentsMCPToolset\n    | AgentsAPI.BetaManagedAgentsCustomTool\n  >;\n\n  type: 'agent';\n\n  version: number;\n}\n\n/**\n * Timing statistics for a session.\n */\nexport interface BetaManagedAgentsSessionStats {\n  /**\n   * Cumulative time in seconds the session spent in running status. Excludes idle\n   * time.\n   */\n  active_seconds?: number;\n\n  /**\n   * Elapsed time since session creation in seconds. For terminated sessions, frozen\n   * at the final update.\n   */\n  duration_seconds?: number;\n}\n\n/**\n * Cumulative token usage for a session across all turns.\n */\nexport interface BetaManagedAgentsSessionUsage {\n  /**\n   * Prompt-cache creation token usage broken down by cache lifetime.\n   */\n  cache_creation?: BetaManagedAgentsCacheCreationUsage;\n\n  /**\n   * Total tokens read from prompt cache.\n   */\n  cache_read_input_tokens?: number;\n\n  /**\n   * Total input tokens consumed across all turns.\n   */\n  input_tokens?: number;\n\n  /**\n   * Total output tokens generated across all turns.\n   */\n  output_tokens?: number;\n}\n\nexport interface SessionCreateParams {\n  /**\n   * Body param: Agent identifier. Accepts the `agent` ID string, which pins the\n   * latest version for the session, or an `agent` object with both id and version\n   * specified.\n   */\n  agent: string | BetaManagedAgentsAgentParams;\n\n  /**\n   * Body param: ID of the `environment` defining the container configuration for\n   * this session.\n   */\n  environment_id: string;\n\n  /**\n   * Body param: Arbitrary key-value metadata attached to the session. Maximum 16\n   * pairs, keys up to 64 chars, values up to 512 chars.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Body param: Resources (e.g. repositories, files) to mount into the session's\n   * container.\n   */\n  resources?: Array<\n    | BetaManagedAgentsGitHubRepositoryResourceParams\n    | BetaManagedAgentsFileResourceParams\n    | BetaManagedAgentsMemoryStoreResourceParam\n  >;\n\n  /**\n   * Body param: Human-readable session title.\n   */\n  title?: string | null;\n\n  /**\n   * Body param: Vault IDs for stored credentials the agent can use during the\n   * session.\n   */\n  vault_ids?: Array<string>;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SessionRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SessionUpdateParams {\n  /**\n   * Body param: Metadata patch. Set a key to a string to upsert it, or to null to\n   * delete it. Omit the field to preserve.\n   */\n  metadata?: { [key: string]: string | null } | null;\n\n  /**\n   * Body param: Human-readable session title.\n   */\n  title?: string | null;\n\n  /**\n   * Body param: Vault IDs (`vlt_*`) to attach to the session. Not yet supported;\n   * requests setting this field are rejected. Reserved for future use.\n   */\n  vault_ids?: Array<string>;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SessionListParams extends PageCursorParams {\n  /**\n   * Query param: Filter sessions created with this agent ID.\n   */\n  agent_id?: string;\n\n  /**\n   * Query param: Filter by agent version. Only applies when agent_id is also set.\n   */\n  agent_version?: number;\n\n  /**\n   * Query param: Return sessions created after this time (exclusive).\n   */\n  'created_at[gt]'?: string;\n\n  /**\n   * Query param: Return sessions created at or after this time (inclusive).\n   */\n  'created_at[gte]'?: string;\n\n  /**\n   * Query param: Return sessions created before this time (exclusive).\n   */\n  'created_at[lt]'?: string;\n\n  /**\n   * Query param: Return sessions created at or before this time (inclusive).\n   */\n  'created_at[lte]'?: string;\n\n  /**\n   * Query param: When true, includes archived sessions. Default: false (exclude\n   * archived).\n   */\n  include_archived?: boolean;\n\n  /**\n   * Query param: Sort direction for results, ordered by created_at. Defaults to desc\n   * (newest first).\n   */\n  order?: 'asc' | 'desc';\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SessionDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SessionArchiveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nSessions.Events = Events;\nSessions.Resources = Resources;\n\nexport declare namespace Sessions {\n  export {\n    type BetaManagedAgentsAgentParams as BetaManagedAgentsAgentParams,\n    type BetaManagedAgentsBranchCheckout as BetaManagedAgentsBranchCheckout,\n    type BetaManagedAgentsCacheCreationUsage as BetaManagedAgentsCacheCreationUsage,\n    type BetaManagedAgentsCommitCheckout as BetaManagedAgentsCommitCheckout,\n    type BetaManagedAgentsDeletedSession as BetaManagedAgentsDeletedSession,\n    type BetaManagedAgentsFileResourceParams as BetaManagedAgentsFileResourceParams,\n    type BetaManagedAgentsGitHubRepositoryResourceParams as BetaManagedAgentsGitHubRepositoryResourceParams,\n    type BetaManagedAgentsMemoryStoreResourceParam as BetaManagedAgentsMemoryStoreResourceParam,\n    type BetaManagedAgentsSession as BetaManagedAgentsSession,\n    type BetaManagedAgentsSessionAgent as BetaManagedAgentsSessionAgent,\n    type BetaManagedAgentsSessionStats as BetaManagedAgentsSessionStats,\n    type BetaManagedAgentsSessionUsage as BetaManagedAgentsSessionUsage,\n    type BetaManagedAgentsSessionsPageCursor as BetaManagedAgentsSessionsPageCursor,\n    type SessionCreateParams as SessionCreateParams,\n    type SessionRetrieveParams as SessionRetrieveParams,\n    type SessionUpdateParams as SessionUpdateParams,\n    type SessionListParams as SessionListParams,\n    type SessionDeleteParams as SessionDeleteParams,\n    type SessionArchiveParams as SessionArchiveParams,\n  };\n\n  export {\n    Events as Events,\n    type BetaManagedAgentsAgentCustomToolUseEvent as BetaManagedAgentsAgentCustomToolUseEvent,\n    type BetaManagedAgentsAgentMCPToolResultEvent as BetaManagedAgentsAgentMCPToolResultEvent,\n    type BetaManagedAgentsAgentMCPToolUseEvent as BetaManagedAgentsAgentMCPToolUseEvent,\n    type BetaManagedAgentsAgentMessageEvent as BetaManagedAgentsAgentMessageEvent,\n    type BetaManagedAgentsAgentThinkingEvent as BetaManagedAgentsAgentThinkingEvent,\n    type BetaManagedAgentsAgentThreadContextCompactedEvent as BetaManagedAgentsAgentThreadContextCompactedEvent,\n    type BetaManagedAgentsAgentToolResultEvent as BetaManagedAgentsAgentToolResultEvent,\n    type BetaManagedAgentsAgentToolUseEvent as BetaManagedAgentsAgentToolUseEvent,\n    type BetaManagedAgentsBase64DocumentSource as BetaManagedAgentsBase64DocumentSource,\n    type BetaManagedAgentsBase64ImageSource as BetaManagedAgentsBase64ImageSource,\n    type BetaManagedAgentsBillingError as BetaManagedAgentsBillingError,\n    type BetaManagedAgentsDocumentBlock as BetaManagedAgentsDocumentBlock,\n    type BetaManagedAgentsEventParams as BetaManagedAgentsEventParams,\n    type BetaManagedAgentsFileDocumentSource as BetaManagedAgentsFileDocumentSource,\n    type BetaManagedAgentsFileImageSource as BetaManagedAgentsFileImageSource,\n    type BetaManagedAgentsImageBlock as BetaManagedAgentsImageBlock,\n    type BetaManagedAgentsMCPAuthenticationFailedError as BetaManagedAgentsMCPAuthenticationFailedError,\n    type BetaManagedAgentsMCPConnectionFailedError as BetaManagedAgentsMCPConnectionFailedError,\n    type BetaManagedAgentsModelOverloadedError as BetaManagedAgentsModelOverloadedError,\n    type BetaManagedAgentsModelRateLimitedError as BetaManagedAgentsModelRateLimitedError,\n    type BetaManagedAgentsModelRequestFailedError as BetaManagedAgentsModelRequestFailedError,\n    type BetaManagedAgentsPlainTextDocumentSource as BetaManagedAgentsPlainTextDocumentSource,\n    type BetaManagedAgentsRetryStatusExhausted as BetaManagedAgentsRetryStatusExhausted,\n    type BetaManagedAgentsRetryStatusRetrying as BetaManagedAgentsRetryStatusRetrying,\n    type BetaManagedAgentsRetryStatusTerminal as BetaManagedAgentsRetryStatusTerminal,\n    type BetaManagedAgentsSendSessionEvents as BetaManagedAgentsSendSessionEvents,\n    type BetaManagedAgentsSessionDeletedEvent as BetaManagedAgentsSessionDeletedEvent,\n    type BetaManagedAgentsSessionEndTurn as BetaManagedAgentsSessionEndTurn,\n    type BetaManagedAgentsSessionErrorEvent as BetaManagedAgentsSessionErrorEvent,\n    type BetaManagedAgentsSessionEvent as BetaManagedAgentsSessionEvent,\n    type BetaManagedAgentsSessionRequiresAction as BetaManagedAgentsSessionRequiresAction,\n    type BetaManagedAgentsSessionRetriesExhausted as BetaManagedAgentsSessionRetriesExhausted,\n    type BetaManagedAgentsSessionStatusIdleEvent as BetaManagedAgentsSessionStatusIdleEvent,\n    type BetaManagedAgentsSessionStatusRescheduledEvent as BetaManagedAgentsSessionStatusRescheduledEvent,\n    type BetaManagedAgentsSessionStatusRunningEvent as BetaManagedAgentsSessionStatusRunningEvent,\n    type BetaManagedAgentsSessionStatusTerminatedEvent as BetaManagedAgentsSessionStatusTerminatedEvent,\n    type BetaManagedAgentsSpanModelRequestEndEvent as BetaManagedAgentsSpanModelRequestEndEvent,\n    type BetaManagedAgentsSpanModelRequestStartEvent as BetaManagedAgentsSpanModelRequestStartEvent,\n    type BetaManagedAgentsSpanModelUsage as BetaManagedAgentsSpanModelUsage,\n    type BetaManagedAgentsStreamSessionEvents as BetaManagedAgentsStreamSessionEvents,\n    type BetaManagedAgentsTextBlock as BetaManagedAgentsTextBlock,\n    type BetaManagedAgentsUnknownError as BetaManagedAgentsUnknownError,\n    type BetaManagedAgentsURLDocumentSource as BetaManagedAgentsURLDocumentSource,\n    type BetaManagedAgentsURLImageSource as BetaManagedAgentsURLImageSource,\n    type BetaManagedAgentsUserCustomToolResultEvent as BetaManagedAgentsUserCustomToolResultEvent,\n    type BetaManagedAgentsUserCustomToolResultEventParams as BetaManagedAgentsUserCustomToolResultEventParams,\n    type BetaManagedAgentsUserInterruptEvent as BetaManagedAgentsUserInterruptEvent,\n    type BetaManagedAgentsUserInterruptEventParams as BetaManagedAgentsUserInterruptEventParams,\n    type BetaManagedAgentsUserMessageEvent as BetaManagedAgentsUserMessageEvent,\n    type BetaManagedAgentsUserMessageEventParams as BetaManagedAgentsUserMessageEventParams,\n    type BetaManagedAgentsUserToolConfirmationEvent as BetaManagedAgentsUserToolConfirmationEvent,\n    type BetaManagedAgentsUserToolConfirmationEventParams as BetaManagedAgentsUserToolConfirmationEventParams,\n    type BetaManagedAgentsSessionEventsPageCursor as BetaManagedAgentsSessionEventsPageCursor,\n    type EventListParams as EventListParams,\n    type EventSendParams as EventSendParams,\n    type EventStreamParams as EventStreamParams,\n  };\n\n  export {\n    Resources as Resources,\n    type BetaManagedAgentsDeleteSessionResource as BetaManagedAgentsDeleteSessionResource,\n    type BetaManagedAgentsFileResource as BetaManagedAgentsFileResource,\n    type BetaManagedAgentsGitHubRepositoryResource as BetaManagedAgentsGitHubRepositoryResource,\n    type BetaManagedAgentsMemoryStoreResource as BetaManagedAgentsMemoryStoreResource,\n    type BetaManagedAgentsSessionResource as BetaManagedAgentsSessionResource,\n    type ResourceRetrieveResponse as ResourceRetrieveResponse,\n    type ResourceUpdateResponse as ResourceUpdateResponse,\n    type BetaManagedAgentsSessionResourcesPageCursor as BetaManagedAgentsSessionResourcesPageCursor,\n    type ResourceRetrieveParams as ResourceRetrieveParams,\n    type ResourceUpdateParams as ResourceUpdateParams,\n    type ResourceListParams as ResourceListParams,\n    type ResourceDeleteParams as ResourceDeleteParams,\n    type ResourceAddParams as ResourceAddParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { type Uploadable } from '../../../core/uploads';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { multipartFormRequestOptions } from '../../../internal/uploads';\nimport { path } from '../../../internal/utils/path';\n\nexport class Versions extends APIResource {\n  /**\n   * Create Skill Version\n   *\n   * @example\n   * ```ts\n   * const version = await client.beta.skills.versions.create(\n   *   'skill_id',\n   * );\n   * ```\n   */\n  create(\n    skillID: string,\n    params: VersionCreateParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<VersionCreateResponse> {\n    const { betas, ...body } = params ?? {};\n    return this._client.post(\n      path`/v1/skills/${skillID}/versions?beta=true`,\n      multipartFormRequestOptions(\n        {\n          body,\n          ...options,\n          headers: buildHeaders([\n            { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n            options?.headers,\n          ]),\n        },\n        this._client,\n      ),\n    );\n  }\n\n  /**\n   * Get Skill Version\n   *\n   * @example\n   * ```ts\n   * const version = await client.beta.skills.versions.retrieve(\n   *   'version',\n   *   { skill_id: 'skill_id' },\n   * );\n   * ```\n   */\n  retrieve(\n    version: string,\n    params: VersionRetrieveParams,\n    options?: RequestOptions,\n  ): APIPromise<VersionRetrieveResponse> {\n    const { skill_id, betas } = params;\n    return this._client.get(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Skill Versions\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const versionListResponse of client.beta.skills.versions.list(\n   *   'skill_id',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    skillID: string,\n    params: VersionListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<VersionListResponsesPageCursor, VersionListResponse> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/skills/${skillID}/versions?beta=true`,\n      PageCursor<VersionListResponse>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * Delete Skill Version\n   *\n   * @example\n   * ```ts\n   * const version = await client.beta.skills.versions.delete(\n   *   'version',\n   *   { skill_id: 'skill_id' },\n   * );\n   * ```\n   */\n  delete(\n    version: string,\n    params: VersionDeleteParams,\n    options?: RequestOptions,\n  ): APIPromise<VersionDeleteResponse> {\n    const { skill_id, betas } = params;\n    return this._client.delete(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type VersionListResponsesPageCursor = PageCursor<VersionListResponse>;\n\nexport interface VersionCreateResponse {\n  /**\n   * Unique identifier for the skill version.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill version was created.\n   */\n  created_at: string;\n\n  /**\n   * Description of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  description: string;\n\n  /**\n   * Directory name of the skill version.\n   *\n   * This is the top-level directory name that was extracted from the uploaded files.\n   */\n  directory: string;\n\n  /**\n   * Human-readable name of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  name: string;\n\n  /**\n   * Identifier for the skill that this version belongs to.\n   */\n  skill_id: string;\n\n  /**\n   * Object type.\n   *\n   * For Skill Versions, this is always `\"skill_version\"`.\n   */\n  type: string;\n\n  /**\n   * Version identifier for the skill.\n   *\n   * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n   */\n  version: string;\n}\n\nexport interface VersionRetrieveResponse {\n  /**\n   * Unique identifier for the skill version.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill version was created.\n   */\n  created_at: string;\n\n  /**\n   * Description of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  description: string;\n\n  /**\n   * Directory name of the skill version.\n   *\n   * This is the top-level directory name that was extracted from the uploaded files.\n   */\n  directory: string;\n\n  /**\n   * Human-readable name of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  name: string;\n\n  /**\n   * Identifier for the skill that this version belongs to.\n   */\n  skill_id: string;\n\n  /**\n   * Object type.\n   *\n   * For Skill Versions, this is always `\"skill_version\"`.\n   */\n  type: string;\n\n  /**\n   * Version identifier for the skill.\n   *\n   * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n   */\n  version: string;\n}\n\nexport interface VersionListResponse {\n  /**\n   * Unique identifier for the skill version.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill version was created.\n   */\n  created_at: string;\n\n  /**\n   * Description of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  description: string;\n\n  /**\n   * Directory name of the skill version.\n   *\n   * This is the top-level directory name that was extracted from the uploaded files.\n   */\n  directory: string;\n\n  /**\n   * Human-readable name of the skill version.\n   *\n   * This is extracted from the SKILL.md file in the skill upload.\n   */\n  name: string;\n\n  /**\n   * Identifier for the skill that this version belongs to.\n   */\n  skill_id: string;\n\n  /**\n   * Object type.\n   *\n   * For Skill Versions, this is always `\"skill_version\"`.\n   */\n  type: string;\n\n  /**\n   * Version identifier for the skill.\n   *\n   * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n   */\n  version: string;\n}\n\nexport interface VersionDeleteResponse {\n  /**\n   * Version identifier for the skill.\n   *\n   * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n   */\n  id: string;\n\n  /**\n   * Deleted object type.\n   *\n   * For Skill Versions, this is always `\"skill_version_deleted\"`.\n   */\n  type: string;\n}\n\nexport interface VersionCreateParams {\n  /**\n   * Body param: Files to upload for the skill.\n   *\n   * All files must be in the same top-level directory and must include a SKILL.md\n   * file at the root of that directory.\n   */\n  files?: Array<Uploadable> | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionRetrieveParams {\n  /**\n   * Path param: Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  skill_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionListParams extends PageCursorParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionDeleteParams {\n  /**\n   * Path param: Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  skill_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Versions {\n  export {\n    type VersionCreateResponse as VersionCreateResponse,\n    type VersionRetrieveResponse as VersionRetrieveResponse,\n    type VersionListResponse as VersionListResponse,\n    type VersionDeleteResponse as VersionDeleteResponse,\n    type VersionListResponsesPageCursor as VersionListResponsesPageCursor,\n    type VersionCreateParams as VersionCreateParams,\n    type VersionRetrieveParams as VersionRetrieveParams,\n    type VersionListParams as VersionListParams,\n    type VersionDeleteParams as VersionDeleteParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as VersionsAPI from './versions';\nimport {\n  VersionCreateParams,\n  VersionCreateResponse,\n  VersionDeleteParams,\n  VersionDeleteResponse,\n  VersionListParams,\n  VersionListResponse,\n  VersionListResponsesPageCursor,\n  VersionRetrieveParams,\n  VersionRetrieveResponse,\n  Versions,\n} from './versions';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { type Uploadable } from '../../../core/uploads';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { multipartFormRequestOptions } from '../../../internal/uploads';\nimport { path } from '../../../internal/utils/path';\n\nexport class Skills extends APIResource {\n  versions: VersionsAPI.Versions = new VersionsAPI.Versions(this._client);\n\n  /**\n   * Create Skill\n   *\n   * @example\n   * ```ts\n   * const skill = await client.beta.skills.create();\n   * ```\n   */\n  create(\n    params: SkillCreateParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<SkillCreateResponse> {\n    const { betas, ...body } = params ?? {};\n    return this._client.post(\n      '/v1/skills?beta=true',\n      multipartFormRequestOptions(\n        {\n          body,\n          ...options,\n          headers: buildHeaders([\n            { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n            options?.headers,\n          ]),\n        },\n        this._client,\n        false,\n      ),\n    );\n  }\n\n  /**\n   * Get Skill\n   *\n   * @example\n   * ```ts\n   * const skill = await client.beta.skills.retrieve('skill_id');\n   * ```\n   */\n  retrieve(\n    skillID: string,\n    params: SkillRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<SkillRetrieveResponse> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/skills/${skillID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Skills\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const skillListResponse of client.beta.skills.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: SkillListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<SkillListResponsesPageCursor, SkillListResponse> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/skills?beta=true', PageCursor<SkillListResponse>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete Skill\n   *\n   * @example\n   * ```ts\n   * const skill = await client.beta.skills.delete('skill_id');\n   * ```\n   */\n  delete(\n    skillID: string,\n    params: SkillDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<SkillDeleteResponse> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/skills/${skillID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type SkillListResponsesPageCursor = PageCursor<SkillListResponse>;\n\nexport interface SkillCreateResponse {\n  /**\n   * Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was created.\n   */\n  created_at: string;\n\n  /**\n   * Display title for the skill.\n   *\n   * This is a human-readable label that is not included in the prompt sent to the\n   * model.\n   */\n  display_title: string | null;\n\n  /**\n   * The latest version identifier for the skill.\n   *\n   * This represents the most recent version of the skill that has been created.\n   */\n  latest_version: string | null;\n\n  /**\n   * Source of the skill.\n   *\n   * This may be one of the following values:\n   *\n   * - `\"custom\"`: the skill was created by a user\n   * - `\"anthropic\"`: the skill was created by Anthropic\n   */\n  source: string;\n\n  /**\n   * Object type.\n   *\n   * For Skills, this is always `\"skill\"`.\n   */\n  type: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was last updated.\n   */\n  updated_at: string;\n}\n\nexport interface SkillRetrieveResponse {\n  /**\n   * Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was created.\n   */\n  created_at: string;\n\n  /**\n   * Display title for the skill.\n   *\n   * This is a human-readable label that is not included in the prompt sent to the\n   * model.\n   */\n  display_title: string | null;\n\n  /**\n   * The latest version identifier for the skill.\n   *\n   * This represents the most recent version of the skill that has been created.\n   */\n  latest_version: string | null;\n\n  /**\n   * Source of the skill.\n   *\n   * This may be one of the following values:\n   *\n   * - `\"custom\"`: the skill was created by a user\n   * - `\"anthropic\"`: the skill was created by Anthropic\n   */\n  source: string;\n\n  /**\n   * Object type.\n   *\n   * For Skills, this is always `\"skill\"`.\n   */\n  type: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was last updated.\n   */\n  updated_at: string;\n}\n\nexport interface SkillListResponse {\n  /**\n   * Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was created.\n   */\n  created_at: string;\n\n  /**\n   * Display title for the skill.\n   *\n   * This is a human-readable label that is not included in the prompt sent to the\n   * model.\n   */\n  display_title: string | null;\n\n  /**\n   * The latest version identifier for the skill.\n   *\n   * This represents the most recent version of the skill that has been created.\n   */\n  latest_version: string | null;\n\n  /**\n   * Source of the skill.\n   *\n   * This may be one of the following values:\n   *\n   * - `\"custom\"`: the skill was created by a user\n   * - `\"anthropic\"`: the skill was created by Anthropic\n   */\n  source: string;\n\n  /**\n   * Object type.\n   *\n   * For Skills, this is always `\"skill\"`.\n   */\n  type: string;\n\n  /**\n   * ISO 8601 timestamp of when the skill was last updated.\n   */\n  updated_at: string;\n}\n\nexport interface SkillDeleteResponse {\n  /**\n   * Unique identifier for the skill.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * Deleted object type.\n   *\n   * For Skills, this is always `\"skill_deleted\"`.\n   */\n  type: string;\n}\n\nexport interface SkillCreateParams {\n  /**\n   * Body param: Display title for the skill.\n   *\n   * This is a human-readable label that is not included in the prompt sent to the\n   * model.\n   */\n  display_title?: string | null;\n\n  /**\n   * Body param: Files to upload for the skill.\n   *\n   * All files must be in the same top-level directory and must include a SKILL.md\n   * file at the root of that directory.\n   */\n  files?: Array<Uploadable> | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillListParams extends PageCursorParams {\n  /**\n   * Query param: Filter skills by source.\n   *\n   * If provided, only skills from the specified source will be returned:\n   *\n   * - `\"custom\"`: only return user-created skills\n   * - `\"anthropic\"`: only return Anthropic-created skills\n   */\n  source?: string | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nSkills.Versions = Versions;\n\nexport declare namespace Skills {\n  export {\n    type SkillCreateResponse as SkillCreateResponse,\n    type SkillRetrieveResponse as SkillRetrieveResponse,\n    type SkillListResponse as SkillListResponse,\n    type SkillDeleteResponse as SkillDeleteResponse,\n    type SkillListResponsesPageCursor as SkillListResponsesPageCursor,\n    type SkillCreateParams as SkillCreateParams,\n    type SkillRetrieveParams as SkillRetrieveParams,\n    type SkillListParams as SkillListParams,\n    type SkillDeleteParams as SkillDeleteParams,\n  };\n\n  export {\n    Versions as Versions,\n    type VersionCreateResponse as VersionCreateResponse,\n    type VersionRetrieveResponse as VersionRetrieveResponse,\n    type VersionListResponse as VersionListResponse,\n    type VersionDeleteResponse as VersionDeleteResponse,\n    type VersionListResponsesPageCursor as VersionListResponsesPageCursor,\n    type VersionCreateParams as VersionCreateParams,\n    type VersionRetrieveParams as VersionRetrieveParams,\n    type VersionListParams as VersionListParams,\n    type VersionDeleteParams as VersionDeleteParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Credentials extends APIResource {\n  /**\n   * Create Credential\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsCredential =\n   *   await client.beta.vaults.credentials.create(\n   *     'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   *     {\n   *       auth: {\n   *         token: 'bearer_exampletoken',\n   *         mcp_server_url:\n   *           'https://example-server.modelcontextprotocol.io/sse',\n   *         type: 'static_bearer',\n   *       },\n   *     },\n   *   );\n   * ```\n   */\n  create(\n    vaultID: string,\n    params: CredentialCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsCredential> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/vaults/${vaultID}/credentials?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Get Credential\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsCredential =\n   *   await client.beta.vaults.credentials.retrieve(\n   *     'vcrd_011CZkZEMt8gZan2iYOQfSkw',\n   *     { vault_id: 'vlt_011CZkZDLs7fYzm1hXNPeRjv' },\n   *   );\n   * ```\n   */\n  retrieve(\n    credentialID: string,\n    params: CredentialRetrieveParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsCredential> {\n    const { vault_id, betas } = params;\n    return this._client.get(path`/v1/vaults/${vault_id}/credentials/${credentialID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update Credential\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsCredential =\n   *   await client.beta.vaults.credentials.update(\n   *     'vcrd_011CZkZEMt8gZan2iYOQfSkw',\n   *     { vault_id: 'vlt_011CZkZDLs7fYzm1hXNPeRjv' },\n   *   );\n   * ```\n   */\n  update(\n    credentialID: string,\n    params: CredentialUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsCredential> {\n    const { vault_id, betas, ...body } = params;\n    return this._client.post(path`/v1/vaults/${vault_id}/credentials/${credentialID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Credentials\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsCredential of client.beta.vaults.credentials.list(\n   *   'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   * )) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    vaultID: string,\n    params: CredentialListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsCredentialsPageCursor, BetaManagedAgentsCredential> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList(\n      path`/v1/vaults/${vaultID}/credentials?beta=true`,\n      PageCursor<BetaManagedAgentsCredential>,\n      {\n        query,\n        ...options,\n        headers: buildHeaders([\n          { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n          options?.headers,\n        ]),\n      },\n    );\n  }\n\n  /**\n   * Delete Credential\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeletedCredential =\n   *   await client.beta.vaults.credentials.delete(\n   *     'vcrd_011CZkZEMt8gZan2iYOQfSkw',\n   *     { vault_id: 'vlt_011CZkZDLs7fYzm1hXNPeRjv' },\n   *   );\n   * ```\n   */\n  delete(\n    credentialID: string,\n    params: CredentialDeleteParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeletedCredential> {\n    const { vault_id, betas } = params;\n    return this._client.delete(path`/v1/vaults/${vault_id}/credentials/${credentialID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Archive Credential\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsCredential =\n   *   await client.beta.vaults.credentials.archive(\n   *     'vcrd_011CZkZEMt8gZan2iYOQfSkw',\n   *     { vault_id: 'vlt_011CZkZDLs7fYzm1hXNPeRjv' },\n   *   );\n   * ```\n   */\n  archive(\n    credentialID: string,\n    params: CredentialArchiveParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsCredential> {\n    const { vault_id, betas } = params;\n    return this._client.post(path`/v1/vaults/${vault_id}/credentials/${credentialID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsCredentialsPageCursor = PageCursor<BetaManagedAgentsCredential>;\n\n/**\n * A credential stored in a vault. Sensitive fields are never returned in\n * responses.\n */\nexport interface BetaManagedAgentsCredential {\n  /**\n   * Unique identifier for the credential.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  archived_at: string | null;\n\n  /**\n   * Authentication details for a credential.\n   */\n  auth: BetaManagedAgentsMCPOAuthAuthResponse | BetaManagedAgentsStaticBearerAuthResponse;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  /**\n   * Arbitrary key-value metadata attached to the credential.\n   */\n  metadata: { [key: string]: string };\n\n  type: 'vault_credential';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n\n  /**\n   * Identifier of the vault this credential belongs to.\n   */\n  vault_id: string;\n\n  /**\n   * Human-readable name for the credential.\n   */\n  display_name?: string | null;\n}\n\n/**\n * Confirmation of a deleted credential.\n */\nexport interface BetaManagedAgentsDeletedCredential {\n  /**\n   * Unique identifier of the deleted credential.\n   */\n  id: string;\n\n  type: 'vault_credential_deleted';\n}\n\n/**\n * OAuth credential details for an MCP server.\n */\nexport interface BetaManagedAgentsMCPOAuthAuthResponse {\n  /**\n   * URL of the MCP server this credential authenticates against.\n   */\n  mcp_server_url: string;\n\n  type: 'mcp_oauth';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  expires_at?: string | null;\n\n  /**\n   * OAuth refresh token configuration returned in credential responses.\n   */\n  refresh?: BetaManagedAgentsMCPOAuthRefreshResponse | null;\n}\n\n/**\n * Parameters for creating an MCP OAuth credential.\n */\nexport interface BetaManagedAgentsMCPOAuthCreateParams {\n  /**\n   * OAuth access token.\n   */\n  access_token: string;\n\n  /**\n   * URL of the MCP server this credential authenticates against.\n   */\n  mcp_server_url: string;\n\n  type: 'mcp_oauth';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  expires_at?: string | null;\n\n  /**\n   * OAuth refresh token parameters for creating a credential with refresh support.\n   */\n  refresh?: BetaManagedAgentsMCPOAuthRefreshParams | null;\n}\n\n/**\n * OAuth refresh token parameters for creating a credential with refresh support.\n */\nexport interface BetaManagedAgentsMCPOAuthRefreshParams {\n  /**\n   * OAuth client ID.\n   */\n  client_id: string;\n\n  /**\n   * OAuth refresh token.\n   */\n  refresh_token: string;\n\n  /**\n   * Token endpoint URL used to refresh the access token.\n   */\n  token_endpoint: string;\n\n  /**\n   * Token endpoint requires no client authentication.\n   */\n  token_endpoint_auth:\n    | BetaManagedAgentsTokenEndpointAuthNoneParam\n    | BetaManagedAgentsTokenEndpointAuthBasicParam\n    | BetaManagedAgentsTokenEndpointAuthPostParam;\n\n  /**\n   * OAuth resource indicator.\n   */\n  resource?: string | null;\n\n  /**\n   * OAuth scope for the refresh request.\n   */\n  scope?: string | null;\n}\n\n/**\n * OAuth refresh token configuration returned in credential responses.\n */\nexport interface BetaManagedAgentsMCPOAuthRefreshResponse {\n  /**\n   * OAuth client ID.\n   */\n  client_id: string;\n\n  /**\n   * Token endpoint URL used to refresh the access token.\n   */\n  token_endpoint: string;\n\n  /**\n   * Token endpoint requires no client authentication.\n   */\n  token_endpoint_auth:\n    | BetaManagedAgentsTokenEndpointAuthNoneResponse\n    | BetaManagedAgentsTokenEndpointAuthBasicResponse\n    | BetaManagedAgentsTokenEndpointAuthPostResponse;\n\n  /**\n   * OAuth resource indicator.\n   */\n  resource?: string | null;\n\n  /**\n   * OAuth scope for the refresh request.\n   */\n  scope?: string | null;\n}\n\n/**\n * Parameters for updating OAuth refresh token configuration.\n */\nexport interface BetaManagedAgentsMCPOAuthRefreshUpdateParams {\n  /**\n   * Updated OAuth refresh token.\n   */\n  refresh_token?: string | null;\n\n  /**\n   * Updated OAuth scope for the refresh request.\n   */\n  scope?: string | null;\n\n  /**\n   * Updated HTTP Basic authentication parameters for the token endpoint.\n   */\n  token_endpoint_auth?:\n    | BetaManagedAgentsTokenEndpointAuthBasicUpdateParam\n    | BetaManagedAgentsTokenEndpointAuthPostUpdateParam;\n}\n\n/**\n * Parameters for updating an MCP OAuth credential. The `mcp_server_url` is\n * immutable.\n */\nexport interface BetaManagedAgentsMCPOAuthUpdateParams {\n  type: 'mcp_oauth';\n\n  /**\n   * Updated OAuth access token.\n   */\n  access_token?: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  expires_at?: string | null;\n\n  /**\n   * Parameters for updating OAuth refresh token configuration.\n   */\n  refresh?: BetaManagedAgentsMCPOAuthRefreshUpdateParams | null;\n}\n\n/**\n * Static bearer token credential details for an MCP server.\n */\nexport interface BetaManagedAgentsStaticBearerAuthResponse {\n  /**\n   * URL of the MCP server this credential authenticates against.\n   */\n  mcp_server_url: string;\n\n  type: 'static_bearer';\n}\n\n/**\n * Parameters for creating a static bearer token credential.\n */\nexport interface BetaManagedAgentsStaticBearerCreateParams {\n  /**\n   * Static bearer token value.\n   */\n  token: string;\n\n  /**\n   * URL of the MCP server this credential authenticates against.\n   */\n  mcp_server_url: string;\n\n  type: 'static_bearer';\n}\n\n/**\n * Parameters for updating a static bearer token credential. The `mcp_server_url`\n * is immutable.\n */\nexport interface BetaManagedAgentsStaticBearerUpdateParams {\n  type: 'static_bearer';\n\n  /**\n   * Updated static bearer token value.\n   */\n  token?: string | null;\n}\n\n/**\n * Token endpoint uses HTTP Basic authentication with client credentials.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthBasicParam {\n  /**\n   * OAuth client secret.\n   */\n  client_secret: string;\n\n  type: 'client_secret_basic';\n}\n\n/**\n * Token endpoint uses HTTP Basic authentication with client credentials.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthBasicResponse {\n  type: 'client_secret_basic';\n}\n\n/**\n * Updated HTTP Basic authentication parameters for the token endpoint.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthBasicUpdateParam {\n  type: 'client_secret_basic';\n\n  /**\n   * Updated OAuth client secret.\n   */\n  client_secret?: string | null;\n}\n\n/**\n * Token endpoint requires no client authentication.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthNoneParam {\n  type: 'none';\n}\n\n/**\n * Token endpoint requires no client authentication.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthNoneResponse {\n  type: 'none';\n}\n\n/**\n * Token endpoint uses POST body authentication with client credentials.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthPostParam {\n  /**\n   * OAuth client secret.\n   */\n  client_secret: string;\n\n  type: 'client_secret_post';\n}\n\n/**\n * Token endpoint uses POST body authentication with client credentials.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthPostResponse {\n  type: 'client_secret_post';\n}\n\n/**\n * Updated POST body authentication parameters for the token endpoint.\n */\nexport interface BetaManagedAgentsTokenEndpointAuthPostUpdateParam {\n  type: 'client_secret_post';\n\n  /**\n   * Updated OAuth client secret.\n   */\n  client_secret?: string | null;\n}\n\nexport interface CredentialCreateParams {\n  /**\n   * Body param: Authentication details for creating a credential.\n   */\n  auth: BetaManagedAgentsMCPOAuthCreateParams | BetaManagedAgentsStaticBearerCreateParams;\n\n  /**\n   * Body param: Human-readable name for the credential. Up to 255 characters.\n   */\n  display_name?: string | null;\n\n  /**\n   * Body param: Arbitrary key-value metadata to attach to the credential. Maximum 16\n   * pairs, keys up to 64 chars, values up to 512 chars.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface CredentialRetrieveParams {\n  /**\n   * Path param: Path parameter vault_id\n   */\n  vault_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface CredentialUpdateParams {\n  /**\n   * Path param: Path parameter vault_id\n   */\n  vault_id: string;\n\n  /**\n   * Body param: Updated authentication details for a credential.\n   */\n  auth?: BetaManagedAgentsMCPOAuthUpdateParams | BetaManagedAgentsStaticBearerUpdateParams;\n\n  /**\n   * Body param: Updated human-readable name for the credential. 1-255 characters.\n   */\n  display_name?: string | null;\n\n  /**\n   * Body param: Metadata patch. Set a key to a string to upsert it, or to null to\n   * delete it. Omitted keys are preserved.\n   */\n  metadata?: { [key: string]: string | null } | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface CredentialListParams extends PageCursorParams {\n  /**\n   * Query param: Whether to include archived credentials in the results.\n   */\n  include_archived?: boolean;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface CredentialDeleteParams {\n  /**\n   * Path param: Path parameter vault_id\n   */\n  vault_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface CredentialArchiveParams {\n  /**\n   * Path param: Path parameter vault_id\n   */\n  vault_id: string;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Credentials {\n  export {\n    type BetaManagedAgentsCredential as BetaManagedAgentsCredential,\n    type BetaManagedAgentsDeletedCredential as BetaManagedAgentsDeletedCredential,\n    type BetaManagedAgentsMCPOAuthAuthResponse as BetaManagedAgentsMCPOAuthAuthResponse,\n    type BetaManagedAgentsMCPOAuthCreateParams as BetaManagedAgentsMCPOAuthCreateParams,\n    type BetaManagedAgentsMCPOAuthRefreshParams as BetaManagedAgentsMCPOAuthRefreshParams,\n    type BetaManagedAgentsMCPOAuthRefreshResponse as BetaManagedAgentsMCPOAuthRefreshResponse,\n    type BetaManagedAgentsMCPOAuthRefreshUpdateParams as BetaManagedAgentsMCPOAuthRefreshUpdateParams,\n    type BetaManagedAgentsMCPOAuthUpdateParams as BetaManagedAgentsMCPOAuthUpdateParams,\n    type BetaManagedAgentsStaticBearerAuthResponse as BetaManagedAgentsStaticBearerAuthResponse,\n    type BetaManagedAgentsStaticBearerCreateParams as BetaManagedAgentsStaticBearerCreateParams,\n    type BetaManagedAgentsStaticBearerUpdateParams as BetaManagedAgentsStaticBearerUpdateParams,\n    type BetaManagedAgentsTokenEndpointAuthBasicParam as BetaManagedAgentsTokenEndpointAuthBasicParam,\n    type BetaManagedAgentsTokenEndpointAuthBasicResponse as BetaManagedAgentsTokenEndpointAuthBasicResponse,\n    type BetaManagedAgentsTokenEndpointAuthBasicUpdateParam as BetaManagedAgentsTokenEndpointAuthBasicUpdateParam,\n    type BetaManagedAgentsTokenEndpointAuthNoneParam as BetaManagedAgentsTokenEndpointAuthNoneParam,\n    type BetaManagedAgentsTokenEndpointAuthNoneResponse as BetaManagedAgentsTokenEndpointAuthNoneResponse,\n    type BetaManagedAgentsTokenEndpointAuthPostParam as BetaManagedAgentsTokenEndpointAuthPostParam,\n    type BetaManagedAgentsTokenEndpointAuthPostResponse as BetaManagedAgentsTokenEndpointAuthPostResponse,\n    type BetaManagedAgentsTokenEndpointAuthPostUpdateParam as BetaManagedAgentsTokenEndpointAuthPostUpdateParam,\n    type BetaManagedAgentsCredentialsPageCursor as BetaManagedAgentsCredentialsPageCursor,\n    type CredentialCreateParams as CredentialCreateParams,\n    type CredentialRetrieveParams as CredentialRetrieveParams,\n    type CredentialUpdateParams as CredentialUpdateParams,\n    type CredentialListParams as CredentialListParams,\n    type CredentialDeleteParams as CredentialDeleteParams,\n    type CredentialArchiveParams as CredentialArchiveParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as CredentialsAPI from './credentials';\nimport {\n  BetaManagedAgentsCredential,\n  BetaManagedAgentsCredentialsPageCursor,\n  BetaManagedAgentsDeletedCredential,\n  BetaManagedAgentsMCPOAuthAuthResponse,\n  BetaManagedAgentsMCPOAuthCreateParams,\n  BetaManagedAgentsMCPOAuthRefreshParams,\n  BetaManagedAgentsMCPOAuthRefreshResponse,\n  BetaManagedAgentsMCPOAuthRefreshUpdateParams,\n  BetaManagedAgentsMCPOAuthUpdateParams,\n  BetaManagedAgentsStaticBearerAuthResponse,\n  BetaManagedAgentsStaticBearerCreateParams,\n  BetaManagedAgentsStaticBearerUpdateParams,\n  BetaManagedAgentsTokenEndpointAuthBasicParam,\n  BetaManagedAgentsTokenEndpointAuthBasicResponse,\n  BetaManagedAgentsTokenEndpointAuthBasicUpdateParam,\n  BetaManagedAgentsTokenEndpointAuthNoneParam,\n  BetaManagedAgentsTokenEndpointAuthNoneResponse,\n  BetaManagedAgentsTokenEndpointAuthPostParam,\n  BetaManagedAgentsTokenEndpointAuthPostResponse,\n  BetaManagedAgentsTokenEndpointAuthPostUpdateParam,\n  CredentialArchiveParams,\n  CredentialCreateParams,\n  CredentialDeleteParams,\n  CredentialListParams,\n  CredentialRetrieveParams,\n  CredentialUpdateParams,\n  Credentials,\n} from './credentials';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { path } from '../../../internal/utils/path';\n\nexport class Vaults extends APIResource {\n  credentials: CredentialsAPI.Credentials = new CredentialsAPI.Credentials(this._client);\n\n  /**\n   * Create Vault\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsVault =\n   *   await client.beta.vaults.create({\n   *     display_name: 'Example vault',\n   *   });\n   * ```\n   */\n  create(params: VaultCreateParams, options?: RequestOptions): APIPromise<BetaManagedAgentsVault> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/vaults?beta=true', {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Get Vault\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsVault =\n   *   await client.beta.vaults.retrieve(\n   *     'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   *   );\n   * ```\n   */\n  retrieve(\n    vaultID: string,\n    params: VaultRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsVault> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/vaults/${vaultID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Update Vault\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsVault =\n   *   await client.beta.vaults.update(\n   *     'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   *   );\n   * ```\n   */\n  update(\n    vaultID: string,\n    params: VaultUpdateParams,\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsVault> {\n    const { betas, ...body } = params;\n    return this._client.post(path`/v1/vaults/${vaultID}?beta=true`, {\n      body,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List Vaults\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const betaManagedAgentsVault of client.beta.vaults.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    params: VaultListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<BetaManagedAgentsVaultsPageCursor, BetaManagedAgentsVault> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/vaults?beta=true', PageCursor<BetaManagedAgentsVault>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Delete Vault\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsDeletedVault =\n   *   await client.beta.vaults.delete(\n   *     'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   *   );\n   * ```\n   */\n  delete(\n    vaultID: string,\n    params: VaultDeleteParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsDeletedVault> {\n    const { betas } = params ?? {};\n    return this._client.delete(path`/v1/vaults/${vaultID}?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * Archive Vault\n   *\n   * @example\n   * ```ts\n   * const betaManagedAgentsVault =\n   *   await client.beta.vaults.archive(\n   *     'vlt_011CZkZDLs7fYzm1hXNPeRjv',\n   *   );\n   * ```\n   */\n  archive(\n    vaultID: string,\n    params: VaultArchiveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<BetaManagedAgentsVault> {\n    const { betas } = params ?? {};\n    return this._client.post(path`/v1/vaults/${vaultID}/archive?beta=true`, {\n      ...options,\n      headers: buildHeaders([\n        { 'anthropic-beta': [...(betas ?? []), 'managed-agents-2026-04-01'].toString() },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type BetaManagedAgentsVaultsPageCursor = PageCursor<BetaManagedAgentsVault>;\n\n/**\n * Confirmation of a deleted vault.\n */\nexport interface BetaManagedAgentsDeletedVault {\n  /**\n   * Unique identifier of the deleted vault.\n   */\n  id: string;\n\n  type: 'vault_deleted';\n}\n\n/**\n * A vault that stores credentials for use by agents during sessions.\n */\nexport interface BetaManagedAgentsVault {\n  /**\n   * Unique identifier for the vault.\n   */\n  id: string;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  archived_at: string | null;\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  created_at: string;\n\n  /**\n   * Human-readable name for the vault.\n   */\n  display_name: string;\n\n  /**\n   * Arbitrary key-value metadata attached to the vault.\n   */\n  metadata: { [key: string]: string };\n\n  type: 'vault';\n\n  /**\n   * A timestamp in RFC 3339 format\n   */\n  updated_at: string;\n}\n\nexport interface VaultCreateParams {\n  /**\n   * Body param: Human-readable name for the vault. 1-255 characters.\n   */\n  display_name: string;\n\n  /**\n   * Body param: Arbitrary key-value metadata to attach to the vault. Maximum 16\n   * pairs, keys up to 64 chars, values up to 512 chars.\n   */\n  metadata?: { [key: string]: string };\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VaultRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VaultUpdateParams {\n  /**\n   * Body param: Updated human-readable name for the vault. 1-255 characters.\n   */\n  display_name?: string | null;\n\n  /**\n   * Body param: Metadata patch. Set a key to a string to upsert it, or to null to\n   * delete it. Omitted keys are preserved.\n   */\n  metadata?: { [key: string]: string | null } | null;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VaultListParams extends PageCursorParams {\n  /**\n   * Query param: Whether to include archived vaults in the results.\n   */\n  include_archived?: boolean;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VaultDeleteParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VaultArchiveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nVaults.Credentials = Credentials;\n\nexport declare namespace Vaults {\n  export {\n    type BetaManagedAgentsDeletedVault as BetaManagedAgentsDeletedVault,\n    type BetaManagedAgentsVault as BetaManagedAgentsVault,\n    type BetaManagedAgentsVaultsPageCursor as BetaManagedAgentsVaultsPageCursor,\n    type VaultCreateParams as VaultCreateParams,\n    type VaultRetrieveParams as VaultRetrieveParams,\n    type VaultUpdateParams as VaultUpdateParams,\n    type VaultListParams as VaultListParams,\n    type VaultDeleteParams as VaultDeleteParams,\n    type VaultArchiveParams as VaultArchiveParams,\n  };\n\n  export {\n    Credentials as Credentials,\n    type BetaManagedAgentsCredential as BetaManagedAgentsCredential,\n    type BetaManagedAgentsDeletedCredential as BetaManagedAgentsDeletedCredential,\n    type BetaManagedAgentsMCPOAuthAuthResponse as BetaManagedAgentsMCPOAuthAuthResponse,\n    type BetaManagedAgentsMCPOAuthCreateParams as BetaManagedAgentsMCPOAuthCreateParams,\n    type BetaManagedAgentsMCPOAuthRefreshParams as BetaManagedAgentsMCPOAuthRefreshParams,\n    type BetaManagedAgentsMCPOAuthRefreshResponse as BetaManagedAgentsMCPOAuthRefreshResponse,\n    type BetaManagedAgentsMCPOAuthRefreshUpdateParams as BetaManagedAgentsMCPOAuthRefreshUpdateParams,\n    type BetaManagedAgentsMCPOAuthUpdateParams as BetaManagedAgentsMCPOAuthUpdateParams,\n    type BetaManagedAgentsStaticBearerAuthResponse as BetaManagedAgentsStaticBearerAuthResponse,\n    type BetaManagedAgentsStaticBearerCreateParams as BetaManagedAgentsStaticBearerCreateParams,\n    type BetaManagedAgentsStaticBearerUpdateParams as BetaManagedAgentsStaticBearerUpdateParams,\n    type BetaManagedAgentsTokenEndpointAuthBasicParam as BetaManagedAgentsTokenEndpointAuthBasicParam,\n    type BetaManagedAgentsTokenEndpointAuthBasicResponse as BetaManagedAgentsTokenEndpointAuthBasicResponse,\n    type BetaManagedAgentsTokenEndpointAuthBasicUpdateParam as BetaManagedAgentsTokenEndpointAuthBasicUpdateParam,\n    type BetaManagedAgentsTokenEndpointAuthNoneParam as BetaManagedAgentsTokenEndpointAuthNoneParam,\n    type BetaManagedAgentsTokenEndpointAuthNoneResponse as BetaManagedAgentsTokenEndpointAuthNoneResponse,\n    type BetaManagedAgentsTokenEndpointAuthPostParam as BetaManagedAgentsTokenEndpointAuthPostParam,\n    type BetaManagedAgentsTokenEndpointAuthPostResponse as BetaManagedAgentsTokenEndpointAuthPostResponse,\n    type BetaManagedAgentsTokenEndpointAuthPostUpdateParam as BetaManagedAgentsTokenEndpointAuthPostUpdateParam,\n    type BetaManagedAgentsCredentialsPageCursor as BetaManagedAgentsCredentialsPageCursor,\n    type CredentialCreateParams as CredentialCreateParams,\n    type CredentialRetrieveParams as CredentialRetrieveParams,\n    type CredentialUpdateParams as CredentialUpdateParams,\n    type CredentialListParams as CredentialListParams,\n    type CredentialDeleteParams as CredentialDeleteParams,\n    type CredentialArchiveParams as CredentialArchiveParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as EnvironmentsAPI from './environments';\nimport {\n  BetaCloudConfig,\n  BetaCloudConfigParams,\n  BetaEnvironment,\n  BetaEnvironmentDeleteResponse,\n  BetaEnvironmentsPageCursor,\n  BetaLimitedNetwork,\n  BetaLimitedNetworkParams,\n  BetaPackages,\n  BetaPackagesParams,\n  BetaUnrestrictedNetwork,\n  EnvironmentArchiveParams,\n  EnvironmentCreateParams,\n  EnvironmentDeleteParams,\n  EnvironmentListParams,\n  EnvironmentRetrieveParams,\n  EnvironmentUpdateParams,\n  Environments,\n} from './environments';\nimport * as FilesAPI from './files';\nimport {\n  BetaFileScope,\n  DeletedFile,\n  FileDeleteParams,\n  FileDownloadParams,\n  FileListParams,\n  FileMetadata,\n  FileMetadataPage,\n  FileRetrieveMetadataParams,\n  FileUploadParams,\n  Files,\n} from './files';\nimport * as ModelsAPI from './models';\nimport {\n  BetaCapabilitySupport,\n  BetaContextManagementCapability,\n  BetaEffortCapability,\n  BetaModelCapabilities,\n  BetaModelInfo,\n  BetaModelInfosPage,\n  BetaThinkingCapability,\n  BetaThinkingTypes,\n  ModelListParams,\n  ModelRetrieveParams,\n  Models,\n} from './models';\nimport * as UserProfilesAPI from './user-profiles';\nimport {\n  BetaUserProfile,\n  BetaUserProfileEnrollmentURL,\n  BetaUserProfileTrustGrant,\n  BetaUserProfilesPageCursor,\n  UserProfileCreateEnrollmentURLParams,\n  UserProfileCreateParams,\n  UserProfileListParams,\n  UserProfileRetrieveParams,\n  UserProfileUpdateParams,\n  UserProfiles,\n} from './user-profiles';\nimport * as AgentsAPI from './agents/agents';\nimport {\n  AgentArchiveParams,\n  AgentCreateParams,\n  AgentListParams,\n  AgentRetrieveParams,\n  AgentUpdateParams,\n  Agents,\n  BetaManagedAgentsAgent,\n  BetaManagedAgentsAgentToolConfig,\n  BetaManagedAgentsAgentToolConfigParams,\n  BetaManagedAgentsAgentToolset20260401,\n  BetaManagedAgentsAgentToolset20260401Params,\n  BetaManagedAgentsAgentToolsetDefaultConfig,\n  BetaManagedAgentsAgentToolsetDefaultConfigParams,\n  BetaManagedAgentsAgentsPageCursor,\n  BetaManagedAgentsAlwaysAllowPolicy,\n  BetaManagedAgentsAlwaysAskPolicy,\n  BetaManagedAgentsAnthropicSkill,\n  BetaManagedAgentsAnthropicSkillParams,\n  BetaManagedAgentsCustomSkill,\n  BetaManagedAgentsCustomSkillParams,\n  BetaManagedAgentsCustomTool,\n  BetaManagedAgentsCustomToolInputSchema,\n  BetaManagedAgentsCustomToolParams,\n  BetaManagedAgentsMCPServerURLDefinition,\n  BetaManagedAgentsMCPToolConfig,\n  BetaManagedAgentsMCPToolConfigParams,\n  BetaManagedAgentsMCPToolset,\n  BetaManagedAgentsMCPToolsetDefaultConfig,\n  BetaManagedAgentsMCPToolsetDefaultConfigParams,\n  BetaManagedAgentsMCPToolsetParams,\n  BetaManagedAgentsModel,\n  BetaManagedAgentsModelConfig,\n  BetaManagedAgentsModelConfigParams,\n  BetaManagedAgentsSkillParams,\n  BetaManagedAgentsURLMCPServerParams,\n} from './agents/agents';\nimport * as MemoryStoresAPI from './memory-stores/memory-stores';\nimport {\n  BetaManagedAgentsDeletedMemoryStore,\n  BetaManagedAgentsMemoryStore,\n  BetaManagedAgentsMemoryStoresPageCursor,\n  MemoryStoreArchiveParams,\n  MemoryStoreCreateParams,\n  MemoryStoreDeleteParams,\n  MemoryStoreListParams,\n  MemoryStoreRetrieveParams,\n  MemoryStoreUpdateParams,\n  MemoryStores,\n} from './memory-stores/memory-stores';\nimport * as MessagesAPI from './messages/messages';\nimport {\n  BetaAdvisorMessageIterationUsage,\n  BetaAdvisorRedactedResultBlock,\n  BetaAdvisorRedactedResultBlockParam,\n  BetaAdvisorResultBlock,\n  BetaAdvisorResultBlockParam,\n  BetaAdvisorTool20260301,\n  BetaAdvisorToolResultBlock,\n  BetaAdvisorToolResultBlockParam,\n  BetaAdvisorToolResultError,\n  BetaAdvisorToolResultErrorParam,\n  BetaAllThinkingTurns,\n  BetaBase64ImageSource,\n  BetaBase64PDFBlock,\n  BetaBase64PDFSource,\n  BetaBashCodeExecutionOutputBlock,\n  BetaBashCodeExecutionOutputBlockParam,\n  BetaBashCodeExecutionResultBlock,\n  BetaBashCodeExecutionResultBlockParam,\n  BetaBashCodeExecutionToolResultBlock,\n  BetaBashCodeExecutionToolResultBlockParam,\n  BetaBashCodeExecutionToolResultError,\n  BetaBashCodeExecutionToolResultErrorParam,\n  BetaCacheControlEphemeral,\n  BetaCacheCreation,\n  BetaCitationCharLocation,\n  BetaCitationCharLocationParam,\n  BetaCitationConfig,\n  BetaCitationContentBlockLocation,\n  BetaCitationContentBlockLocationParam,\n  BetaCitationPageLocation,\n  BetaCitationPageLocationParam,\n  BetaCitationSearchResultLocation,\n  BetaCitationSearchResultLocationParam,\n  BetaCitationWebSearchResultLocationParam,\n  BetaCitationsConfigParam,\n  BetaCitationsDelta,\n  BetaCitationsWebSearchResultLocation,\n  BetaClearThinking20251015Edit,\n  BetaClearThinking20251015EditResponse,\n  BetaClearToolUses20250919Edit,\n  BetaClearToolUses20250919EditResponse,\n  BetaCodeExecutionOutputBlock,\n  BetaCodeExecutionOutputBlockParam,\n  BetaCodeExecutionResultBlock,\n  BetaCodeExecutionResultBlockParam,\n  BetaCodeExecutionTool20250522,\n  BetaCodeExecutionTool20250825,\n  BetaCodeExecutionTool20260120,\n  BetaCodeExecutionToolResultBlock,\n  BetaCodeExecutionToolResultBlockContent,\n  BetaCodeExecutionToolResultBlockParam,\n  BetaCodeExecutionToolResultBlockParamContent,\n  BetaCodeExecutionToolResultError,\n  BetaCodeExecutionToolResultErrorCode,\n  BetaCodeExecutionToolResultErrorParam,\n  BetaCompact20260112Edit,\n  BetaCompactionBlock,\n  BetaCompactionBlockParam,\n  BetaCompactionContentBlockDelta,\n  BetaCompactionIterationUsage,\n  BetaContainer,\n  BetaContainerParams,\n  BetaContainerUploadBlock,\n  BetaContainerUploadBlockParam,\n  BetaContentBlock,\n  BetaContentBlockParam,\n  BetaContentBlockSource,\n  BetaContentBlockSourceContent,\n  BetaContextManagementConfig,\n  BetaContextManagementResponse,\n  BetaCountTokensContextManagementResponse,\n  BetaDirectCaller,\n  BetaDocumentBlock,\n  BetaEncryptedCodeExecutionResultBlock,\n  BetaEncryptedCodeExecutionResultBlockParam,\n  BetaFileDocumentSource,\n  BetaFileImageSource,\n  BetaImageBlockParam,\n  BetaInputJSONDelta,\n  BetaJSONOutputFormat,\n  BetaInputTokensClearAtLeast,\n  BetaInputTokensTrigger,\n  BetaMCPToolResultBlock,\n  BetaMCPToolUseBlock,\n  BetaMCPToolUseBlockParam,\n  BetaMCPToolset,\n  BetaMemoryTool20250818,\n  BetaMemoryTool20250818Command,\n  BetaMemoryTool20250818CreateCommand,\n  BetaMemoryTool20250818DeleteCommand,\n  BetaMemoryTool20250818InsertCommand,\n  BetaMemoryTool20250818RenameCommand,\n  BetaMemoryTool20250818StrReplaceCommand,\n  BetaMemoryTool20250818ViewCommand,\n  BetaMessage,\n  BetaMessageDeltaUsage,\n  BetaMessageIterationUsage,\n  BetaMessageParam,\n  BetaMessageTokensCount,\n  BetaMetadata,\n  BetaOutputConfig,\n  BetaPlainTextSource,\n  BetaRawContentBlockDelta,\n  BetaRawContentBlockDeltaEvent,\n  BetaRawContentBlockStartEvent,\n  BetaRawContentBlockStopEvent,\n  BetaRawMessageDeltaEvent,\n  BetaRawMessageStartEvent,\n  BetaRawMessageStopEvent,\n  BetaRawMessageStreamEvent,\n  BetaRedactedThinkingBlock,\n  BetaRedactedThinkingBlockParam,\n  BetaRefusalStopDetails,\n  BetaRequestDocumentBlock,\n  BetaRequestMCPServerToolConfiguration,\n  BetaRequestMCPServerURLDefinition,\n  BetaRequestMCPToolResultBlockParam,\n  BetaSearchResultBlockParam,\n  BetaServerToolCaller,\n  BetaServerToolCaller20260120,\n  BetaServerToolUsage,\n  BetaServerToolUseBlock,\n  BetaServerToolUseBlockParam,\n  BetaSignatureDelta,\n  BetaSkill,\n  BetaSkillParams,\n  BetaStopReason,\n  BetaTextBlock,\n  BetaTextBlockParam,\n  BetaTextCitation,\n  BetaTextCitationParam,\n  BetaTextDelta,\n  BetaTextEditorCodeExecutionCreateResultBlock,\n  BetaTextEditorCodeExecutionCreateResultBlockParam,\n  BetaTextEditorCodeExecutionStrReplaceResultBlock,\n  BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n  BetaTextEditorCodeExecutionToolResultBlock,\n  BetaTextEditorCodeExecutionToolResultBlockParam,\n  BetaTextEditorCodeExecutionToolResultError,\n  BetaTextEditorCodeExecutionToolResultErrorParam,\n  BetaTextEditorCodeExecutionViewResultBlock,\n  BetaTextEditorCodeExecutionViewResultBlockParam,\n  BetaThinkingBlock,\n  BetaThinkingBlockParam,\n  BetaThinkingConfigAdaptive,\n  BetaThinkingConfigDisabled,\n  BetaThinkingConfigEnabled,\n  BetaThinkingConfigParam,\n  BetaThinkingDelta,\n  BetaThinkingTurns,\n  BetaTokenTaskBudget,\n  BetaTool,\n  BetaToolBash20241022,\n  BetaToolBash20250124,\n  BetaToolChoice,\n  BetaToolChoiceAny,\n  BetaToolChoiceAuto,\n  BetaToolChoiceNone,\n  BetaToolChoiceTool,\n  BetaToolComputerUse20241022,\n  BetaToolComputerUse20250124,\n  BetaToolComputerUse20251124,\n  BetaToolReferenceBlock,\n  BetaToolReferenceBlockParam,\n  BetaToolResultBlockParam,\n  BetaToolTextEditor20241022,\n  BetaToolTextEditor20250124,\n  BetaToolTextEditor20250429,\n  BetaToolTextEditor20250728,\n  BetaToolUnion,\n  BetaToolUseBlock,\n  BetaToolUseBlockParam,\n  BetaToolUsesKeep,\n  BetaToolUsesTrigger,\n  BetaURLImageSource,\n  BetaURLPDFSource,\n  BetaUsage,\n  BetaUserLocation,\n  BetaWebFetchBlock,\n  BetaWebFetchBlockParam,\n  BetaWebFetchTool20250910,\n  BetaWebFetchTool20260209,\n  BetaWebFetchTool20260309,\n  BetaWebFetchToolResultBlock,\n  BetaWebFetchToolResultBlockParam,\n  BetaWebFetchToolResultErrorBlock,\n  BetaWebFetchToolResultErrorBlockParam,\n  BetaWebFetchToolResultErrorCode,\n  BetaWebSearchResultBlock,\n  BetaWebSearchResultBlockParam,\n  BetaWebSearchTool20250305,\n  BetaWebSearchTool20260209,\n  BetaWebSearchToolRequestError,\n  BetaWebSearchToolResultBlock,\n  BetaWebSearchToolResultBlockContent,\n  BetaWebSearchToolResultBlockParam,\n  BetaWebSearchToolResultBlockParamContent,\n  BetaWebSearchToolResultError,\n  BetaWebSearchToolResultErrorCode,\n  MessageCountTokensParams,\n  MessageCreateParams,\n  MessageCreateParamsNonStreaming,\n  MessageCreateParamsStreaming,\n  Messages,\n  BetaMCPToolConfig,\n  BetaMCPToolDefaultConfig,\n} from './messages/messages';\nimport * as SessionsAPI from './sessions/sessions';\nimport {\n  BetaManagedAgentsAgentParams,\n  BetaManagedAgentsBranchCheckout,\n  BetaManagedAgentsCacheCreationUsage,\n  BetaManagedAgentsCommitCheckout,\n  BetaManagedAgentsDeletedSession,\n  BetaManagedAgentsFileResourceParams,\n  BetaManagedAgentsGitHubRepositoryResourceParams,\n  BetaManagedAgentsMemoryStoreResourceParam,\n  BetaManagedAgentsSession,\n  BetaManagedAgentsSessionAgent,\n  BetaManagedAgentsSessionStats,\n  BetaManagedAgentsSessionUsage,\n  BetaManagedAgentsSessionsPageCursor,\n  SessionArchiveParams,\n  SessionCreateParams,\n  SessionDeleteParams,\n  SessionListParams,\n  SessionRetrieveParams,\n  SessionUpdateParams,\n  Sessions,\n} from './sessions/sessions';\nimport * as SkillsAPI from './skills/skills';\nimport {\n  SkillCreateParams,\n  SkillCreateResponse,\n  SkillDeleteParams,\n  SkillDeleteResponse,\n  SkillListParams,\n  SkillListResponse,\n  SkillListResponsesPageCursor,\n  SkillRetrieveParams,\n  SkillRetrieveResponse,\n  Skills,\n} from './skills/skills';\nimport * as VaultsAPI from './vaults/vaults';\nimport {\n  BetaManagedAgentsDeletedVault,\n  BetaManagedAgentsVault,\n  BetaManagedAgentsVaultsPageCursor,\n  VaultArchiveParams,\n  VaultCreateParams,\n  VaultDeleteParams,\n  VaultListParams,\n  VaultRetrieveParams,\n  VaultUpdateParams,\n  Vaults,\n} from './vaults/vaults';\n\nexport class Beta extends APIResource {\n  models: ModelsAPI.Models = new ModelsAPI.Models(this._client);\n  messages: MessagesAPI.Messages = new MessagesAPI.Messages(this._client);\n  agents: AgentsAPI.Agents = new AgentsAPI.Agents(this._client);\n  environments: EnvironmentsAPI.Environments = new EnvironmentsAPI.Environments(this._client);\n  sessions: SessionsAPI.Sessions = new SessionsAPI.Sessions(this._client);\n  vaults: VaultsAPI.Vaults = new VaultsAPI.Vaults(this._client);\n  memoryStores: MemoryStoresAPI.MemoryStores = new MemoryStoresAPI.MemoryStores(this._client);\n  files: FilesAPI.Files = new FilesAPI.Files(this._client);\n  skills: SkillsAPI.Skills = new SkillsAPI.Skills(this._client);\n  userProfiles: UserProfilesAPI.UserProfiles = new UserProfilesAPI.UserProfiles(this._client);\n}\n\nexport type AnthropicBeta =\n  | (string & {})\n  | 'message-batches-2024-09-24'\n  | 'prompt-caching-2024-07-31'\n  | 'computer-use-2024-10-22'\n  | 'computer-use-2025-01-24'\n  | 'pdfs-2024-09-25'\n  | 'token-counting-2024-11-01'\n  | 'token-efficient-tools-2025-02-19'\n  | 'output-128k-2025-02-19'\n  | 'files-api-2025-04-14'\n  | 'mcp-client-2025-04-04'\n  | 'mcp-client-2025-11-20'\n  | 'dev-full-thinking-2025-05-14'\n  | 'interleaved-thinking-2025-05-14'\n  | 'code-execution-2025-05-22'\n  | 'extended-cache-ttl-2025-04-11'\n  | 'context-1m-2025-08-07'\n  | 'context-management-2025-06-27'\n  | 'model-context-window-exceeded-2025-08-26'\n  | 'skills-2025-10-02'\n  | 'fast-mode-2026-02-01'\n  | 'output-300k-2026-03-24'\n  | 'user-profiles-2026-03-24'\n  | 'advisor-tool-2026-03-01';\n\nexport interface BetaAPIError {\n  message: string;\n\n  type: 'api_error';\n}\n\nexport interface BetaAuthenticationError {\n  message: string;\n\n  type: 'authentication_error';\n}\n\nexport interface BetaBillingError {\n  message: string;\n\n  type: 'billing_error';\n}\n\nexport type BetaError =\n  | BetaInvalidRequestError\n  | BetaAuthenticationError\n  | BetaBillingError\n  | BetaPermissionError\n  | BetaNotFoundError\n  | BetaRateLimitError\n  | BetaGatewayTimeoutError\n  | BetaAPIError\n  | BetaOverloadedError;\n\nexport interface BetaErrorResponse {\n  error: BetaError;\n\n  request_id: string | null;\n\n  type: 'error';\n}\n\nexport interface BetaGatewayTimeoutError {\n  message: string;\n\n  type: 'timeout_error';\n}\n\nexport interface BetaInvalidRequestError {\n  message: string;\n\n  type: 'invalid_request_error';\n}\n\nexport interface BetaNotFoundError {\n  message: string;\n\n  type: 'not_found_error';\n}\n\nexport interface BetaOverloadedError {\n  message: string;\n\n  type: 'overloaded_error';\n}\n\nexport interface BetaPermissionError {\n  message: string;\n\n  type: 'permission_error';\n}\n\nexport interface BetaRateLimitError {\n  message: string;\n\n  type: 'rate_limit_error';\n}\n\nBeta.Models = Models;\nBeta.Messages = Messages;\nBeta.Agents = Agents;\nBeta.Environments = Environments;\nBeta.Sessions = Sessions;\nBeta.Vaults = Vaults;\nBeta.MemoryStores = MemoryStores;\nBeta.Files = Files;\nBeta.Skills = Skills;\nBeta.UserProfiles = UserProfiles;\n\nexport declare namespace Beta {\n  export {\n    type AnthropicBeta as AnthropicBeta,\n    type BetaAPIError as BetaAPIError,\n    type BetaAuthenticationError as BetaAuthenticationError,\n    type BetaBillingError as BetaBillingError,\n    type BetaError as BetaError,\n    type BetaErrorResponse as BetaErrorResponse,\n    type BetaGatewayTimeoutError as BetaGatewayTimeoutError,\n    type BetaInvalidRequestError as BetaInvalidRequestError,\n    type BetaNotFoundError as BetaNotFoundError,\n    type BetaOverloadedError as BetaOverloadedError,\n    type BetaPermissionError as BetaPermissionError,\n    type BetaRateLimitError as BetaRateLimitError,\n  };\n\n  export {\n    Models as Models,\n    type BetaCapabilitySupport as BetaCapabilitySupport,\n    type BetaContextManagementCapability as BetaContextManagementCapability,\n    type BetaEffortCapability as BetaEffortCapability,\n    type BetaModelCapabilities as BetaModelCapabilities,\n    type BetaModelInfo as BetaModelInfo,\n    type BetaThinkingCapability as BetaThinkingCapability,\n    type BetaThinkingTypes as BetaThinkingTypes,\n    type BetaModelInfosPage as BetaModelInfosPage,\n    type ModelRetrieveParams as ModelRetrieveParams,\n    type ModelListParams as ModelListParams,\n  };\n\n  export {\n    Messages as Messages,\n    type BetaAdvisorMessageIterationUsage as BetaAdvisorMessageIterationUsage,\n    type BetaAdvisorRedactedResultBlock as BetaAdvisorRedactedResultBlock,\n    type BetaAdvisorRedactedResultBlockParam as BetaAdvisorRedactedResultBlockParam,\n    type BetaAdvisorResultBlock as BetaAdvisorResultBlock,\n    type BetaAdvisorResultBlockParam as BetaAdvisorResultBlockParam,\n    type BetaAdvisorTool20260301 as BetaAdvisorTool20260301,\n    type BetaAdvisorToolResultBlock as BetaAdvisorToolResultBlock,\n    type BetaAdvisorToolResultBlockParam as BetaAdvisorToolResultBlockParam,\n    type BetaAdvisorToolResultError as BetaAdvisorToolResultError,\n    type BetaAdvisorToolResultErrorParam as BetaAdvisorToolResultErrorParam,\n    type BetaAllThinkingTurns as BetaAllThinkingTurns,\n    type BetaBase64ImageSource as BetaBase64ImageSource,\n    type BetaBase64PDFSource as BetaBase64PDFSource,\n    type BetaBashCodeExecutionOutputBlock as BetaBashCodeExecutionOutputBlock,\n    type BetaBashCodeExecutionOutputBlockParam as BetaBashCodeExecutionOutputBlockParam,\n    type BetaBashCodeExecutionResultBlock as BetaBashCodeExecutionResultBlock,\n    type BetaBashCodeExecutionResultBlockParam as BetaBashCodeExecutionResultBlockParam,\n    type BetaBashCodeExecutionToolResultBlock as BetaBashCodeExecutionToolResultBlock,\n    type BetaBashCodeExecutionToolResultBlockParam as BetaBashCodeExecutionToolResultBlockParam,\n    type BetaBashCodeExecutionToolResultError as BetaBashCodeExecutionToolResultError,\n    type BetaBashCodeExecutionToolResultErrorParam as BetaBashCodeExecutionToolResultErrorParam,\n    type BetaCacheControlEphemeral as BetaCacheControlEphemeral,\n    type BetaCacheCreation as BetaCacheCreation,\n    type BetaCitationCharLocation as BetaCitationCharLocation,\n    type BetaCitationCharLocationParam as BetaCitationCharLocationParam,\n    type BetaCitationConfig as BetaCitationConfig,\n    type BetaCitationContentBlockLocation as BetaCitationContentBlockLocation,\n    type BetaCitationContentBlockLocationParam as BetaCitationContentBlockLocationParam,\n    type BetaCitationPageLocation as BetaCitationPageLocation,\n    type BetaCitationPageLocationParam as BetaCitationPageLocationParam,\n    type BetaCitationSearchResultLocation as BetaCitationSearchResultLocation,\n    type BetaCitationSearchResultLocationParam as BetaCitationSearchResultLocationParam,\n    type BetaCitationWebSearchResultLocationParam as BetaCitationWebSearchResultLocationParam,\n    type BetaCitationsConfigParam as BetaCitationsConfigParam,\n    type BetaCitationsDelta as BetaCitationsDelta,\n    type BetaCitationsWebSearchResultLocation as BetaCitationsWebSearchResultLocation,\n    type BetaClearThinking20251015Edit as BetaClearThinking20251015Edit,\n    type BetaClearThinking20251015EditResponse as BetaClearThinking20251015EditResponse,\n    type BetaClearToolUses20250919Edit as BetaClearToolUses20250919Edit,\n    type BetaClearToolUses20250919EditResponse as BetaClearToolUses20250919EditResponse,\n    type BetaCodeExecutionOutputBlock as BetaCodeExecutionOutputBlock,\n    type BetaCodeExecutionOutputBlockParam as BetaCodeExecutionOutputBlockParam,\n    type BetaCodeExecutionResultBlock as BetaCodeExecutionResultBlock,\n    type BetaCodeExecutionResultBlockParam as BetaCodeExecutionResultBlockParam,\n    type BetaCodeExecutionTool20250522 as BetaCodeExecutionTool20250522,\n    type BetaCodeExecutionTool20250825 as BetaCodeExecutionTool20250825,\n    type BetaCodeExecutionTool20260120 as BetaCodeExecutionTool20260120,\n    type BetaCodeExecutionToolResultBlock as BetaCodeExecutionToolResultBlock,\n    type BetaCodeExecutionToolResultBlockContent as BetaCodeExecutionToolResultBlockContent,\n    type BetaCodeExecutionToolResultBlockParam as BetaCodeExecutionToolResultBlockParam,\n    type BetaCodeExecutionToolResultBlockParamContent as BetaCodeExecutionToolResultBlockParamContent,\n    type BetaCodeExecutionToolResultError as BetaCodeExecutionToolResultError,\n    type BetaCodeExecutionToolResultErrorCode as BetaCodeExecutionToolResultErrorCode,\n    type BetaCodeExecutionToolResultErrorParam as BetaCodeExecutionToolResultErrorParam,\n    type BetaCompact20260112Edit as BetaCompact20260112Edit,\n    type BetaCompactionBlock as BetaCompactionBlock,\n    type BetaCompactionBlockParam as BetaCompactionBlockParam,\n    type BetaCompactionContentBlockDelta as BetaCompactionContentBlockDelta,\n    type BetaCompactionIterationUsage as BetaCompactionIterationUsage,\n    type BetaContainer as BetaContainer,\n    type BetaContainerParams as BetaContainerParams,\n    type BetaContainerUploadBlock as BetaContainerUploadBlock,\n    type BetaContainerUploadBlockParam as BetaContainerUploadBlockParam,\n    type BetaContentBlock as BetaContentBlock,\n    type BetaContentBlockParam as BetaContentBlockParam,\n    type BetaContentBlockSource as BetaContentBlockSource,\n    type BetaContentBlockSourceContent as BetaContentBlockSourceContent,\n    type BetaContextManagementConfig as BetaContextManagementConfig,\n    type BetaContextManagementResponse as BetaContextManagementResponse,\n    type BetaCountTokensContextManagementResponse as BetaCountTokensContextManagementResponse,\n    type BetaDirectCaller as BetaDirectCaller,\n    type BetaDocumentBlock as BetaDocumentBlock,\n    type BetaEncryptedCodeExecutionResultBlock as BetaEncryptedCodeExecutionResultBlock,\n    type BetaEncryptedCodeExecutionResultBlockParam as BetaEncryptedCodeExecutionResultBlockParam,\n    type BetaFileDocumentSource as BetaFileDocumentSource,\n    type BetaFileImageSource as BetaFileImageSource,\n    type BetaImageBlockParam as BetaImageBlockParam,\n    type BetaInputJSONDelta as BetaInputJSONDelta,\n    type BetaJSONOutputFormat as BetaJSONOutputFormat,\n    type BetaInputTokensClearAtLeast as BetaInputTokensClearAtLeast,\n    type BetaInputTokensTrigger as BetaInputTokensTrigger,\n    type BetaMCPToolConfig as BetaMCPToolConfig,\n    type BetaMCPToolDefaultConfig as BetaMCPToolDefaultConfig,\n    type BetaMCPToolResultBlock as BetaMCPToolResultBlock,\n    type BetaMCPToolUseBlock as BetaMCPToolUseBlock,\n    type BetaMCPToolUseBlockParam as BetaMCPToolUseBlockParam,\n    type BetaMCPToolset as BetaMCPToolset,\n    type BetaMemoryTool20250818 as BetaMemoryTool20250818,\n    type BetaMemoryTool20250818Command as BetaMemoryTool20250818Command,\n    type BetaMemoryTool20250818CreateCommand as BetaMemoryTool20250818CreateCommand,\n    type BetaMemoryTool20250818DeleteCommand as BetaMemoryTool20250818DeleteCommand,\n    type BetaMemoryTool20250818InsertCommand as BetaMemoryTool20250818InsertCommand,\n    type BetaMemoryTool20250818RenameCommand as BetaMemoryTool20250818RenameCommand,\n    type BetaMemoryTool20250818StrReplaceCommand as BetaMemoryTool20250818StrReplaceCommand,\n    type BetaMemoryTool20250818ViewCommand as BetaMemoryTool20250818ViewCommand,\n    type BetaMessage as BetaMessage,\n    type BetaMessageDeltaUsage as BetaMessageDeltaUsage,\n    type BetaMessageIterationUsage as BetaMessageIterationUsage,\n    type BetaMessageParam as BetaMessageParam,\n    type BetaMessageTokensCount as BetaMessageTokensCount,\n    type BetaMetadata as BetaMetadata,\n    type BetaOutputConfig as BetaOutputConfig,\n    type BetaPlainTextSource as BetaPlainTextSource,\n    type BetaRawContentBlockDelta as BetaRawContentBlockDelta,\n    type BetaRawContentBlockDeltaEvent as BetaRawContentBlockDeltaEvent,\n    type BetaRawContentBlockStartEvent as BetaRawContentBlockStartEvent,\n    type BetaRawContentBlockStopEvent as BetaRawContentBlockStopEvent,\n    type BetaRawMessageDeltaEvent as BetaRawMessageDeltaEvent,\n    type BetaRawMessageStartEvent as BetaRawMessageStartEvent,\n    type BetaRawMessageStopEvent as BetaRawMessageStopEvent,\n    type BetaRawMessageStreamEvent as BetaRawMessageStreamEvent,\n    type BetaRedactedThinkingBlock as BetaRedactedThinkingBlock,\n    type BetaRedactedThinkingBlockParam as BetaRedactedThinkingBlockParam,\n    type BetaRefusalStopDetails as BetaRefusalStopDetails,\n    type BetaRequestDocumentBlock as BetaRequestDocumentBlock,\n    type BetaRequestMCPServerToolConfiguration as BetaRequestMCPServerToolConfiguration,\n    type BetaRequestMCPServerURLDefinition as BetaRequestMCPServerURLDefinition,\n    type BetaRequestMCPToolResultBlockParam as BetaRequestMCPToolResultBlockParam,\n    type BetaSearchResultBlockParam as BetaSearchResultBlockParam,\n    type BetaServerToolCaller as BetaServerToolCaller,\n    type BetaServerToolCaller20260120 as BetaServerToolCaller20260120,\n    type BetaServerToolUsage as BetaServerToolUsage,\n    type BetaServerToolUseBlock as BetaServerToolUseBlock,\n    type BetaServerToolUseBlockParam as BetaServerToolUseBlockParam,\n    type BetaSignatureDelta as BetaSignatureDelta,\n    type BetaSkill as BetaSkill,\n    type BetaSkillParams as BetaSkillParams,\n    type BetaStopReason as BetaStopReason,\n    type BetaTextBlock as BetaTextBlock,\n    type BetaTextBlockParam as BetaTextBlockParam,\n    type BetaTextCitation as BetaTextCitation,\n    type BetaTextCitationParam as BetaTextCitationParam,\n    type BetaTextDelta as BetaTextDelta,\n    type BetaTextEditorCodeExecutionCreateResultBlock as BetaTextEditorCodeExecutionCreateResultBlock,\n    type BetaTextEditorCodeExecutionCreateResultBlockParam as BetaTextEditorCodeExecutionCreateResultBlockParam,\n    type BetaTextEditorCodeExecutionStrReplaceResultBlock as BetaTextEditorCodeExecutionStrReplaceResultBlock,\n    type BetaTextEditorCodeExecutionStrReplaceResultBlockParam as BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n    type BetaTextEditorCodeExecutionToolResultBlock as BetaTextEditorCodeExecutionToolResultBlock,\n    type BetaTextEditorCodeExecutionToolResultBlockParam as BetaTextEditorCodeExecutionToolResultBlockParam,\n    type BetaTextEditorCodeExecutionToolResultError as BetaTextEditorCodeExecutionToolResultError,\n    type BetaTextEditorCodeExecutionToolResultErrorParam as BetaTextEditorCodeExecutionToolResultErrorParam,\n    type BetaTextEditorCodeExecutionViewResultBlock as BetaTextEditorCodeExecutionViewResultBlock,\n    type BetaTextEditorCodeExecutionViewResultBlockParam as BetaTextEditorCodeExecutionViewResultBlockParam,\n    type BetaThinkingBlock as BetaThinkingBlock,\n    type BetaThinkingBlockParam as BetaThinkingBlockParam,\n    type BetaThinkingConfigAdaptive as BetaThinkingConfigAdaptive,\n    type BetaThinkingConfigDisabled as BetaThinkingConfigDisabled,\n    type BetaThinkingConfigEnabled as BetaThinkingConfigEnabled,\n    type BetaThinkingConfigParam as BetaThinkingConfigParam,\n    type BetaThinkingDelta as BetaThinkingDelta,\n    type BetaThinkingTurns as BetaThinkingTurns,\n    type BetaTokenTaskBudget as BetaTokenTaskBudget,\n    type BetaTool as BetaTool,\n    type BetaToolBash20241022 as BetaToolBash20241022,\n    type BetaToolBash20250124 as BetaToolBash20250124,\n    type BetaToolChoice as BetaToolChoice,\n    type BetaToolChoiceAny as BetaToolChoiceAny,\n    type BetaToolChoiceAuto as BetaToolChoiceAuto,\n    type BetaToolChoiceNone as BetaToolChoiceNone,\n    type BetaToolChoiceTool as BetaToolChoiceTool,\n    type BetaToolComputerUse20241022 as BetaToolComputerUse20241022,\n    type BetaToolComputerUse20250124 as BetaToolComputerUse20250124,\n    type BetaToolComputerUse20251124 as BetaToolComputerUse20251124,\n    type BetaToolReferenceBlock as BetaToolReferenceBlock,\n    type BetaToolReferenceBlockParam as BetaToolReferenceBlockParam,\n    type BetaToolResultBlockParam as BetaToolResultBlockParam,\n    type BetaToolTextEditor20241022 as BetaToolTextEditor20241022,\n    type BetaToolTextEditor20250124 as BetaToolTextEditor20250124,\n    type BetaToolTextEditor20250429 as BetaToolTextEditor20250429,\n    type BetaToolTextEditor20250728 as BetaToolTextEditor20250728,\n    type BetaToolUnion as BetaToolUnion,\n    type BetaToolUseBlock as BetaToolUseBlock,\n    type BetaToolUseBlockParam as BetaToolUseBlockParam,\n    type BetaToolUsesKeep as BetaToolUsesKeep,\n    type BetaToolUsesTrigger as BetaToolUsesTrigger,\n    type BetaURLImageSource as BetaURLImageSource,\n    type BetaURLPDFSource as BetaURLPDFSource,\n    type BetaUsage as BetaUsage,\n    type BetaUserLocation as BetaUserLocation,\n    type BetaWebFetchBlock as BetaWebFetchBlock,\n    type BetaWebFetchBlockParam as BetaWebFetchBlockParam,\n    type BetaWebFetchTool20250910 as BetaWebFetchTool20250910,\n    type BetaWebFetchTool20260209 as BetaWebFetchTool20260209,\n    type BetaWebFetchTool20260309 as BetaWebFetchTool20260309,\n    type BetaWebFetchToolResultBlock as BetaWebFetchToolResultBlock,\n    type BetaWebFetchToolResultBlockParam as BetaWebFetchToolResultBlockParam,\n    type BetaWebFetchToolResultErrorBlock as BetaWebFetchToolResultErrorBlock,\n    type BetaWebFetchToolResultErrorBlockParam as BetaWebFetchToolResultErrorBlockParam,\n    type BetaWebFetchToolResultErrorCode as BetaWebFetchToolResultErrorCode,\n    type BetaWebSearchResultBlock as BetaWebSearchResultBlock,\n    type BetaWebSearchResultBlockParam as BetaWebSearchResultBlockParam,\n    type BetaWebSearchTool20250305 as BetaWebSearchTool20250305,\n    type BetaWebSearchTool20260209 as BetaWebSearchTool20260209,\n    type BetaWebSearchToolRequestError as BetaWebSearchToolRequestError,\n    type BetaWebSearchToolResultBlock as BetaWebSearchToolResultBlock,\n    type BetaWebSearchToolResultBlockContent as BetaWebSearchToolResultBlockContent,\n    type BetaWebSearchToolResultBlockParam as BetaWebSearchToolResultBlockParam,\n    type BetaWebSearchToolResultBlockParamContent as BetaWebSearchToolResultBlockParamContent,\n    type BetaWebSearchToolResultError as BetaWebSearchToolResultError,\n    type BetaWebSearchToolResultErrorCode as BetaWebSearchToolResultErrorCode,\n    type BetaBase64PDFBlock as BetaBase64PDFBlock,\n    type MessageCreateParams as MessageCreateParams,\n    type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n    type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n    type MessageCountTokensParams as MessageCountTokensParams,\n  };\n\n  export {\n    Agents as Agents,\n    type BetaManagedAgentsAgent as BetaManagedAgentsAgent,\n    type BetaManagedAgentsAgentToolConfig as BetaManagedAgentsAgentToolConfig,\n    type BetaManagedAgentsAgentToolConfigParams as BetaManagedAgentsAgentToolConfigParams,\n    type BetaManagedAgentsAgentToolsetDefaultConfig as BetaManagedAgentsAgentToolsetDefaultConfig,\n    type BetaManagedAgentsAgentToolsetDefaultConfigParams as BetaManagedAgentsAgentToolsetDefaultConfigParams,\n    type BetaManagedAgentsAgentToolset20260401 as BetaManagedAgentsAgentToolset20260401,\n    type BetaManagedAgentsAgentToolset20260401Params as BetaManagedAgentsAgentToolset20260401Params,\n    type BetaManagedAgentsAlwaysAllowPolicy as BetaManagedAgentsAlwaysAllowPolicy,\n    type BetaManagedAgentsAlwaysAskPolicy as BetaManagedAgentsAlwaysAskPolicy,\n    type BetaManagedAgentsAnthropicSkill as BetaManagedAgentsAnthropicSkill,\n    type BetaManagedAgentsAnthropicSkillParams as BetaManagedAgentsAnthropicSkillParams,\n    type BetaManagedAgentsCustomSkill as BetaManagedAgentsCustomSkill,\n    type BetaManagedAgentsCustomSkillParams as BetaManagedAgentsCustomSkillParams,\n    type BetaManagedAgentsCustomTool as BetaManagedAgentsCustomTool,\n    type BetaManagedAgentsCustomToolInputSchema as BetaManagedAgentsCustomToolInputSchema,\n    type BetaManagedAgentsCustomToolParams as BetaManagedAgentsCustomToolParams,\n    type BetaManagedAgentsMCPServerURLDefinition as BetaManagedAgentsMCPServerURLDefinition,\n    type BetaManagedAgentsMCPToolConfig as BetaManagedAgentsMCPToolConfig,\n    type BetaManagedAgentsMCPToolConfigParams as BetaManagedAgentsMCPToolConfigParams,\n    type BetaManagedAgentsMCPToolset as BetaManagedAgentsMCPToolset,\n    type BetaManagedAgentsMCPToolsetDefaultConfig as BetaManagedAgentsMCPToolsetDefaultConfig,\n    type BetaManagedAgentsMCPToolsetDefaultConfigParams as BetaManagedAgentsMCPToolsetDefaultConfigParams,\n    type BetaManagedAgentsMCPToolsetParams as BetaManagedAgentsMCPToolsetParams,\n    type BetaManagedAgentsModel as BetaManagedAgentsModel,\n    type BetaManagedAgentsModelConfig as BetaManagedAgentsModelConfig,\n    type BetaManagedAgentsModelConfigParams as BetaManagedAgentsModelConfigParams,\n    type BetaManagedAgentsSkillParams as BetaManagedAgentsSkillParams,\n    type BetaManagedAgentsURLMCPServerParams as BetaManagedAgentsURLMCPServerParams,\n    type BetaManagedAgentsAgentsPageCursor as BetaManagedAgentsAgentsPageCursor,\n    type AgentCreateParams as AgentCreateParams,\n    type AgentRetrieveParams as AgentRetrieveParams,\n    type AgentUpdateParams as AgentUpdateParams,\n    type AgentListParams as AgentListParams,\n    type AgentArchiveParams as AgentArchiveParams,\n  };\n\n  export {\n    Environments as Environments,\n    type BetaCloudConfig as BetaCloudConfig,\n    type BetaCloudConfigParams as BetaCloudConfigParams,\n    type BetaEnvironment as BetaEnvironment,\n    type BetaEnvironmentDeleteResponse as BetaEnvironmentDeleteResponse,\n    type BetaLimitedNetwork as BetaLimitedNetwork,\n    type BetaLimitedNetworkParams as BetaLimitedNetworkParams,\n    type BetaPackages as BetaPackages,\n    type BetaPackagesParams as BetaPackagesParams,\n    type BetaUnrestrictedNetwork as BetaUnrestrictedNetwork,\n    type BetaEnvironmentsPageCursor as BetaEnvironmentsPageCursor,\n    type EnvironmentCreateParams as EnvironmentCreateParams,\n    type EnvironmentRetrieveParams as EnvironmentRetrieveParams,\n    type EnvironmentUpdateParams as EnvironmentUpdateParams,\n    type EnvironmentListParams as EnvironmentListParams,\n    type EnvironmentDeleteParams as EnvironmentDeleteParams,\n    type EnvironmentArchiveParams as EnvironmentArchiveParams,\n  };\n\n  export {\n    Sessions as Sessions,\n    type BetaManagedAgentsAgentParams as BetaManagedAgentsAgentParams,\n    type BetaManagedAgentsBranchCheckout as BetaManagedAgentsBranchCheckout,\n    type BetaManagedAgentsCacheCreationUsage as BetaManagedAgentsCacheCreationUsage,\n    type BetaManagedAgentsCommitCheckout as BetaManagedAgentsCommitCheckout,\n    type BetaManagedAgentsDeletedSession as BetaManagedAgentsDeletedSession,\n    type BetaManagedAgentsFileResourceParams as BetaManagedAgentsFileResourceParams,\n    type BetaManagedAgentsGitHubRepositoryResourceParams as BetaManagedAgentsGitHubRepositoryResourceParams,\n    type BetaManagedAgentsMemoryStoreResourceParam as BetaManagedAgentsMemoryStoreResourceParam,\n    type BetaManagedAgentsSession as BetaManagedAgentsSession,\n    type BetaManagedAgentsSessionAgent as BetaManagedAgentsSessionAgent,\n    type BetaManagedAgentsSessionStats as BetaManagedAgentsSessionStats,\n    type BetaManagedAgentsSessionUsage as BetaManagedAgentsSessionUsage,\n    type BetaManagedAgentsSessionsPageCursor as BetaManagedAgentsSessionsPageCursor,\n    type SessionCreateParams as SessionCreateParams,\n    type SessionRetrieveParams as SessionRetrieveParams,\n    type SessionUpdateParams as SessionUpdateParams,\n    type SessionListParams as SessionListParams,\n    type SessionDeleteParams as SessionDeleteParams,\n    type SessionArchiveParams as SessionArchiveParams,\n  };\n\n  export {\n    Vaults as Vaults,\n    type BetaManagedAgentsDeletedVault as BetaManagedAgentsDeletedVault,\n    type BetaManagedAgentsVault as BetaManagedAgentsVault,\n    type BetaManagedAgentsVaultsPageCursor as BetaManagedAgentsVaultsPageCursor,\n    type VaultCreateParams as VaultCreateParams,\n    type VaultRetrieveParams as VaultRetrieveParams,\n    type VaultUpdateParams as VaultUpdateParams,\n    type VaultListParams as VaultListParams,\n    type VaultDeleteParams as VaultDeleteParams,\n    type VaultArchiveParams as VaultArchiveParams,\n  };\n\n  export {\n    MemoryStores as MemoryStores,\n    type BetaManagedAgentsDeletedMemoryStore as BetaManagedAgentsDeletedMemoryStore,\n    type BetaManagedAgentsMemoryStore as BetaManagedAgentsMemoryStore,\n    type BetaManagedAgentsMemoryStoresPageCursor as BetaManagedAgentsMemoryStoresPageCursor,\n    type MemoryStoreCreateParams as MemoryStoreCreateParams,\n    type MemoryStoreRetrieveParams as MemoryStoreRetrieveParams,\n    type MemoryStoreUpdateParams as MemoryStoreUpdateParams,\n    type MemoryStoreListParams as MemoryStoreListParams,\n    type MemoryStoreDeleteParams as MemoryStoreDeleteParams,\n    type MemoryStoreArchiveParams as MemoryStoreArchiveParams,\n  };\n\n  export {\n    Files as Files,\n    type BetaFileScope as BetaFileScope,\n    type DeletedFile as DeletedFile,\n    type FileMetadata as FileMetadata,\n    type FileMetadataPage as FileMetadataPage,\n    type FileListParams as FileListParams,\n    type FileDeleteParams as FileDeleteParams,\n    type FileDownloadParams as FileDownloadParams,\n    type FileRetrieveMetadataParams as FileRetrieveMetadataParams,\n    type FileUploadParams as FileUploadParams,\n  };\n\n  export {\n    Skills as Skills,\n    type SkillCreateResponse as SkillCreateResponse,\n    type SkillRetrieveResponse as SkillRetrieveResponse,\n    type SkillListResponse as SkillListResponse,\n    type SkillDeleteResponse as SkillDeleteResponse,\n    type SkillListResponsesPageCursor as SkillListResponsesPageCursor,\n    type SkillCreateParams as SkillCreateParams,\n    type SkillRetrieveParams as SkillRetrieveParams,\n    type SkillListParams as SkillListParams,\n    type SkillDeleteParams as SkillDeleteParams,\n  };\n\n  export {\n    UserProfiles as UserProfiles,\n    type BetaUserProfile as BetaUserProfile,\n    type BetaUserProfileEnrollmentURL as BetaUserProfileEnrollmentURL,\n    type BetaUserProfileTrustGrant as BetaUserProfileTrustGrant,\n    type BetaUserProfilesPageCursor as BetaUserProfilesPageCursor,\n    type UserProfileCreateParams as UserProfileCreateParams,\n    type UserProfileRetrieveParams as UserProfileRetrieveParams,\n    type UserProfileUpdateParams as UserProfileUpdateParams,\n    type UserProfileListParams as UserProfileListParams,\n    type UserProfileCreateEnrollmentURLParams as UserProfileCreateEnrollmentURLParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../core/resource';\nimport * as CompletionsAPI from './completions';\nimport * as BetaAPI from './beta/beta';\nimport * as MessagesAPI from './messages/messages';\nimport { APIPromise } from '../core/api-promise';\nimport { Stream } from '../core/streaming';\nimport { buildHeaders } from '../internal/headers';\nimport { RequestOptions } from '../internal/request-options';\n\nexport class Completions extends APIResource {\n  /**\n   * [Legacy] Create a Text Completion.\n   *\n   * The Text Completions API is a legacy API. We recommend using the\n   * [Messages API](https://docs.claude.com/en/api/messages) going forward.\n   *\n   * Future models and features will not be compatible with Text Completions. See our\n   * [migration guide](https://docs.claude.com/en/api/migrating-from-text-completions-to-messages)\n   * for guidance in migrating from Text Completions to Messages.\n   *\n   * @example\n   * ```ts\n   * const completion = await client.completions.create({\n   *   max_tokens_to_sample: 256,\n   *   model: 'claude-2.1',\n   *   prompt: '\\n\\nHuman: Hello, world!\\n\\nAssistant:',\n   * });\n   * ```\n   */\n  create(params: CompletionCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Completion>;\n  create(params: CompletionCreateParamsStreaming, options?: RequestOptions): APIPromise<Stream<Completion>>;\n  create(\n    params: CompletionCreateParamsBase,\n    options?: RequestOptions,\n  ): APIPromise<Stream<Completion> | Completion>;\n  create(\n    params: CompletionCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<Completion> | APIPromise<Stream<Completion>> {\n    const { betas, ...body } = params;\n    return this._client.post('/v1/complete', {\n      body,\n      timeout: (this._client as any)._options.timeout ?? 600000,\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        options?.headers,\n      ]),\n      stream: params.stream ?? false,\n    }) as APIPromise<Completion> | APIPromise<Stream<Completion>>;\n  }\n}\n\nexport interface Completion {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * The resulting completion up to and excluding the stop sequences.\n   */\n  completion: string;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * The reason that we stopped.\n   *\n   * This may be one the following values:\n   *\n   * - `\"stop_sequence\"`: we reached a stop sequence \u2014 either provided by you via the\n   *   `stop_sequences` parameter, or a stop sequence built into the model\n   * - `\"max_tokens\"`: we exceeded `max_tokens_to_sample` or the model's maximum\n   */\n  stop_reason: string | null;\n\n  /**\n   * Object type.\n   *\n   * For Text Completions, this is always `\"completion\"`.\n   */\n  type: 'completion';\n}\n\nexport type CompletionCreateParams = CompletionCreateParamsNonStreaming | CompletionCreateParamsStreaming;\n\nexport interface CompletionCreateParamsBase {\n  /**\n   * Body param: The maximum number of tokens to generate before stopping.\n   *\n   * Note that our models may stop _before_ reaching this maximum. This parameter\n   * only specifies the absolute maximum number of tokens to generate.\n   */\n  max_tokens_to_sample: number;\n\n  /**\n   * Body param: The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: MessagesAPI.Model;\n\n  /**\n   * Body param: The prompt that you want Claude to complete.\n   *\n   * For proper response generation you will need to format your prompt using\n   * alternating `\\n\\nHuman:` and `\\n\\nAssistant:` conversational turns. For example:\n   *\n   * ```\n   * \"\\n\\nHuman: {userQuestion}\\n\\nAssistant:\"\n   * ```\n   *\n   * See [prompt validation](https://docs.claude.com/en/api/prompt-validation) and\n   * our guide to [prompt design](https://docs.claude.com/en/docs/intro-to-prompting)\n   * for more details.\n   */\n  prompt: string;\n\n  /**\n   * Body param: An object describing metadata about the request.\n   */\n  metadata?: MessagesAPI.Metadata;\n\n  /**\n   * Body param: Sequences that will cause the model to stop generating.\n   *\n   * Our models stop on `\"\\n\\nHuman:\"`, and may include additional built-in stop\n   * sequences in the future. By providing the stop_sequences parameter, you may\n   * include additional strings that will cause the model to stop generating.\n   */\n  stop_sequences?: Array<string>;\n\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n   */\n  stream?: boolean;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting temperature. A value of 1.0 of will be accepted for backwards\n   * compatibility, all other values will be rejected with a 400 error.\n   */\n  temperature?: number;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not accept\n   * top_k; any value will be rejected with a 400 error.\n   */\n  top_k?: number;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting top_p. A value >= 0.99 will be accepted for backwards compatibility, all\n   * other values will be rejected with a 400 error.\n   */\n  top_p?: number;\n\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace CompletionCreateParams {\n  /**\n   * @deprecated use `Anthropic.Messages.Metadata` instead\n   */\n  export type Metadata = MessagesAPI.Metadata;\n\n  export type CompletionCreateParamsNonStreaming = CompletionsAPI.CompletionCreateParamsNonStreaming;\n  export type CompletionCreateParamsStreaming = CompletionsAPI.CompletionCreateParamsStreaming;\n}\n\nexport interface CompletionCreateParamsNonStreaming extends CompletionCreateParamsBase {\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n   */\n  stream?: false;\n}\n\nexport interface CompletionCreateParamsStreaming extends CompletionCreateParamsBase {\n  /**\n   * Body param: Whether to incrementally stream the response using server-sent\n   * events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n   */\n  stream: true;\n}\n\nexport declare namespace Completions {\n  export {\n    type Completion as Completion,\n    type CompletionCreateParams as CompletionCreateParams,\n    type CompletionCreateParamsNonStreaming as CompletionCreateParamsNonStreaming,\n    type CompletionCreateParamsStreaming as CompletionCreateParamsStreaming,\n  };\n}\n", "import type { Logger } from '../client';\nimport { AnthropicError } from '../core/error';\nimport {\n  ContentBlock,\n  JSONOutputFormat,\n  Message,\n  OutputConfig,\n  TextBlock,\n  MessageCreateParams,\n} from '../resources/messages/messages';\n\n// vendored from typefest just to make things look a bit nicer on hover\ntype Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};\n\ntype AutoParseableOutputConfig = Omit<OutputConfig, 'format'> & {\n  format?: JSONOutputFormat | AutoParseableOutputFormat<any> | null;\n};\n\nexport type ParseableMessageCreateParams = Simplify<\n  Omit<MessageCreateParams, 'output_config'> & {\n    output_config?: AutoParseableOutputConfig | null;\n  }\n>;\n\nexport type ExtractParsedContentFromParams<Params extends ParseableMessageCreateParams> =\n  Params['output_config'] extends { format: AutoParseableOutputFormat<infer P> } ? P : null;\n\nexport type AutoParseableOutputFormat<ParsedT> = JSONOutputFormat & {\n  parse(content: string): ParsedT;\n};\n\nexport type ParsedMessage<ParsedT> = Message & {\n  content: Array<ParsedContentBlock<ParsedT>>;\n  parsed_output: ParsedT | null;\n};\n\nexport type ParsedContentBlock<ParsedT> =\n  | (TextBlock & { parsed_output: ParsedT | null })\n  | Exclude<ContentBlock, TextBlock>;\n\nfunction getOutputFormat(\n  params: ParseableMessageCreateParams | null,\n): JSONOutputFormat | AutoParseableOutputFormat<any> | null | undefined {\n  return params?.output_config?.format;\n}\n\nexport function maybeParseMessage<Params extends ParseableMessageCreateParams | null>(\n  message: Message,\n  params: Params,\n  opts: { logger: Logger },\n): ParsedMessage<ExtractParsedContentFromParams<NonNullable<Params>>> {\n  const outputFormat = getOutputFormat(params);\n  if (!params || !('parse' in (outputFormat ?? {}))) {\n    return {\n      ...message,\n      content: message.content.map((block) => {\n        if (block.type === 'text') {\n          const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', {\n            value: null,\n            enumerable: false,\n          }) as ParsedContentBlock<ExtractParsedContentFromParams<NonNullable<Params>>>;\n\n          return parsedBlock;\n        }\n        return block;\n      }),\n      parsed_output: null,\n    } as ParsedMessage<ExtractParsedContentFromParams<NonNullable<Params>>>;\n  }\n\n  return parseMessage(message, params, opts);\n}\n\nexport function parseMessage<Params extends ParseableMessageCreateParams>(\n  message: Message,\n  params: Params,\n  opts: { logger: Logger },\n): ParsedMessage<ExtractParsedContentFromParams<Params>> {\n  let firstParsedOutput: ReturnType<typeof parseOutputFormat<Params>> | null = null;\n\n  const content: Array<ParsedContentBlock<ExtractParsedContentFromParams<Params>>> = message.content.map(\n    (block) => {\n      if (block.type === 'text') {\n        const parsedOutput = parseOutputFormat(params, block.text);\n\n        if (firstParsedOutput === null) {\n          firstParsedOutput = parsedOutput;\n        }\n\n        const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', {\n          value: parsedOutput,\n          enumerable: false,\n        }) as ParsedContentBlock<ExtractParsedContentFromParams<Params>>;\n        return parsedBlock;\n      }\n      return block;\n    },\n  );\n\n  return {\n    ...message,\n    content,\n    parsed_output: firstParsedOutput,\n  } as ParsedMessage<ExtractParsedContentFromParams<Params>>;\n}\n\nfunction parseOutputFormat<Params extends ParseableMessageCreateParams>(\n  params: Params,\n  content: string,\n): ExtractParsedContentFromParams<Params> | null {\n  const outputFormat = getOutputFormat(params);\n  if (outputFormat?.type !== 'json_schema') {\n    return null;\n  }\n\n  try {\n    if ('parse' in outputFormat) {\n      return outputFormat.parse(content);\n    }\n\n    return JSON.parse(content);\n  } catch (error) {\n    throw new AnthropicError(`Failed to parse structured output: ${error}`);\n  }\n}\n", "import { isAbortError } from '../internal/errors';\nimport { AnthropicError, APIUserAbortError } from '../error';\nimport {\n  type ContentBlock,\n  Messages,\n  type Message,\n  type MessageStreamEvent,\n  type MessageParam,\n  type MessageCreateParams,\n  type MessageCreateParamsBase,\n  type TextBlock,\n  type TextCitation,\n  type ToolUseBlock,\n  type ServerToolUseBlock,\n} from '../resources/messages';\nimport { Stream } from '../streaming';\nimport { partialParse } from '../_vendor/partial-json-parser/parser';\nimport { RequestOptions } from '../internal/request-options';\nimport type { Logger } from '../client';\nimport { maybeParseMessage, type ParsedMessage } from './parser';\n\nexport interface MessageStreamEvents<ParsedT = null> {\n  connect: () => void;\n  streamEvent: (event: MessageStreamEvent, snapshot: Message) => void;\n  text: (textDelta: string, textSnapshot: string) => void;\n  citation: (citation: TextCitation, citationsSnapshot: TextCitation[]) => void;\n  inputJson: (partialJson: string, jsonSnapshot: unknown) => void;\n  thinking: (thinkingDelta: string, thinkingSnapshot: string) => void;\n  signature: (signature: string) => void;\n  message: (message: ParsedMessage<ParsedT>) => void;\n  contentBlock: (content: ContentBlock) => void;\n  finalMessage: (message: ParsedMessage<ParsedT>) => void;\n  error: (error: AnthropicError) => void;\n  abort: (error: APIUserAbortError) => void;\n  end: () => void;\n}\n\ntype MessageStreamEventListeners<ParsedT, Event extends keyof MessageStreamEvents<ParsedT>> = {\n  listener: MessageStreamEvents<ParsedT>[Event];\n  once?: boolean;\n}[];\n\nconst JSON_BUF_PROPERTY = '__json_buf';\n\nexport type TracksToolInput = ToolUseBlock | ServerToolUseBlock;\n\nfunction tracksToolInput(content: ContentBlock): content is TracksToolInput {\n  return content.type === 'tool_use' || content.type === 'server_tool_use';\n}\n\nexport class MessageStream<ParsedT = null> implements AsyncIterable<MessageStreamEvent> {\n  messages: MessageParam[] = [];\n  receivedMessages: ParsedMessage<ParsedT>[] = [];\n  #currentMessageSnapshot: Message | undefined;\n  #params: MessageCreateParams | null = null;\n\n  controller: AbortController = new AbortController();\n\n  #connectedPromise: Promise<Response | null>;\n  #resolveConnectedPromise: (response: Response | null) => void = () => {};\n  #rejectConnectedPromise: (error: AnthropicError) => void = () => {};\n\n  #endPromise: Promise<void>;\n  #resolveEndPromise: () => void = () => {};\n  #rejectEndPromise: (error: AnthropicError) => void = () => {};\n\n  #listeners: {\n    [Event in keyof MessageStreamEvents<ParsedT>]?: MessageStreamEventListeners<ParsedT, Event>;\n  } = {};\n\n  #ended = false;\n  #errored = false;\n  #aborted = false;\n  #catchingPromiseCreated = false;\n  #response: Response | null | undefined;\n  #request_id: string | null | undefined;\n  #logger: Logger;\n\n  constructor(params: MessageCreateParamsBase | null, opts?: { logger?: Logger | undefined }) {\n    this.#connectedPromise = new Promise<Response | null>((resolve, reject) => {\n      this.#resolveConnectedPromise = resolve;\n      this.#rejectConnectedPromise = reject;\n    });\n\n    this.#endPromise = new Promise<void>((resolve, reject) => {\n      this.#resolveEndPromise = resolve;\n      this.#rejectEndPromise = reject;\n    });\n\n    // Don't let these promises cause unhandled rejection errors.\n    // we will manually cause an unhandled rejection error later\n    // if the user hasn't registered any error listener or called\n    // any promise-returning method.\n    this.#connectedPromise.catch(() => {});\n    this.#endPromise.catch(() => {});\n\n    this.#params = params;\n    this.#logger = opts?.logger ?? console;\n  }\n\n  get response(): Response | null | undefined {\n    return this.#response;\n  }\n\n  get request_id(): string | null | undefined {\n    return this.#request_id;\n  }\n\n  /**\n   * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n   * returned vie the `request-id` header which is useful for debugging requests and resporting\n   * issues to Anthropic.\n   *\n   * This is the same as the `APIPromise.withResponse()` method.\n   *\n   * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n   * as no `Response` is available.\n   */\n  async withResponse(): Promise<{\n    data: MessageStream<ParsedT>;\n    response: Response;\n    request_id: string | null | undefined;\n  }> {\n    this.#catchingPromiseCreated = true;\n\n    const response = await this.#connectedPromise;\n    if (!response) {\n      throw new Error('Could not resolve a `Response` object');\n    }\n\n    return {\n      data: this,\n      response,\n      request_id: response.headers.get('request-id'),\n    };\n  }\n\n  /**\n   * Intended for use on the frontend, consuming a stream produced with\n   * `.toReadableStream()` on the backend.\n   *\n   * Note that messages sent to the model do not appear in `.on('message')`\n   * in this context.\n   */\n  static fromReadableStream(stream: ReadableStream): MessageStream {\n    const runner = new MessageStream(null);\n    runner._run(() => runner._fromReadableStream(stream));\n    return runner;\n  }\n\n  static createMessage<ParsedT>(\n    messages: Messages,\n    params: MessageCreateParamsBase,\n    options?: RequestOptions,\n    { logger }: { logger?: Logger | undefined } = {},\n  ): MessageStream<ParsedT> {\n    const runner = new MessageStream<ParsedT>(params, { logger });\n    for (const message of params.messages) {\n      runner._addMessageParam(message);\n    }\n    runner.#params = { ...params, stream: true };\n    runner._run(() =>\n      runner._createMessage(\n        messages,\n        { ...params, stream: true },\n        { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },\n      ),\n    );\n    return runner;\n  }\n\n  protected _run(executor: () => Promise<any>) {\n    executor().then(() => {\n      this._emitFinal();\n      this._emit('end');\n    }, this.#handleError);\n  }\n\n  protected _addMessageParam(message: MessageParam) {\n    this.messages.push(message);\n  }\n\n  protected _addMessage(message: ParsedMessage<ParsedT>, emit = true) {\n    this.receivedMessages.push(message);\n    if (emit) {\n      this._emit('message', message);\n    }\n  }\n\n  protected async _createMessage(\n    messages: Messages,\n    params: MessageCreateParams,\n    options?: RequestOptions,\n  ): Promise<void> {\n    const signal = options?.signal;\n    let abortHandler: (() => void) | undefined;\n    if (signal) {\n      if (signal.aborted) this.controller.abort();\n      abortHandler = this.controller.abort.bind(this.controller);\n      signal.addEventListener('abort', abortHandler);\n    }\n    try {\n      this.#beginRequest();\n      const { response, data: stream } = await messages\n        .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n        .withResponse();\n      this._connected(response);\n      for await (const event of stream) {\n        this.#addStreamEvent(event);\n      }\n      if (stream.controller.signal?.aborted) {\n        throw new APIUserAbortError();\n      }\n      this.#endRequest();\n    } finally {\n      if (signal && abortHandler) {\n        signal.removeEventListener('abort', abortHandler);\n      }\n    }\n  }\n\n  protected _connected(response: Response | null) {\n    if (this.ended) return;\n    this.#response = response;\n    this.#request_id = response?.headers.get('request-id');\n    this.#resolveConnectedPromise(response);\n    this._emit('connect');\n  }\n\n  get ended(): boolean {\n    return this.#ended;\n  }\n\n  get errored(): boolean {\n    return this.#errored;\n  }\n\n  get aborted(): boolean {\n    return this.#aborted;\n  }\n\n  abort() {\n    this.controller.abort();\n  }\n\n  /**\n   * Adds the listener function to the end of the listeners array for the event.\n   * No checks are made to see if the listener has already been added. Multiple calls passing\n   * the same combination of event and listener will result in the listener being added, and\n   * called, multiple times.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  on<Event extends keyof MessageStreamEvents<ParsedT>>(\n    event: Event,\n    listener: MessageStreamEvents<ParsedT>[Event],\n  ): this {\n    const listeners: MessageStreamEventListeners<ParsedT, Event> =\n      this.#listeners[event] || (this.#listeners[event] = []);\n    listeners.push({ listener });\n    return this;\n  }\n\n  /**\n   * Removes the specified listener from the listener array for the event.\n   * off() will remove, at most, one instance of a listener from the listener array. If any single\n   * listener has been added multiple times to the listener array for the specified event, then\n   * off() must be called multiple times to remove each instance.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  off<Event extends keyof MessageStreamEvents<ParsedT>>(\n    event: Event,\n    listener: MessageStreamEvents<ParsedT>[Event],\n  ): this {\n    const listeners = this.#listeners[event];\n    if (!listeners) return this;\n    const index = listeners.findIndex((l) => l.listener === listener);\n    if (index >= 0) listeners.splice(index, 1);\n    return this;\n  }\n\n  /**\n   * Adds a one-time listener function for the event. The next time the event is triggered,\n   * this listener is removed and then invoked.\n   * @returns this MessageStream, so that calls can be chained\n   */\n  once<Event extends keyof MessageStreamEvents<ParsedT>>(\n    event: Event,\n    listener: MessageStreamEvents<ParsedT>[Event],\n  ): this {\n    const listeners: MessageStreamEventListeners<ParsedT, Event> =\n      this.#listeners[event] || (this.#listeners[event] = []);\n    listeners.push({ listener, once: true });\n    return this;\n  }\n\n  /**\n   * This is similar to `.once()`, but returns a Promise that resolves the next time\n   * the event is triggered, instead of calling a listener callback.\n   * @returns a Promise that resolves the next time given event is triggered,\n   * or rejects if an error is emitted.  (If you request the 'error' event,\n   * returns a promise that resolves with the error).\n   *\n   * Example:\n   *\n   *   const message = await stream.emitted('message') // rejects if the stream errors\n   */\n  emitted<Event extends keyof MessageStreamEvents<ParsedT>>(\n    event: Event,\n  ): Promise<\n    Parameters<MessageStreamEvents<ParsedT>[Event]> extends [infer Param] ? Param\n    : Parameters<MessageStreamEvents<ParsedT>[Event]> extends [] ? void\n    : Parameters<MessageStreamEvents<ParsedT>[Event]>\n  > {\n    return new Promise((resolve, reject) => {\n      this.#catchingPromiseCreated = true;\n      if (event !== 'error') this.once('error', reject);\n      this.once(event, resolve as any);\n    });\n  }\n\n  async done(): Promise<void> {\n    this.#catchingPromiseCreated = true;\n    await this.#endPromise;\n  }\n\n  get currentMessage(): Message | undefined {\n    return this.#currentMessageSnapshot;\n  }\n\n  #getFinalMessage(): ParsedMessage<ParsedT> {\n    if (this.receivedMessages.length === 0) {\n      throw new AnthropicError('stream ended without producing a Message with role=assistant');\n    }\n    return this.receivedMessages.at(-1)!;\n  }\n\n  /**\n   * @returns a promise that resolves with the the final assistant Message response,\n   * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n   * If structured outputs were used, this will be a ParsedMessage with a `parsed_output` field.\n   */\n  async finalMessage(): Promise<ParsedMessage<ParsedT>> {\n    await this.done();\n    return this.#getFinalMessage();\n  }\n\n  #getFinalText(): string {\n    if (this.receivedMessages.length === 0) {\n      throw new AnthropicError('stream ended without producing a Message with role=assistant');\n    }\n    const textBlocks = this.receivedMessages\n      .at(-1)!\n      .content.filter((block): block is TextBlock => block.type === 'text')\n      .map((block) => block.text);\n    if (textBlocks.length === 0) {\n      throw new AnthropicError('stream ended without producing a content block with type=text');\n    }\n    return textBlocks.join(' ');\n  }\n\n  /**\n   * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n   * together if there are more than one text blocks.\n   * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n   */\n  async finalText(): Promise<string> {\n    await this.done();\n    return this.#getFinalText();\n  }\n\n  #handleError = (error: unknown) => {\n    this.#errored = true;\n    if (isAbortError(error)) {\n      error = new APIUserAbortError();\n    }\n    if (error instanceof APIUserAbortError) {\n      this.#aborted = true;\n      return this._emit('abort', error);\n    }\n    if (error instanceof AnthropicError) {\n      return this._emit('error', error);\n    }\n    if (error instanceof Error) {\n      const anthropicError: AnthropicError = new AnthropicError(error.message);\n      // @ts-ignore\n      anthropicError.cause = error;\n      return this._emit('error', anthropicError);\n    }\n    return this._emit('error', new AnthropicError(String(error)));\n  };\n\n  protected _emit<Event extends keyof MessageStreamEvents<ParsedT>>(\n    event: Event,\n    ...args: Parameters<MessageStreamEvents<ParsedT>[Event]>\n  ) {\n    // make sure we don't emit any MessageStreamEvents after end\n    if (this.#ended) return;\n\n    if (event === 'end') {\n      this.#ended = true;\n      this.#resolveEndPromise();\n    }\n\n    const listeners: MessageStreamEventListeners<ParsedT, Event> | undefined = this.#listeners[event];\n    if (listeners) {\n      this.#listeners[event] = listeners.filter((l: { once?: boolean }) => !l.once) as any;\n      listeners.forEach(({ listener }: any) => listener(...args));\n    }\n\n    if (event === 'abort') {\n      const error = args[0] as APIUserAbortError;\n      if (!this.#catchingPromiseCreated && !listeners?.length) {\n        Promise.reject(error);\n      }\n      this.#rejectConnectedPromise(error);\n      this.#rejectEndPromise(error);\n      this._emit('end');\n      return;\n    }\n\n    if (event === 'error') {\n      // NOTE: _emit('error', error) should only be called from #handleError().\n\n      const error = args[0] as AnthropicError;\n      if (!this.#catchingPromiseCreated && !listeners?.length) {\n        // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n        // If you are seeing stack traces here, make sure to handle errors via either:\n        // - runner.on('error', () => ...)\n        // - await runner.done()\n        // - await runner.final...()\n        // - etc.\n        Promise.reject(error);\n      }\n      this.#rejectConnectedPromise(error);\n      this.#rejectEndPromise(error);\n      this._emit('end');\n    }\n  }\n\n  protected _emitFinal() {\n    const finalMessage = this.receivedMessages.at(-1);\n    if (finalMessage) {\n      this._emit('finalMessage', this.#getFinalMessage());\n    }\n  }\n\n  #beginRequest() {\n    if (this.ended) return;\n    this.#currentMessageSnapshot = undefined;\n  }\n  #addStreamEvent(event: MessageStreamEvent) {\n    if (this.ended) return;\n    const messageSnapshot = this.#accumulateMessage(event);\n    this._emit('streamEvent', event, messageSnapshot);\n\n    switch (event.type) {\n      case 'content_block_delta': {\n        const content = messageSnapshot.content.at(-1)!;\n        switch (event.delta.type) {\n          case 'text_delta': {\n            if (content.type === 'text') {\n              this._emit('text', event.delta.text, content.text || '');\n            }\n            break;\n          }\n          case 'citations_delta': {\n            if (content.type === 'text') {\n              this._emit('citation', event.delta.citation, content.citations ?? []);\n            }\n            break;\n          }\n          case 'input_json_delta': {\n            if (tracksToolInput(content) && content.input) {\n              this._emit('inputJson', event.delta.partial_json, content.input);\n            }\n            break;\n          }\n          case 'thinking_delta': {\n            if (content.type === 'thinking') {\n              this._emit('thinking', event.delta.thinking, content.thinking);\n            }\n            break;\n          }\n          case 'signature_delta': {\n            if (content.type === 'thinking') {\n              this._emit('signature', content.signature);\n            }\n            break;\n          }\n          default:\n            checkNever(event.delta);\n        }\n        break;\n      }\n      case 'message_stop': {\n        this._addMessageParam(messageSnapshot);\n        this._addMessage(maybeParseMessage(messageSnapshot, this.#params, { logger: this.#logger }), true);\n        break;\n      }\n      case 'content_block_stop': {\n        this._emit('contentBlock', messageSnapshot.content.at(-1)!);\n        break;\n      }\n      case 'message_start': {\n        this.#currentMessageSnapshot = messageSnapshot;\n        break;\n      }\n      case 'content_block_start':\n      case 'message_delta':\n        break;\n    }\n  }\n  #endRequest(): ParsedMessage<ParsedT> {\n    if (this.ended) {\n      throw new AnthropicError(`stream has ended, this shouldn't happen`);\n    }\n    const snapshot = this.#currentMessageSnapshot;\n    if (!snapshot) {\n      throw new AnthropicError(`request ended without sending any chunks`);\n    }\n    this.#currentMessageSnapshot = undefined;\n    return maybeParseMessage(snapshot, this.#params, { logger: this.#logger });\n  }\n\n  protected async _fromReadableStream(\n    readableStream: ReadableStream,\n    options?: RequestOptions,\n  ): Promise<void> {\n    const signal = options?.signal;\n    let abortHandler: (() => void) | undefined;\n    if (signal) {\n      if (signal.aborted) this.controller.abort();\n      abortHandler = this.controller.abort.bind(this.controller);\n      signal.addEventListener('abort', abortHandler);\n    }\n    try {\n      this.#beginRequest();\n      this._connected(null);\n      const stream = Stream.fromReadableStream<MessageStreamEvent>(readableStream, this.controller);\n      for await (const event of stream) {\n        this.#addStreamEvent(event);\n      }\n      if (stream.controller.signal?.aborted) {\n        throw new APIUserAbortError();\n      }\n      this.#endRequest();\n    } finally {\n      if (signal && abortHandler) {\n        signal.removeEventListener('abort', abortHandler);\n      }\n    }\n  }\n\n  /**\n   * Mutates this.#currentMessage with the current event. Handling the accumulation of multiple messages\n   * will be needed to be handled by the caller, this method will throw if you try to accumulate for multiple\n   * messages.\n   */\n  #accumulateMessage(event: MessageStreamEvent): Message {\n    let snapshot = this.#currentMessageSnapshot;\n\n    if (event.type === 'message_start') {\n      if (snapshot) {\n        throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n      }\n      return event.message;\n    }\n\n    if (!snapshot) {\n      throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n    }\n\n    switch (event.type) {\n      case 'message_stop':\n        return snapshot;\n      case 'message_delta':\n        snapshot.stop_reason = event.delta.stop_reason;\n        snapshot.stop_sequence = event.delta.stop_sequence;\n        snapshot.usage.output_tokens = event.usage.output_tokens;\n\n        // Update other usage fields if they exist in the event\n        if (event.usage.input_tokens != null) {\n          snapshot.usage.input_tokens = event.usage.input_tokens;\n        }\n\n        if (event.usage.cache_creation_input_tokens != null) {\n          snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n        }\n\n        if (event.usage.cache_read_input_tokens != null) {\n          snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n        }\n\n        if (event.usage.server_tool_use != null) {\n          snapshot.usage.server_tool_use = event.usage.server_tool_use;\n        }\n\n        return snapshot;\n      case 'content_block_start':\n        snapshot.content.push({ ...event.content_block });\n        return snapshot;\n      case 'content_block_delta': {\n        const snapshotContent = snapshot.content.at(event.index);\n\n        switch (event.delta.type) {\n          case 'text_delta': {\n            if (snapshotContent?.type === 'text') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                text: (snapshotContent.text || '') + event.delta.text,\n              };\n            }\n            break;\n          }\n          case 'citations_delta': {\n            if (snapshotContent?.type === 'text') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n              };\n            }\n            break;\n          }\n          case 'input_json_delta': {\n            if (snapshotContent && tracksToolInput(snapshotContent)) {\n              // we need to keep track of the raw JSON string as well so that we can\n              // re-parse it for each delta, for now we just store it as an untyped\n              // non-enumerable property on the snapshot\n              let jsonBuf = (snapshotContent as any)[JSON_BUF_PROPERTY] || '';\n              jsonBuf += event.delta.partial_json;\n\n              const newContent = { ...snapshotContent };\n              Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n                value: jsonBuf,\n                enumerable: false,\n                writable: true,\n              });\n\n              if (jsonBuf) {\n                newContent.input = partialParse(jsonBuf);\n              }\n              snapshot.content[event.index] = newContent;\n            }\n            break;\n          }\n          case 'thinking_delta': {\n            if (snapshotContent?.type === 'thinking') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                thinking: snapshotContent.thinking + event.delta.thinking,\n              };\n            }\n            break;\n          }\n          case 'signature_delta': {\n            if (snapshotContent?.type === 'thinking') {\n              snapshot.content[event.index] = {\n                ...snapshotContent,\n                signature: event.delta.signature,\n              };\n            }\n            break;\n          }\n          default:\n            checkNever(event.delta);\n        }\n\n        return snapshot;\n      }\n      case 'content_block_stop':\n        return snapshot;\n    }\n  }\n\n  [Symbol.asyncIterator](): AsyncIterator<MessageStreamEvent> {\n    const pushQueue: MessageStreamEvent[] = [];\n    const readQueue: {\n      resolve: (chunk: MessageStreamEvent | undefined) => void;\n      reject: (error: unknown) => void;\n    }[] = [];\n    let done = false;\n\n    this.on('streamEvent', (event) => {\n      const reader = readQueue.shift();\n      if (reader) {\n        reader.resolve(event);\n      } else {\n        pushQueue.push(event);\n      }\n    });\n\n    this.on('end', () => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.resolve(undefined);\n      }\n      readQueue.length = 0;\n    });\n\n    this.on('abort', (err) => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.reject(err);\n      }\n      readQueue.length = 0;\n    });\n\n    this.on('error', (err) => {\n      done = true;\n      for (const reader of readQueue) {\n        reader.reject(err);\n      }\n      readQueue.length = 0;\n    });\n\n    return {\n      next: async (): Promise<IteratorResult<MessageStreamEvent>> => {\n        if (!pushQueue.length) {\n          if (done) {\n            return { value: undefined, done: true };\n          }\n          return new Promise<MessageStreamEvent | undefined>((resolve, reject) =>\n            readQueue.push({ resolve, reject }),\n          ).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n        }\n        const chunk = pushQueue.shift()!;\n        return { value: chunk, done: false };\n      },\n      return: async () => {\n        this.abort();\n        return { value: undefined, done: true };\n      },\n    };\n  }\n\n  toReadableStream(): ReadableStream {\n    const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n    return stream.toReadableStream();\n  }\n}\n\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x: never) {}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as Shared from '../shared';\nimport * as MessagesAPI from './messages';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { JSONLDecoder } from '../../internal/decoders/jsonl';\nimport { AnthropicError } from '../../error';\nimport { path } from '../../internal/utils/path';\n\nexport class Batches extends APIResource {\n  /**\n   * Send a batch of Message creation requests.\n   *\n   * The Message Batches API can be used to process multiple Messages API requests at\n   * once. Once a Message Batch is created, it begins processing immediately. Batches\n   * can take up to 24 hours to complete.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const messageBatch = await client.messages.batches.create({\n   *   requests: [\n   *     {\n   *       custom_id: 'my-custom-id-1',\n   *       params: {\n   *         max_tokens: 1024,\n   *         messages: [\n   *           { content: 'Hello, world', role: 'user' },\n   *         ],\n   *         model: 'claude-opus-4-6',\n   *       },\n   *     },\n   *   ],\n   * });\n   * ```\n   */\n  create(body: BatchCreateParams, options?: RequestOptions): APIPromise<MessageBatch> {\n    return this._client.post('/v1/messages/batches', { body, ...options });\n  }\n\n  /**\n   * This endpoint is idempotent and can be used to poll for Message Batch\n   * completion. To access the results of a Message Batch, make a request to the\n   * `results_url` field in the response.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const messageBatch = await client.messages.batches.retrieve(\n   *   'message_batch_id',\n   * );\n   * ```\n   */\n  retrieve(messageBatchID: string, options?: RequestOptions): APIPromise<MessageBatch> {\n    return this._client.get(path`/v1/messages/batches/${messageBatchID}`, options);\n  }\n\n  /**\n   * List all Message Batches within a Workspace. Most recently created batches are\n   * returned first.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * // Automatically fetches more pages as needed.\n   * for await (const messageBatch of client.messages.batches.list()) {\n   *   // ...\n   * }\n   * ```\n   */\n  list(\n    query: BatchListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<MessageBatchesPage, MessageBatch> {\n    return this._client.getAPIList('/v1/messages/batches', Page<MessageBatch>, { query, ...options });\n  }\n\n  /**\n   * Delete a Message Batch.\n   *\n   * Message Batches can only be deleted once they've finished processing. If you'd\n   * like to delete an in-progress batch, you must first cancel it.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const deletedMessageBatch =\n   *   await client.messages.batches.delete('message_batch_id');\n   * ```\n   */\n  delete(messageBatchID: string, options?: RequestOptions): APIPromise<DeletedMessageBatch> {\n    return this._client.delete(path`/v1/messages/batches/${messageBatchID}`, options);\n  }\n\n  /**\n   * Batches may be canceled any time before processing ends. Once cancellation is\n   * initiated, the batch enters a `canceling` state, at which time the system may\n   * complete any in-progress, non-interruptible requests before finalizing\n   * cancellation.\n   *\n   * The number of canceled requests is specified in `request_counts`. To determine\n   * which requests were canceled, check the individual results within the batch.\n   * Note that cancellation may not result in any canceled requests if they were\n   * non-interruptible.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const messageBatch = await client.messages.batches.cancel(\n   *   'message_batch_id',\n   * );\n   * ```\n   */\n  cancel(messageBatchID: string, options?: RequestOptions): APIPromise<MessageBatch> {\n    return this._client.post(path`/v1/messages/batches/${messageBatchID}/cancel`, options);\n  }\n\n  /**\n   * Streams the results of a Message Batch as a `.jsonl` file.\n   *\n   * Each line in the file is a JSON object containing the result of a single request\n   * in the Message Batch. Results are not guaranteed to be in the same order as\n   * requests. Use the `custom_id` field to match results to requests.\n   *\n   * Learn more about the Message Batches API in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n   *\n   * @example\n   * ```ts\n   * const messageBatchIndividualResponse =\n   *   await client.messages.batches.results('message_batch_id');\n   * ```\n   */\n  async results(\n    messageBatchID: string,\n    options?: RequestOptions,\n  ): Promise<JSONLDecoder<MessageBatchIndividualResponse>> {\n    const batch = await this.retrieve(messageBatchID);\n    if (!batch.results_url) {\n      throw new AnthropicError(\n        `No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`,\n      );\n    }\n\n    return this._client\n      .get(batch.results_url, {\n        ...options,\n        headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n        stream: true,\n        __binaryResponse: true,\n      })\n      ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller)) as APIPromise<\n      JSONLDecoder<MessageBatchIndividualResponse>\n    >;\n  }\n}\n\nexport type MessageBatchesPage = Page<MessageBatch>;\n\nexport interface DeletedMessageBatch {\n  /**\n   * ID of the Message Batch.\n   */\n  id: string;\n\n  /**\n   * Deleted object type.\n   *\n   * For Message Batches, this is always `\"message_batch_deleted\"`.\n   */\n  type: 'message_batch_deleted';\n}\n\nexport interface MessageBatch {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch was\n   * archived and its results became unavailable.\n   */\n  archived_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which cancellation was\n   * initiated for the Message Batch. Specified only if cancellation was initiated.\n   */\n  cancel_initiated_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch was\n   * created.\n   */\n  created_at: string;\n\n  /**\n   * RFC 3339 datetime string representing the time at which processing for the\n   * Message Batch ended. Specified only once processing ends.\n   *\n   * Processing ends when every request in a Message Batch has either succeeded,\n   * errored, canceled, or expired.\n   */\n  ended_at: string | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the Message Batch will\n   * expire and end processing, which is 24 hours after creation.\n   */\n  expires_at: string;\n\n  /**\n   * Processing status of the Message Batch.\n   */\n  processing_status: 'in_progress' | 'canceling' | 'ended';\n\n  /**\n   * Tallies requests within the Message Batch, categorized by their status.\n   *\n   * Requests start as `processing` and move to one of the other statuses only once\n   * processing of the entire batch ends. The sum of all values always matches the\n   * total number of requests in the batch.\n   */\n  request_counts: MessageBatchRequestCounts;\n\n  /**\n   * URL to a `.jsonl` file containing the results of the Message Batch requests.\n   * Specified only once processing ends.\n   *\n   * Results in the file are not guaranteed to be in the same order as requests. Use\n   * the `custom_id` field to match results to requests.\n   */\n  results_url: string | null;\n\n  /**\n   * Object type.\n   *\n   * For Message Batches, this is always `\"message_batch\"`.\n   */\n  type: 'message_batch';\n}\n\nexport interface MessageBatchCanceledResult {\n  type: 'canceled';\n}\n\nexport interface MessageBatchErroredResult {\n  error: Shared.ErrorResponse;\n\n  type: 'errored';\n}\n\nexport interface MessageBatchExpiredResult {\n  type: 'expired';\n}\n\n/**\n * This is a single line in the response `.jsonl` file and does not represent the\n * response as a whole.\n */\nexport interface MessageBatchIndividualResponse {\n  /**\n   * Developer-provided ID created for each request in a Message Batch. Useful for\n   * matching results to requests, as results may be given out of request order.\n   *\n   * Must be unique for each request within the Message Batch.\n   */\n  custom_id: string;\n\n  /**\n   * Processing result for this request.\n   *\n   * Contains a Message output if processing was successful, an error response if\n   * processing failed, or the reason why processing was not attempted, such as\n   * cancellation or expiration.\n   */\n  result: MessageBatchResult;\n}\n\nexport interface MessageBatchRequestCounts {\n  /**\n   * Number of requests in the Message Batch that have been canceled.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  canceled: number;\n\n  /**\n   * Number of requests in the Message Batch that encountered an error.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  errored: number;\n\n  /**\n   * Number of requests in the Message Batch that have expired.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  expired: number;\n\n  /**\n   * Number of requests in the Message Batch that are processing.\n   */\n  processing: number;\n\n  /**\n   * Number of requests in the Message Batch that have completed successfully.\n   *\n   * This is zero until processing of the entire Message Batch has ended.\n   */\n  succeeded: number;\n}\n\n/**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\nexport type MessageBatchResult =\n  | MessageBatchSucceededResult\n  | MessageBatchErroredResult\n  | MessageBatchCanceledResult\n  | MessageBatchExpiredResult;\n\nexport interface MessageBatchSucceededResult {\n  message: MessagesAPI.Message;\n\n  type: 'succeeded';\n}\n\nexport interface BatchCreateParams {\n  /**\n   * List of requests for prompt completion. Each is an individual request to create\n   * a Message.\n   */\n  requests: Array<BatchCreateParams.Request>;\n}\n\nexport namespace BatchCreateParams {\n  export interface Request {\n    /**\n     * Developer-provided ID created for each request in a Message Batch. Useful for\n     * matching results to requests, as results may be given out of request order.\n     *\n     * Must be unique for each request within the Message Batch.\n     */\n    custom_id: string;\n\n    /**\n     * Messages API creation parameters for the individual request.\n     *\n     * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n     * full documentation on available parameters.\n     */\n    params: MessagesAPI.MessageCreateParamsNonStreaming;\n  }\n}\n\nexport interface BatchListParams extends PageParams {}\n\nexport declare namespace Batches {\n  export {\n    type DeletedMessageBatch as DeletedMessageBatch,\n    type MessageBatch as MessageBatch,\n    type MessageBatchCanceledResult as MessageBatchCanceledResult,\n    type MessageBatchErroredResult as MessageBatchErroredResult,\n    type MessageBatchExpiredResult as MessageBatchExpiredResult,\n    type MessageBatchIndividualResponse as MessageBatchIndividualResponse,\n    type MessageBatchRequestCounts as MessageBatchRequestCounts,\n    type MessageBatchResult as MessageBatchResult,\n    type MessageBatchSucceededResult as MessageBatchSucceededResult,\n    type MessageBatchesPage as MessageBatchesPage,\n    type BatchCreateParams as BatchCreateParams,\n    type BatchListParams as BatchListParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIPromise } from '../../core/api-promise';\nimport { APIResource } from '../../core/resource';\nimport { Stream } from '../../core/streaming';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { stainlessHelperHeader } from '../../lib/stainless-helper-header';\nimport { MessageStream } from '../../lib/MessageStream';\nimport {\n  parseMessage,\n  type ExtractParsedContentFromParams,\n  type ParseableMessageCreateParams,\n  type ParsedMessage,\n} from '../../lib/parser';\nimport * as BatchesAPI from './batches';\nimport {\n  BatchCreateParams,\n  BatchListParams,\n  Batches,\n  DeletedMessageBatch,\n  MessageBatch,\n  MessageBatchCanceledResult,\n  MessageBatchErroredResult,\n  MessageBatchExpiredResult,\n  MessageBatchIndividualResponse,\n  MessageBatchRequestCounts,\n  MessageBatchResult,\n  MessageBatchSucceededResult,\n  MessageBatchesPage,\n} from './batches';\nimport * as MessagesAPI from './messages';\n\nimport { MODEL_NONSTREAMING_TOKENS } from '../../internal/constants';\n\nexport class Messages extends APIResource {\n  batches: BatchesAPI.Batches = new BatchesAPI.Batches(this._client);\n\n  /**\n   * Send a structured list of input messages with text and/or image content, and the\n   * model will generate the next message in the conversation.\n   *\n   * The Messages API can be used for either single queries or stateless multi-turn\n   * conversations.\n   *\n   * Learn more about the Messages API in our\n   * [user guide](https://docs.claude.com/en/docs/initial-setup)\n   *\n   * @example\n   * ```ts\n   * const message = await client.messages.create({\n   *   max_tokens: 1024,\n   *   messages: [{ content: 'Hello, world', role: 'user' }],\n   *   model: 'claude-opus-4-6',\n   * });\n   * ```\n   */\n  create(body: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Message>;\n  create(\n    body: MessageCreateParamsStreaming,\n    options?: RequestOptions,\n  ): APIPromise<Stream<RawMessageStreamEvent>>;\n  create(\n    body: MessageCreateParamsBase,\n    options?: RequestOptions,\n  ): APIPromise<Stream<RawMessageStreamEvent> | Message>;\n  create(\n    body: MessageCreateParams,\n    options?: RequestOptions,\n  ): APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>> {\n    if (body.model in DEPRECATED_MODELS) {\n      console.warn(\n        `The model '${body.model}' is deprecated and will reach end-of-life on ${\n          DEPRECATED_MODELS[body.model]\n        }\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`,\n      );\n    }\n    if (\n      MODELS_TO_WARN_WITH_THINKING_ENABLED.includes(body.model) &&\n      body.thinking &&\n      body.thinking.type === 'enabled'\n    ) {\n      console.warn(\n        `Using Claude with ${body.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`,\n      );\n    }\n\n    let timeout = (this._client as any)._options.timeout as number | null;\n    if (!body.stream && timeout == null) {\n      const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n      timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n    }\n\n    // Collect helper info from tools and messages\n    const helperHeader = stainlessHelperHeader(body.tools, body.messages);\n\n    return this._client.post('/v1/messages', {\n      body,\n      timeout: timeout ?? 600000,\n      ...options,\n      headers: buildHeaders([helperHeader, options?.headers]),\n      stream: body.stream ?? false,\n    }) as APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>>;\n  }\n\n  /**\n   * Send a structured list of input messages with text and/or image content, along with an expected `output_config.format` and\n   * the response will be automatically parsed and available in the `parsed_output` property of the message.\n   *\n   * @example\n   * ```ts\n   * const message = await client.messages.parse({\n   *   model: 'claude-sonnet-4-5-20250929',\n   *   max_tokens: 1024,\n   *   messages: [{ role: 'user', content: 'What is 2+2?' }],\n   *   output_config: {\n   *     format: zodOutputFormat(z.object({ answer: z.number() })),\n   *   },\n   * });\n   *\n   * console.log(message.parsed_output?.answer); // 4\n   * ```\n   */\n  parse<Params extends MessageCreateParamsNonStreaming>(\n    params: Params,\n    options?: RequestOptions,\n  ): APIPromise<ParsedMessage<ExtractParsedContentFromParams<Params>>> {\n    return this.create(params, options).then((message) =>\n      parseMessage(message, params, { logger: this._client.logger ?? console }),\n    ) as APIPromise<ParsedMessage<ExtractParsedContentFromParams<Params>>>;\n  }\n\n  /**\n   * Create a Message stream.\n   *\n   * If `output_config.format` is provided with a parseable format (like `zodOutputFormat()`),\n   * the final message will include a `parsed_output` property with the parsed content.\n   *\n   * @example\n   * ```ts\n   * const stream = client.messages.stream({\n   *   model: 'claude-sonnet-4-5-20250929',\n   *   max_tokens: 1024,\n   *   messages: [{ role: 'user', content: 'What is 2+2?' }],\n   *   output_config: {\n   *     format: zodOutputFormat(z.object({ answer: z.number() })),\n   *   },\n   * });\n   *\n   * const message = await stream.finalMessage();\n   * console.log(message.parsed_output?.answer); // 4\n   * ```\n   */\n  stream<Params extends MessageStreamParams>(\n    body: Params,\n    options?: RequestOptions,\n  ): MessageStream<ExtractParsedContentFromParams<Params>> {\n    return MessageStream.createMessage<ExtractParsedContentFromParams<Params>>(\n      this,\n      body as MessageCreateParamsBase,\n      options,\n      { logger: this._client.logger ?? console },\n    );\n  }\n\n  /**\n   * Count the number of tokens in a Message.\n   *\n   * The Token Count API can be used to count the number of tokens in a Message,\n   * including tools, images, and documents, without creating it.\n   *\n   * Learn more about token counting in our\n   * [user guide](https://docs.claude.com/en/docs/build-with-claude/token-counting)\n   *\n   * @example\n   * ```ts\n   * const messageTokensCount =\n   *   await client.messages.countTokens({\n   *     messages: [{ content: 'Hello, world', role: 'user' }],\n   *     model: 'claude-opus-4-6',\n   *   });\n   * ```\n   */\n  countTokens(body: MessageCountTokensParams, options?: RequestOptions): APIPromise<MessageTokensCount> {\n    return this._client.post('/v1/messages/count_tokens', { body, ...options });\n  }\n}\n\nexport interface Base64ImageSource {\n  data: string;\n\n  media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';\n\n  type: 'base64';\n}\n\nexport interface Base64PDFSource {\n  data: string;\n\n  media_type: 'application/pdf';\n\n  type: 'base64';\n}\n\nexport interface BashCodeExecutionOutputBlock {\n  file_id: string;\n\n  type: 'bash_code_execution_output';\n}\n\nexport interface BashCodeExecutionOutputBlockParam {\n  file_id: string;\n\n  type: 'bash_code_execution_output';\n}\n\nexport interface BashCodeExecutionResultBlock {\n  content: Array<BashCodeExecutionOutputBlock>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'bash_code_execution_result';\n}\n\nexport interface BashCodeExecutionResultBlockParam {\n  content: Array<BashCodeExecutionOutputBlockParam>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'bash_code_execution_result';\n}\n\nexport interface BashCodeExecutionToolResultBlock {\n  content: BashCodeExecutionToolResultError | BashCodeExecutionResultBlock;\n\n  tool_use_id: string;\n\n  type: 'bash_code_execution_tool_result';\n}\n\nexport interface BashCodeExecutionToolResultBlockParam {\n  content: BashCodeExecutionToolResultErrorParam | BashCodeExecutionResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'bash_code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface BashCodeExecutionToolResultError {\n  error_code: BashCodeExecutionToolResultErrorCode;\n\n  type: 'bash_code_execution_tool_result_error';\n}\n\nexport type BashCodeExecutionToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'too_many_requests'\n  | 'execution_time_exceeded'\n  | 'output_file_too_large';\n\nexport interface BashCodeExecutionToolResultErrorParam {\n  error_code: BashCodeExecutionToolResultErrorCode;\n\n  type: 'bash_code_execution_tool_result_error';\n}\n\nexport interface CacheControlEphemeral {\n  type: 'ephemeral';\n\n  /**\n   * The time-to-live for the cache control breakpoint.\n   *\n   * This may be one the following values:\n   *\n   * - `5m`: 5 minutes\n   * - `1h`: 1 hour\n   *\n   * Defaults to `5m`.\n   */\n  ttl?: '5m' | '1h';\n}\n\nexport interface CacheCreation {\n  /**\n   * The number of input tokens used to create the 1 hour cache entry.\n   */\n  ephemeral_1h_input_tokens: number;\n\n  /**\n   * The number of input tokens used to create the 5 minute cache entry.\n   */\n  ephemeral_5m_input_tokens: number;\n}\n\nexport interface CitationCharLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_char_index: number;\n\n  file_id: string | null;\n\n  start_char_index: number;\n\n  type: 'char_location';\n}\n\nexport interface CitationCharLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_char_index: number;\n\n  start_char_index: number;\n\n  type: 'char_location';\n}\n\nexport interface CitationContentBlockLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_block_index: number;\n\n  file_id: string | null;\n\n  start_block_index: number;\n\n  type: 'content_block_location';\n}\n\nexport interface CitationContentBlockLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_block_index: number;\n\n  start_block_index: number;\n\n  type: 'content_block_location';\n}\n\nexport interface CitationPageLocation {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_page_number: number;\n\n  file_id: string | null;\n\n  start_page_number: number;\n\n  type: 'page_location';\n}\n\nexport interface CitationPageLocationParam {\n  cited_text: string;\n\n  document_index: number;\n\n  document_title: string | null;\n\n  end_page_number: number;\n\n  start_page_number: number;\n\n  type: 'page_location';\n}\n\nexport interface CitationSearchResultLocationParam {\n  cited_text: string;\n\n  end_block_index: number;\n\n  search_result_index: number;\n\n  source: string;\n\n  start_block_index: number;\n\n  title: string | null;\n\n  type: 'search_result_location';\n}\n\nexport interface CitationWebSearchResultLocationParam {\n  cited_text: string;\n\n  encrypted_index: string;\n\n  title: string | null;\n\n  type: 'web_search_result_location';\n\n  url: string;\n}\n\nexport interface CitationsConfig {\n  enabled: boolean;\n}\n\nexport interface CitationsConfigParam {\n  enabled?: boolean;\n}\n\nexport interface CitationsDelta {\n  citation:\n    | CitationCharLocation\n    | CitationPageLocation\n    | CitationContentBlockLocation\n    | CitationsWebSearchResultLocation\n    | CitationsSearchResultLocation;\n\n  type: 'citations_delta';\n}\n\nexport interface CitationsSearchResultLocation {\n  cited_text: string;\n\n  end_block_index: number;\n\n  search_result_index: number;\n\n  source: string;\n\n  start_block_index: number;\n\n  title: string | null;\n\n  type: 'search_result_location';\n}\n\nexport interface CitationsWebSearchResultLocation {\n  cited_text: string;\n\n  encrypted_index: string;\n\n  title: string | null;\n\n  type: 'web_search_result_location';\n\n  url: string;\n}\n\nexport interface CodeExecutionOutputBlock {\n  file_id: string;\n\n  type: 'code_execution_output';\n}\n\nexport interface CodeExecutionOutputBlockParam {\n  file_id: string;\n\n  type: 'code_execution_output';\n}\n\nexport interface CodeExecutionResultBlock {\n  content: Array<CodeExecutionOutputBlock>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'code_execution_result';\n}\n\nexport interface CodeExecutionResultBlockParam {\n  content: Array<CodeExecutionOutputBlockParam>;\n\n  return_code: number;\n\n  stderr: string;\n\n  stdout: string;\n\n  type: 'code_execution_result';\n}\n\nexport interface CodeExecutionTool20250522 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20250522';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface CodeExecutionTool20250825 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20250825';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Code execution tool with REPL state persistence (daemon mode + gVisor\n * checkpoint).\n */\nexport interface CodeExecutionTool20260120 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'code_execution';\n\n  type: 'code_execution_20260120';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface CodeExecutionToolResultBlock {\n  /**\n   * Code execution result with encrypted stdout for PFC + web_search results.\n   */\n  content: CodeExecutionToolResultBlockContent;\n\n  tool_use_id: string;\n\n  type: 'code_execution_tool_result';\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport type CodeExecutionToolResultBlockContent =\n  | CodeExecutionToolResultError\n  | CodeExecutionResultBlock\n  | EncryptedCodeExecutionResultBlock;\n\nexport interface CodeExecutionToolResultBlockParam {\n  /**\n   * Code execution result with encrypted stdout for PFC + web_search results.\n   */\n  content: CodeExecutionToolResultBlockParamContent;\n\n  tool_use_id: string;\n\n  type: 'code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport type CodeExecutionToolResultBlockParamContent =\n  | CodeExecutionToolResultErrorParam\n  | CodeExecutionResultBlockParam\n  | EncryptedCodeExecutionResultBlockParam;\n\nexport interface CodeExecutionToolResultError {\n  error_code: CodeExecutionToolResultErrorCode;\n\n  type: 'code_execution_tool_result_error';\n}\n\nexport type CodeExecutionToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'too_many_requests'\n  | 'execution_time_exceeded';\n\nexport interface CodeExecutionToolResultErrorParam {\n  error_code: CodeExecutionToolResultErrorCode;\n\n  type: 'code_execution_tool_result_error';\n}\n\n/**\n * Information about the container used in the request (for the code execution\n * tool)\n */\nexport interface Container {\n  /**\n   * Identifier for the container used in this request\n   */\n  id: string;\n\n  /**\n   * The time at which the container will expire.\n   */\n  expires_at: string;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport interface ContainerUploadBlock {\n  file_id: string;\n\n  type: 'container_upload';\n}\n\n/**\n * A content block that represents a file to be uploaded to the container Files\n * uploaded via this block will be available in the container's input directory.\n */\nexport interface ContainerUploadBlockParam {\n  file_id: string;\n\n  type: 'container_upload';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport type ContentBlock =\n  | TextBlock\n  | ThinkingBlock\n  | RedactedThinkingBlock\n  | ToolUseBlock\n  | ServerToolUseBlock\n  | WebSearchToolResultBlock\n  | WebFetchToolResultBlock\n  | CodeExecutionToolResultBlock\n  | BashCodeExecutionToolResultBlock\n  | TextEditorCodeExecutionToolResultBlock\n  | ToolSearchToolResultBlock\n  | ContainerUploadBlock;\n\n/**\n * Regular text content.\n */\nexport type ContentBlockParam =\n  | TextBlockParam\n  | ImageBlockParam\n  | DocumentBlockParam\n  | SearchResultBlockParam\n  | ThinkingBlockParam\n  | RedactedThinkingBlockParam\n  | ToolUseBlockParam\n  | ToolResultBlockParam\n  | ServerToolUseBlockParam\n  | WebSearchToolResultBlockParam\n  | WebFetchToolResultBlockParam\n  | CodeExecutionToolResultBlockParam\n  | BashCodeExecutionToolResultBlockParam\n  | TextEditorCodeExecutionToolResultBlockParam\n  | ToolSearchToolResultBlockParam\n  | ContainerUploadBlockParam;\n\nexport interface ContentBlockSource {\n  content: string | Array<ContentBlockSourceContent>;\n\n  type: 'content';\n}\n\nexport type ContentBlockSourceContent = TextBlockParam | ImageBlockParam;\n\n/**\n * Tool invocation directly from the model.\n */\nexport interface DirectCaller {\n  type: 'direct';\n}\n\nexport interface DocumentBlock {\n  /**\n   * Citation configuration for the document\n   */\n  citations: CitationsConfig | null;\n\n  source: Base64PDFSource | PlainTextSource;\n\n  /**\n   * The title of the document\n   */\n  title: string | null;\n\n  type: 'document';\n}\n\nexport interface DocumentBlockParam {\n  source: Base64PDFSource | PlainTextSource | ContentBlockSource | URLPDFSource;\n\n  type: 'document';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  citations?: CitationsConfigParam | null;\n\n  context?: string | null;\n\n  title?: string | null;\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport interface EncryptedCodeExecutionResultBlock {\n  content: Array<CodeExecutionOutputBlock>;\n\n  encrypted_stdout: string;\n\n  return_code: number;\n\n  stderr: string;\n\n  type: 'encrypted_code_execution_result';\n}\n\n/**\n * Code execution result with encrypted stdout for PFC + web_search results.\n */\nexport interface EncryptedCodeExecutionResultBlockParam {\n  content: Array<CodeExecutionOutputBlockParam>;\n\n  encrypted_stdout: string;\n\n  return_code: number;\n\n  stderr: string;\n\n  type: 'encrypted_code_execution_result';\n}\n\nexport interface ImageBlockParam {\n  source: Base64ImageSource | URLImageSource;\n\n  type: 'image';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface InputJSONDelta {\n  partial_json: string;\n\n  type: 'input_json_delta';\n}\n\nexport interface JSONOutputFormat {\n  /**\n   * The JSON schema of the format\n   */\n  schema: { [key: string]: unknown };\n\n  type: 'json_schema';\n}\n\nexport interface MemoryTool20250818 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'memory';\n\n  type: 'memory_20250818';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface Message {\n  /**\n   * Unique object identifier.\n   *\n   * The format and length of IDs may change over time.\n   */\n  id: string;\n\n  /**\n   * Information about the container used in the request (for the code execution\n   * tool)\n   */\n  container: Container | null;\n\n  /**\n   * Content generated by the model.\n   *\n   * This is an array of content blocks, each of which has a `type` that determines\n   * its shape.\n   *\n   * Example:\n   *\n   * ```json\n   * [{ \"type\": \"text\", \"text\": \"Hi, I'm Claude.\" }]\n   * ```\n   *\n   * If the request input `messages` ended with an `assistant` turn, then the\n   * response `content` will continue directly from that last turn. You can use this\n   * to constrain the model's output.\n   *\n   * For example, if the input `messages` were:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Then the response `content` might be:\n   *\n   * ```json\n   * [{ \"type\": \"text\", \"text\": \"B)\" }]\n   * ```\n   */\n  content: Array<ContentBlock>;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: Model;\n\n  /**\n   * Conversational role of the generated message.\n   *\n   * This will always be `\"assistant\"`.\n   */\n  role: 'assistant';\n\n  /**\n   * Structured information about a refusal.\n   */\n  stop_details: RefusalStopDetails | null;\n\n  /**\n   * The reason that we stopped.\n   *\n   * This may be one the following values:\n   *\n   * - `\"end_turn\"`: the model reached a natural stopping point\n   * - `\"max_tokens\"`: we exceeded the requested `max_tokens` or the model's maximum\n   * - `\"stop_sequence\"`: one of your provided custom `stop_sequences` was generated\n   * - `\"tool_use\"`: the model invoked one or more tools\n   * - `\"pause_turn\"`: we paused a long-running turn. You may provide the response\n   *   back as-is in a subsequent request to let the model continue.\n   * - `\"refusal\"`: when streaming classifiers intervene to handle potential policy\n   *   violations\n   *\n   * In non-streaming mode this value is always non-null. In streaming mode, it is\n   * null in the `message_start` event and non-null otherwise.\n   */\n  stop_reason: StopReason | null;\n\n  /**\n   * Which custom stop sequence was generated, if any.\n   *\n   * This value will be a non-null string if one of your custom stop sequences was\n   * generated.\n   */\n  stop_sequence: string | null;\n\n  /**\n   * Object type.\n   *\n   * For Messages, this is always `\"message\"`.\n   */\n  type: 'message';\n\n  /**\n   * Billing and rate-limit usage.\n   *\n   * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n   * underlying cost to our systems.\n   *\n   * Under the hood, the API transforms requests into a format suitable for the\n   * model. The model's output then goes through a parsing stage before becoming an\n   * API response. As a result, the token counts in `usage` will not match one-to-one\n   * with the exact visible content of an API request or response.\n   *\n   * For example, `output_tokens` will be non-zero, even for an empty string response\n   * from Claude.\n   *\n   * Total input tokens in a request is the summation of `input_tokens`,\n   * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n   */\n  usage: Usage;\n}\n\n/**\n * Code execution tool with REPL state persistence (daemon mode + gVisor\n * checkpoint).\n */\nexport type MessageCountTokensTool =\n  | Tool\n  | ToolBash20250124\n  | CodeExecutionTool20250522\n  | CodeExecutionTool20250825\n  | CodeExecutionTool20260120\n  | MemoryTool20250818\n  | ToolTextEditor20250124\n  | ToolTextEditor20250429\n  | ToolTextEditor20250728\n  | WebSearchTool20250305\n  | WebFetchTool20250910\n  | WebSearchTool20260209\n  | WebFetchTool20260209\n  | WebFetchTool20260309\n  | ToolSearchToolBm25_20251119\n  | ToolSearchToolRegex20251119;\n\nexport interface MessageDeltaUsage {\n  /**\n   * The cumulative number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number | null;\n\n  /**\n   * The cumulative number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number | null;\n\n  /**\n   * The cumulative number of input tokens which were used.\n   */\n  input_tokens: number | null;\n\n  /**\n   * The cumulative number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * The number of server tool requests.\n   */\n  server_tool_use: ServerToolUsage | null;\n}\n\nexport interface MessageParam {\n  content: string | Array<ContentBlockParam>;\n\n  role: 'user' | 'assistant';\n}\n\nexport interface MessageTokensCount {\n  /**\n   * The total number of tokens across the provided list of messages, system prompt,\n   * and tools.\n   */\n  input_tokens: number;\n}\n\nexport interface Metadata {\n  /**\n   * An external identifier for the user who is associated with the request.\n   *\n   * This should be a uuid, hash value, or other opaque identifier. Anthropic may use\n   * this id to help detect abuse. Do not include any identifying information such as\n   * name, email address, or phone number.\n   */\n  user_id?: string | null;\n}\n\n/**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\nexport type Model =\n  | 'claude-opus-4-7'\n  | 'claude-mythos-preview'\n  | 'claude-opus-4-6'\n  | 'claude-sonnet-4-6'\n  | 'claude-haiku-4-5'\n  | 'claude-haiku-4-5-20251001'\n  | 'claude-opus-4-5'\n  | 'claude-opus-4-5-20251101'\n  | 'claude-sonnet-4-5'\n  | 'claude-sonnet-4-5-20250929'\n  | 'claude-opus-4-1'\n  | 'claude-opus-4-1-20250805'\n  | 'claude-opus-4-0'\n  | 'claude-opus-4-20250514'\n  | 'claude-sonnet-4-0'\n  | 'claude-sonnet-4-20250514'\n  | 'claude-3-haiku-20240307'\n  | (string & {});\n\nexport interface OutputConfig {\n  /**\n   * All possible effort levels.\n   */\n  effort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max' | null;\n\n  /**\n   * A schema to specify Claude's output format in responses. See\n   * [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)\n   */\n  format?: JSONOutputFormat | null;\n}\n\nconst DEPRECATED_MODELS: {\n  [K in Model]?: string;\n} = {\n  'claude-1.3': 'November 6th, 2024',\n  'claude-1.3-100k': 'November 6th, 2024',\n  'claude-instant-1.1': 'November 6th, 2024',\n  'claude-instant-1.1-100k': 'November 6th, 2024',\n  'claude-instant-1.2': 'November 6th, 2024',\n  'claude-3-sonnet-20240229': 'July 21st, 2025',\n  'claude-3-opus-20240229': 'January 5th, 2026',\n  'claude-2.1': 'July 21st, 2025',\n  'claude-2.0': 'July 21st, 2025',\n  'claude-3-7-sonnet-latest': 'February 19th, 2026',\n  'claude-3-7-sonnet-20250219': 'February 19th, 2026',\n  'claude-3-5-haiku-latest': 'February 19th, 2026',\n  'claude-3-5-haiku-20241022': 'February 19th, 2026',\n  'claude-opus-4-0': 'June 15th, 2026',\n  'claude-opus-4-20250514': 'June 15th, 2026',\n  'claude-sonnet-4-0': 'June 15th, 2026',\n  'claude-sonnet-4-20250514': 'June 15th, 2026',\n};\n\nconst MODELS_TO_WARN_WITH_THINKING_ENABLED: Model[] = ['claude-mythos-preview', 'claude-opus-4-6'];\n\nexport interface PlainTextSource {\n  data: string;\n\n  media_type: 'text/plain';\n\n  type: 'text';\n}\n\nexport type RawContentBlockDelta =\n  | TextDelta\n  | InputJSONDelta\n  | CitationsDelta\n  | ThinkingDelta\n  | SignatureDelta;\n\nexport interface RawContentBlockDeltaEvent {\n  delta: RawContentBlockDelta;\n\n  index: number;\n\n  type: 'content_block_delta';\n}\n\nexport interface RawContentBlockStartEvent {\n  /**\n   * Response model for a file uploaded to the container.\n   */\n  content_block:\n    | TextBlock\n    | ThinkingBlock\n    | RedactedThinkingBlock\n    | ToolUseBlock\n    | ServerToolUseBlock\n    | WebSearchToolResultBlock\n    | WebFetchToolResultBlock\n    | CodeExecutionToolResultBlock\n    | BashCodeExecutionToolResultBlock\n    | TextEditorCodeExecutionToolResultBlock\n    | ToolSearchToolResultBlock\n    | ContainerUploadBlock;\n\n  index: number;\n\n  type: 'content_block_start';\n}\n\nexport interface RawContentBlockStopEvent {\n  index: number;\n\n  type: 'content_block_stop';\n}\n\nexport interface RawMessageDeltaEvent {\n  delta: RawMessageDeltaEvent.Delta;\n\n  type: 'message_delta';\n\n  /**\n   * Billing and rate-limit usage.\n   *\n   * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n   * underlying cost to our systems.\n   *\n   * Under the hood, the API transforms requests into a format suitable for the\n   * model. The model's output then goes through a parsing stage before becoming an\n   * API response. As a result, the token counts in `usage` will not match one-to-one\n   * with the exact visible content of an API request or response.\n   *\n   * For example, `output_tokens` will be non-zero, even for an empty string response\n   * from Claude.\n   *\n   * Total input tokens in a request is the summation of `input_tokens`,\n   * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n   */\n  usage: MessageDeltaUsage;\n}\n\nexport namespace RawMessageDeltaEvent {\n  export interface Delta {\n    /**\n     * Information about the container used in the request (for the code execution\n     * tool)\n     */\n    container: MessagesAPI.Container | null;\n\n    /**\n     * Structured information about a refusal.\n     */\n    stop_details: MessagesAPI.RefusalStopDetails | null;\n\n    stop_reason: MessagesAPI.StopReason | null;\n\n    stop_sequence: string | null;\n  }\n}\n\nexport interface RawMessageStartEvent {\n  message: Message;\n\n  type: 'message_start';\n}\n\nexport interface RawMessageStopEvent {\n  type: 'message_stop';\n}\n\nexport type RawMessageStreamEvent =\n  | RawMessageStartEvent\n  | RawMessageDeltaEvent\n  | RawMessageStopEvent\n  | RawContentBlockStartEvent\n  | RawContentBlockDeltaEvent\n  | RawContentBlockStopEvent;\n\nexport interface RedactedThinkingBlock {\n  data: string;\n\n  type: 'redacted_thinking';\n}\n\nexport interface RedactedThinkingBlockParam {\n  data: string;\n\n  type: 'redacted_thinking';\n}\n\n/**\n * Structured information about a refusal.\n */\nexport interface RefusalStopDetails {\n  /**\n   * The policy category that triggered the refusal.\n   *\n   * `null` when the refusal doesn't map to a named category.\n   */\n  category: 'cyber' | 'bio' | null;\n\n  /**\n   * Human-readable explanation of the refusal.\n   *\n   * This text is not guaranteed to be stable. `null` when no explanation is\n   * available for the category.\n   */\n  explanation: string | null;\n\n  type: 'refusal';\n}\n\nexport interface SearchResultBlockParam {\n  content: Array<TextBlockParam>;\n\n  source: string;\n\n  title: string;\n\n  type: 'search_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  citations?: CitationsConfigParam;\n}\n\n/**\n * Tool invocation generated by a server-side tool.\n */\nexport interface ServerToolCaller {\n  tool_id: string;\n\n  type: 'code_execution_20250825';\n}\n\nexport interface ServerToolCaller20260120 {\n  tool_id: string;\n\n  type: 'code_execution_20260120';\n}\n\nexport interface ServerToolUsage {\n  /**\n   * The number of web fetch tool requests.\n   */\n  web_fetch_requests: number;\n\n  /**\n   * The number of web search tool requests.\n   */\n  web_search_requests: number;\n}\n\nexport interface ServerToolUseBlock {\n  id: string;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n\n  input: unknown;\n\n  name:\n    | 'web_search'\n    | 'web_fetch'\n    | 'code_execution'\n    | 'bash_code_execution'\n    | 'text_editor_code_execution'\n    | 'tool_search_tool_regex'\n    | 'tool_search_tool_bm25';\n\n  type: 'server_tool_use';\n}\n\nexport interface ServerToolUseBlockParam {\n  id: string;\n\n  input: unknown;\n\n  name:\n    | 'web_search'\n    | 'web_fetch'\n    | 'code_execution'\n    | 'bash_code_execution'\n    | 'text_editor_code_execution'\n    | 'tool_search_tool_regex'\n    | 'tool_search_tool_bm25';\n\n  type: 'server_tool_use';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n}\n\nexport interface SignatureDelta {\n  signature: string;\n\n  type: 'signature_delta';\n}\n\nexport type StopReason = 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use' | 'pause_turn' | 'refusal';\n\nexport interface TextBlock {\n  /**\n   * Citations supporting the text block.\n   *\n   * The type of citation returned will depend on the type of document being cited.\n   * Citing a PDF results in `page_location`, plain text results in `char_location`,\n   * and content document results in `content_block_location`.\n   */\n  citations: Array<TextCitation> | null;\n\n  text: string;\n\n  type: 'text';\n}\n\nexport interface TextBlockParam {\n  text: string;\n\n  type: 'text';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  citations?: Array<TextCitationParam> | null;\n}\n\nexport type TextCitation =\n  | CitationCharLocation\n  | CitationPageLocation\n  | CitationContentBlockLocation\n  | CitationsWebSearchResultLocation\n  | CitationsSearchResultLocation;\n\nexport type TextCitationParam =\n  | CitationCharLocationParam\n  | CitationPageLocationParam\n  | CitationContentBlockLocationParam\n  | CitationWebSearchResultLocationParam\n  | CitationSearchResultLocationParam;\n\nexport interface TextDelta {\n  text: string;\n\n  type: 'text_delta';\n}\n\nexport interface TextEditorCodeExecutionCreateResultBlock {\n  is_file_update: boolean;\n\n  type: 'text_editor_code_execution_create_result';\n}\n\nexport interface TextEditorCodeExecutionCreateResultBlockParam {\n  is_file_update: boolean;\n\n  type: 'text_editor_code_execution_create_result';\n}\n\nexport interface TextEditorCodeExecutionStrReplaceResultBlock {\n  lines: Array<string> | null;\n\n  new_lines: number | null;\n\n  new_start: number | null;\n\n  old_lines: number | null;\n\n  old_start: number | null;\n\n  type: 'text_editor_code_execution_str_replace_result';\n}\n\nexport interface TextEditorCodeExecutionStrReplaceResultBlockParam {\n  type: 'text_editor_code_execution_str_replace_result';\n\n  lines?: Array<string> | null;\n\n  new_lines?: number | null;\n\n  new_start?: number | null;\n\n  old_lines?: number | null;\n\n  old_start?: number | null;\n}\n\nexport interface TextEditorCodeExecutionToolResultBlock {\n  content:\n    | TextEditorCodeExecutionToolResultError\n    | TextEditorCodeExecutionViewResultBlock\n    | TextEditorCodeExecutionCreateResultBlock\n    | TextEditorCodeExecutionStrReplaceResultBlock;\n\n  tool_use_id: string;\n\n  type: 'text_editor_code_execution_tool_result';\n}\n\nexport interface TextEditorCodeExecutionToolResultBlockParam {\n  content:\n    | TextEditorCodeExecutionToolResultErrorParam\n    | TextEditorCodeExecutionViewResultBlockParam\n    | TextEditorCodeExecutionCreateResultBlockParam\n    | TextEditorCodeExecutionStrReplaceResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'text_editor_code_execution_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface TextEditorCodeExecutionToolResultError {\n  error_code: TextEditorCodeExecutionToolResultErrorCode;\n\n  error_message: string | null;\n\n  type: 'text_editor_code_execution_tool_result_error';\n}\n\nexport type TextEditorCodeExecutionToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'too_many_requests'\n  | 'execution_time_exceeded'\n  | 'file_not_found';\n\nexport interface TextEditorCodeExecutionToolResultErrorParam {\n  error_code: TextEditorCodeExecutionToolResultErrorCode;\n\n  type: 'text_editor_code_execution_tool_result_error';\n\n  error_message?: string | null;\n}\n\nexport interface TextEditorCodeExecutionViewResultBlock {\n  content: string;\n\n  file_type: 'text' | 'image' | 'pdf';\n\n  num_lines: number | null;\n\n  start_line: number | null;\n\n  total_lines: number | null;\n\n  type: 'text_editor_code_execution_view_result';\n}\n\nexport interface TextEditorCodeExecutionViewResultBlockParam {\n  content: string;\n\n  file_type: 'text' | 'image' | 'pdf';\n\n  type: 'text_editor_code_execution_view_result';\n\n  num_lines?: number | null;\n\n  start_line?: number | null;\n\n  total_lines?: number | null;\n}\n\nexport interface ThinkingBlock {\n  signature: string;\n\n  thinking: string;\n\n  type: 'thinking';\n}\n\nexport interface ThinkingBlockParam {\n  signature: string;\n\n  thinking: string;\n\n  type: 'thinking';\n}\n\nexport interface ThinkingConfigAdaptive {\n  type: 'adaptive';\n\n  /**\n   * Controls how thinking content appears in the response. When set to `summarized`,\n   * thinking is returned normally. When set to `omitted`, thinking content is\n   * redacted but a signature is returned for multi-turn continuity. Defaults to\n   * `summarized`.\n   */\n  display?: 'summarized' | 'omitted' | null;\n}\n\nexport interface ThinkingConfigDisabled {\n  type: 'disabled';\n}\n\nexport interface ThinkingConfigEnabled {\n  /**\n   * Determines how many tokens Claude can use for its internal reasoning process.\n   * Larger budgets can enable more thorough analysis for complex problems, improving\n   * response quality.\n   *\n   * Must be \u22651024 and less than `max_tokens`.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  budget_tokens: number;\n\n  type: 'enabled';\n\n  /**\n   * Controls how thinking content appears in the response. When set to `summarized`,\n   * thinking is returned normally. When set to `omitted`, thinking content is\n   * redacted but a signature is returned for multi-turn continuity. Defaults to\n   * `summarized`.\n   */\n  display?: 'summarized' | 'omitted' | null;\n}\n\n/**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\nexport type ThinkingConfigParam = ThinkingConfigEnabled | ThinkingConfigDisabled | ThinkingConfigAdaptive;\n\nexport interface ThinkingDelta {\n  thinking: string;\n\n  type: 'thinking_delta';\n}\n\nexport interface Tool {\n  /**\n   * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n   *\n   * This defines the shape of the `input` that your tool accepts and that the model\n   * will produce.\n   */\n  input_schema: Tool.InputSchema;\n\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: string;\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Description of what this tool does.\n   *\n   * Tool descriptions should be as detailed as possible. The more information that\n   * the model has about what the tool is and how to use it, the better it will\n   * perform. You can use natural language descriptions to reinforce important\n   * aspects of the tool input JSON schema.\n   */\n  description?: string;\n\n  /**\n   * Enable eager input streaming for this tool. When true, tool input parameters\n   * will be streamed incrementally as they are generated, and types will be inferred\n   * on-the-fly rather than buffering the full JSON output. When false, streaming is\n   * disabled for this tool even if the fine-grained-tool-streaming beta is active.\n   * When null (default), uses the default behavior based on beta headers.\n   */\n  eager_input_streaming?: boolean | null;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  type?: 'custom' | null;\n}\n\nexport namespace Tool {\n  /**\n   * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n   *\n   * This defines the shape of the `input` that your tool accepts and that the model\n   * will produce.\n   */\n  export interface InputSchema {\n    type: 'object';\n\n    properties?: unknown | null;\n\n    required?: Array<string> | null;\n\n    [k: string]: unknown;\n  }\n}\n\nexport interface ToolBash20250124 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'bash';\n\n  type: 'bash_20250124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\nexport type ToolChoice = ToolChoiceAuto | ToolChoiceAny | ToolChoiceTool | ToolChoiceNone;\n\n/**\n * The model will use any available tools.\n */\nexport interface ToolChoiceAny {\n  type: 'any';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output exactly one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will automatically decide whether to use tools.\n */\nexport interface ToolChoiceAuto {\n  type: 'auto';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output at most one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will not be allowed to use tools.\n */\nexport interface ToolChoiceNone {\n  type: 'none';\n}\n\n/**\n * The model will use the specified tool with `tool_choice.name`.\n */\nexport interface ToolChoiceTool {\n  /**\n   * The name of the tool to use.\n   */\n  name: string;\n\n  type: 'tool';\n\n  /**\n   * Whether to disable parallel tool use.\n   *\n   * Defaults to `false`. If set to `true`, the model will output exactly one tool\n   * use.\n   */\n  disable_parallel_tool_use?: boolean;\n}\n\nexport interface ToolReferenceBlock {\n  tool_name: string;\n\n  type: 'tool_reference';\n}\n\n/**\n * Tool reference block that can be included in tool_result content.\n */\nexport interface ToolReferenceBlockParam {\n  tool_name: string;\n\n  type: 'tool_reference';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface ToolResultBlockParam {\n  tool_use_id: string;\n\n  type: 'tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  content?:\n    | string\n    | Array<\n        | TextBlockParam\n        | ImageBlockParam\n        | SearchResultBlockParam\n        | DocumentBlockParam\n        | ToolReferenceBlockParam\n      >;\n\n  is_error?: boolean;\n}\n\nexport interface ToolSearchToolBm25_20251119 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'tool_search_tool_bm25';\n\n  type: 'tool_search_tool_bm25_20251119' | 'tool_search_tool_bm25';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface ToolSearchToolRegex20251119 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'tool_search_tool_regex';\n\n  type: 'tool_search_tool_regex_20251119' | 'tool_search_tool_regex';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface ToolSearchToolResultBlock {\n  content: ToolSearchToolResultError | ToolSearchToolSearchResultBlock;\n\n  tool_use_id: string;\n\n  type: 'tool_search_tool_result';\n}\n\nexport interface ToolSearchToolResultBlockParam {\n  content: ToolSearchToolResultErrorParam | ToolSearchToolSearchResultBlockParam;\n\n  tool_use_id: string;\n\n  type: 'tool_search_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface ToolSearchToolResultError {\n  error_code: ToolSearchToolResultErrorCode;\n\n  error_message: string | null;\n\n  type: 'tool_search_tool_result_error';\n}\n\nexport type ToolSearchToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'too_many_requests'\n  | 'execution_time_exceeded';\n\nexport interface ToolSearchToolResultErrorParam {\n  error_code: ToolSearchToolResultErrorCode;\n\n  type: 'tool_search_tool_result_error';\n}\n\nexport interface ToolSearchToolSearchResultBlock {\n  tool_references: Array<ToolReferenceBlock>;\n\n  type: 'tool_search_tool_search_result';\n}\n\nexport interface ToolSearchToolSearchResultBlockParam {\n  tool_references: Array<ToolReferenceBlockParam>;\n\n  type: 'tool_search_tool_search_result';\n}\n\nexport interface ToolTextEditor20250124 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_editor';\n\n  type: 'text_editor_20250124';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface ToolTextEditor20250429 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_based_edit_tool';\n\n  type: 'text_editor_20250429';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface ToolTextEditor20250728 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'str_replace_based_edit_tool';\n\n  type: 'text_editor_20250728';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  input_examples?: Array<{ [key: string]: unknown }>;\n\n  /**\n   * Maximum number of characters to display when viewing a file. If not specified,\n   * defaults to displaying the full file.\n   */\n  max_characters?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Code execution tool with REPL state persistence (daemon mode + gVisor\n * checkpoint).\n */\nexport type ToolUnion =\n  | Tool\n  | ToolBash20250124\n  | CodeExecutionTool20250522\n  | CodeExecutionTool20250825\n  | CodeExecutionTool20260120\n  | MemoryTool20250818\n  | ToolTextEditor20250124\n  | ToolTextEditor20250429\n  | ToolTextEditor20250728\n  | WebSearchTool20250305\n  | WebFetchTool20250910\n  | WebSearchTool20260209\n  | WebFetchTool20260209\n  | WebFetchTool20260309\n  | ToolSearchToolBm25_20251119\n  | ToolSearchToolRegex20251119;\n\nexport interface ToolUseBlock {\n  id: string;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n\n  input: unknown;\n\n  name: string;\n\n  type: 'tool_use';\n}\n\nexport interface ToolUseBlockParam {\n  id: string;\n\n  input: unknown;\n\n  name: string;\n\n  type: 'tool_use';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n}\n\nexport interface URLImageSource {\n  type: 'url';\n\n  url: string;\n}\n\nexport interface URLPDFSource {\n  type: 'url';\n\n  url: string;\n}\n\nexport interface Usage {\n  /**\n   * Breakdown of cached tokens by TTL\n   */\n  cache_creation: CacheCreation | null;\n\n  /**\n   * The number of input tokens used to create the cache entry.\n   */\n  cache_creation_input_tokens: number | null;\n\n  /**\n   * The number of input tokens read from the cache.\n   */\n  cache_read_input_tokens: number | null;\n\n  /**\n   * The geographic region where inference was performed for this request.\n   */\n  inference_geo: string | null;\n\n  /**\n   * The number of input tokens which were used.\n   */\n  input_tokens: number;\n\n  /**\n   * The number of output tokens which were used.\n   */\n  output_tokens: number;\n\n  /**\n   * The number of server tool requests.\n   */\n  server_tool_use: ServerToolUsage | null;\n\n  /**\n   * If the request used the priority, standard, or batch tier.\n   */\n  service_tier: 'standard' | 'priority' | 'batch' | null;\n}\n\nexport interface UserLocation {\n  type: 'approximate';\n\n  /**\n   * The city of the user.\n   */\n  city?: string | null;\n\n  /**\n   * The two letter\n   * [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the\n   * user.\n   */\n  country?: string | null;\n\n  /**\n   * The region of the user.\n   */\n  region?: string | null;\n\n  /**\n   * The [IANA timezone](https://nodatime.org/TimeZones) of the user.\n   */\n  timezone?: string | null;\n}\n\nexport interface WebFetchBlock {\n  content: DocumentBlock;\n\n  /**\n   * ISO 8601 timestamp when the content was retrieved\n   */\n  retrieved_at: string | null;\n\n  type: 'web_fetch_result';\n\n  /**\n   * Fetched content URL\n   */\n  url: string;\n}\n\nexport interface WebFetchBlockParam {\n  content: DocumentBlockParam;\n\n  type: 'web_fetch_result';\n\n  /**\n   * Fetched content URL\n   */\n  url: string;\n\n  /**\n   * ISO 8601 timestamp when the content was retrieved\n   */\n  retrieved_at?: string | null;\n}\n\nexport interface WebFetchTool20250910 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20250910';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: CitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\nexport interface WebFetchTool20260209 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20260209';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: CitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n}\n\n/**\n * Web fetch tool with use_cache parameter for bypassing cached content.\n */\nexport interface WebFetchTool20260309 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_fetch';\n\n  type: 'web_fetch_20260309';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * List of domains to allow fetching from\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * List of domains to block fetching from\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Citations configuration for fetched documents. Citations are disabled by\n   * default.\n   */\n  citations?: CitationsConfigParam | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of tokens used by including web page text content in the context.\n   * The limit is approximate and does not apply to binary content such as PDFs.\n   */\n  max_content_tokens?: number | null;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Whether to use cached content. Set to false to bypass the cache and fetch fresh\n   * content. Only set to false when the user explicitly requests fresh content or\n   * when fetching rapidly-changing sources.\n   */\n  use_cache?: boolean;\n}\n\nexport interface WebFetchToolResultBlock {\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n\n  content: WebFetchToolResultErrorBlock | WebFetchBlock;\n\n  tool_use_id: string;\n\n  type: 'web_fetch_tool_result';\n}\n\nexport interface WebFetchToolResultBlockParam {\n  content: WebFetchToolResultErrorBlockParam | WebFetchBlockParam;\n\n  tool_use_id: string;\n\n  type: 'web_fetch_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n}\n\nexport interface WebFetchToolResultErrorBlock {\n  error_code: WebFetchToolResultErrorCode;\n\n  type: 'web_fetch_tool_result_error';\n}\n\nexport interface WebFetchToolResultErrorBlockParam {\n  error_code: WebFetchToolResultErrorCode;\n\n  type: 'web_fetch_tool_result_error';\n}\n\nexport type WebFetchToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'url_too_long'\n  | 'url_not_allowed'\n  | 'url_not_accessible'\n  | 'unsupported_content_type'\n  | 'too_many_requests'\n  | 'max_uses_exceeded'\n  | 'unavailable';\n\nexport interface WebSearchResultBlock {\n  encrypted_content: string;\n\n  page_age: string | null;\n\n  title: string;\n\n  type: 'web_search_result';\n\n  url: string;\n}\n\nexport interface WebSearchResultBlockParam {\n  encrypted_content: string;\n\n  title: string;\n\n  type: 'web_search_result';\n\n  url: string;\n\n  page_age?: string | null;\n}\n\nexport interface WebSearchTool20250305 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_search';\n\n  type: 'web_search_20250305';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * If provided, only these domains will be included in results. Cannot be used\n   * alongside `blocked_domains`.\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * If provided, these domains will never appear in results. Cannot be used\n   * alongside `allowed_domains`.\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Parameters for the user's location. Used to provide more relevant search\n   * results.\n   */\n  user_location?: UserLocation | null;\n}\n\n// backward compat\nexport namespace WebSearchTool20250305 {\n  /**\n   * @deprecated Import `UserLocation` from `anthropic` directly instead of using\n   *   `WebSearchTool20250305.UserLocation`.\n   */\n  export type UserLocation = Messages.UserLocation;\n}\n\nexport interface WebSearchTool20260209 {\n  /**\n   * Name of the tool.\n   *\n   * This is how the tool will be called by the model and in `tool_use` blocks.\n   */\n  name: 'web_search';\n\n  type: 'web_search_20260209';\n\n  allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;\n\n  /**\n   * If provided, only these domains will be included in results. Cannot be used\n   * alongside `blocked_domains`.\n   */\n  allowed_domains?: Array<string> | null;\n\n  /**\n   * If provided, these domains will never appear in results. Cannot be used\n   * alongside `allowed_domains`.\n   */\n  blocked_domains?: Array<string> | null;\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * If true, tool will not be included in initial system prompt. Only loaded when\n   * returned via tool_reference from tool search.\n   */\n  defer_loading?: boolean;\n\n  /**\n   * Maximum number of times the tool can be used in the API request.\n   */\n  max_uses?: number | null;\n\n  /**\n   * When true, guarantees schema validation on tool names and inputs\n   */\n  strict?: boolean;\n\n  /**\n   * Parameters for the user's location. Used to provide more relevant search\n   * results.\n   */\n  user_location?: UserLocation | null;\n}\n\n// backward compat\nexport namespace WebSearchTool20260209 {\n  /**\n   * @deprecated Import `UserLocation` from `anthropic` directly instead of using\n   *   `WebSearchTool20260209.UserLocation`.\n   */\n  export type UserLocation = Messages.UserLocation;\n}\n\nexport interface WebSearchToolRequestError {\n  error_code: WebSearchToolResultErrorCode;\n\n  type: 'web_search_tool_result_error';\n}\n\nexport interface WebSearchToolResultBlock {\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n\n  content: WebSearchToolResultBlockContent;\n\n  tool_use_id: string;\n\n  type: 'web_search_tool_result';\n}\n\nexport type WebSearchToolResultBlockContent = WebSearchToolResultError | Array<WebSearchResultBlock>;\n\nexport interface WebSearchToolResultBlockParam {\n  content: WebSearchToolResultBlockParamContent;\n\n  tool_use_id: string;\n\n  type: 'web_search_tool_result';\n\n  /**\n   * Create a cache control breakpoint at this content block.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Tool invocation directly from the model.\n   */\n  caller?: DirectCaller | ServerToolCaller | ServerToolCaller20260120;\n}\n\nexport type WebSearchToolResultBlockParamContent =\n  | Array<WebSearchResultBlockParam>\n  | WebSearchToolRequestError;\n\nexport interface WebSearchToolResultError {\n  error_code: WebSearchToolResultErrorCode;\n\n  type: 'web_search_tool_result_error';\n}\n\nexport type WebSearchToolResultErrorCode =\n  | 'invalid_tool_input'\n  | 'unavailable'\n  | 'max_uses_exceeded'\n  | 'too_many_requests'\n  | 'query_too_long'\n  | 'request_too_large';\n\nexport type MessageStreamEvent = RawMessageStreamEvent;\n\nexport type MessageStartEvent = RawMessageStartEvent;\n\nexport type MessageDeltaEvent = RawMessageDeltaEvent;\n\nexport type MessageStopEvent = RawMessageStopEvent;\n\nexport type ContentBlockStartEvent = RawContentBlockStartEvent;\n\nexport type ContentBlockDeltaEvent = RawContentBlockDeltaEvent;\n\nexport type ContentBlockStopEvent = RawContentBlockStopEvent;\n\nexport type MessageCreateParams = MessageCreateParamsNonStreaming | MessageCreateParamsStreaming;\n\nexport interface MessageCreateParamsBase {\n  /**\n   * The maximum number of tokens to generate before stopping.\n   *\n   * Note that our models may stop _before_ reaching this maximum. This parameter\n   * only specifies the absolute maximum number of tokens to generate.\n   *\n   * Different models have different maximum values for this parameter. See\n   * [models](https://docs.claude.com/en/docs/models-overview) for details.\n   */\n  max_tokens: number;\n\n  /**\n   * Input messages.\n   *\n   * Our models are trained to operate on alternating `user` and `assistant`\n   * conversational turns. When creating a new `Message`, you specify the prior\n   * conversational turns with the `messages` parameter, and the model then generates\n   * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n   * in your request will be combined into a single turn.\n   *\n   * Each input message must be an object with a `role` and `content`. You can\n   * specify a single `user`-role message, or you can include multiple `user` and\n   * `assistant` messages.\n   *\n   * If the final message uses the `assistant` role, the response content will\n   * continue immediately from the content in that message. This can be used to\n   * constrain part of the model's response.\n   *\n   * Example with a single `user` message:\n   *\n   * ```json\n   * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n   * ```\n   *\n   * Example with multiple conversational turns:\n   *\n   * ```json\n   * [\n   *   { \"role\": \"user\", \"content\": \"Hello there.\" },\n   *   { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n   *   { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n   * ]\n   * ```\n   *\n   * Example with a partially-filled response from Claude:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Each input message `content` may be either a single `string` or an array of\n   * content blocks, where each block has a specific `type`. Using a `string` for\n   * `content` is shorthand for an array of one content block of type `\"text\"`. The\n   * following input messages are equivalent:\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n   * ```\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n   * ```\n   *\n   * See [input examples](https://docs.claude.com/en/api/messages-examples).\n   *\n   * Note that if you want to include a\n   * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n   * top-level `system` parameter \u2014 there is no `\"system\"` role for input messages in\n   * the Messages API.\n   *\n   * There is a limit of 100,000 messages in a single request.\n   */\n  messages: Array<MessageParam>;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: Model;\n\n  /**\n   * Top-level cache control automatically applies a cache_control marker to the last\n   * cacheable block in the request.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Container identifier for reuse across requests.\n   */\n  container?: string | null;\n\n  /**\n   * Specifies the geographic region for inference processing. If not specified, the\n   * workspace's `default_inference_geo` is used.\n   */\n  inference_geo?: string | null;\n\n  /**\n   * An object describing metadata about the request.\n   */\n  metadata?: Metadata;\n\n  /**\n   * Configuration options for the model's output, such as the output format.\n   */\n  output_config?: OutputConfig;\n\n  /**\n   * Determines whether to use priority capacity (if available) or standard capacity\n   * for this request.\n   *\n   * Anthropic offers different levels of service for your API requests. See\n   * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n   */\n  service_tier?: 'auto' | 'standard_only';\n\n  /**\n   * Custom text sequences that will cause the model to stop generating.\n   *\n   * Our models will normally stop when they have naturally completed their turn,\n   * which will result in a response `stop_reason` of `\"end_turn\"`.\n   *\n   * If you want the model to stop generating when it encounters custom strings of\n   * text, you can use the `stop_sequences` parameter. If the model encounters one of\n   * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n   * and the response `stop_sequence` value will contain the matched stop sequence.\n   */\n  stop_sequences?: Array<string>;\n\n  /**\n   * Whether to incrementally stream the response using server-sent events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream?: boolean;\n\n  /**\n   * System prompt.\n   *\n   * A system prompt is a way of providing context and instructions to Claude, such\n   * as specifying a particular goal or role. See our\n   * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n   */\n  system?: string | Array<TextBlockParam>;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting temperature. A value of 1.0 of will be accepted for backwards\n   * compatibility, all other values will be rejected with a 400 error.\n   */\n  temperature?: number;\n\n  /**\n   * Configuration for enabling Claude's extended thinking.\n   *\n   * When enabled, responses include `thinking` content blocks showing Claude's\n   * thinking process before the final answer. Requires a minimum budget of 1,024\n   * tokens and counts towards your `max_tokens` limit.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  thinking?: ThinkingConfigParam;\n\n  /**\n   * How the model should use the provided tools. The model can use a specific tool,\n   * any available tool, decide by itself, or not use tools at all.\n   */\n  tool_choice?: ToolChoice;\n\n  /**\n   * Definitions of tools that the model may use.\n   *\n   * If you include `tools` in your API request, the model may return `tool_use`\n   * content blocks that represent the model's use of those tools. You can then run\n   * those tools using the tool input generated by the model and then optionally\n   * return results back to the model using `tool_result` content blocks.\n   *\n   * There are two types of tools: **client tools** and **server tools**. The\n   * behavior described below applies to client tools. For\n   * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n   * see their individual documentation as each has its own behavior (e.g., the\n   * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n   *\n   * Each tool definition includes:\n   *\n   * - `name`: Name of the tool.\n   * - `description`: Optional, but strongly-recommended description of the tool.\n   * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n   *   tool `input` shape that the model will produce in `tool_use` output content\n   *   blocks.\n   *\n   * For example, if you defined `tools` as:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"name\": \"get_stock_price\",\n   *     \"description\": \"Get the current stock price for a given ticker symbol.\",\n   *     \"input_schema\": {\n   *       \"type\": \"object\",\n   *       \"properties\": {\n   *         \"ticker\": {\n   *           \"type\": \"string\",\n   *           \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n   *         }\n   *       },\n   *       \"required\": [\"ticker\"]\n   *     }\n   *   }\n   * ]\n   * ```\n   *\n   * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n   * `tool_use` content blocks in the response like this:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_use\",\n   *     \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"name\": \"get_stock_price\",\n   *     \"input\": { \"ticker\": \"^GSPC\" }\n   *   }\n   * ]\n   * ```\n   *\n   * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n   * input, and return the following back to the model in a subsequent `user`\n   * message:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_result\",\n   *     \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"content\": \"259.75 USD\"\n   *   }\n   * ]\n   * ```\n   *\n   * Tools can be used for workflows that include running client-side tools and\n   * functions, or more generally whenever you want the model to produce a particular\n   * JSON structure of output.\n   *\n   * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n   */\n  tools?: Array<ToolUnion>;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not accept\n   * top_k; any value will be rejected with a 400 error.\n   */\n  top_k?: number;\n\n  /**\n   * @deprecated Deprecated. Models released after Claude Opus 4.6 do not support\n   * setting top_p. A value >= 0.99 will be accepted for backwards compatibility, all\n   * other values will be rejected with a 400 error.\n   */\n  top_p?: number;\n}\n\nexport namespace MessageCreateParams {\n  export type MessageCreateParamsNonStreaming = MessagesAPI.MessageCreateParamsNonStreaming;\n  export type MessageCreateParamsStreaming = MessagesAPI.MessageCreateParamsStreaming;\n}\n\nexport interface MessageCreateParamsNonStreaming extends MessageCreateParamsBase {\n  /**\n   * Whether to incrementally stream the response using server-sent events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream?: false;\n}\n\nexport interface MessageCreateParamsStreaming extends MessageCreateParamsBase {\n  /**\n   * Whether to incrementally stream the response using server-sent events.\n   *\n   * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n   */\n  stream: true;\n}\n\nexport type MessageStreamParams = ParseableMessageCreateParams;\n\nexport interface MessageCountTokensParams {\n  /**\n   * Input messages.\n   *\n   * Our models are trained to operate on alternating `user` and `assistant`\n   * conversational turns. When creating a new `Message`, you specify the prior\n   * conversational turns with the `messages` parameter, and the model then generates\n   * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n   * in your request will be combined into a single turn.\n   *\n   * Each input message must be an object with a `role` and `content`. You can\n   * specify a single `user`-role message, or you can include multiple `user` and\n   * `assistant` messages.\n   *\n   * If the final message uses the `assistant` role, the response content will\n   * continue immediately from the content in that message. This can be used to\n   * constrain part of the model's response.\n   *\n   * Example with a single `user` message:\n   *\n   * ```json\n   * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n   * ```\n   *\n   * Example with multiple conversational turns:\n   *\n   * ```json\n   * [\n   *   { \"role\": \"user\", \"content\": \"Hello there.\" },\n   *   { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n   *   { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n   * ]\n   * ```\n   *\n   * Example with a partially-filled response from Claude:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"role\": \"user\",\n   *     \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n   *   },\n   *   { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n   * ]\n   * ```\n   *\n   * Each input message `content` may be either a single `string` or an array of\n   * content blocks, where each block has a specific `type`. Using a `string` for\n   * `content` is shorthand for an array of one content block of type `\"text\"`. The\n   * following input messages are equivalent:\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n   * ```\n   *\n   * ```json\n   * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n   * ```\n   *\n   * See [input examples](https://docs.claude.com/en/api/messages-examples).\n   *\n   * Note that if you want to include a\n   * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n   * top-level `system` parameter \u2014 there is no `\"system\"` role for input messages in\n   * the Messages API.\n   *\n   * There is a limit of 100,000 messages in a single request.\n   */\n  messages: Array<MessageParam>;\n\n  /**\n   * The model that will complete your prompt.\\n\\nSee\n   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n   * details and options.\n   */\n  model: Model;\n\n  /**\n   * Top-level cache control automatically applies a cache_control marker to the last\n   * cacheable block in the request.\n   */\n  cache_control?: CacheControlEphemeral | null;\n\n  /**\n   * Configuration options for the model's output, such as the output format.\n   */\n  output_config?: OutputConfig;\n\n  /**\n   * System prompt.\n   *\n   * A system prompt is a way of providing context and instructions to Claude, such\n   * as specifying a particular goal or role. See our\n   * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n   */\n  system?: string | Array<TextBlockParam>;\n\n  /**\n   * Configuration for enabling Claude's extended thinking.\n   *\n   * When enabled, responses include `thinking` content blocks showing Claude's\n   * thinking process before the final answer. Requires a minimum budget of 1,024\n   * tokens and counts towards your `max_tokens` limit.\n   *\n   * See\n   * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n   * for details.\n   */\n  thinking?: ThinkingConfigParam;\n\n  /**\n   * How the model should use the provided tools. The model can use a specific tool,\n   * any available tool, decide by itself, or not use tools at all.\n   */\n  tool_choice?: ToolChoice;\n\n  /**\n   * Definitions of tools that the model may use.\n   *\n   * If you include `tools` in your API request, the model may return `tool_use`\n   * content blocks that represent the model's use of those tools. You can then run\n   * those tools using the tool input generated by the model and then optionally\n   * return results back to the model using `tool_result` content blocks.\n   *\n   * There are two types of tools: **client tools** and **server tools**. The\n   * behavior described below applies to client tools. For\n   * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n   * see their individual documentation as each has its own behavior (e.g., the\n   * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n   *\n   * Each tool definition includes:\n   *\n   * - `name`: Name of the tool.\n   * - `description`: Optional, but strongly-recommended description of the tool.\n   * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n   *   tool `input` shape that the model will produce in `tool_use` output content\n   *   blocks.\n   *\n   * For example, if you defined `tools` as:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"name\": \"get_stock_price\",\n   *     \"description\": \"Get the current stock price for a given ticker symbol.\",\n   *     \"input_schema\": {\n   *       \"type\": \"object\",\n   *       \"properties\": {\n   *         \"ticker\": {\n   *           \"type\": \"string\",\n   *           \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n   *         }\n   *       },\n   *       \"required\": [\"ticker\"]\n   *     }\n   *   }\n   * ]\n   * ```\n   *\n   * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n   * `tool_use` content blocks in the response like this:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_use\",\n   *     \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"name\": \"get_stock_price\",\n   *     \"input\": { \"ticker\": \"^GSPC\" }\n   *   }\n   * ]\n   * ```\n   *\n   * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n   * input, and return the following back to the model in a subsequent `user`\n   * message:\n   *\n   * ```json\n   * [\n   *   {\n   *     \"type\": \"tool_result\",\n   *     \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n   *     \"content\": \"259.75 USD\"\n   *   }\n   * ]\n   * ```\n   *\n   * Tools can be used for workflows that include running client-side tools and\n   * functions, or more generally whenever you want the model to produce a particular\n   * JSON structure of output.\n   *\n   * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n   */\n  tools?: Array<MessageCountTokensTool>;\n}\n\nMessages.Batches = Batches;\n\nexport declare namespace Messages {\n  export {\n    type Base64ImageSource as Base64ImageSource,\n    type Base64PDFSource as Base64PDFSource,\n    type BashCodeExecutionOutputBlock as BashCodeExecutionOutputBlock,\n    type BashCodeExecutionOutputBlockParam as BashCodeExecutionOutputBlockParam,\n    type BashCodeExecutionResultBlock as BashCodeExecutionResultBlock,\n    type BashCodeExecutionResultBlockParam as BashCodeExecutionResultBlockParam,\n    type BashCodeExecutionToolResultBlock as BashCodeExecutionToolResultBlock,\n    type BashCodeExecutionToolResultBlockParam as BashCodeExecutionToolResultBlockParam,\n    type BashCodeExecutionToolResultError as BashCodeExecutionToolResultError,\n    type BashCodeExecutionToolResultErrorCode as BashCodeExecutionToolResultErrorCode,\n    type BashCodeExecutionToolResultErrorParam as BashCodeExecutionToolResultErrorParam,\n    type CacheControlEphemeral as CacheControlEphemeral,\n    type CacheCreation as CacheCreation,\n    type CitationCharLocation as CitationCharLocation,\n    type CitationCharLocationParam as CitationCharLocationParam,\n    type CitationContentBlockLocation as CitationContentBlockLocation,\n    type CitationContentBlockLocationParam as CitationContentBlockLocationParam,\n    type CitationPageLocation as CitationPageLocation,\n    type CitationPageLocationParam as CitationPageLocationParam,\n    type CitationSearchResultLocationParam as CitationSearchResultLocationParam,\n    type CitationWebSearchResultLocationParam as CitationWebSearchResultLocationParam,\n    type CitationsConfig as CitationsConfig,\n    type CitationsConfigParam as CitationsConfigParam,\n    type CitationsDelta as CitationsDelta,\n    type CitationsSearchResultLocation as CitationsSearchResultLocation,\n    type CitationsWebSearchResultLocation as CitationsWebSearchResultLocation,\n    type CodeExecutionOutputBlock as CodeExecutionOutputBlock,\n    type CodeExecutionOutputBlockParam as CodeExecutionOutputBlockParam,\n    type CodeExecutionResultBlock as CodeExecutionResultBlock,\n    type CodeExecutionResultBlockParam as CodeExecutionResultBlockParam,\n    type CodeExecutionTool20250522 as CodeExecutionTool20250522,\n    type CodeExecutionTool20250825 as CodeExecutionTool20250825,\n    type CodeExecutionTool20260120 as CodeExecutionTool20260120,\n    type CodeExecutionToolResultBlock as CodeExecutionToolResultBlock,\n    type CodeExecutionToolResultBlockContent as CodeExecutionToolResultBlockContent,\n    type CodeExecutionToolResultBlockParam as CodeExecutionToolResultBlockParam,\n    type CodeExecutionToolResultBlockParamContent as CodeExecutionToolResultBlockParamContent,\n    type CodeExecutionToolResultError as CodeExecutionToolResultError,\n    type CodeExecutionToolResultErrorCode as CodeExecutionToolResultErrorCode,\n    type CodeExecutionToolResultErrorParam as CodeExecutionToolResultErrorParam,\n    type Container as Container,\n    type ContainerUploadBlock as ContainerUploadBlock,\n    type ContainerUploadBlockParam as ContainerUploadBlockParam,\n    type ContentBlock as ContentBlock,\n    type ContentBlockParam as ContentBlockParam,\n    type ContentBlockStartEvent as ContentBlockStartEvent,\n    type ContentBlockStopEvent as ContentBlockStopEvent,\n    type ContentBlockSource as ContentBlockSource,\n    type ContentBlockSourceContent as ContentBlockSourceContent,\n    type DirectCaller as DirectCaller,\n    type DocumentBlock as DocumentBlock,\n    type DocumentBlockParam as DocumentBlockParam,\n    type EncryptedCodeExecutionResultBlock as EncryptedCodeExecutionResultBlock,\n    type EncryptedCodeExecutionResultBlockParam as EncryptedCodeExecutionResultBlockParam,\n    type ImageBlockParam as ImageBlockParam,\n    type InputJSONDelta as InputJSONDelta,\n    type JSONOutputFormat as JSONOutputFormat,\n    type MemoryTool20250818 as MemoryTool20250818,\n    type Message as Message,\n    type MessageCountTokensTool as MessageCountTokensTool,\n    type MessageDeltaEvent as MessageDeltaEvent,\n    type MessageDeltaUsage as MessageDeltaUsage,\n    type MessageParam as MessageParam,\n    type MessageTokensCount as MessageTokensCount,\n    type Metadata as Metadata,\n    type Model as Model,\n    type OutputConfig as OutputConfig,\n    type PlainTextSource as PlainTextSource,\n    type RawContentBlockDelta as RawContentBlockDelta,\n    type RawContentBlockDeltaEvent as RawContentBlockDeltaEvent,\n    type RawContentBlockStartEvent as RawContentBlockStartEvent,\n    type RawContentBlockStopEvent as RawContentBlockStopEvent,\n    type RawMessageDeltaEvent as RawMessageDeltaEvent,\n    type RawMessageStartEvent as RawMessageStartEvent,\n    type RawMessageStopEvent as RawMessageStopEvent,\n    type RawMessageStreamEvent as RawMessageStreamEvent,\n    type RedactedThinkingBlock as RedactedThinkingBlock,\n    type RedactedThinkingBlockParam as RedactedThinkingBlockParam,\n    type RefusalStopDetails as RefusalStopDetails,\n    type SearchResultBlockParam as SearchResultBlockParam,\n    type ServerToolCaller as ServerToolCaller,\n    type ServerToolCaller20260120 as ServerToolCaller20260120,\n    type ServerToolUsage as ServerToolUsage,\n    type ServerToolUseBlock as ServerToolUseBlock,\n    type ServerToolUseBlockParam as ServerToolUseBlockParam,\n    type SignatureDelta as SignatureDelta,\n    type StopReason as StopReason,\n    type TextBlock as TextBlock,\n    type TextBlockParam as TextBlockParam,\n    type TextCitation as TextCitation,\n    type TextCitationParam as TextCitationParam,\n    type TextDelta as TextDelta,\n    type TextEditorCodeExecutionCreateResultBlock as TextEditorCodeExecutionCreateResultBlock,\n    type TextEditorCodeExecutionCreateResultBlockParam as TextEditorCodeExecutionCreateResultBlockParam,\n    type TextEditorCodeExecutionStrReplaceResultBlock as TextEditorCodeExecutionStrReplaceResultBlock,\n    type TextEditorCodeExecutionStrReplaceResultBlockParam as TextEditorCodeExecutionStrReplaceResultBlockParam,\n    type TextEditorCodeExecutionToolResultBlock as TextEditorCodeExecutionToolResultBlock,\n    type TextEditorCodeExecutionToolResultBlockParam as TextEditorCodeExecutionToolResultBlockParam,\n    type TextEditorCodeExecutionToolResultError as TextEditorCodeExecutionToolResultError,\n    type TextEditorCodeExecutionToolResultErrorCode as TextEditorCodeExecutionToolResultErrorCode,\n    type TextEditorCodeExecutionToolResultErrorParam as TextEditorCodeExecutionToolResultErrorParam,\n    type TextEditorCodeExecutionViewResultBlock as TextEditorCodeExecutionViewResultBlock,\n    type TextEditorCodeExecutionViewResultBlockParam as TextEditorCodeExecutionViewResultBlockParam,\n    type ThinkingBlock as ThinkingBlock,\n    type ThinkingBlockParam as ThinkingBlockParam,\n    type ThinkingConfigAdaptive as ThinkingConfigAdaptive,\n    type ThinkingConfigDisabled as ThinkingConfigDisabled,\n    type ThinkingConfigEnabled as ThinkingConfigEnabled,\n    type ThinkingConfigParam as ThinkingConfigParam,\n    type ThinkingDelta as ThinkingDelta,\n    type Tool as Tool,\n    type ToolBash20250124 as ToolBash20250124,\n    type ToolChoice as ToolChoice,\n    type ToolChoiceAny as ToolChoiceAny,\n    type ToolChoiceAuto as ToolChoiceAuto,\n    type ToolChoiceNone as ToolChoiceNone,\n    type ToolChoiceTool as ToolChoiceTool,\n    type ToolReferenceBlock as ToolReferenceBlock,\n    type ToolReferenceBlockParam as ToolReferenceBlockParam,\n    type ToolResultBlockParam as ToolResultBlockParam,\n    type ToolSearchToolBm25_20251119 as ToolSearchToolBm25_20251119,\n    type ToolSearchToolRegex20251119 as ToolSearchToolRegex20251119,\n    type ToolSearchToolResultBlock as ToolSearchToolResultBlock,\n    type ToolSearchToolResultBlockParam as ToolSearchToolResultBlockParam,\n    type ToolSearchToolResultError as ToolSearchToolResultError,\n    type ToolSearchToolResultErrorCode as ToolSearchToolResultErrorCode,\n    type ToolSearchToolResultErrorParam as ToolSearchToolResultErrorParam,\n    type ToolSearchToolSearchResultBlock as ToolSearchToolSearchResultBlock,\n    type ToolSearchToolSearchResultBlockParam as ToolSearchToolSearchResultBlockParam,\n    type ToolTextEditor20250124 as ToolTextEditor20250124,\n    type ToolTextEditor20250429 as ToolTextEditor20250429,\n    type ToolTextEditor20250728 as ToolTextEditor20250728,\n    type ToolUnion as ToolUnion,\n    type ToolUseBlock as ToolUseBlock,\n    type ToolUseBlockParam as ToolUseBlockParam,\n    type URLImageSource as URLImageSource,\n    type URLPDFSource as URLPDFSource,\n    type Usage as Usage,\n    type UserLocation as UserLocation,\n    type WebFetchBlock as WebFetchBlock,\n    type WebFetchBlockParam as WebFetchBlockParam,\n    type WebFetchTool20250910 as WebFetchTool20250910,\n    type WebFetchTool20260209 as WebFetchTool20260209,\n    type WebFetchTool20260309 as WebFetchTool20260309,\n    type WebFetchToolResultBlock as WebFetchToolResultBlock,\n    type WebFetchToolResultBlockParam as WebFetchToolResultBlockParam,\n    type WebFetchToolResultErrorBlock as WebFetchToolResultErrorBlock,\n    type WebFetchToolResultErrorBlockParam as WebFetchToolResultErrorBlockParam,\n    type WebFetchToolResultErrorCode as WebFetchToolResultErrorCode,\n    type WebSearchResultBlock as WebSearchResultBlock,\n    type WebSearchResultBlockParam as WebSearchResultBlockParam,\n    type WebSearchTool20250305 as WebSearchTool20250305,\n    type WebSearchTool20260209 as WebSearchTool20260209,\n    type WebSearchToolRequestError as WebSearchToolRequestError,\n    type WebSearchToolResultBlock as WebSearchToolResultBlock,\n    type WebSearchToolResultBlockContent as WebSearchToolResultBlockContent,\n    type WebSearchToolResultBlockParam as WebSearchToolResultBlockParam,\n    type WebSearchToolResultBlockParamContent as WebSearchToolResultBlockParamContent,\n    type WebSearchToolResultError as WebSearchToolResultError,\n    type MessageStreamEvent as MessageStreamEvent,\n    type MessageStartEvent as MessageStartEvent,\n    type MessageStopEvent as MessageStopEvent,\n    type ContentBlockDeltaEvent as ContentBlockDeltaEvent,\n    type MessageCreateParams as MessageCreateParams,\n    type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n    type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n    type MessageStreamParams as MessageStreamParams,\n    type MessageCountTokensParams as MessageCountTokensParams,\n  };\n\n  export {\n    Batches as Batches,\n    type DeletedMessageBatch as DeletedMessageBatch,\n    type MessageBatch as MessageBatch,\n    type MessageBatchCanceledResult as MessageBatchCanceledResult,\n    type MessageBatchErroredResult as MessageBatchErroredResult,\n    type MessageBatchExpiredResult as MessageBatchExpiredResult,\n    type MessageBatchIndividualResponse as MessageBatchIndividualResponse,\n    type MessageBatchRequestCounts as MessageBatchRequestCounts,\n    type MessageBatchResult as MessageBatchResult,\n    type MessageBatchSucceededResult as MessageBatchSucceededResult,\n    type MessageBatchesPage as MessageBatchesPage,\n    type BatchCreateParams as BatchCreateParams,\n    type BatchListParams as BatchListParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../core/resource';\nimport * as BetaAPI from './beta/beta';\nimport { APIPromise } from '../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../core/pagination';\nimport { buildHeaders } from '../internal/headers';\nimport { RequestOptions } from '../internal/request-options';\nimport { path } from '../internal/utils/path';\n\nexport class Models extends APIResource {\n  /**\n   * Get a specific model.\n   *\n   * The Models API response can be used to determine information about a specific\n   * model or resolve a model alias to a model ID.\n   */\n  retrieve(\n    modelID: string,\n    params: ModelRetrieveParams | null | undefined = {},\n    options?: RequestOptions,\n  ): APIPromise<ModelInfo> {\n    const { betas } = params ?? {};\n    return this._client.get(path`/v1/models/${modelID}`, {\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        options?.headers,\n      ]),\n    });\n  }\n\n  /**\n   * List available models.\n   *\n   * The Models API response can be used to determine which models are available for\n   * use in the API. More recently released models are listed first.\n   */\n  list(\n    params: ModelListParams | null | undefined = {},\n    options?: RequestOptions,\n  ): PagePromise<ModelInfosPage, ModelInfo> {\n    const { betas, ...query } = params ?? {};\n    return this._client.getAPIList('/v1/models', Page<ModelInfo>, {\n      query,\n      ...options,\n      headers: buildHeaders([\n        { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n        options?.headers,\n      ]),\n    });\n  }\n}\n\nexport type ModelInfosPage = Page<ModelInfo>;\n\n/**\n * Indicates whether a capability is supported.\n */\nexport interface CapabilitySupport {\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n}\n\n/**\n * Context management capability details.\n */\nexport interface ContextManagementCapability {\n  /**\n   * Indicates whether a capability is supported.\n   */\n  clear_thinking_20251015: CapabilitySupport | null;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  clear_tool_uses_20250919: CapabilitySupport | null;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  compact_20260112: CapabilitySupport | null;\n\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n}\n\n/**\n * Effort (reasoning_effort) capability details.\n */\nexport interface EffortCapability {\n  /**\n   * Whether the model supports high effort level.\n   */\n  high: CapabilitySupport;\n\n  /**\n   * Whether the model supports low effort level.\n   */\n  low: CapabilitySupport;\n\n  /**\n   * Whether the model supports max effort level.\n   */\n  max: CapabilitySupport;\n\n  /**\n   * Whether the model supports medium effort level.\n   */\n  medium: CapabilitySupport;\n\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n\n  /**\n   * Indicates whether a capability is supported.\n   */\n  xhigh: CapabilitySupport | null;\n}\n\n/**\n * Model capability information.\n */\nexport interface ModelCapabilities {\n  /**\n   * Whether the model supports the Batch API.\n   */\n  batch: CapabilitySupport;\n\n  /**\n   * Whether the model supports citation generation.\n   */\n  citations: CapabilitySupport;\n\n  /**\n   * Whether the model supports code execution tools.\n   */\n  code_execution: CapabilitySupport;\n\n  /**\n   * Context management support and available strategies.\n   */\n  context_management: ContextManagementCapability;\n\n  /**\n   * Effort (reasoning_effort) support and available levels.\n   */\n  effort: EffortCapability;\n\n  /**\n   * Whether the model accepts image content blocks.\n   */\n  image_input: CapabilitySupport;\n\n  /**\n   * Whether the model accepts PDF content blocks.\n   */\n  pdf_input: CapabilitySupport;\n\n  /**\n   * Whether the model supports structured output / JSON mode / strict tool schemas.\n   */\n  structured_outputs: CapabilitySupport;\n\n  /**\n   * Thinking capability and supported type configurations.\n   */\n  thinking: ThinkingCapability;\n}\n\nexport interface ModelInfo {\n  /**\n   * Unique model identifier.\n   */\n  id: string;\n\n  /**\n   * Model capability information.\n   */\n  capabilities: ModelCapabilities | null;\n\n  /**\n   * RFC 3339 datetime string representing the time at which the model was released.\n   * May be set to an epoch value if the release date is unknown.\n   */\n  created_at: string;\n\n  /**\n   * A human-readable name for the model.\n   */\n  display_name: string;\n\n  /**\n   * Maximum input context window size in tokens for this model.\n   */\n  max_input_tokens: number | null;\n\n  /**\n   * Maximum value for the `max_tokens` parameter when using this model.\n   */\n  max_tokens: number | null;\n\n  /**\n   * Object type.\n   *\n   * For Models, this is always `\"model\"`.\n   */\n  type: 'model';\n}\n\n/**\n * Thinking capability details.\n */\nexport interface ThinkingCapability {\n  /**\n   * Whether this capability is supported by the model.\n   */\n  supported: boolean;\n\n  /**\n   * Supported thinking type configurations.\n   */\n  types: ThinkingTypes;\n}\n\n/**\n * Supported thinking type configurations.\n */\nexport interface ThinkingTypes {\n  /**\n   * Whether the model supports thinking with type 'adaptive' (auto).\n   */\n  adaptive: CapabilitySupport;\n\n  /**\n   * Whether the model supports thinking with type 'enabled'.\n   */\n  enabled: CapabilitySupport;\n}\n\nexport interface ModelRetrieveParams {\n  /**\n   * Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ModelListParams extends PageParams {\n  /**\n   * Header param: Optional header to specify the beta version(s) you want to use.\n   */\n  betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Models {\n  export {\n    type CapabilitySupport as CapabilitySupport,\n    type ContextManagementCapability as ContextManagementCapability,\n    type EffortCapability as EffortCapability,\n    type ModelCapabilities as ModelCapabilities,\n    type ModelInfo as ModelInfo,\n    type ThinkingCapability as ThinkingCapability,\n    type ThinkingTypes as ThinkingTypes,\n    type ModelInfosPage as ModelInfosPage,\n    type ModelRetrieveParams as ModelRetrieveParams,\n    type ModelListParams as ModelListParams,\n  };\n}\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env: string): string | undefined => {\n  if (typeof (globalThis as any).process !== 'undefined') {\n    return (globalThis as any).process.env?.[env]?.trim() || undefined;\n  }\n  if (typeof (globalThis as any).Deno !== 'undefined') {\n    return (globalThis as any).Deno.env?.get?.(env)?.trim() || undefined;\n  }\n  return undefined;\n};\n", "// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport type { RequestInit, RequestInfo, BodyInit } from './internal/builtin-types';\nimport type { HTTPMethod, PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types';\nimport { uuid4 } from './internal/utils/uuid';\nimport { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/utils/values';\nimport { sleep } from './internal/utils/sleep';\nexport type { Logger, LogLevel } from './internal/utils/log';\nimport { castToError, isAbortError } from './internal/errors';\nimport type { APIResponseProps } from './internal/parse';\nimport { getPlatformHeaders } from './internal/detect-platform';\nimport * as Shims from './internal/shims';\nimport * as Opts from './internal/request-options';\nimport { stringifyQuery } from './internal/utils/query';\nimport { VERSION } from './version';\nimport * as Errors from './core/error';\nimport * as Pagination from './core/pagination';\nimport {\n  type PageCursorParams,\n  PageCursorResponse,\n  type PageParams,\n  PageResponse,\n  type TokenPageParams,\n  TokenPageResponse,\n} from './core/pagination';\nimport * as Uploads from './core/uploads';\nimport * as API from './resources/index';\nimport { APIPromise } from './core/api-promise';\nimport {\n  Completion,\n  CompletionCreateParams,\n  CompletionCreateParamsNonStreaming,\n  CompletionCreateParamsStreaming,\n  Completions,\n} from './resources/completions';\nimport {\n  CapabilitySupport,\n  ContextManagementCapability,\n  EffortCapability,\n  ModelCapabilities,\n  ModelInfo,\n  ModelInfosPage,\n  ModelListParams,\n  ModelRetrieveParams,\n  Models,\n  ThinkingCapability,\n  ThinkingTypes,\n} from './resources/models';\nimport {\n  AnthropicBeta,\n  Beta,\n  BetaAPIError,\n  BetaAuthenticationError,\n  BetaBillingError,\n  BetaError,\n  BetaErrorResponse,\n  BetaGatewayTimeoutError,\n  BetaInvalidRequestError,\n  BetaNotFoundError,\n  BetaOverloadedError,\n  BetaPermissionError,\n  BetaRateLimitError,\n} from './resources/beta/beta';\nimport {\n  Base64ImageSource,\n  Base64PDFSource,\n  BashCodeExecutionOutputBlock,\n  BashCodeExecutionOutputBlockParam,\n  BashCodeExecutionResultBlock,\n  BashCodeExecutionResultBlockParam,\n  BashCodeExecutionToolResultBlock,\n  BashCodeExecutionToolResultBlockParam,\n  BashCodeExecutionToolResultError,\n  BashCodeExecutionToolResultErrorCode,\n  BashCodeExecutionToolResultErrorParam,\n  CacheControlEphemeral,\n  CacheCreation,\n  CitationCharLocation,\n  CitationCharLocationParam,\n  CitationContentBlockLocation,\n  CitationContentBlockLocationParam,\n  CitationPageLocation,\n  CitationPageLocationParam,\n  CitationSearchResultLocationParam,\n  CitationWebSearchResultLocationParam,\n  CitationsConfig,\n  CitationsConfigParam,\n  CitationsDelta,\n  CitationsSearchResultLocation,\n  CitationsWebSearchResultLocation,\n  CodeExecutionOutputBlock,\n  CodeExecutionOutputBlockParam,\n  CodeExecutionResultBlock,\n  CodeExecutionResultBlockParam,\n  CodeExecutionTool20250522,\n  CodeExecutionTool20250825,\n  CodeExecutionTool20260120,\n  CodeExecutionToolResultBlock,\n  CodeExecutionToolResultBlockContent,\n  CodeExecutionToolResultBlockParam,\n  CodeExecutionToolResultBlockParamContent,\n  CodeExecutionToolResultError,\n  CodeExecutionToolResultErrorCode,\n  CodeExecutionToolResultErrorParam,\n  Container,\n  ContainerUploadBlock,\n  ContainerUploadBlockParam,\n  ContentBlock,\n  ContentBlockDeltaEvent,\n  ContentBlockParam,\n  ContentBlockStartEvent,\n  ContentBlockStopEvent,\n  ContentBlockSource,\n  ContentBlockSourceContent,\n  DirectCaller,\n  DocumentBlock,\n  DocumentBlockParam,\n  EncryptedCodeExecutionResultBlock,\n  EncryptedCodeExecutionResultBlockParam,\n  ImageBlockParam,\n  InputJSONDelta,\n  JSONOutputFormat,\n  MemoryTool20250818,\n  Message,\n  MessageStreamParams,\n  MessageCountTokensParams,\n  MessageCountTokensTool,\n  MessageCreateParams,\n  MessageCreateParamsNonStreaming,\n  MessageCreateParamsStreaming,\n  MessageDeltaEvent,\n  MessageDeltaUsage,\n  MessageParam,\n  MessageStartEvent,\n  MessageStopEvent,\n  MessageStreamEvent,\n  MessageTokensCount,\n  Messages,\n  Metadata,\n  Model,\n  OutputConfig,\n  PlainTextSource,\n  RawContentBlockDelta,\n  RawContentBlockDeltaEvent,\n  RawContentBlockStartEvent,\n  RawContentBlockStopEvent,\n  RawMessageDeltaEvent,\n  RawMessageStartEvent,\n  RawMessageStopEvent,\n  RawMessageStreamEvent,\n  RedactedThinkingBlock,\n  RedactedThinkingBlockParam,\n  RefusalStopDetails,\n  SearchResultBlockParam,\n  ServerToolCaller,\n  ServerToolCaller20260120,\n  ServerToolUsage,\n  ServerToolUseBlock,\n  ServerToolUseBlockParam,\n  SignatureDelta,\n  StopReason,\n  TextBlock,\n  TextBlockParam,\n  TextCitation,\n  TextCitationParam,\n  TextDelta,\n  TextEditorCodeExecutionCreateResultBlock,\n  TextEditorCodeExecutionCreateResultBlockParam,\n  TextEditorCodeExecutionStrReplaceResultBlock,\n  TextEditorCodeExecutionStrReplaceResultBlockParam,\n  TextEditorCodeExecutionToolResultBlock,\n  TextEditorCodeExecutionToolResultBlockParam,\n  TextEditorCodeExecutionToolResultError,\n  TextEditorCodeExecutionToolResultErrorCode,\n  TextEditorCodeExecutionToolResultErrorParam,\n  TextEditorCodeExecutionViewResultBlock,\n  TextEditorCodeExecutionViewResultBlockParam,\n  ThinkingBlock,\n  ThinkingBlockParam,\n  ThinkingConfigAdaptive,\n  ThinkingConfigDisabled,\n  ThinkingConfigEnabled,\n  ThinkingConfigParam,\n  ThinkingDelta,\n  Tool,\n  ToolBash20250124,\n  ToolChoice,\n  ToolChoiceAny,\n  ToolChoiceAuto,\n  ToolChoiceNone,\n  ToolChoiceTool,\n  ToolReferenceBlock,\n  ToolReferenceBlockParam,\n  ToolResultBlockParam,\n  ToolSearchToolBm25_20251119,\n  ToolSearchToolRegex20251119,\n  ToolSearchToolResultBlock,\n  ToolSearchToolResultBlockParam,\n  ToolSearchToolResultError,\n  ToolSearchToolResultErrorCode,\n  ToolSearchToolResultErrorParam,\n  ToolSearchToolSearchResultBlock,\n  ToolSearchToolSearchResultBlockParam,\n  ToolTextEditor20250124,\n  ToolTextEditor20250429,\n  ToolTextEditor20250728,\n  ToolUnion,\n  ToolUseBlock,\n  ToolUseBlockParam,\n  URLImageSource,\n  URLPDFSource,\n  Usage,\n  UserLocation,\n  WebFetchBlock,\n  WebFetchBlockParam,\n  WebFetchTool20250910,\n  WebFetchTool20260209,\n  WebFetchTool20260309,\n  WebFetchToolResultBlock,\n  WebFetchToolResultBlockParam,\n  WebFetchToolResultErrorBlock,\n  WebFetchToolResultErrorBlockParam,\n  WebFetchToolResultErrorCode,\n  WebSearchResultBlock,\n  WebSearchResultBlockParam,\n  WebSearchTool20250305,\n  WebSearchTool20260209,\n  WebSearchToolRequestError,\n  WebSearchToolResultBlock,\n  WebSearchToolResultBlockContent,\n  WebSearchToolResultBlockParam,\n  WebSearchToolResultBlockParamContent,\n  WebSearchToolResultError,\n  WebSearchToolResultErrorCode,\n} from './resources/messages/messages';\nimport { type Fetch } from './internal/builtin-types';\nimport { isRunningInBrowser } from './internal/detect-platform';\nimport { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers';\nimport { FinalRequestOptions, RequestOptions } from './internal/request-options';\nimport { readEnv } from './internal/utils/env';\nimport {\n  type LogLevel,\n  type Logger,\n  formatRequestDetails,\n  loggerFor,\n  parseLogLevel,\n} from './internal/utils/log';\nimport { isEmptyObj } from './internal/utils/values';\n\nexport type ApiKeySetter = () => Promise<string>;\n\nexport interface ClientOptions {\n  /**\n   * API key used for authentication.\n   *\n   * - Accepts either a static string or an async function that resolves to a string.\n   * - Defaults to process.env['ANTHROPIC_API_KEY'].\n   * - When a function is provided, it is invoked before each request so you can rotate\n   *   or refresh credentials at runtime.\n   * - The function must return a non-empty string; otherwise an AnthropicError is thrown.\n   * - If the function throws, the error is wrapped in an AnthropicError with the original\n   *   error available as `cause`.\n   */\n  apiKey?: string | ApiKeySetter | null | undefined;\n\n  /**\n   * Defaults to process.env['ANTHROPIC_AUTH_TOKEN'].\n   */\n  authToken?: string | null | undefined;\n\n  /**\n   * Override the default base URL for the API, e.g., \"https://api.example.com/v2/\"\n   *\n   * Defaults to process.env['ANTHROPIC_BASE_URL'].\n   */\n  baseURL?: string | null | undefined;\n\n  /**\n   * The maximum amount of time (in milliseconds) that the client should wait for a response\n   * from the server before timing out a single request.\n   *\n   * Note that request timeouts are retried by default, so in a worst-case scenario you may wait\n   * much longer than this timeout before the promise succeeds or fails.\n   *\n   * @unit milliseconds\n   */\n  timeout?: number | undefined;\n  /**\n   * Additional `RequestInit` options to be passed to `fetch` calls.\n   * Properties will be overridden by per-request `fetchOptions`.\n   */\n  fetchOptions?: MergedRequestInit | undefined;\n\n  /**\n   * Specify a custom `fetch` function implementation.\n   *\n   * If not provided, we expect that `fetch` is defined globally.\n   */\n  fetch?: Fetch | undefined;\n\n  /**\n   * The maximum number of times that the client will retry a request in case of a\n   * temporary failure, like a network error or a 5XX error from the server.\n   *\n   * @default 2\n   */\n  maxRetries?: number | undefined;\n\n  /**\n   * Default headers to include with every request to the API.\n   *\n   * These can be removed in individual requests by explicitly setting the\n   * header to `null` in request options.\n   */\n  defaultHeaders?: HeadersLike | undefined;\n\n  /**\n   * Default query parameters to include with every request to the API.\n   *\n   * These can be removed in individual requests by explicitly setting the\n   * param to `undefined` in request options.\n   */\n  defaultQuery?: Record<string, string | undefined> | undefined;\n\n  /**\n   * By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n   * Only set this option to `true` if you understand the risks and have appropriate mitigations in place.\n   */\n  dangerouslyAllowBrowser?: boolean | undefined;\n\n  /**\n   * Set the log level.\n   *\n   * Defaults to process.env['ANTHROPIC_LOG'] or 'warn' if it isn't set.\n   */\n  logLevel?: LogLevel | undefined;\n\n  /**\n   * Set the logger.\n   *\n   * Defaults to globalThis.console.\n   */\n  logger?: Logger | undefined;\n}\n\nexport const HUMAN_PROMPT = '\\\\n\\\\nHuman:';\nexport const AI_PROMPT = '\\\\n\\\\nAssistant:';\n\n/**\n * Base class for Anthropic API clients.\n */\nexport class BaseAnthropic {\n  apiKey: string | null;\n  authToken: string | null;\n\n  baseURL: string;\n  maxRetries: number;\n  timeout: number;\n  logger: Logger;\n  logLevel: LogLevel | undefined;\n  fetchOptions: MergedRequestInit | undefined;\n\n  private fetch: Fetch;\n  #encoder: Opts.RequestEncoder;\n  protected idempotencyHeader?: string;\n  protected _options: ClientOptions;\n\n  /**\n   * API Client for interfacing with the Anthropic API.\n   *\n   * @param {string | null | undefined} [opts.apiKey=process.env['ANTHROPIC_API_KEY'] ?? null]\n   * @param {string | null | undefined} [opts.authToken=process.env['ANTHROPIC_AUTH_TOKEN'] ?? null]\n   * @param {string} [opts.baseURL=process.env['ANTHROPIC_BASE_URL'] ?? https://api.anthropic.com] - Override the default base URL for the API.\n   * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n   * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.\n   * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n   * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n   * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.\n   * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.\n   * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n   */\n  constructor({\n    baseURL = readEnv('ANTHROPIC_BASE_URL'),\n    apiKey = readEnv('ANTHROPIC_API_KEY') ?? null,\n    authToken = readEnv('ANTHROPIC_AUTH_TOKEN') ?? null,\n    ...opts\n  }: ClientOptions = {}) {\n    const options: ClientOptions = {\n      apiKey,\n      authToken,\n      ...opts,\n      baseURL: baseURL || `https://api.anthropic.com`,\n    };\n\n    if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n      throw new Errors.AnthropicError(\n        \"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew Anthropic({ apiKey, dangerouslyAllowBrowser: true });\\n\",\n      );\n    }\n\n    this.baseURL = options.baseURL!;\n    this.timeout = options.timeout ?? BaseAnthropic.DEFAULT_TIMEOUT /* 10 minutes */;\n    this.logger = options.logger ?? console;\n    const defaultLogLevel = 'warn';\n    // Set default logLevel early so that we can log a warning in parseLogLevel.\n    this.logLevel = defaultLogLevel;\n    this.logLevel =\n      parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??\n      parseLogLevel(readEnv('ANTHROPIC_LOG'), \"process.env['ANTHROPIC_LOG']\", this) ??\n      defaultLogLevel;\n    this.fetchOptions = options.fetchOptions;\n    this.maxRetries = options.maxRetries ?? 2;\n    this.fetch = options.fetch ?? Shims.getDefaultFetch();\n    this.#encoder = Opts.FallbackEncoder;\n\n    this._options = options;\n\n    this.apiKey = typeof apiKey === 'string' ? apiKey : null;\n    this.authToken = authToken;\n  }\n\n  /**\n   * Create a new client instance re-using the same options given to the current client with optional overriding.\n   */\n  withOptions(options: Partial<ClientOptions>): this {\n    const client = new (this.constructor as any as new (props: ClientOptions) => typeof this)({\n      ...this._options,\n      baseURL: this.baseURL,\n      maxRetries: this.maxRetries,\n      timeout: this.timeout,\n      logger: this.logger,\n      logLevel: this.logLevel,\n      fetch: this.fetch,\n      fetchOptions: this.fetchOptions,\n      apiKey: this.apiKey,\n      authToken: this.authToken,\n      ...options,\n    });\n    return client;\n  }\n\n  /**\n   * Check whether the base URL is set to its default.\n   */\n  #baseURLOverridden(): boolean {\n    return this.baseURL !== 'https://api.anthropic.com';\n  }\n\n  protected defaultQuery(): Record<string, string | undefined> | undefined {\n    return this._options.defaultQuery;\n  }\n\n  protected validateHeaders({ values, nulls }: NullableHeaders) {\n    if (values.get('x-api-key') || values.get('authorization')) {\n      return;\n    }\n\n    if (this.apiKey && values.get('x-api-key')) {\n      return;\n    }\n    if (nulls.has('x-api-key')) {\n      return;\n    }\n\n    if (this.authToken && values.get('authorization')) {\n      return;\n    }\n    if (nulls.has('authorization')) {\n      return;\n    }\n\n    throw new Error(\n      'Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the \"X-Api-Key\" or \"Authorization\" headers to be explicitly omitted',\n    );\n  }\n\n  protected async authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n    return buildHeaders([await this.apiKeyAuth(opts), await this.bearerAuth(opts)]);\n  }\n\n  protected async apiKeyAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n    if (this.apiKey == null) {\n      return undefined;\n    }\n    return buildHeaders([{ 'X-Api-Key': this.apiKey }]);\n  }\n\n  protected async bearerAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n    if (this.authToken == null) {\n      return undefined;\n    }\n    return buildHeaders([{ Authorization: `Bearer ${this.authToken}` }]);\n  }\n\n  /**\n   * Basic re-implementation of `qs.stringify` for primitive types.\n   */\n  protected stringifyQuery(query: object | Record<string, unknown>): string {\n    return stringifyQuery(query);\n  }\n\n  private getUserAgent(): string {\n    return `${this.constructor.name}/JS ${VERSION}`;\n  }\n\n  protected defaultIdempotencyKey(): string {\n    return `stainless-node-retry-${uuid4()}`;\n  }\n\n  protected makeStatusError(\n    status: number,\n    error: Object,\n    message: string | undefined,\n    headers: Headers,\n  ): Errors.APIError {\n    return Errors.APIError.generate(status, error, message, headers);\n  }\n\n  buildURL(\n    path: string,\n    query: Record<string, unknown> | null | undefined,\n    defaultBaseURL?: string | undefined,\n  ): string {\n    const baseURL = (!this.#baseURLOverridden() && defaultBaseURL) || this.baseURL;\n    const url =\n      isAbsoluteURL(path) ?\n        new URL(path)\n      : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n\n    const defaultQuery = this.defaultQuery();\n    const pathQuery = Object.fromEntries(url.searchParams);\n    if (!isEmptyObj(defaultQuery) || !isEmptyObj(pathQuery)) {\n      query = { ...pathQuery, ...defaultQuery, ...query };\n    }\n\n    if (typeof query === 'object' && query && !Array.isArray(query)) {\n      url.search = this.stringifyQuery(query);\n    }\n\n    return url.toString();\n  }\n\n  _calculateNonstreamingTimeout(maxTokens: number): number {\n    const defaultTimeout = 10 * 60;\n    const expectedTimeout = (60 * 60 * maxTokens) / 128_000;\n    if (expectedTimeout > defaultTimeout) {\n      throw new Errors.AnthropicError(\n        'Streaming is required for operations that may take longer than 10 minutes. ' +\n          'See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details',\n      );\n    }\n    return defaultTimeout * 1000;\n  }\n\n  /**\n   * Used as a callback for mutating the given `FinalRequestOptions` object.\n   */\n  protected async prepareOptions(options: FinalRequestOptions): Promise<void> {}\n\n  /**\n   * Used as a callback for mutating the given `RequestInit` object.\n   *\n   * This is useful for cases where you want to add certain headers based off of\n   * the request properties, e.g. `method` or `url`.\n   */\n  protected async prepareRequest(\n    request: RequestInit,\n    { url, options }: { url: string; options: FinalRequestOptions },\n  ): Promise<void> {}\n\n  get<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n    return this.methodRequest('get', path, opts);\n  }\n\n  post<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n    return this.methodRequest('post', path, opts);\n  }\n\n  patch<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n    return this.methodRequest('patch', path, opts);\n  }\n\n  put<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n    return this.methodRequest('put', path, opts);\n  }\n\n  delete<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n    return this.methodRequest('delete', path, opts);\n  }\n\n  private methodRequest<Rsp>(\n    method: HTTPMethod,\n    path: string,\n    opts?: PromiseOrValue<RequestOptions>,\n  ): APIPromise<Rsp> {\n    return this.request(\n      Promise.resolve(opts).then((opts) => {\n        return { method, path, ...opts };\n      }),\n    );\n  }\n\n  request<Rsp>(\n    options: PromiseOrValue<FinalRequestOptions>,\n    remainingRetries: number | null = null,\n  ): APIPromise<Rsp> {\n    return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));\n  }\n\n  private async makeRequest(\n    optionsInput: PromiseOrValue<FinalRequestOptions>,\n    retriesRemaining: number | null,\n    retryOfRequestLogID: string | undefined,\n  ): Promise<APIResponseProps> {\n    const options = await optionsInput;\n    const maxRetries = options.maxRetries ?? this.maxRetries;\n    if (retriesRemaining == null) {\n      retriesRemaining = maxRetries;\n    }\n\n    await this.prepareOptions(options);\n\n    const { req, url, timeout } = await this.buildRequest(options, {\n      retryCount: maxRetries - retriesRemaining,\n    });\n\n    await this.prepareRequest(req, { url, options });\n\n    /** Not an API request ID, just for correlating local log entries. */\n    const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');\n    const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;\n    const startTime = Date.now();\n\n    loggerFor(this).debug(\n      `[${requestLogID}] sending request`,\n      formatRequestDetails({\n        retryOfRequestLogID,\n        method: options.method,\n        url,\n        options,\n        headers: req.headers,\n      }),\n    );\n\n    if (options.signal?.aborted) {\n      throw new Errors.APIUserAbortError();\n    }\n\n    const controller = new AbortController();\n    const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n    const headersTime = Date.now();\n\n    if (response instanceof globalThis.Error) {\n      const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n      if (options.signal?.aborted) {\n        throw new Errors.APIUserAbortError();\n      }\n      // detect native connection timeout errors\n      // deno throws \"TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)\"\n      // undici throws \"TypeError: fetch failed\" with cause \"ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)\"\n      // others do not provide enough information to distinguish timeouts from other connection errors\n      const isTimeout =\n        isAbortError(response) ||\n        /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));\n      if (retriesRemaining) {\n        loggerFor(this).info(\n          `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`,\n        );\n        loggerFor(this).debug(\n          `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`,\n          formatRequestDetails({\n            retryOfRequestLogID,\n            url,\n            durationMs: headersTime - startTime,\n            message: response.message,\n          }),\n        );\n        return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n      }\n      loggerFor(this).info(\n        `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`,\n      );\n      loggerFor(this).debug(\n        `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`,\n        formatRequestDetails({\n          retryOfRequestLogID,\n          url,\n          durationMs: headersTime - startTime,\n          message: response.message,\n        }),\n      );\n      if (isTimeout) {\n        throw new Errors.APIConnectionTimeoutError();\n      }\n      throw new Errors.APIConnectionError({ cause: response });\n    }\n\n    const specialHeaders = [...response.headers.entries()]\n      .filter(([name]) => name === 'request-id')\n      .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))\n      .join('');\n    const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${\n      response.ok ? 'succeeded' : 'failed'\n    } with status ${response.status} in ${headersTime - startTime}ms`;\n\n    if (!response.ok) {\n      const shouldRetry = await this.shouldRetry(response);\n      if (retriesRemaining && shouldRetry) {\n        const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n\n        // We don't need the body of this response.\n        await Shims.CancelReadableStream(response.body);\n        loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n        loggerFor(this).debug(\n          `[${requestLogID}] response error (${retryMessage})`,\n          formatRequestDetails({\n            retryOfRequestLogID,\n            url: response.url,\n            status: response.status,\n            headers: response.headers,\n            durationMs: headersTime - startTime,\n          }),\n        );\n        return this.retryRequest(\n          options,\n          retriesRemaining,\n          retryOfRequestLogID ?? requestLogID,\n          response.headers,\n        );\n      }\n\n      const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;\n\n      loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n\n      const errText = await response.text().catch((err: any) => castToError(err).message);\n      const errJSON = safeJSON(errText) as any;\n      const errMessage = errJSON ? undefined : errText;\n\n      loggerFor(this).debug(\n        `[${requestLogID}] response error (${retryMessage})`,\n        formatRequestDetails({\n          retryOfRequestLogID,\n          url: response.url,\n          status: response.status,\n          headers: response.headers,\n          message: errMessage,\n          durationMs: Date.now() - startTime,\n        }),\n      );\n\n      const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);\n      throw err;\n    }\n\n    loggerFor(this).info(responseInfo);\n    loggerFor(this).debug(\n      `[${requestLogID}] response start`,\n      formatRequestDetails({\n        retryOfRequestLogID,\n        url: response.url,\n        status: response.status,\n        headers: response.headers,\n        durationMs: headersTime - startTime,\n      }),\n    );\n\n    return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };\n  }\n\n  getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(\n    path: string,\n    Page: new (...args: any[]) => PageClass,\n    opts?: PromiseOrValue<RequestOptions>,\n  ): Pagination.PagePromise<PageClass, Item> {\n    return this.requestAPIList(\n      Page,\n      opts && 'then' in opts ?\n        opts.then((opts) => ({ method: 'get', path, ...opts }))\n      : { method: 'get', path, ...opts },\n    );\n  }\n\n  requestAPIList<\n    Item = unknown,\n    PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>,\n  >(\n    Page: new (...args: ConstructorParameters<typeof Pagination.AbstractPage>) => PageClass,\n    options: PromiseOrValue<FinalRequestOptions>,\n  ): Pagination.PagePromise<PageClass, Item> {\n    const request = this.makeRequest(options, null, undefined);\n    return new Pagination.PagePromise<PageClass, Item>(this as any as Anthropic, request, Page);\n  }\n\n  async fetchWithTimeout(\n    url: RequestInfo,\n    init: RequestInit | undefined,\n    ms: number,\n    controller: AbortController,\n  ): Promise<Response> {\n    const { signal, method, ...options } = init || {};\n    // Avoid creating a closure over `this`, `init`, or `options` to prevent memory leaks.\n    // An arrow function like `() => controller.abort()` captures the surrounding scope,\n    // which includes the request body and other large objects. When the user passes a\n    // long-lived AbortSignal, the listener prevents those objects from being GC'd for\n    // the lifetime of the signal. Using `.bind()` only retains a reference to the\n    // controller itself.\n    const abort = this._makeAbort(controller);\n    if (signal) signal.addEventListener('abort', abort, { once: true });\n\n    const timeout = setTimeout(abort, ms);\n\n    const isReadableBody =\n      ((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) ||\n      (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);\n\n    const fetchOptions: RequestInit = {\n      signal: controller.signal as any,\n      ...(isReadableBody ? { duplex: 'half' } : {}),\n      method: 'GET',\n      ...options,\n    };\n    if (method) {\n      // Custom methods like 'patch' need to be uppercased\n      // See https://github.com/nodejs/undici/issues/2294\n      fetchOptions.method = method.toUpperCase();\n    }\n\n    try {\n      // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n      return await this.fetch.call(undefined, url, fetchOptions);\n    } finally {\n      clearTimeout(timeout);\n    }\n  }\n\n  private async shouldRetry(response: Response): Promise<boolean> {\n    // Note this is not a standard header.\n    const shouldRetryHeader = response.headers.get('x-should-retry');\n\n    // If the server explicitly says whether or not to retry, obey.\n    if (shouldRetryHeader === 'true') return true;\n    if (shouldRetryHeader === 'false') return false;\n\n    // Retry on request timeouts.\n    if (response.status === 408) return true;\n\n    // Retry on lock timeouts.\n    if (response.status === 409) return true;\n\n    // Retry on rate limits.\n    if (response.status === 429) return true;\n\n    // Retry internal errors.\n    if (response.status >= 500) return true;\n\n    return false;\n  }\n\n  private async retryRequest(\n    options: FinalRequestOptions,\n    retriesRemaining: number,\n    requestLogID: string,\n    responseHeaders?: Headers | undefined,\n  ): Promise<APIResponseProps> {\n    let timeoutMillis: number | undefined;\n\n    // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n    const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');\n    if (retryAfterMillisHeader) {\n      const timeoutMs = parseFloat(retryAfterMillisHeader);\n      if (!Number.isNaN(timeoutMs)) {\n        timeoutMillis = timeoutMs;\n      }\n    }\n\n    // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n    const retryAfterHeader = responseHeaders?.get('retry-after');\n    if (retryAfterHeader && !timeoutMillis) {\n      const timeoutSeconds = parseFloat(retryAfterHeader);\n      if (!Number.isNaN(timeoutSeconds)) {\n        timeoutMillis = timeoutSeconds * 1000;\n      } else {\n        timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n      }\n    }\n\n    // If the API asks us to wait a certain amount of time, just do what it\n    // says, but otherwise calculate a default\n    if (timeoutMillis === undefined) {\n      const maxRetries = options.maxRetries ?? this.maxRetries;\n      timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n    }\n    await sleep(timeoutMillis);\n\n    return this.makeRequest(options, retriesRemaining - 1, requestLogID);\n  }\n\n  private calculateDefaultRetryTimeoutMillis(retriesRemaining: number, maxRetries: number): number {\n    const initialRetryDelay = 0.5;\n    const maxRetryDelay = 8.0;\n\n    const numRetries = maxRetries - retriesRemaining;\n\n    // Apply exponential backoff, but not more than the max.\n    const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n\n    // Apply some jitter, take up to at most 25 percent of the retry time.\n    const jitter = 1 - Math.random() * 0.25;\n\n    return sleepSeconds * jitter * 1000;\n  }\n\n  public calculateNonstreamingTimeout(maxTokens: number, maxNonstreamingTokens?: number): number {\n    const maxTime = 60 * 60 * 1000; // 60 minutes\n    const defaultTime = 60 * 10 * 1000; // 10 minutes\n\n    const expectedTime = (maxTime * maxTokens) / 128000;\n    if (expectedTime > defaultTime || (maxNonstreamingTokens != null && maxTokens > maxNonstreamingTokens)) {\n      throw new Errors.AnthropicError(\n        'Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details',\n      );\n    }\n\n    return defaultTime;\n  }\n\n  async buildRequest(\n    inputOptions: FinalRequestOptions,\n    { retryCount = 0 }: { retryCount?: number } = {},\n  ): Promise<{ req: FinalizedRequestInit; url: string; timeout: number }> {\n    const options = { ...inputOptions };\n    const { method, path, query, defaultBaseURL } = options;\n\n    const url = this.buildURL(path!, query as Record<string, unknown>, defaultBaseURL);\n    if ('timeout' in options) validatePositiveInteger('timeout', options.timeout);\n    options.timeout = options.timeout ?? this.timeout;\n    const { bodyHeaders, body } = this.buildBody({ options });\n    const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });\n\n    const req: FinalizedRequestInit = {\n      method,\n      headers: reqHeaders,\n      ...(options.signal && { signal: options.signal }),\n      ...((globalThis as any).ReadableStream &&\n        body instanceof (globalThis as any).ReadableStream && { duplex: 'half' }),\n      ...(body && { body }),\n      ...((this.fetchOptions as any) ?? {}),\n      ...((options.fetchOptions as any) ?? {}),\n    };\n\n    return { req, url, timeout: options.timeout };\n  }\n\n  private async buildHeaders({\n    options,\n    method,\n    bodyHeaders,\n    retryCount,\n  }: {\n    options: FinalRequestOptions;\n    method: HTTPMethod;\n    bodyHeaders: HeadersLike;\n    retryCount: number;\n  }): Promise<Headers> {\n    let idempotencyHeaders: HeadersLike = {};\n    if (this.idempotencyHeader && method !== 'get') {\n      if (!options.idempotencyKey) options.idempotencyKey = this.defaultIdempotencyKey();\n      idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;\n    }\n\n    const headers = buildHeaders([\n      idempotencyHeaders,\n      {\n        Accept: 'application/json',\n        'User-Agent': this.getUserAgent(),\n        'X-Stainless-Retry-Count': String(retryCount),\n        ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),\n        ...getPlatformHeaders(),\n        ...(this._options.dangerouslyAllowBrowser ?\n          { 'anthropic-dangerous-direct-browser-access': 'true' }\n        : undefined),\n        'anthropic-version': '2023-06-01',\n      },\n      await this.authHeaders(options),\n      this._options.defaultHeaders,\n      bodyHeaders,\n      options.headers,\n    ]);\n\n    this.validateHeaders(headers);\n\n    return headers.values;\n  }\n\n  private _makeAbort(controller: AbortController) {\n    // note: we can't just inline this method inside `fetchWithTimeout()` because then the closure\n    //       would capture all request options, and cause a memory leak.\n    return () => controller.abort();\n  }\n\n  private buildBody({ options: { body, headers: rawHeaders } }: { options: FinalRequestOptions }): {\n    bodyHeaders: HeadersLike;\n    body: BodyInit | undefined;\n  } {\n    if (!body) {\n      return { bodyHeaders: undefined, body: undefined };\n    }\n    const headers = buildHeaders([rawHeaders]);\n    if (\n      // Pass raw type verbatim\n      ArrayBuffer.isView(body) ||\n      body instanceof ArrayBuffer ||\n      body instanceof DataView ||\n      (typeof body === 'string' &&\n        // Preserve legacy string encoding behavior for now\n        headers.values.has('content-type')) ||\n      // `Blob` is superset of `File`\n      ((globalThis as any).Blob && body instanceof (globalThis as any).Blob) ||\n      // `FormData` -> `multipart/form-data`\n      body instanceof FormData ||\n      // `URLSearchParams` -> `application/x-www-form-urlencoded`\n      body instanceof URLSearchParams ||\n      // Send chunked stream (each chunk has own `length`)\n      ((globalThis as any).ReadableStream && body instanceof (globalThis as any).ReadableStream)\n    ) {\n      return { bodyHeaders: undefined, body: body as BodyInit };\n    } else if (\n      typeof body === 'object' &&\n      (Symbol.asyncIterator in body ||\n        (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))\n    ) {\n      return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body as AsyncIterable<Uint8Array>) };\n    } else if (\n      typeof body === 'object' &&\n      headers.values.get('content-type') === 'application/x-www-form-urlencoded'\n    ) {\n      return {\n        bodyHeaders: { 'content-type': 'application/x-www-form-urlencoded' },\n        body: this.stringifyQuery(body),\n      };\n    } else {\n      return this.#encoder({ body, headers });\n    }\n  }\n\n  static Anthropic = this;\n  static HUMAN_PROMPT = HUMAN_PROMPT;\n  static AI_PROMPT = AI_PROMPT;\n  static DEFAULT_TIMEOUT = 600000; // 10 minutes\n\n  static AnthropicError = Errors.AnthropicError;\n  static APIError = Errors.APIError;\n  static APIConnectionError = Errors.APIConnectionError;\n  static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\n  static APIUserAbortError = Errors.APIUserAbortError;\n  static NotFoundError = Errors.NotFoundError;\n  static ConflictError = Errors.ConflictError;\n  static RateLimitError = Errors.RateLimitError;\n  static BadRequestError = Errors.BadRequestError;\n  static AuthenticationError = Errors.AuthenticationError;\n  static InternalServerError = Errors.InternalServerError;\n  static PermissionDeniedError = Errors.PermissionDeniedError;\n  static UnprocessableEntityError = Errors.UnprocessableEntityError;\n\n  static toFile = Uploads.toFile;\n}\n\n/**\n * API Client for interfacing with the Anthropic API.\n */\nexport class Anthropic extends BaseAnthropic {\n  completions: API.Completions = new API.Completions(this);\n  messages: API.Messages = new API.Messages(this);\n  models: API.Models = new API.Models(this);\n  beta: API.Beta = new API.Beta(this);\n}\n\nAnthropic.Completions = Completions;\nAnthropic.Messages = Messages;\nAnthropic.Models = Models;\nAnthropic.Beta = Beta;\n\nexport declare namespace Anthropic {\n  export type RequestOptions = Opts.RequestOptions;\n\n  export type { ApiKeySetter };\n\n  export import Page = Pagination.Page;\n  export { type PageParams as PageParams, type PageResponse as PageResponse };\n\n  export import TokenPage = Pagination.TokenPage;\n  export { type TokenPageParams as TokenPageParams, type TokenPageResponse as TokenPageResponse };\n\n  export import PageCursor = Pagination.PageCursor;\n  export { type PageCursorParams as PageCursorParams, type PageCursorResponse as PageCursorResponse };\n\n  export {\n    Completions as Completions,\n    type Completion as Completion,\n    type CompletionCreateParams as CompletionCreateParams,\n    type CompletionCreateParamsNonStreaming as CompletionCreateParamsNonStreaming,\n    type CompletionCreateParamsStreaming as CompletionCreateParamsStreaming,\n  };\n\n  export {\n    Messages as Messages,\n    type Base64ImageSource as Base64ImageSource,\n    type Base64PDFSource as Base64PDFSource,\n    type BashCodeExecutionOutputBlock as BashCodeExecutionOutputBlock,\n    type BashCodeExecutionOutputBlockParam as BashCodeExecutionOutputBlockParam,\n    type BashCodeExecutionResultBlock as BashCodeExecutionResultBlock,\n    type BashCodeExecutionResultBlockParam as BashCodeExecutionResultBlockParam,\n    type BashCodeExecutionToolResultBlock as BashCodeExecutionToolResultBlock,\n    type BashCodeExecutionToolResultBlockParam as BashCodeExecutionToolResultBlockParam,\n    type BashCodeExecutionToolResultError as BashCodeExecutionToolResultError,\n    type BashCodeExecutionToolResultErrorCode as BashCodeExecutionToolResultErrorCode,\n    type BashCodeExecutionToolResultErrorParam as BashCodeExecutionToolResultErrorParam,\n    type CacheControlEphemeral as CacheControlEphemeral,\n    type CacheCreation as CacheCreation,\n    type CitationCharLocation as CitationCharLocation,\n    type CitationCharLocationParam as CitationCharLocationParam,\n    type CitationContentBlockLocation as CitationContentBlockLocation,\n    type CitationContentBlockLocationParam as CitationContentBlockLocationParam,\n    type CitationPageLocation as CitationPageLocation,\n    type CitationPageLocationParam as CitationPageLocationParam,\n    type CitationSearchResultLocationParam as CitationSearchResultLocationParam,\n    type CitationWebSearchResultLocationParam as CitationWebSearchResultLocationParam,\n    type CitationsConfig as CitationsConfig,\n    type CitationsConfigParam as CitationsConfigParam,\n    type CitationsDelta as CitationsDelta,\n    type CitationsSearchResultLocation as CitationsSearchResultLocation,\n    type CitationsWebSearchResultLocation as CitationsWebSearchResultLocation,\n    type CodeExecutionOutputBlock as CodeExecutionOutputBlock,\n    type CodeExecutionOutputBlockParam as CodeExecutionOutputBlockParam,\n    type CodeExecutionResultBlock as CodeExecutionResultBlock,\n    type CodeExecutionResultBlockParam as CodeExecutionResultBlockParam,\n    type CodeExecutionTool20250522 as CodeExecutionTool20250522,\n    type CodeExecutionTool20250825 as CodeExecutionTool20250825,\n    type CodeExecutionTool20260120 as CodeExecutionTool20260120,\n    type CodeExecutionToolResultBlock as CodeExecutionToolResultBlock,\n    type CodeExecutionToolResultBlockContent as CodeExecutionToolResultBlockContent,\n    type CodeExecutionToolResultBlockParam as CodeExecutionToolResultBlockParam,\n    type CodeExecutionToolResultBlockParamContent as CodeExecutionToolResultBlockParamContent,\n    type CodeExecutionToolResultError as CodeExecutionToolResultError,\n    type CodeExecutionToolResultErrorCode as CodeExecutionToolResultErrorCode,\n    type CodeExecutionToolResultErrorParam as CodeExecutionToolResultErrorParam,\n    type Container as Container,\n    type ContainerUploadBlock as ContainerUploadBlock,\n    type ContainerUploadBlockParam as ContainerUploadBlockParam,\n    type ContentBlock as ContentBlock,\n    type ContentBlockDeltaEvent as ContentBlockDeltaEvent,\n    type ContentBlockParam as ContentBlockParam,\n    type ContentBlockStartEvent as ContentBlockStartEvent,\n    type ContentBlockStopEvent as ContentBlockStopEvent,\n    type ContentBlockSource as ContentBlockSource,\n    type ContentBlockSourceContent as ContentBlockSourceContent,\n    type DirectCaller as DirectCaller,\n    type DocumentBlock as DocumentBlock,\n    type DocumentBlockParam as DocumentBlockParam,\n    type EncryptedCodeExecutionResultBlock as EncryptedCodeExecutionResultBlock,\n    type EncryptedCodeExecutionResultBlockParam as EncryptedCodeExecutionResultBlockParam,\n    type ImageBlockParam as ImageBlockParam,\n    type InputJSONDelta as InputJSONDelta,\n    type JSONOutputFormat as JSONOutputFormat,\n    type MemoryTool20250818 as MemoryTool20250818,\n    type Message as Message,\n    type MessageCountTokensTool as MessageCountTokensTool,\n    type MessageDeltaEvent as MessageDeltaEvent,\n    type MessageDeltaUsage as MessageDeltaUsage,\n    type MessageParam as MessageParam,\n    type MessageStartEvent as MessageStartEvent,\n    type MessageStopEvent as MessageStopEvent,\n    type MessageStreamEvent as MessageStreamEvent,\n    type MessageTokensCount as MessageTokensCount,\n    type Metadata as Metadata,\n    type Model as Model,\n    type OutputConfig as OutputConfig,\n    type PlainTextSource as PlainTextSource,\n    type RawContentBlockDelta as RawContentBlockDelta,\n    type RawContentBlockDeltaEvent as RawContentBlockDeltaEvent,\n    type RawContentBlockStartEvent as RawContentBlockStartEvent,\n    type RawContentBlockStopEvent as RawContentBlockStopEvent,\n    type RawMessageDeltaEvent as RawMessageDeltaEvent,\n    type RawMessageStartEvent as RawMessageStartEvent,\n    type RawMessageStopEvent as RawMessageStopEvent,\n    type RawMessageStreamEvent as RawMessageStreamEvent,\n    type RedactedThinkingBlock as RedactedThinkingBlock,\n    type RedactedThinkingBlockParam as RedactedThinkingBlockParam,\n    type RefusalStopDetails as RefusalStopDetails,\n    type SearchResultBlockParam as SearchResultBlockParam,\n    type ServerToolCaller as ServerToolCaller,\n    type ServerToolCaller20260120 as ServerToolCaller20260120,\n    type ServerToolUsage as ServerToolUsage,\n    type ServerToolUseBlock as ServerToolUseBlock,\n    type ServerToolUseBlockParam as ServerToolUseBlockParam,\n    type SignatureDelta as SignatureDelta,\n    type StopReason as StopReason,\n    type TextBlock as TextBlock,\n    type TextBlockParam as TextBlockParam,\n    type TextCitation as TextCitation,\n    type TextCitationParam as TextCitationParam,\n    type TextDelta as TextDelta,\n    type TextEditorCodeExecutionCreateResultBlock as TextEditorCodeExecutionCreateResultBlock,\n    type TextEditorCodeExecutionCreateResultBlockParam as TextEditorCodeExecutionCreateResultBlockParam,\n    type TextEditorCodeExecutionStrReplaceResultBlock as TextEditorCodeExecutionStrReplaceResultBlock,\n    type TextEditorCodeExecutionStrReplaceResultBlockParam as TextEditorCodeExecutionStrReplaceResultBlockParam,\n    type TextEditorCodeExecutionToolResultBlock as TextEditorCodeExecutionToolResultBlock,\n    type TextEditorCodeExecutionToolResultBlockParam as TextEditorCodeExecutionToolResultBlockParam,\n    type TextEditorCodeExecutionToolResultError as TextEditorCodeExecutionToolResultError,\n    type TextEditorCodeExecutionToolResultErrorCode as TextEditorCodeExecutionToolResultErrorCode,\n    type TextEditorCodeExecutionToolResultErrorParam as TextEditorCodeExecutionToolResultErrorParam,\n    type TextEditorCodeExecutionViewResultBlock as TextEditorCodeExecutionViewResultBlock,\n    type TextEditorCodeExecutionViewResultBlockParam as TextEditorCodeExecutionViewResultBlockParam,\n    type ThinkingBlock as ThinkingBlock,\n    type ThinkingBlockParam as ThinkingBlockParam,\n    type ThinkingConfigAdaptive as ThinkingConfigAdaptive,\n    type ThinkingConfigDisabled as ThinkingConfigDisabled,\n    type ThinkingConfigEnabled as ThinkingConfigEnabled,\n    type ThinkingConfigParam as ThinkingConfigParam,\n    type ThinkingDelta as ThinkingDelta,\n    type Tool as Tool,\n    type ToolBash20250124 as ToolBash20250124,\n    type ToolChoice as ToolChoice,\n    type ToolChoiceAny as ToolChoiceAny,\n    type ToolChoiceAuto as ToolChoiceAuto,\n    type ToolChoiceNone as ToolChoiceNone,\n    type ToolChoiceTool as ToolChoiceTool,\n    type ToolReferenceBlock as ToolReferenceBlock,\n    type ToolReferenceBlockParam as ToolReferenceBlockParam,\n    type ToolResultBlockParam as ToolResultBlockParam,\n    type ToolSearchToolBm25_20251119 as ToolSearchToolBm25_20251119,\n    type ToolSearchToolRegex20251119 as ToolSearchToolRegex20251119,\n    type ToolSearchToolResultBlock as ToolSearchToolResultBlock,\n    type ToolSearchToolResultBlockParam as ToolSearchToolResultBlockParam,\n    type ToolSearchToolResultError as ToolSearchToolResultError,\n    type ToolSearchToolResultErrorCode as ToolSearchToolResultErrorCode,\n    type ToolSearchToolResultErrorParam as ToolSearchToolResultErrorParam,\n    type ToolSearchToolSearchResultBlock as ToolSearchToolSearchResultBlock,\n    type ToolSearchToolSearchResultBlockParam as ToolSearchToolSearchResultBlockParam,\n    type ToolTextEditor20250124 as ToolTextEditor20250124,\n    type ToolTextEditor20250429 as ToolTextEditor20250429,\n    type ToolTextEditor20250728 as ToolTextEditor20250728,\n    type ToolUnion as ToolUnion,\n    type ToolUseBlock as ToolUseBlock,\n    type ToolUseBlockParam as ToolUseBlockParam,\n    type URLImageSource as URLImageSource,\n    type URLPDFSource as URLPDFSource,\n    type Usage as Usage,\n    type UserLocation as UserLocation,\n    type WebFetchBlock as WebFetchBlock,\n    type WebFetchBlockParam as WebFetchBlockParam,\n    type WebFetchTool20250910 as WebFetchTool20250910,\n    type WebFetchTool20260209 as WebFetchTool20260209,\n    type WebFetchTool20260309 as WebFetchTool20260309,\n    type WebFetchToolResultBlock as WebFetchToolResultBlock,\n    type WebFetchToolResultBlockParam as WebFetchToolResultBlockParam,\n    type WebFetchToolResultErrorBlock as WebFetchToolResultErrorBlock,\n    type WebFetchToolResultErrorBlockParam as WebFetchToolResultErrorBlockParam,\n    type WebFetchToolResultErrorCode as WebFetchToolResultErrorCode,\n    type WebSearchResultBlock as WebSearchResultBlock,\n    type WebSearchResultBlockParam as WebSearchResultBlockParam,\n    type WebSearchTool20250305 as WebSearchTool20250305,\n    type WebSearchTool20260209 as WebSearchTool20260209,\n    type WebSearchToolRequestError as WebSearchToolRequestError,\n    type WebSearchToolResultBlock as WebSearchToolResultBlock,\n    type WebSearchToolResultBlockContent as WebSearchToolResultBlockContent,\n    type WebSearchToolResultBlockParam as WebSearchToolResultBlockParam,\n    type WebSearchToolResultBlockParamContent as WebSearchToolResultBlockParamContent,\n    type WebSearchToolResultError as WebSearchToolResultError,\n    type WebSearchToolResultErrorCode as WebSearchToolResultErrorCode,\n    type MessageCreateParams as MessageCreateParams,\n    type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n    type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n    type MessageStreamParams as MessageStreamParams,\n    type MessageCountTokensParams as MessageCountTokensParams,\n  };\n\n  export {\n    Models as Models,\n    type CapabilitySupport as CapabilitySupport,\n    type ContextManagementCapability as ContextManagementCapability,\n    type EffortCapability as EffortCapability,\n    type ModelCapabilities as ModelCapabilities,\n    type ModelInfo as ModelInfo,\n    type ThinkingCapability as ThinkingCapability,\n    type ThinkingTypes as ThinkingTypes,\n    type ModelInfosPage as ModelInfosPage,\n    type ModelRetrieveParams as ModelRetrieveParams,\n    type ModelListParams as ModelListParams,\n  };\n\n  export {\n    Beta as Beta,\n    type AnthropicBeta as AnthropicBeta,\n    type BetaAPIError as BetaAPIError,\n    type BetaAuthenticationError as BetaAuthenticationError,\n    type BetaBillingError as BetaBillingError,\n    type BetaError as BetaError,\n    type BetaErrorResponse as BetaErrorResponse,\n    type BetaGatewayTimeoutError as BetaGatewayTimeoutError,\n    type BetaInvalidRequestError as BetaInvalidRequestError,\n    type BetaNotFoundError as BetaNotFoundError,\n    type BetaOverloadedError as BetaOverloadedError,\n    type BetaPermissionError as BetaPermissionError,\n    type BetaRateLimitError as BetaRateLimitError,\n  };\n\n  export type APIErrorObject = API.APIErrorObject;\n  export type AuthenticationError = API.AuthenticationError;\n  export type BillingError = API.BillingError;\n  export type ErrorObject = API.ErrorObject;\n  export type ErrorResponse = API.ErrorResponse;\n  export type ErrorType = API.ErrorType;\n  export type GatewayTimeoutError = API.GatewayTimeoutError;\n  export type InvalidRequestError = API.InvalidRequestError;\n  export type NotFoundError = API.NotFoundError;\n  export type OverloadedError = API.OverloadedError;\n  export type PermissionError = API.PermissionError;\n  export type RateLimitError = API.RateLimitError;\n}\n", "import Anthropic from \"@anthropic-ai/sdk\";\nimport { logger } from \"./logger\";\n\nconst baseURL = process.env.AI_INTEGRATIONS_ANTHROPIC_BASE_URL;\nconst apiKey = process.env.AI_INTEGRATIONS_ANTHROPIC_API_KEY;\n\nlet client: Anthropic | null = null;\n\nexport function isAiConfigured(): boolean {\n  return Boolean(baseURL && apiKey);\n}\n\nexport function getAnthropic(): Anthropic {\n  if (!isAiConfigured()) {\n    throw new Error(\n      \"AI integration not configured (missing AI_INTEGRATIONS_ANTHROPIC_* env vars)\",\n    );\n  }\n  if (!client) {\n    client = new Anthropic({ baseURL: baseURL!, apiKey: apiKey! });\n  }\n  return client;\n}\n\nexport type ConsultationSummary = {\n  chiefComplaint: string;\n  historyOfPresentIllness: string;\n  associatedSymptoms: string;\n  durationOnset: string;\n  examinationFindings: string;\n  provisionalDiagnosis: string;\n  differentialDiagnosis: string;\n  managementPlan: string;\n  medications: Array<{\n    drugName: string;\n    dosage: string;\n    frequency: string;\n    duration: string;\n    route: string;\n    instructions: string;\n  }>;\n  followUpInstructions: string;\n  redFlags: string;\n  notes: string;\n};\n\nconst EMPTY_SUMMARY: ConsultationSummary = {\n  chiefComplaint: \"\",\n  historyOfPresentIllness: \"\",\n  associatedSymptoms: \"\",\n  durationOnset: \"\",\n  examinationFindings: \"\",\n  provisionalDiagnosis: \"\",\n  differentialDiagnosis: \"\",\n  managementPlan: \"\",\n  medications: [],\n  followUpInstructions: \"\",\n  redFlags: \"\",\n  notes: \"\",\n};\n\nexport async function summarizeConsultation(args: {\n  patientName: string;\n  patientAgeYears: number;\n  patientGender: \"male\" | \"female\";\n  messages: Array<{ senderType: \"patient\" | \"doctor\" | \"system\"; body: string; createdAt: Date }>;\n}): Promise<ConsultationSummary> {\n  if (!isAiConfigured()) {\n    throw new Error(\"AI integration not configured\");\n  }\n  const transcript = args.messages\n    .map((m) => {\n      const who =\n        m.senderType === \"patient\"\n          ? \"\u0627\u0644\u0645\u0631\u064A\u0636\"\n          : m.senderType === \"doctor\"\n            ? \"\u0627\u0644\u062F\u0643\u062A\u0648\u0631\"\n            : \"\u0627\u0644\u0646\u0638\u0627\u0645\";\n      const time = m.createdAt.toISOString();\n      return `[${time}] ${who}: ${m.body}`;\n    })\n    .join(\"\\n\");\n\n  const sys = `\u0623\u0646\u062A \u0645\u0633\u0627\u0639\u062F \u0637\u0628\u0649 \u0645\u062A\u062E\u0635\u0635 \u0641\u0649 \u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644. \u0645\u0647\u0645\u062A\u0643 \u062A\u062D\u0644\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0629 \u0643\u0634\u0641 \u0627\u0648\u0646\u0644\u0627\u064A\u0646 \u0628\u064A\u0646 \u0627\u0644\u0637\u0628\u064A\u0628 \u0648\u0627\u0644\u0645\u0631\u064A\u0636/\u0648\u0644\u0649 \u0627\u0644\u0623\u0645\u0631\u060C \u0648\u0627\u0633\u062A\u062E\u0644\u0627\u0635 \u062A\u0642\u0631\u064A\u0631 \u0637\u0628\u0649 \u0645\u0646\u0638\u0651\u0645 \u0628\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0627\u0644\u0641\u0635\u062D\u0649 \u0627\u0644\u0637\u0628\u064A\u0629.\n\n\u0627\u0644\u0642\u0648\u0627\u0639\u062F:\n- \u0627\u0643\u062A\u0628 \u0641\u0642\u0637 \u0645\u0627 \u0647\u0648 \u0645\u0648\u062B\u0651\u0642 \u0641\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629. \u0644\u0627 \u062A\u062E\u062A\u0631\u0639 \u0623\u0639\u0631\u0627\u0636\u0627\u064B \u0623\u0648 \u062A\u0634\u062E\u064A\u0635\u0627\u062A \u0623\u0648 \u0623\u062F\u0648\u064A\u0629.\n- \u0644\u0648 \u0645\u0639\u0644\u0648\u0645\u0629 \u063A\u064A\u0631 \u0645\u0630\u0643\u0648\u0631\u0629 \u0641\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u060C \u0627\u062A\u0631\u0643 \u062D\u0642\u0644\u0647\u0627 \u0641\u0627\u0631\u063A\u0627\u064B (\"\").\n- \u0644\u0627 \u062A\u0643\u062A\u0628 \u0623\u0649 \u0646\u0635 \u062E\u0627\u0631\u062C \u0635\u064A\u063A\u0629 JSON \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629.\n- \u0627\u0644\u0623\u062F\u0648\u064A\u0629: \u0627\u0633\u062A\u062E\u0631\u062C\u0647\u0627 \u0641\u0642\u0637 \u0644\u0648 \u0627\u0644\u0637\u0628\u064A\u0628 \u0648\u0635\u0641\u0647\u0627 \u0635\u0631\u0627\u062D\u0629 \u0641\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u060C \u0645\u0639 \u0643\u0644 \u062A\u0641\u0627\u0635\u064A\u0644\u0647\u0627.\n- \"redFlags\": \u0623\u0649 \u0639\u0644\u0627\u0645\u0627\u062A \u062E\u0637\u0631 \u062A\u0633\u062A\u062F\u0639\u0649 \u0627\u0644\u062A\u0648\u062C\u0647 \u0644\u0637\u0648\u0627\u0631\u0626.\n\n\u0623\u0639\u062F JSON \u0641\u0642\u0637 \u0628\u0647\u0630\u0627 \u0627\u0644\u0634\u0643\u0644 \u0628\u0627\u0644\u0638\u0628\u0637:\n{\n  \"chiefComplaint\": \"string\",\n  \"historyOfPresentIllness\": \"string\",\n  \"associatedSymptoms\": \"string\",\n  \"durationOnset\": \"string\",\n  \"examinationFindings\": \"string\",\n  \"provisionalDiagnosis\": \"string\",\n  \"differentialDiagnosis\": \"string\",\n  \"managementPlan\": \"string\",\n  \"medications\": [\n    {\"drugName\":\"\",\"dosage\":\"\",\"frequency\":\"\",\"duration\":\"\",\"route\":\"\",\"instructions\":\"\"}\n  ],\n  \"followUpInstructions\": \"string\",\n  \"redFlags\": \"string\",\n  \"notes\": \"string\"\n}`;\n\n  const user = `\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0645\u0631\u064A\u0636:\n- \u0627\u0644\u0627\u0633\u0645: ${args.patientName}\n- \u0627\u0644\u0639\u0645\u0631: ${args.patientAgeYears} \u0633\u0646\u0629\n- \u0627\u0644\u0646\u0648\u0639: ${args.patientGender === \"male\" ? \"\u0630\u0643\u0631\" : \"\u0623\u0646\u062B\u0649\"}\n\n\u0645\u062D\u0627\u062F\u062B\u0629 \u0627\u0644\u0643\u0634\u0641:\n${transcript}\n\n\u0627\u0633\u062A\u062E\u0631\u062C \u0627\u0644\u062A\u0642\u0631\u064A\u0631 \u0627\u0644\u0637\u0628\u0649 \u0627\u0644\u0645\u0646\u0638\u0651\u0645 \u0643\u0640JSON \u0641\u0642\u0637.`;\n\n  const anthropic = getAnthropic();\n  const resp = await anthropic.messages.create({\n    model: \"claude-sonnet-4-6\",\n    max_tokens: 8192,\n    system: sys,\n    messages: [{ role: \"user\", content: user }],\n  });\n\n  const text = resp.content\n    .filter((c): c is Anthropic.TextBlock => c.type === \"text\")\n    .map((c) => c.text)\n    .join(\"\\n\")\n    .trim();\n\n  let parsed: unknown;\n  try {\n    const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n    parsed = JSON.parse(jsonMatch ? jsonMatch[0] : text);\n  } catch (err) {\n    logger.error({ err, text }, \"AI summary JSON parse failed\");\n    throw new Error(\"\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0644\u064A\u0644 \u0631\u062F\u0651 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u0649\");\n  }\n\n  const merged: ConsultationSummary = { ...EMPTY_SUMMARY, ...(parsed as object) };\n  if (!Array.isArray(merged.medications)) merged.medications = [];\n  return merged;\n}\n", "/**\n * Storage routes \u2014 \u064A\u062F\u0639\u0645 \u0648\u0636\u0639\u064E\u064A\u0646:\n *   USE_LOCAL_STORAGE=true  \u2192 \u0631\u0641\u0639 \u0645\u0628\u0627\u0634\u0631 multipart + \u062E\u062F\u0645\u0629 \u0645\u0646 \u0627\u0644\u0642\u0631\u0635\n *   \u0628\u062F\u0648\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u062A\u063A\u064A\u0631       \u2192 Replit presigned URL + GCS\n */\n\nimport { Router, type IRouter, type Request, type Response } from \"express\";\nimport { Readable } from \"stream\";\nimport fs from \"node:fs\";\nimport fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n  RequestUploadUrlBody,\n  RequestUploadUrlResponse,\n} from \"@workspace/api-zod\";\nimport { ObjectStorageService, ObjectNotFoundError } from \"../lib/objectStorage\";\nimport { requireAuth, type RequestWithUser } from \"../lib/session\";\nimport { can } from \"@workspace/permissions\";\n\nconst router: IRouter = Router();\nconst objectStorageService = new ObjectStorageService();\n\nfunction isLocalMode(): boolean {\n  return process.env.USE_LOCAL_STORAGE === \"true\";\n}\n\nfunction localObjectsDir(): string {\n  const dir = process.env.LOCAL_STORAGE_DIR;\n  if (!dir) throw new Error(\"LOCAL_STORAGE_DIR not set\");\n  return path.join(dir, \"objects\");\n}\n\n// \u2500\u2500\u2500 multer (loaded lazily \u2014 only in local mode) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function getMulter() {\n  const multer = (await import(\"multer\")).default;\n  const objDir = localObjectsDir();\n  if (!fs.existsSync(objDir)) fs.mkdirSync(objDir, { recursive: true });\n  return multer({\n    storage: multer.diskStorage({\n      destination: (_req, _file, cb) => cb(null, objDir),\n      filename: (_req, _file, cb) => cb(null, randomUUID()),\n    }),\n    limits: { fileSize: 20 * 1024 * 1024 },\n  });\n}\n\n// \u2500\u2500\u2500 POST /api/storage/uploads/request-url (Replit mode) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// \u2500\u2500\u2500 POST /api/storage/uploads/direct      (Local mode) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nrouter.post(\n  \"/storage/uploads/request-url\",\n  requireAuth,\n  async (req: Request, res: Response): Promise<void> => {\n    const user = (req as RequestWithUser).currentUser!;\n    if (!can(user, \"qrFiles\", \"edit\") && user.role !== \"admin\" && user.role !== \"doctor\" && user.role !== \"nurse\") {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n      return;\n    }\n\n    if (isLocalMode()) {\n      // In local mode this endpoint is NOT used; client calls /uploads/direct instead.\n      res.status(400).json({ error: \"\u0627\u0633\u062A\u062E\u062F\u0645 /api/storage/uploads/direct \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0628\u064A\u0626\u0629\" });\n      return;\n    }\n\n    const parsed = RequestUploadUrlBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"Missing or invalid required fields\" });\n      return;\n    }\n    try {\n      const { name, size, contentType } = parsed.data;\n      const uploadURL = await objectStorageService.getObjectEntityUploadURL();\n      const objectPath = objectStorageService.normalizeObjectEntityPath(uploadURL);\n      res.json(\n        RequestUploadUrlResponse.parse({ uploadURL, objectPath, metadata: { name, size, contentType } }),\n      );\n    } catch (error) {\n      req.log.error({ err: error }, \"Error generating upload URL\");\n      res.status(500).json({ error: \"Failed to generate upload URL\" });\n    }\n  },\n);\n\n// \u2500\u2500\u2500 POST /api/storage/uploads/direct (Local mode only) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nrouter.post(\n  \"/storage/uploads/direct\",\n  requireAuth,\n  async (req: Request, res: Response): Promise<void> => {\n    const user = (req as RequestWithUser).currentUser!;\n    if (!can(user, \"qrFiles\", \"edit\") && user.role !== \"admin\" && user.role !== \"doctor\" && user.role !== \"nurse\") {\n      res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n      return;\n    }\n    if (!isLocalMode()) {\n      res.status(400).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u0627\u0631 \u0645\u062A\u0627\u062D \u0641\u0642\u0637 \u0641\u064A \u0648\u0636\u0639 Local Storage\" });\n      return;\n    }\n\n    try {\n      const multer = await getMulter();\n      const upload = multer.single(\"file\");\n      upload(req, res, async (err) => {\n        if (err) {\n          res.status(400).json({ error: err.message || \"\u0641\u0634\u0644 \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\" });\n          return;\n        }\n        const file = (req as any).file;\n        if (!file) {\n          res.status(400).json({ error: \"\u0644\u0645 \u064A\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0645\u0644\u0641\" });\n          return;\n        }\n        const objectPath = `/objects/${file.filename}`;\n        const contentType = file.mimetype || \"application/octet-stream\";\n        await fsp.writeFile(\n          `${file.path}.meta`,\n          JSON.stringify({ contentType, name: file.originalname }),\n          \"utf8\",\n        );\n        res.json({\n          objectPath,\n          uploadURL: objectPath,\n          metadata: { name: file.originalname, size: file.size, contentType },\n        });\n      });\n    } catch (error) {\n      req.log.error({ err: error }, \"Error in direct upload\");\n      res.status(500).json({ error: \"\u0641\u0634\u0644 \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\" });\n    }\n  },\n);\n\n// \u2500\u2500\u2500 GET /api/storage/public-objects/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nrouter.get(\"/storage/public-objects/*filePath\", async (req: Request, res: Response): Promise<void> => {\n  try {\n    const raw = req.params.filePath;\n    const filePath = Array.isArray(raw) ? raw.join(\"/\") : raw;\n\n    if (isLocalMode()) {\n      const dir = process.env.LOCAL_STORAGE_DIR;\n      if (!dir) { res.status(500).json({ error: \"LOCAL_STORAGE_DIR not set\" }); return; }\n      const absPath = path.join(dir, \"public\", filePath);\n      if (!fs.existsSync(absPath)) { res.status(404).json({ error: \"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" }); return; }\n      res.setHeader(\"Cache-Control\", \"public, max-age=3600\");\n      fs.createReadStream(absPath).pipe(res);\n      return;\n    }\n\n    const file = await objectStorageService.searchPublicObject(filePath);\n    if (!file) { res.status(404).json({ error: \"File not found\" }); return; }\n    const response = await objectStorageService.downloadObject(file as any);\n    res.status(response.status);\n    response.headers.forEach((value, key) => res.setHeader(key, value));\n    if (response.body) {\n      const nodeStream = Readable.fromWeb(response.body as ReadableStream<Uint8Array>);\n      nodeStream.pipe(res);\n    } else {\n      res.end();\n    }\n  } catch (error) {\n    req.log.error({ err: error }, \"Error serving public object\");\n    res.status(500).json({ error: \"Failed to serve public object\" });\n  }\n});\n\n// \u2500\u2500\u2500 GET /api/storage/objects/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nrouter.get(\"/storage/objects/*path\", async (req: Request, res: Response): Promise<void> => {\n  try {\n    const raw = req.params.path;\n    const wildcardPath = Array.isArray(raw) ? raw.join(\"/\") : raw;\n    const objectPath = `/objects/${wildcardPath}`;\n\n    if (isLocalMode()) {\n      const dir = process.env.LOCAL_STORAGE_DIR;\n      if (!dir) { res.status(500).json({ error: \"LOCAL_STORAGE_DIR not set\" }); return; }\n      const filePath = path.join(dir, \"objects\", wildcardPath);\n      if (!fs.existsSync(filePath)) { res.status(404).json({ error: \"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" }); return; }\n      let contentType = \"application/octet-stream\";\n      try {\n        const meta = JSON.parse(await fsp.readFile(`${filePath}.meta`, \"utf8\"));\n        contentType = meta.contentType || contentType;\n      } catch {}\n      res.setHeader(\"Content-Type\", contentType);\n      res.setHeader(\"Cache-Control\", \"private, max-age=3600\");\n      fs.createReadStream(filePath).pipe(res);\n      return;\n    }\n\n    const objectFile = await objectStorageService.getObjectEntityFile(objectPath);\n    const response = await objectStorageService.downloadObject(objectFile as any);\n    res.status(response.status);\n    response.headers.forEach((value, key) => res.setHeader(key, value));\n    if (response.body) {\n      const nodeStream = Readable.fromWeb(response.body as ReadableStream<Uint8Array>);\n      nodeStream.pipe(res);\n    } else {\n      res.end();\n    }\n  } catch (error) {\n    if (error instanceof ObjectNotFoundError) {\n      res.status(404).json({ error: \"Object not found\" });\n      return;\n    }\n    req.log.error({ err: error }, \"Error serving object\");\n    res.status(500).json({ error: \"Failed to serve object\" });\n  }\n});\n\nexport default router;\n", "/**\n * Unified Object Storage \u2014 \u064A\u062F\u0639\u0645 \u0648\u0636\u0639\u064E\u064A\u0646:\n *   USE_LOCAL_STORAGE=true  \u2192 Local Disk (cPanel / self-hosted)\n *   USE_LOCAL_STORAGE \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F  \u2192 Replit / Google Cloud Storage\n */\n\nimport { Storage, File } from \"@google-cloud/storage\";\nimport { Readable } from \"stream\";\nimport { randomUUID } from \"crypto\";\nimport fsp from \"node:fs/promises\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport {\n  ObjectAclPolicy,\n  ObjectPermission,\n  canAccessObject,\n  getObjectAclPolicy,\n  setObjectAclPolicy,\n} from \"./objectAcl\";\n\n// \u2500\u2500\u2500 helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction isLocalMode(): boolean {\n  return process.env.USE_LOCAL_STORAGE === \"true\";\n}\n\nfunction localStorageDir(): string {\n  const dir = process.env.LOCAL_STORAGE_DIR;\n  if (!dir) throw new Error(\"LOCAL_STORAGE_DIR env var is required when USE_LOCAL_STORAGE=true\");\n  return dir;\n}\n\nfunction localObjectsDir(): string {\n  return path.join(localStorageDir(), \"objects\");\n}\n\nfunction localPublicDir(): string {\n  return path.join(localStorageDir(), \"public\");\n}\n\nfunction ensureDir(d: string) {\n  if (!fs.existsSync(d)) fs.mkdirSync(d, { recursive: true });\n}\n\n// \u2500\u2500\u2500 Errors \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport class ObjectNotFoundError extends Error {\n  constructor() {\n    super(\"Object not found\");\n    this.name = \"ObjectNotFoundError\";\n    Object.setPrototypeOf(this, ObjectNotFoundError.prototype);\n  }\n}\n\n// \u2500\u2500\u2500 Replit GCS client (only initialised in non-local mode) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst REPLIT_SIDECAR_ENDPOINT = \"http://127.0.0.1:1106\";\n\nfunction getGcsClient(): Storage {\n  return new Storage({\n    credentials: {\n      audience: \"replit\",\n      subject_token_type: \"access_token\",\n      token_url: `${REPLIT_SIDECAR_ENDPOINT}/token`,\n      type: \"external_account\",\n      credential_source: {\n        url: `${REPLIT_SIDECAR_ENDPOINT}/credential`,\n        format: { type: \"json\", subject_token_field_name: \"access_token\" },\n      },\n      universe_domain: \"googleapis.com\",\n    },\n    projectId: \"\",\n  });\n}\n\nexport const objectStorageClient = new Proxy({} as Storage, {\n  get(_target, prop) {\n    return (getGcsClient() as any)[prop];\n  },\n});\n\n// \u2500\u2500\u2500 Main Service \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport class ObjectStorageService {\n  // \u2500\u2500 helpers (GCS) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  getPublicObjectSearchPaths(): Array<string> {\n    const pathsStr = process.env.PUBLIC_OBJECT_SEARCH_PATHS || \"\";\n    const paths = Array.from(\n      new Set(pathsStr.split(\",\").map((p) => p.trim()).filter((p) => p.length > 0))\n    );\n    if (paths.length === 0 && !isLocalMode()) {\n      throw new Error(\"PUBLIC_OBJECT_SEARCH_PATHS not set.\");\n    }\n    return paths;\n  }\n\n  getPrivateObjectDir(): string {\n    const dir = process.env.PRIVATE_OBJECT_DIR || \"\";\n    if (!dir && !isLocalMode()) {\n      throw new Error(\"PRIVATE_OBJECT_DIR not set.\");\n    }\n    return dir;\n  }\n\n  // \u2500\u2500 searchPublicObject \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async searchPublicObject(filePath: string): Promise<File | string | null> {\n    if (isLocalMode()) {\n      const candidate = path.join(localPublicDir(), filePath);\n      try {\n        await fsp.access(candidate);\n        return candidate; // returns disk path (string) in local mode\n      } catch {\n        return null;\n      }\n    }\n    for (const searchPath of this.getPublicObjectSearchPaths()) {\n      const fullPath = `${searchPath}/${filePath}`;\n      const { bucketName, objectName } = parseObjectPath(fullPath);\n      const bucket = getGcsClient().bucket(bucketName);\n      const file = bucket.file(objectName);\n      const [exists] = await file.exists();\n      if (exists) return file;\n    }\n    return null;\n  }\n\n  // \u2500\u2500 downloadObject \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async downloadObject(fileOrPath: File | string, cacheTtlSec: number = 3600): Promise<Response> {\n    if (isLocalMode() || typeof fileOrPath === \"string\") {\n      // local disk path\n      const filePath = fileOrPath as string;\n      let contentType = \"application/octet-stream\";\n      try {\n        const meta = JSON.parse(await fsp.readFile(`${filePath}.meta`, \"utf8\"));\n        contentType = meta.contentType || contentType;\n      } catch {\n        try {\n          const mime = (await import(\"mime-types\")).default;\n          contentType = mime.lookup(filePath) || contentType;\n        } catch {}\n      }\n      const stat = await fsp.stat(filePath);\n      const nodeStream = fs.createReadStream(filePath);\n      const webStream = Readable.toWeb(nodeStream) as ReadableStream;\n      return new Response(webStream, {\n        headers: {\n          \"Content-Type\": contentType,\n          \"Content-Length\": String(stat.size),\n          \"Cache-Control\": `private, max-age=${cacheTtlSec}`,\n        },\n      });\n    }\n\n    // GCS path\n    const file = fileOrPath as File;\n    const [metadata] = await file.getMetadata();\n    const aclPolicy = await getObjectAclPolicy(file);\n    const isPublic = aclPolicy?.visibility === \"public\";\n    const nodeStream = file.createReadStream();\n    const webStream = Readable.toWeb(nodeStream) as ReadableStream;\n    const headers: Record<string, string> = {\n      \"Content-Type\": (metadata.contentType as string) || \"application/octet-stream\",\n      \"Cache-Control\": `${isPublic ? \"public\" : \"private\"}, max-age=${cacheTtlSec}`,\n    };\n    if (metadata.size) headers[\"Content-Length\"] = String(metadata.size);\n    return new Response(webStream, { headers });\n  }\n\n  // \u2500\u2500 getObjectEntityUploadURL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async getObjectEntityUploadURL(): Promise<string> {\n    if (isLocalMode()) {\n      // In local mode, return a sentinel URL; actual upload handled by /uploads/direct\n      const id = randomUUID();\n      ensureDir(localObjectsDir());\n      return `/objects/${id}`; // used as objectPath directly\n    }\n    const privateObjectDir = this.getPrivateObjectDir();\n    const objectId = randomUUID();\n    const fullPath = `${privateObjectDir}/uploads/${objectId}`;\n    const { bucketName, objectName } = parseObjectPath(fullPath);\n    return signObjectURL({ bucketName, objectName, method: \"PUT\", ttlSec: 900 });\n  }\n\n  // \u2500\u2500 normalizeObjectEntityPath \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  normalizeObjectEntityPath(rawPath: string): string {\n    if (isLocalMode()) return rawPath; // already /objects/<id>\n    if (!rawPath.startsWith(\"https://storage.googleapis.com/\")) return rawPath;\n    const url = new URL(rawPath);\n    const rawObjectPath = url.pathname;\n    let objectEntityDir = this.getPrivateObjectDir();\n    if (!objectEntityDir.endsWith(\"/\")) objectEntityDir = `${objectEntityDir}/`;\n    if (!rawObjectPath.startsWith(objectEntityDir)) return rawObjectPath;\n    const entityId = rawObjectPath.slice(objectEntityDir.length);\n    return `/objects/${entityId}`;\n  }\n\n  // \u2500\u2500 getObjectEntityFile \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async getObjectEntityFile(objectPath: string): Promise<File | string> {\n    if (!objectPath.startsWith(\"/objects/\")) throw new ObjectNotFoundError();\n\n    if (isLocalMode()) {\n      const id = objectPath.slice(\"/objects/\".length);\n      if (!id || id.includes(\"..\")) throw new ObjectNotFoundError();\n      const filePath = path.join(localObjectsDir(), id);\n      try {\n        await fsp.access(filePath);\n      } catch {\n        throw new ObjectNotFoundError();\n      }\n      return filePath; // string in local mode\n    }\n\n    // GCS\n    const parts = objectPath.slice(1).split(\"/\");\n    if (parts.length < 2) throw new ObjectNotFoundError();\n    const entityId = parts.slice(1).join(\"/\");\n    let entityDir = this.getPrivateObjectDir();\n    if (!entityDir.endsWith(\"/\")) entityDir = `${entityDir}/`;\n    const objectEntityPath = `${entityDir}${entityId}`;\n    const { bucketName, objectName } = parseObjectPath(objectEntityPath);\n    const bucket = getGcsClient().bucket(bucketName);\n    const objectFile = bucket.file(objectName);\n    const [exists] = await objectFile.exists();\n    if (!exists) throw new ObjectNotFoundError();\n    return objectFile;\n  }\n\n  // \u2500\u2500 trySetObjectEntityAclPolicy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async trySetObjectEntityAclPolicy(rawPath: string, aclPolicy: ObjectAclPolicy): Promise<string> {\n    if (isLocalMode()) return rawPath; // no ACL in local mode\n    const normalizedPath = this.normalizeObjectEntityPath(rawPath);\n    if (!normalizedPath.startsWith(\"/\")) return normalizedPath;\n    const objectFile = (await this.getObjectEntityFile(normalizedPath)) as File;\n    await setObjectAclPolicy(objectFile, aclPolicy);\n    return normalizedPath;\n  }\n\n  // \u2500\u2500 canAccessObjectEntity \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  async canAccessObjectEntity({\n    userId,\n    objectFile,\n    requestedPermission,\n  }: {\n    userId?: string;\n    objectFile: File | string;\n    requestedPermission?: ObjectPermission;\n  }): Promise<boolean> {\n    if (isLocalMode()) return true; // local mode \u2014 no ACL\n    return canAccessObject({\n      userId,\n      objectFile: objectFile as File,\n      requestedPermission: requestedPermission ?? ObjectPermission.READ,\n    });\n  }\n}\n\n// \u2500\u2500\u2500 GCS helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction parseObjectPath(p: string): { bucketName: string; objectName: string } {\n  if (!p.startsWith(\"/\")) p = `/${p}`;\n  const parts = p.split(\"/\");\n  if (parts.length < 3) throw new Error(\"Invalid path: must contain at least a bucket name\");\n  return { bucketName: parts[1], objectName: parts.slice(2).join(\"/\") };\n}\n\nasync function signObjectURL({\n  bucketName,\n  objectName,\n  method,\n  ttlSec,\n}: {\n  bucketName: string;\n  objectName: string;\n  method: \"GET\" | \"PUT\" | \"DELETE\" | \"HEAD\";\n  ttlSec: number;\n}): Promise<string> {\n  const request = {\n    bucket_name: bucketName,\n    object_name: objectName,\n    method,\n    expires_at: new Date(Date.now() + ttlSec * 1000).toISOString(),\n  };\n  const response = await fetch(`${REPLIT_SIDECAR_ENDPOINT}/object-storage/signed-object-url`, {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify(request),\n    signal: AbortSignal.timeout(30_000),\n  });\n  if (!response.ok) {\n    throw new Error(`Failed to sign object URL, errorcode: ${response.status}`);\n  }\n  const { signed_url: signedURL } = (await response.json()) as { signed_url: string };\n  return signedURL;\n}\n", "import { File } from \"@google-cloud/storage\";\n\nconst ACL_POLICY_METADATA_KEY = \"custom:aclPolicy\";\n\n// Can be flexibly defined according to the use case.\n//\n// Examples:\n// - USER_LIST: the users from a list stored in the database;\n// - EMAIL_DOMAIN: the users whose email is in a specific domain;\n// - GROUP_MEMBER: the users who are members of a specific group;\n// - SUBSCRIBER: the users who are subscribers of a specific service / content\n//   creator.\nexport enum ObjectAccessGroupType {}\n\nexport interface ObjectAccessGroup {\n  type: ObjectAccessGroupType;\n  // The logic id that identifies qualified group members. Format depends on the\n  // ObjectAccessGroupType \u2014 e.g. a user-list DB id, an email domain, a group id.\n  id: string;\n}\n\nexport enum ObjectPermission {\n  READ = \"read\",\n  WRITE = \"write\",\n}\n\nexport interface ObjectAclRule {\n  group: ObjectAccessGroup;\n  permission: ObjectPermission;\n}\n\n// Stored as object custom metadata under \"custom:aclPolicy\" (JSON string).\nexport interface ObjectAclPolicy {\n  owner: string;\n  visibility: \"public\" | \"private\";\n  aclRules?: Array<ObjectAclRule>;\n}\n\nfunction isPermissionAllowed(\n  requested: ObjectPermission,\n  granted: ObjectPermission,\n): boolean {\n  if (requested === ObjectPermission.READ) {\n    return [ObjectPermission.READ, ObjectPermission.WRITE].includes(granted);\n  }\n  return granted === ObjectPermission.WRITE;\n}\n\nabstract class BaseObjectAccessGroup implements ObjectAccessGroup {\n  constructor(\n    public readonly type: ObjectAccessGroupType,\n    public readonly id: string,\n  ) {}\n\n  public abstract hasMember(userId: string): Promise<boolean>;\n}\n\nfunction createObjectAccessGroup(\n  group: ObjectAccessGroup,\n): BaseObjectAccessGroup {\n  switch (group.type) {\n    // Implement per access group type, e.g.:\n    // case \"USER_LIST\":\n    //   return new UserListAccessGroup(group.id);\n    default:\n      throw new Error(`Unknown access group type: ${group.type}`);\n  }\n}\n\nexport async function setObjectAclPolicy(\n  objectFile: File,\n  aclPolicy: ObjectAclPolicy,\n): Promise<void> {\n  const [exists] = await objectFile.exists();\n  if (!exists) {\n    throw new Error(`Object not found: ${objectFile.name}`);\n  }\n\n  await objectFile.setMetadata({\n    metadata: {\n      [ACL_POLICY_METADATA_KEY]: JSON.stringify(aclPolicy),\n    },\n  });\n}\n\nexport async function getObjectAclPolicy(\n  objectFile: File,\n): Promise<ObjectAclPolicy | null> {\n  const [metadata] = await objectFile.getMetadata();\n  const aclPolicy = metadata?.metadata?.[ACL_POLICY_METADATA_KEY];\n  if (!aclPolicy) {\n    return null;\n  }\n  return JSON.parse(aclPolicy as string);\n}\n\nexport async function canAccessObject({\n  userId,\n  objectFile,\n  requestedPermission,\n}: {\n  userId?: string;\n  objectFile: File;\n  requestedPermission: ObjectPermission;\n}): Promise<boolean> {\n  const aclPolicy = await getObjectAclPolicy(objectFile);\n  if (!aclPolicy) {\n    return false;\n  }\n\n  if (\n    aclPolicy.visibility === \"public\" &&\n    requestedPermission === ObjectPermission.READ\n  ) {\n    return true;\n  }\n\n  if (!userId) {\n    return false;\n  }\n\n  if (aclPolicy.owner === userId) {\n    return true;\n  }\n\n  for (const rule of aclPolicy.aclRules || []) {\n    const accessGroup = createObjectAccessGroup(rule.group);\n    if (\n      (await accessGroup.hasMember(userId)) &&\n      isPermissionAllowed(requestedPermission, rule.permission)\n    ) {\n      return true;\n    }\n  }\n\n  return false;\n}\n", "import { Router, type IRouter, type Response } from \"express\";\nimport { and, asc, eq, gte } from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport {\n  db,\n  siteSettingsTable,\n  siteDoctorsTable,\n  siteServicesTable,\n  appointmentsTable,\n  patientsTable,\n} from \"@workspace/db\";\nimport { requireSection, type RequestWithUser } from \"../lib/session\";\nimport {\n  normalizeSchedule,\n  scheduleConflictReason,\n} from \"../lib/bookingSchedule\";\n\nconst router: IRouter = Router();\n\n// Gated by the \"siteContent\" section (admins always pass; the clinic owner can\n// delegate website-content management to a specific non-admin user).\nrouter.use(\"/site-admin\", requireSection(\"siteContent\"));\n\nconst workingHourSchema = z.object({\n  day: z.string(),\n  from: z.string().nullable(),\n  to: z.string().nullable(),\n  label: z.string().optional(),\n});\n\nconst bookingScheduleSchema = z.object({\n  openDays: z.array(z.number().int().min(0).max(6)),\n  startTime: z.string().regex(/^\\d{1,2}:\\d{2}$/),\n  endTime: z.string().regex(/^\\d{1,2}:\\d{2}$/),\n  closedDates: z.array(z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/)),\n  slotMinutes: z.number().int().min(5).max(120).default(15),\n});\n\nconst settingsSchema = z.object({\n  clinicName: z.string().min(1),\n  doctorName: z.string().min(1),\n  doctorTitle: z.string(),\n  address: z.string(),\n  email: z.string(),\n  whatsapp: z.string(),\n  phones: z.array(z.string()),\n  workingHours: z.array(workingHourSchema),\n  bookingSchedule: bookingScheduleSchema.optional(),\n  socials: z.object({\n    facebook: z.string().optional(),\n    instagram: z.string().optional(),\n  }),\n  pageContent: z.record(z.string(), z.unknown()),\n});\n\nconst doctorSchema = z.object({\n  name: z.string().min(1),\n  title: z.string(),\n  bio: z.string().nullable().optional(),\n  photoUrl: z.string().nullable().optional(),\n  credentials: z.array(z.string()),\n  sortOrder: z.number().int(),\n  visible: z.boolean(),\n});\n\nconst serviceSchema = z.object({\n  category: z.enum([\"home\", \"featured\", \"more\"]),\n  icon: z.string(),\n  title: z.string().min(1),\n  description: z.string(),\n  imageUrl: z.string().nullable().optional(),\n  sortOrder: z.number().int(),\n  visible: z.boolean(),\n});\n\n// ==================== SETTINGS ====================\n\nrouter.get(\"/site-admin/settings\", async (_req, res: Response): Promise<void> => {\n  const [settings] = await db\n    .select()\n    .from(siteSettingsTable)\n    .where(eq(siteSettingsTable.id, \"main\"))\n    .limit(1);\n  if (!settings) {\n    res.status(404).json({ error: \"\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629\" });\n    return;\n  }\n  res.json(settings);\n});\n\nrouter.put(\n  \"/site-admin/settings\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = settingsSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const sched = parsed.data.bookingSchedule;\n    if (sched) {\n      const toMinutes = (s: string): number => {\n        const [h, m] = s.split(\":\");\n        return Number(h) * 60 + Number(m);\n      };\n      if (toMinutes(sched.endTime) <= toMinutes(sched.startTime)) {\n        res\n          .status(400)\n          .json({ error: \"\u0648\u0642\u062A \u0627\u0646\u062A\u0647\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0628\u0639\u062F \u0648\u0642\u062A \u0627\u0644\u0628\u062F\u0621.\" });\n        return;\n      }\n    }\n    const [updated] = await db\n      .insert(siteSettingsTable)\n      .values({ id: \"main\", ...parsed.data })\n      .onConflictDoUpdate({\n        target: siteSettingsTable.id,\n        set: parsed.data,\n      })\n      .returning();\n    res.json(updated);\n  },\n);\n\n// Preview which existing upcoming appointments would fall outside a proposed\n// booking schedule (closed day or outside working hours). Read-only dry run \u2014\n// it does NOT save the schedule. Used by the control panel to warn the admin\n// before they take the clinic schedule offline under already-booked slots.\nconst affectedScheduleSchema = z.object({\n  bookingSchedule: bookingScheduleSchema,\n});\n\nrouter.post(\n  \"/site-admin/booking-schedule/affected-appointments\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = affectedScheduleSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const schedule = normalizeSchedule(parsed.data.bookingSchedule);\n    const now = new Date();\n    const rows = await db\n      .select({\n        appointment: appointmentsTable,\n        patientName: patientsTable.fullName,\n      })\n      .from(appointmentsTable)\n      .innerJoin(patientsTable, eq(appointmentsTable.patientId, patientsTable.id))\n      .where(\n        and(\n          eq(appointmentsTable.status, \"scheduled\"),\n          gte(appointmentsTable.scheduledAt, now),\n        ),\n      )\n      .orderBy(asc(appointmentsTable.scheduledAt));\n\n    const appointments = rows\n      .map((r) => {\n        const conflict = scheduleConflictReason(\n          new Date(r.appointment.scheduledAt),\n          schedule,\n        );\n        if (!conflict) return null;\n        return {\n          id: r.appointment.id,\n          patientId: r.appointment.patientId,\n          patientName: r.patientName,\n          scheduledAt: r.appointment.scheduledAt.toISOString(),\n          reason: r.appointment.reason,\n          conflict,\n        };\n      })\n      .filter((a): a is NonNullable<typeof a> => a !== null);\n\n    res.json({ count: appointments.length, appointments });\n  },\n);\n\n// ==================== DOCTORS ====================\n\nrouter.get(\"/site-admin/doctors\", async (_req, res: Response): Promise<void> => {\n  const doctors = await db\n    .select()\n    .from(siteDoctorsTable)\n    .orderBy(siteDoctorsTable.sortOrder);\n  res.json(doctors);\n});\n\nrouter.post(\n  \"/site-admin/doctors\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = doctorSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const [created] = await db\n      .insert(siteDoctorsTable)\n      .values(parsed.data)\n      .returning();\n    res.status(201).json(created);\n  },\n);\n\nrouter.put(\n  \"/site-admin/doctors/:id\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = doctorSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const [updated] = await db\n      .update(siteDoctorsTable)\n      .set(parsed.data)\n      .where(eq(siteDoctorsTable.id, String(req.params.id)))\n      .returning();\n    if (!updated) {\n      res.status(404).json({ error: \"\u0627\u0644\u0637\u0628\u064A\u0628 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    res.json(updated);\n  },\n);\n\nrouter.delete(\n  \"/site-admin/doctors/:id\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const [deleted] = await db\n      .delete(siteDoctorsTable)\n      .where(eq(siteDoctorsTable.id, String(req.params.id)))\n      .returning();\n    if (!deleted) {\n      res.status(404).json({ error: \"\u0627\u0644\u0637\u0628\u064A\u0628 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    res.json({ success: true });\n  },\n);\n\n// ==================== SERVICES ====================\n\nrouter.get(\"/site-admin/services\", async (_req, res: Response): Promise<void> => {\n  const services = await db\n    .select()\n    .from(siteServicesTable)\n    .orderBy(siteServicesTable.category, siteServicesTable.sortOrder);\n  res.json(services);\n});\n\nrouter.post(\n  \"/site-admin/services\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = serviceSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const [created] = await db\n      .insert(siteServicesTable)\n      .values(parsed.data)\n      .returning();\n    res.status(201).json(created);\n  },\n);\n\nrouter.put(\n  \"/site-admin/services/:id\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = serviceSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const [updated] = await db\n      .update(siteServicesTable)\n      .set(parsed.data)\n      .where(eq(siteServicesTable.id, String(req.params.id)))\n      .returning();\n    if (!updated) {\n      res.status(404).json({ error: \"\u0627\u0644\u062E\u062F\u0645\u0629 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629\" });\n      return;\n    }\n    res.json(updated);\n  },\n);\n\nrouter.delete(\n  \"/site-admin/services/:id\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const [deleted] = await db\n      .delete(siteServicesTable)\n      .where(eq(siteServicesTable.id, String(req.params.id)))\n      .returning();\n    if (!deleted) {\n      res.status(404).json({ error: \"\u0627\u0644\u062E\u062F\u0645\u0629 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629\" });\n      return;\n    }\n    res.json({ success: true });\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter, type Response } from \"express\";\nimport { eq } from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport { db, systemSettingsTable } from \"@workspace/db\";\nimport { requireSection, type RequestWithUser } from \"../lib/session\";\nimport { SYSTEM_SETTINGS_DEFAULTS } from \"../lib/ensureSeedSystemSettings\";\n\nconst router: IRouter = Router();\n\n// Gated by the \"systemControl\" section (admins always pass; the clinic owner\n// can delegate branding/identity management to a specific non-admin user).\n// Public reads use /public/system-branding.\nrouter.use(\"/system-settings\", requireSection(\"systemControl\"));\n\nconst hexColor = z\n  .string()\n  .regex(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/)\n  .nullable()\n  .optional();\n\nconst colorsSchema = z.object({\n  primary: hexColor,\n  accent: hexColor,\n  secondary: hexColor,\n});\n\nconst settingsSchema = z.object({\n  appName: z.string().min(1).max(120),\n  appSubtitle: z.string().max(200),\n  loginTitle: z.string().min(1).max(120),\n  loginSubtitle: z.string().max(200),\n  sidebarGroupLabel: z.string().max(120),\n  colors: colorsSchema,\n  navLabels: z.record(z.string().max(120), z.string().max(120)),\n});\n\nasync function loadSettings() {\n  const [row] = await db\n    .select()\n    .from(systemSettingsTable)\n    .where(eq(systemSettingsTable.id, \"main\"))\n    .limit(1);\n  return row ?? null;\n}\n\nrouter.get(\n  \"/system-settings\",\n  async (_req: RequestWithUser, res: Response): Promise<void> => {\n    const row = await loadSettings();\n    res.json(row ?? { ...SYSTEM_SETTINGS_DEFAULTS, updatedAt: new Date().toISOString() });\n  },\n);\n\nrouter.put(\n  \"/system-settings\",\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = settingsSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const data = parsed.data;\n    // Strip empty-string color overrides to null so the CSS default is used.\n    const colors = {\n      primary: data.colors.primary || null,\n      accent: data.colors.accent || null,\n      secondary: data.colors.secondary || null,\n    };\n    // Drop empty nav label overrides.\n    const navLabels: Record<string, string> = {};\n    for (const [k, v] of Object.entries(data.navLabels)) {\n      if (v && v.trim()) navLabels[k] = v.trim();\n    }\n\n    const values = {\n      id: \"main\",\n      appName: data.appName,\n      appSubtitle: data.appSubtitle,\n      loginTitle: data.loginTitle,\n      loginSubtitle: data.loginSubtitle,\n      sidebarGroupLabel: data.sidebarGroupLabel,\n      colors,\n      navLabels,\n    };\n\n    const [row] = await db\n      .insert(systemSettingsTable)\n      .values(values)\n      .onConflictDoUpdate({\n        target: systemSettingsTable.id,\n        set: {\n          appName: values.appName,\n          appSubtitle: values.appSubtitle,\n          loginTitle: values.loginTitle,\n          loginSubtitle: values.loginSubtitle,\n          sidebarGroupLabel: values.sidebarGroupLabel,\n          colors: values.colors,\n          navLabels: values.navLabels,\n        },\n      })\n      .returning();\n\n    res.json(row);\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter, type Response } from \"express\";\nimport { asc, eq } from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport { db, examinationTypesTable } from \"@workspace/db\";\nimport { requireSection, getCurrentUser, type RequestWithUser } from \"../lib/session\";\nimport { logAudit } from \"../lib/audit\";\n\nconst router: IRouter = Router();\n\nconst examinationTypeSchema = z.object({\n  name: z.string().min(1),\n  color: z.string().nullable().optional(),\n  sortOrder: z.number().int(),\n  active: z.boolean(),\n});\n\n// Read: any authenticated staff member (used when assigning a type to an\n// appointment). Writes below are admin-only.\nrouter.get(\n  \"/examination-types\",\n  async (_req, res: Response): Promise<void> => {\n    const rows = await db\n      .select()\n      .from(examinationTypesTable)\n      .orderBy(asc(examinationTypesTable.sortOrder));\n    res.json(rows);\n  },\n);\n\nrouter.post(\n  \"/examination-types\",\n  requireSection(\"examinationTypes\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = examinationTypeSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const user = await getCurrentUser(req);\n    const [created] = await db\n      .insert(examinationTypesTable)\n      .values({\n        name: parsed.data.name,\n        color: parsed.data.color ?? null,\n        sortOrder: parsed.data.sortOrder,\n        active: parsed.data.active,\n      })\n      .returning();\n    await logAudit({\n      userId: user.id,\n      action: \"examination_type.create\",\n      entity: \"examination_type\",\n      entityId: created.id,\n    });\n    res.status(201).json(created);\n  },\n);\n\nrouter.put(\n  \"/examination-types/:id\",\n  requireSection(\"examinationTypes\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = examinationTypeSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n    const user = await getCurrentUser(req);\n    const id = String(req.params.id);\n    const [updated] = await db\n      .update(examinationTypesTable)\n      .set({\n        name: parsed.data.name,\n        color: parsed.data.color ?? null,\n        sortOrder: parsed.data.sortOrder,\n        active: parsed.data.active,\n      })\n      .where(eq(examinationTypesTable.id, id))\n      .returning();\n    if (!updated) {\n      res.status(404).json({ error: \"\u0646\u0648\u0639 \u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    await logAudit({\n      userId: user.id,\n      action: \"examination_type.update\",\n      entity: \"examination_type\",\n      entityId: id,\n    });\n    res.json(updated);\n  },\n);\n\nrouter.delete(\n  \"/examination-types/:id\",\n  requireSection(\"examinationTypes\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const user = await getCurrentUser(req);\n    const id = String(req.params.id);\n    const [deleted] = await db\n      .delete(examinationTypesTable)\n      .where(eq(examinationTypesTable.id, id))\n      .returning();\n    if (!deleted) {\n      res.status(404).json({ error: \"\u0646\u0648\u0639 \u0627\u0644\u0643\u0634\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    await logAudit({\n      userId: user.id,\n      action: \"examination_type.delete\",\n      entity: \"examination_type\",\n      entityId: id,\n    });\n    res.json({ success: true });\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter, type Request, type Response } from \"express\";\nimport { z } from \"zod\";\nimport {\n  db,\n  usersTable,\n  patientsTable,\n  growthRecordsTable,\n  appointmentsTable,\n  examinationTypesTable,\n  visitsTable,\n  prescriptionsTable,\n  prescriptionItemsTable,\n  prescriptionTemplatesTable,\n  referralsTable,\n  drugsTable,\n  paymentsTable,\n  auditLogsTable,\n  consultationsTable,\n  consultationMessagesTable,\n  siteSettingsTable,\n  siteDoctorsTable,\n  siteServicesTable,\n  systemSettingsTable,\n} from \"@workspace/db\";\nimport { getCurrentUser } from \"../lib/session\";\nimport { can } from \"@workspace/permissions\";\nimport { logAudit } from \"../lib/audit\";\nimport { nextPatientCode, makeQrToken } from \"../lib/codes\";\n\nconst router: IRouter = Router();\n\nconst ADMIN_ONLY_MSG = \"\u0647\u0630\u0647 \u0627\u0644\u0639\u0645\u0644\u064A\u0629 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D\u0629 \u0628\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0627\u0644\u062D\u0627\u0644\u064A\u0629\";\n\n// Gated by the \"backup\" section. \"view\" allows the read-only export; \"edit\" is\n// required for the destructive patient import. Admins always pass.\nasync function ensureBackup(\n  req: Request,\n  res: Response,\n  level: \"view\" | \"edit\",\n): Promise<boolean> {\n  const user = await getCurrentUser(req);\n  if (!can(user, \"backup\", level)) {\n    res.status(403).json({ error: ADMIN_ONLY_MSG });\n    return false;\n  }\n  return true;\n}\n\n// Drops sensitive columns (credentials, bearer tokens) from exported rows.\nfunction stripKeys<T extends Record<string, unknown>>(\n  rows: T[],\n  keys: string[],\n): Record<string, unknown>[] {\n  return rows.map((row) => {\n    const copy: Record<string, unknown> = { ...row };\n    for (const k of keys) delete copy[k];\n    return copy;\n  });\n}\n\n// ---------------------------------------------------------------------------\n// Full backup export \u2014 admin only. Read-only JSON snapshot of every table.\n// passwordHash (credentials) and qrToken (bearer tokens for public QR pages)\n// are stripped so a leaked backup file cannot expose them.\n// ---------------------------------------------------------------------------\nrouter.get(\"/backup/export\", async (req, res): Promise<void> => {\n  if (!(await ensureBackup(req, res, \"view\"))) return;\n  const user = await getCurrentUser(req);\n\n  const [\n    users,\n    patients,\n    growthRecords,\n    appointments,\n    examinationTypes,\n    visits,\n    prescriptions,\n    prescriptionItems,\n    prescriptionTemplates,\n    referrals,\n    drugs,\n    payments,\n    auditLogs,\n    consultations,\n    consultationMessages,\n    siteSettings,\n    siteDoctors,\n    siteServices,\n    systemSettings,\n  ] = await Promise.all([\n    db.select().from(usersTable),\n    db.select().from(patientsTable),\n    db.select().from(growthRecordsTable),\n    db.select().from(appointmentsTable),\n    db.select().from(examinationTypesTable),\n    db.select().from(visitsTable),\n    db.select().from(prescriptionsTable),\n    db.select().from(prescriptionItemsTable),\n    db.select().from(prescriptionTemplatesTable),\n    db.select().from(referralsTable),\n    db.select().from(drugsTable),\n    db.select().from(paymentsTable),\n    db.select().from(auditLogsTable),\n    db.select().from(consultationsTable),\n    db.select().from(consultationMessagesTable),\n    db.select().from(siteSettingsTable),\n    db.select().from(siteDoctorsTable),\n    db.select().from(siteServicesTable),\n    db.select().from(systemSettingsTable),\n  ]);\n\n  const data = {\n    users: stripKeys(users, [\"passwordHash\"]),\n    patients: stripKeys(patients, [\"passwordHash\", \"qrToken\"]),\n    growthRecords,\n    appointments,\n    examinationTypes,\n    visits,\n    prescriptions: stripKeys(prescriptions, [\"qrToken\"]),\n    prescriptionItems,\n    prescriptionTemplates,\n    referrals,\n    drugs,\n    payments,\n    auditLogs,\n    consultations,\n    consultationMessages,\n    siteSettings,\n    siteDoctors,\n    siteServices,\n    systemSettings,\n  };\n\n  const counts = Object.fromEntries(\n    Object.entries(data).map(([key, rows]) => [key, rows.length]),\n  );\n\n  await logAudit({\n    userId: user.id,\n    action: \"backup.export\",\n    entity: \"backup\",\n    meta: { counts },\n  });\n\n  const stamp = new Date().toISOString().slice(0, 10);\n  res.setHeader(\n    \"Content-Disposition\",\n    `attachment; filename=\"clinic-backup-${stamp}.json\"`,\n  );\n  res.setHeader(\"Content-Type\", \"application/json; charset=utf-8\");\n  res.json({ exportedAt: new Date().toISOString(), version: 1, counts, data });\n});\n\n// ---------------------------------------------------------------------------\n// Patient import \u2014 admin only. Accepts canonical-keyed rows (parsed from Excel\n// on the client). Adds new patients only; never updates existing ones.\n// ---------------------------------------------------------------------------\nconst ImportRow = z.object({\n  fullName: z.string().trim().min(1),\n  gender: z.string().trim().min(1),\n  birthDate: z.string().trim().min(1),\n  code: z.string().trim().optional().nullable(),\n  phone: z.string().trim().optional().nullable(),\n  guardianName: z.string().trim().optional().nullable(),\n  address: z.string().trim().optional().nullable(),\n  bloodType: z.string().trim().optional().nullable(),\n  allergies: z.string().trim().optional().nullable(),\n  notes: z.string().trim().optional().nullable(),\n});\n\nconst ImportBody = z.object({\n  rows: z.array(z.record(z.string(), z.unknown())).max(20000),\n});\n\nfunction normalizeGender(raw: string): \"male\" | \"female\" | null {\n  const v = raw.trim().toLowerCase();\n  if ([\"male\", \"m\", \"\u0630\u0643\u0631\", \"\u0648\u0644\u062F\", \"\u0630\u0643\u0631 \"].includes(v)) return \"male\";\n  if ([\"female\", \"f\", \"\u0623\u0646\u062B\u0649\", \"\u0627\u0646\u062B\u0649\", \"\u0628\u0646\u062A\"].includes(v)) return \"female\";\n  return null;\n}\n\n// Builds an ISO date string only when (y, m, d) form a real calendar date.\n// Rejects rollover values like 2023-02-31 that JS Date would silently shift.\nfunction buildIso(y: number, m: number, d: number): string | null {\n  const dt = new Date(Date.UTC(y, m - 1, d));\n  if (\n    dt.getUTCFullYear() === y &&\n    dt.getUTCMonth() === m - 1 &&\n    dt.getUTCDate() === d\n  ) {\n    return `${y}-${String(m).padStart(2, \"0\")}-${String(d).padStart(2, \"0\")}`;\n  }\n  return null;\n}\n\nfunction normalizeBirthDate(raw: string): string | null {\n  const v = raw.trim();\n  // ISO YYYY-MM-DD\n  let m = v.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n  if (m) return buildIso(Number(m[1]), Number(m[2]), Number(m[3]));\n  // DD/MM/YYYY or DD-MM-YYYY\n  m = v.match(/^(\\d{1,2})[/-](\\d{1,2})[/-](\\d{4})$/);\n  if (m) return buildIso(Number(m[3]), Number(m[2]), Number(m[1]));\n  // Last-resort parse for other recognizable formats.\n  const d = new Date(v);\n  if (Number.isNaN(d.getTime())) return null;\n  return d.toISOString().slice(0, 10);\n}\n\nfunction clean(value: unknown): string | null {\n  if (value == null) return null;\n  const s = String(value).trim();\n  return s.length ? s : null;\n}\n\nrouter.post(\n  \"/backup/patients/import\",\n  async (req, res): Promise<void> => {\n    if (!(await ensureBackup(req, res, \"edit\"))) return;\n    const user = await getCurrentUser(req);\n\n    const parsed = ImportBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0635\u064A\u063A\u0629 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629\" });\n      return;\n    }\n\n    const rows = parsed.data.rows;\n    const existing = await db\n      .select({ code: patientsTable.code })\n      .from(patientsTable);\n    const existingCodes = new Set(existing.map((e) => e.code));\n\n    let created = 0;\n    let skipped = 0;\n    const errors: { row: number; reason: string }[] = [];\n\n    for (let i = 0; i < rows.length; i++) {\n      const rowNum = i + 2; // account for the header row in the sheet\n      const fields = ImportRow.safeParse(rows[i]);\n      if (!fields.success) {\n        errors.push({ row: rowNum, reason: \"\u0628\u064A\u0627\u0646\u0627\u062A \u0646\u0627\u0642\u0635\u0629 (\u0627\u0644\u0627\u0633\u0645/\u0627\u0644\u0646\u0648\u0639/\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0645\u064A\u0644\u0627\u062F \u0645\u0637\u0644\u0648\u0628\u0629)\" });\n        continue;\n      }\n      const gender = normalizeGender(fields.data.gender);\n      if (!gender) {\n        errors.push({ row: rowNum, reason: \"\u0627\u0644\u0646\u0648\u0639 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D (\u0630\u0643\u0631/\u0623\u0646\u062B\u0649)\" });\n        continue;\n      }\n      const birthDate = normalizeBirthDate(fields.data.birthDate);\n      if (!birthDate) {\n        errors.push({ row: rowNum, reason: \"\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0645\u064A\u0644\u0627\u062F \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\" });\n        continue;\n      }\n\n      const providedCode = clean(fields.data.code);\n      if (providedCode && existingCodes.has(providedCode)) {\n        skipped++;\n        continue;\n      }\n\n      let inserted = false;\n      // When the code is auto-generated, retry on unique-violation with a fresh\n      // code; a row with a provided code is attempted once (collision = error).\n      for (let attempt = 0; attempt < 3 && !inserted; attempt++) {\n        const code = providedCode || (await nextPatientCode({ birthDate }));\n        try {\n          await db.insert(patientsTable).values({\n            code,\n            fullName: fields.data.fullName.trim(),\n            gender,\n            birthDate,\n            phone: clean(fields.data.phone),\n            guardianName: clean(fields.data.guardianName),\n            address: clean(fields.data.address),\n            bloodType: clean(fields.data.bloodType),\n            allergies: clean(fields.data.allergies),\n            notes: clean(fields.data.notes),\n            qrToken: makeQrToken(),\n          });\n          existingCodes.add(code);\n          created++;\n          inserted = true;\n        } catch (err) {\n          // Stop early if it's not a unique-violation or the code was provided.\n          if ((err as { code?: string }).code !== \"23505\" || providedCode) break;\n        }\n      }\n      if (!inserted) {\n        errors.push({ row: rowNum, reason: \"\u062A\u0639\u0630\u0631 \u0627\u0644\u062D\u0641\u0638 (\u0643\u0648\u062F \u0645\u0643\u0631\u0631\u061F)\" });\n      }\n    }\n\n    await logAudit({\n      userId: user.id,\n      action: \"backup.patients.import\",\n      entity: \"patient\",\n      meta: { total: rows.length, created, skipped, errorCount: errors.length },\n    });\n\n    res.json({ total: rows.length, created, skipped, errors });\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter, type Request, type Response } from \"express\";\nimport {\n  and,\n  asc,\n  desc,\n  eq,\n  gte,\n  inArray,\n  lt,\n  ne,\n  notInArray,\n  sql,\n} from \"drizzle-orm\";\nimport { z } from \"zod\";\nimport {\n  db,\n  queueEntriesTable,\n  displayVideosTable,\n  appointmentsTable,\n  patientsTable,\n  notificationsTable,\n} from \"@workspace/db\";\nimport {\n  requireSection,\n  getCurrentUser,\n  type RequestWithUser,\n} from \"../lib/session\";\nimport { logAudit } from \"../lib/audit\";\nimport { cairoParts, cairoSlotIso } from \"../lib/bookingSchedule\";\nimport { backfillTodayQueueNumbers } from \"./appointments\";\nimport { publish, sseHandler } from \"../lib/realtime\";\n\nconst router: IRouter = Router();\n\n/**\n * Fixed advisory-lock key used to serialize waiting-room \"serve\" transitions\n * (see POST /display/queue/serve-booking). Any constant bigint works; it just\n * has to be the same across all callers so they contend on one lock.\n */\nconst SERVE_LOCK_KEY = 778801;\n\n/**\n * PUBLIC \u2014 live event stream for the waiting-room screen. Emits a \"display\"\n * nudge whenever the queue changes so the screen refetches instantly instead of\n * waiting for its polling interval. No payload \u2014 REST stays the source of truth.\n */\nrouter.get(\"/public/display/events\", sseHandler(\"display\"));\n\n/**\n * STAFF \u2014 live event stream for the control page + notification bell. Carries\n * both queue (\"display\") and \"notifications\" nudges. Gated on the `display`\n * section like every other staff queue route.\n */\nrouter.get(\"/display/events\", requireSection(\"display\"), sseHandler(\"display\", \"notifications\"));\n\n/** Build a public serving URL for a stored object path. */\nfunction videoUrl(objectPath: string): string {\n  return objectPath.startsWith(\"/objects/\")\n    ? `/api/storage${objectPath}`\n    : objectPath;\n}\n\nasync function loadState() {\n  const [current] = await db\n    .select()\n    .from(queueEntriesTable)\n    .where(eq(queueEntriesTable.status, \"serving\"))\n    .orderBy(desc(queueEntriesTable.calledAt))\n    .limit(1);\n\n  const waiting = await db\n    .select()\n    .from(queueEntriesTable)\n    .where(eq(queueEntriesTable.status, \"waiting\"))\n    .orderBy(desc(queueEntriesTable.isEmergency), asc(queueEntriesTable.createdAt));\n\n  const videos = await db\n    .select()\n    .from(displayVideosTable)\n    .where(eq(displayVideosTable.active, true))\n    .orderBy(asc(displayVideosTable.sortOrder), asc(displayVideosTable.createdAt));\n\n  return { current: current ?? null, waiting, videos };\n}\n\n/**\n * PUBLIC \u2014 read-only state for the waiting-room display screen.\n * Mounted under the `/public/` prefix so it bypasses auth. Returns only the\n * non-sensitive presentation data (ticket numbers + video URLs).\n */\nrouter.get(\"/public/display/state\", async (_req: Request, res: Response): Promise<void> => {\n  const { current, waiting, videos } = await loadState();\n  res.json({\n    current: current\n      ? {\n          ticketNumber: current.ticketNumber,\n          isEmergency: current.isEmergency,\n          finished: !!current.finishedAt,\n        }\n      : null,\n    upcoming: waiting.map((w) => ({\n      ticketNumber: w.ticketNumber,\n      isEmergency: w.isEmergency,\n    })),\n    videos: videos.map((v) => ({\n      id: v.id,\n      url: videoUrl(v.objectPath),\n      contentType: v.contentType,\n    })),\n  });\n});\n\n/** ADMIN \u2014 full state (with ids) for the control screen. */\nrouter.get(\n  \"/display/state\",\n  requireSection(\"display\"),\n  async (_req: RequestWithUser, res: Response): Promise<void> => {\n    const { current, waiting, videos } = await loadState();\n    res.json({ current, upcoming: waiting, videos });\n  },\n);\n\nconst ticketSchema = z.object({\n  ticketNumber: z.string().trim().min(1).max(40),\n});\n\n/** Add a normal booking number to the waiting queue. */\nrouter.post(\n  \"/display/queue\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = ticketSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u062D\u062C\u0632 \u0635\u062D\u064A\u062D\" });\n      return;\n    }\n    const [created] = await db\n      .insert(queueEntriesTable)\n      .values({\n        ticketNumber: parsed.data.ticketNumber,\n        isEmergency: false,\n        status: \"waiting\",\n      })\n      .returning();\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.queue.add\",\n        entity: \"queue_entry\",\n        entityId: created.id,\n        meta: { ticketNumber: created.ticketNumber },\n      });\n    }\n    publish(\"display\");\n    res.json(created);\n  },\n);\n\n/**\n * ADMIN \u2014 today's online bookings (appointments) for the control screen, so the\n * secretary can pull a real booking onto the waiting screen instead of typing a\n * number. Each row carries an `inQueue` flag if it is already on the screen.\n */\nrouter.get(\n  \"/display/bookings\",\n  requireSection(\"display\"),\n  async (_req: RequestWithUser, res: Response): Promise<void> => {\n    // Ensure today's bookings carry their daily sequence number before listing.\n    await backfillTodayQueueNumbers();\n    // Cairo-local \"today\" window (clinic timezone), not server-local midnight.\n    const today = cairoParts(new Date()).date;\n    const nextDate = new Date(`${today}T12:00:00Z`);\n    nextDate.setUTCDate(nextDate.getUTCDate() + 1);\n    const tomorrow = cairoParts(nextDate).date;\n    const start = new Date(cairoSlotIso(today, 0, 0));\n    const end = new Date(cairoSlotIso(tomorrow, 0, 0));\n\n    const rows = await db\n      .select({\n        appointmentId: appointmentsTable.id,\n        patientCode: patientsTable.code,\n        patientName: patientsTable.fullName,\n        queueNumber: appointmentsTable.queueNumber,\n        scheduledAt: appointmentsTable.scheduledAt,\n        status: appointmentsTable.status,\n        isEmergency: appointmentsTable.isEmergency,\n      })\n      .from(appointmentsTable)\n      .innerJoin(\n        patientsTable,\n        eq(appointmentsTable.patientId, patientsTable.id),\n      )\n      .where(\n        and(\n          gte(appointmentsTable.scheduledAt, start),\n          lt(appointmentsTable.scheduledAt, end),\n        ),\n      )\n      .orderBy(asc(appointmentsTable.scheduledAt));\n\n    // Which appointments are already on the screen (waiting or serving).\n    const active = await db\n      .select({ appointmentId: queueEntriesTable.appointmentId })\n      .from(queueEntriesTable)\n      .where(ne(queueEntriesTable.status, \"served\"));\n    const activeIds = new Set(\n      active.map((a) => a.appointmentId).filter((x): x is string => !!x),\n    );\n\n    res.json(\n      rows.map((r) => ({\n        appointmentId: r.appointmentId,\n        patientCode: r.patientCode,\n        patientName: r.patientName,\n        queueNumber: r.queueNumber,\n        scheduledAt: r.scheduledAt.toISOString(),\n        status: r.status,\n        isEmergency: r.isEmergency,\n        inQueue: activeIds.has(r.appointmentId),\n      })),\n    );\n  },\n);\n\nconst fromBookingSchema = z.object({\n  appointmentId: z.string().uuid(),\n  isEmergency: z.boolean().optional(),\n});\n\n/**\n * Add an online booking to the waiting queue. The displayed number is the\n * patient's code. A normal exam (`isEmergency:false`) joins the order; an urgent\n * exam (`isEmergency:true`) shows in red and is ordered first.\n */\nrouter.post(\n  \"/display/queue/from-booking\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = fromBookingSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u062D\u062C\u0632 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const { appointmentId, isEmergency = false } = parsed.data;\n\n    // Make sure the booking has its daily sequence number before we copy it.\n    await backfillTodayQueueNumbers();\n    const [booking] = await db\n      .select({\n        appointmentId: appointmentsTable.id,\n        patientCode: patientsTable.code,\n        patientName: patientsTable.fullName,\n        queueNumber: appointmentsTable.queueNumber,\n      })\n      .from(appointmentsTable)\n      .innerJoin(\n        patientsTable,\n        eq(appointmentsTable.patientId, patientsTable.id),\n      )\n      .where(eq(appointmentsTable.id, appointmentId))\n      .limit(1);\n\n    if (!booking) {\n      res.status(404).json({ error: \"\u0627\u0644\u062D\u062C\u0632 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    // The screen shows the daily sequence number (\u0631\u0642\u0645 \u0627\u0644\u062F\u0648\u0631), not the patient's\n    // medical code. Fall back to the code only if a number was never assigned.\n    const ticketNumber =\n      booking.queueNumber != null\n        ? String(booking.queueNumber)\n        : booking.patientCode;\n\n    // Prevent adding the same booking twice while it is still on the screen.\n    const existing = await db\n      .select({ id: queueEntriesTable.id })\n      .from(queueEntriesTable)\n      .where(\n        and(\n          eq(queueEntriesTable.appointmentId, appointmentId),\n          ne(queueEntriesTable.status, \"served\"),\n        ),\n      )\n      .limit(1);\n    if (existing.length > 0) {\n      res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u062D\u062C\u0632 \u0645\u0648\u062C\u0648\u062F \u0628\u0627\u0644\u0641\u0639\u0644 \u0641\u064A \u0627\u0644\u0642\u0627\u0626\u0645\u0629\" });\n      return;\n    }\n\n    let created;\n    try {\n      [created] = await db\n        .insert(queueEntriesTable)\n        .values({\n          ticketNumber,\n          patientName: booking.patientName,\n          appointmentId: booking.appointmentId,\n          isEmergency,\n          status: \"waiting\",\n        })\n        .returning();\n    } catch (err) {\n      // Concurrency-safe dedupe: the partial unique index on appointment_id\n      // (status <> 'served') rejects a racing duplicate insert.\n      if ((err as { code?: string }).code === \"23505\") {\n        res.status(409).json({ error: \"\u0647\u0630\u0627 \u0627\u0644\u062D\u062C\u0632 \u0645\u0648\u062C\u0648\u062F \u0628\u0627\u0644\u0641\u0639\u0644 \u0641\u064A \u0627\u0644\u0642\u0627\u0626\u0645\u0629\" });\n        return;\n      }\n      throw err;\n    }\n\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.queue.from_booking\",\n        entity: \"queue_entry\",\n        entityId: created.id,\n        meta: {\n          appointmentId,\n          ticketNumber: created.ticketNumber,\n          isEmergency,\n        },\n      });\n    }\n    publish(\"display\");\n    res.json(created);\n  },\n);\n\nconst serveBookingSchema = z.object({\n  appointmentId: z.string().uuid(),\n});\n\n/** Build the screen ticket number for a booking (daily sequence, code fallback). */\nfunction bookingTicket(queueNumber: number | null, patientCode: string): string {\n  return queueNumber != null ? String(queueNumber) : patientCode;\n}\n\n/**\n * Promote a specific online booking straight to `serving` \u2014 used when the\n * doctor clicks a patient's name to start the exam, so the patient's daily\n * sequence number appears on the waiting-room screen automatically (no secretary\n * \"next\" press). The rest of today's not-yet-seen bookings are seeded into the\n * waiting list (in sequence order) so the remaining numbers show below it.\n * Gated on the `display` section \u2014 doctors hold it by default.\n */\nrouter.post(\n  \"/display/queue/serve-booking\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = serveBookingSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u062D\u062C\u0632 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const { appointmentId } = parsed.data;\n\n    // Make sure today's bookings carry their daily sequence number first.\n    await backfillTodayQueueNumbers();\n\n    // Cairo-local \"today\" window (clinic timezone), not server-local midnight.\n    const today = cairoParts(new Date()).date;\n    const nextDate = new Date(`${today}T12:00:00Z`);\n    nextDate.setUTCDate(nextDate.getUTCDate() + 1);\n    const tomorrow = cairoParts(nextDate).date;\n    const start = new Date(cairoSlotIso(today, 0, 0));\n    const end = new Date(cairoSlotIso(tomorrow, 0, 0));\n\n    const [booking] = await db\n      .select({\n        appointmentId: appointmentsTable.id,\n        patientCode: patientsTable.code,\n        patientName: patientsTable.fullName,\n        queueNumber: appointmentsTable.queueNumber,\n        isEmergency: appointmentsTable.isEmergency,\n      })\n      .from(appointmentsTable)\n      .innerJoin(\n        patientsTable,\n        eq(appointmentsTable.patientId, patientsTable.id),\n      )\n      .where(eq(appointmentsTable.id, appointmentId))\n      .limit(1);\n\n    if (!booking) {\n      res.status(404).json({ error: \"\u0627\u0644\u062D\u062C\u0632 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    const ticketNumber = bookingTicket(booking.queueNumber, booking.patientCode);\n\n    // Demote the old serving entry + promote this booking + seed the rest of the\n    // day's sequence as a single atomic unit, so a racing call can't leave two\n    // rows in `serving` or a half-built waiting list.\n    const serving = await db.transaction(async (tx) => {\n      let result: typeof queueEntriesTable.$inferSelect | null = null;\n      // Serialize all serve transitions on a single transaction-scoped advisory\n      // lock so two doctors promoting DIFFERENT patients at the same moment can't\n      // each observe \"no current serving\" and both commit a `serving` row. The\n      // lock auto-releases at commit/rollback. The constant key is shared by\n      // every serve-booking call (any process, any instance on the same DB).\n      await tx.execute(sql`SELECT pg_advisory_xact_lock(${SERVE_LOCK_KEY})`);\n      // Find this appointment's existing active entry (if it is already on the\n      // screen) BEFORE demoting \u2014 re-clicking the same patient must be\n      // idempotent and never spawn a duplicate lifecycle row.\n      const [existing] = await tx\n        .select({ id: queueEntriesTable.id })\n        .from(queueEntriesTable)\n        .where(\n          and(\n            eq(queueEntriesTable.appointmentId, appointmentId),\n            ne(queueEntriesTable.status, \"served\"),\n          ),\n        )\n        .limit(1);\n\n      // Demote whoever else is currently being served (never this entry).\n      await tx\n        .update(queueEntriesTable)\n        .set({ status: \"served\" })\n        .where(\n          existing\n            ? and(\n                eq(queueEntriesTable.status, \"serving\"),\n                ne(queueEntriesTable.id, existing.id),\n              )\n            : eq(queueEntriesTable.status, \"serving\"),\n        );\n\n      const servingValues = {\n        status: \"serving\" as const,\n        calledAt: new Date(),\n        finishedAt: null,\n        ticketNumber,\n        patientName: booking.patientName,\n        isEmergency: booking.isEmergency,\n      };\n\n      if (existing) {\n        [result] = await tx\n          .update(queueEntriesTable)\n          .set(servingValues)\n          .where(eq(queueEntriesTable.id, existing.id))\n          .returning();\n      } else {\n        // onConflictDoNothing keeps the transaction alive if a racing insert\n        // grabbed the appointment first; we then promote that row instead.\n        const inserted = await tx\n          .insert(queueEntriesTable)\n          .values({ appointmentId, ...servingValues })\n          .onConflictDoNothing()\n          .returning();\n        if (inserted.length > 0) {\n          result = inserted[0];\n        } else {\n          const [row] = await tx\n            .select({ id: queueEntriesTable.id })\n            .from(queueEntriesTable)\n            .where(\n              and(\n                eq(queueEntriesTable.appointmentId, appointmentId),\n                ne(queueEntriesTable.status, \"served\"),\n              ),\n            )\n            .limit(1);\n          if (row) {\n            [result] = await tx\n              .update(queueEntriesTable)\n              .set(servingValues)\n              .where(eq(queueEntriesTable.id, row.id))\n              .returning();\n          }\n        }\n      }\n\n      // Seed the rest of today's still-active bookings as `waiting` so the\n      // remaining sequence shows below the current number. Ordered by daily\n      // sequence; createdAt is staggered so the public list keeps that order.\n      const rest = await tx\n        .select({\n          appointmentId: appointmentsTable.id,\n          patientCode: patientsTable.code,\n          patientName: patientsTable.fullName,\n          queueNumber: appointmentsTable.queueNumber,\n          isEmergency: appointmentsTable.isEmergency,\n        })\n        .from(appointmentsTable)\n        .innerJoin(\n          patientsTable,\n          eq(appointmentsTable.patientId, patientsTable.id),\n        )\n        .where(\n          and(\n            gte(appointmentsTable.scheduledAt, start),\n            lt(appointmentsTable.scheduledAt, end),\n            ne(appointmentsTable.id, appointmentId),\n            notInArray(appointmentsTable.status, [\"completed\", \"cancelled\"]),\n          ),\n        )\n        .orderBy(asc(appointmentsTable.queueNumber));\n\n      const active = await tx\n        .select({ appointmentId: queueEntriesTable.appointmentId })\n        .from(queueEntriesTable)\n        .where(ne(queueEntriesTable.status, \"served\"));\n      const activeIds = new Set(\n        active.map((a) => a.appointmentId).filter((x): x is string => !!x),\n      );\n\n      const toInsert = rest.filter((r) => !activeIds.has(r.appointmentId));\n      if (toInsert.length > 0) {\n        const base = Date.now();\n        await tx\n          .insert(queueEntriesTable)\n          .values(\n            toInsert.map((r, i) => ({\n              ticketNumber: bookingTicket(r.queueNumber, r.patientCode),\n              patientName: r.patientName,\n              appointmentId: r.appointmentId,\n              isEmergency: r.isEmergency,\n              status: \"waiting\" as const,\n              createdAt: new Date(base + i * 1000),\n            })),\n          )\n          .onConflictDoNothing();\n      }\n\n      return result;\n    });\n\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.serve_booking\",\n        entity: \"queue_entry\",\n        entityId: serving?.id ?? null,\n        meta: { appointmentId, ticketNumber },\n      });\n    }\n    publish(\"display\");\n    res.json({ current: serving ?? null });\n  },\n);\n\n/** Advance: current -> served, then promote next waiting (emergency first). */\nrouter.post(\n  \"/display/next\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    await db\n      .update(queueEntriesTable)\n      .set({ status: \"served\" })\n      .where(eq(queueEntriesTable.status, \"serving\"));\n\n    const [next] = await db\n      .select()\n      .from(queueEntriesTable)\n      .where(eq(queueEntriesTable.status, \"waiting\"))\n      .orderBy(desc(queueEntriesTable.isEmergency), asc(queueEntriesTable.createdAt))\n      .limit(1);\n\n    let serving = null;\n    if (next) {\n      [serving] = await db\n        .update(queueEntriesTable)\n        .set({ status: \"serving\", calledAt: new Date() })\n        .where(eq(queueEntriesTable.id, next.id))\n        .returning();\n    }\n\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.next\",\n        entity: \"queue_entry\",\n        entityId: serving?.id ?? null,\n      });\n    }\n    publish(\"display\");\n    res.json({ current: serving ?? null });\n  },\n);\n\n/**\n * Mark the current exam as finished (doctor's post-print \"\u0647\u0644 \u0623\u0646\u0647\u064A\u062A \u0627\u0644\u0643\u0634\u0641\u061F\").\n * The serving entry stays `serving` (still shown on screen) but gets a\n * `finishedAt` stamp so the public display turns it black, and a notification is\n * created so the secretary knows to press \"next\". Gated on the `display` section\n * (edit) like every other queue mutation, so an admin who locks `display` for a\n * given user also blocks this \u2014 no role-based bypass of the section policy.\n *\n * CONTEXT-BOUND: the caller passes the `patientId` of the printed prescription.\n * The server resolves the currently-serving entry's patient (via its linked\n * appointment) and only stamps it when it matches the prescription's patient \u2014\n * otherwise it returns 409 so printing an OLD prescription for a different\n * patient can never finish the unrelated person who is actually being served.\n */\nconst FinishBody = z.object({ patientId: z.string().uuid() });\n\nrouter.post(\n  \"/display/finish\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = FinishBody.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const { patientId } = parsed.data;\n\n    const [serving] = await db\n      .select({\n        id: queueEntriesTable.id,\n        ticketNumber: queueEntriesTable.ticketNumber,\n        appointmentId: queueEntriesTable.appointmentId,\n        servingPatientId: appointmentsTable.patientId,\n      })\n      .from(queueEntriesTable)\n      .leftJoin(\n        appointmentsTable,\n        eq(queueEntriesTable.appointmentId, appointmentsTable.id),\n      )\n      .where(eq(queueEntriesTable.status, \"serving\"))\n      .orderBy(desc(queueEntriesTable.calledAt))\n      .limit(1);\n\n    if (!serving) {\n      res.status(404).json({ error: \"\u0644\u0627 \u064A\u0648\u062C\u062F \u0645\u0631\u064A\u0636 \u0642\u064A\u062F \u0627\u0644\u0643\u0634\u0641 \u062D\u0627\u0644\u064A\u0627\u064B\" });\n      return;\n    }\n\n    // The serving entry must be linked (via its booking) to the same patient as\n    // the printed prescription. Manual/ad-hoc tickets have no appointment link\n    // and therefore cannot be confirmed \u2014 reject rather than risk a mismatch.\n    if (!serving.servingPatientId || serving.servingPatientId !== patientId) {\n      res.status(409).json({\n        error:\n          \"\u0627\u0644\u0645\u0631\u064A\u0636 \u0627\u0644\u0645\u0639\u0631\u0648\u0636 \u062D\u0627\u0644\u064A\u0627\u064B \u0639\u0644\u0649 \u0627\u0644\u0634\u0627\u0634\u0629 \u0644\u064A\u0633 \u0635\u0627\u062D\u0628 \u0647\u0630\u0647 \u0627\u0644\u0631\u0648\u0634\u062A\u0629 \u2014 \u0644\u0645 \u064A\u062A\u0645 \u0625\u0646\u0647\u0627\u0621 \u0627\u0644\u0643\u0634\u0641\",\n      });\n      return;\n    }\n\n    const [updated] = await db\n      .update(queueEntriesTable)\n      .set({ finishedAt: new Date() })\n      .where(eq(queueEntriesTable.id, serving.id))\n      .returning();\n\n    await db.insert(notificationsTable).values({\n      type: \"exam_finished\",\n      title: \"\u062A\u0645 \u0625\u0646\u0647\u0627\u0621 \u0627\u0644\u0643\u0634\u0641\",\n      body: `\u0627\u0646\u062A\u0647\u0649 \u0627\u0644\u0643\u0634\u0641 \u0644\u0644\u0631\u0642\u0645 ${serving.ticketNumber} \u2014 \u0627\u0636\u063A\u0637 \"\u0627\u0644\u062A\u0627\u0644\u064A\" \u0644\u0645\u0646\u0627\u062F\u0627\u0629 \u0627\u0644\u0645\u0631\u064A\u0636 \u0627\u0644\u0642\u0627\u062F\u0645`,\n      ticketNumber: serving.ticketNumber,\n    });\n\n    const user = req.currentUser;\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.finish\",\n        entity: \"queue_entry\",\n        entityId: serving.id,\n        meta: { ticketNumber: serving.ticketNumber },\n      });\n    }\n    // The screen turns the number black (display) and a new secretary handoff\n    // notification was just created (notifications) \u2014 nudge both immediately.\n    publish(\"display\");\n    publish(\"notifications\");\n    res.json(updated ?? serving);\n  },\n);\n\n/** Emergency: interrupt and immediately show the typed number in red. */\nrouter.post(\n  \"/display/emergency\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = ticketSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0637\u0627\u0631\u0626\u0629\" });\n      return;\n    }\n    await db\n      .update(queueEntriesTable)\n      .set({ status: \"served\" })\n      .where(eq(queueEntriesTable.status, \"serving\"));\n\n    const [created] = await db\n      .insert(queueEntriesTable)\n      .values({\n        ticketNumber: parsed.data.ticketNumber,\n        isEmergency: true,\n        status: \"serving\",\n        calledAt: new Date(),\n      })\n      .returning();\n\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.emergency\",\n        entity: \"queue_entry\",\n        entityId: created.id,\n        meta: { ticketNumber: created.ticketNumber },\n      });\n    }\n    publish(\"display\");\n    res.json(created);\n  },\n);\n\n/** Remove a single waiting entry (e.g. mistyped). Only waiting rows. */\nrouter.delete(\n  \"/display/queue/:id\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const id = String(req.params.id);\n    await db\n      .delete(queueEntriesTable)\n      .where(\n        and(\n          eq(queueEntriesTable.id, id),\n          eq(queueEntriesTable.status, \"waiting\"),\n        ),\n      );\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.queue.remove\",\n        entity: \"queue_entry\",\n        entityId: id,\n      });\n    }\n    publish(\"display\");\n    res.json({ ok: true });\n  },\n);\n\n/** Reset the whole queue (start a new day). */\nrouter.post(\n  \"/display/reset\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    await db.delete(queueEntriesTable);\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.reset\",\n        entity: \"queue_entry\",\n      });\n    }\n    publish(\"display\");\n    res.json({ ok: true });\n  },\n);\n\nconst videoSchema = z.object({\n  objectPath: z.string().trim().min(1).max(500),\n  title: z.string().trim().max(160).nullable().optional(),\n  contentType: z.string().trim().max(160).nullable().optional(),\n});\n\n/** Register an uploaded video (client uploads to storage first). */\nrouter.post(\n  \"/display/videos\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const parsed = videoSchema.safeParse(req.body);\n    if (!parsed.success) {\n      res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0641\u064A\u062F\u064A\u0648 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n      return;\n    }\n    const [created] = await db\n      .insert(displayVideosTable)\n      .values({\n        objectPath: parsed.data.objectPath,\n        title: parsed.data.title ?? null,\n        contentType: parsed.data.contentType ?? null,\n      })\n      .returning();\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.video.add\",\n        entity: \"display_video\",\n        entityId: created.id,\n      });\n    }\n    publish(\"display\");\n    res.json(created);\n  },\n);\n\n/** Delete a video. */\nrouter.delete(\n  \"/display/videos/:id\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const id = String(req.params.id);\n    await db\n      .delete(displayVideosTable)\n      .where(eq(displayVideosTable.id, id));\n    const user = await getCurrentUser(req);\n    if (user) {\n      await logAudit({\n        userId: user.id,\n        action: \"display.video.delete\",\n        entity: \"display_video\",\n        entityId: id,\n      });\n    }\n    publish(\"display\");\n    res.json({ ok: true });\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter, type Response } from \"express\";\nimport { desc, eq } from \"drizzle-orm\";\nimport { db, notificationsTable } from \"@workspace/db\";\nimport { requireSection, type RequestWithUser } from \"../lib/session\";\nimport { publish } from \"../lib/realtime\";\n\nconst router: IRouter = Router();\n\n/**\n * Staff notifications (currently the \"exam finished\" handoff). Gated on the\n * \"display\" (waiting-room) section \u2014 whoever drives the queue (admin + the\n * secretary/nurse, plus anyone the admin grants display access) gets them.\n * Polled by the header bell + control page.\n */\nrouter.get(\n  \"/notifications\",\n  requireSection(\"display\"),\n  async (_req: RequestWithUser, res: Response): Promise<void> => {\n    const rows = await db\n      .select()\n      .from(notificationsTable)\n      .orderBy(desc(notificationsTable.createdAt))\n      .limit(30);\n    const unread = rows.filter((r) => !r.read).length;\n    res.json({ notifications: rows, unread });\n  },\n);\n\n/** Mark a single notification as read. */\nrouter.post(\n  \"/notifications/:id/read\",\n  requireSection(\"display\"),\n  async (req: RequestWithUser, res: Response): Promise<void> => {\n    const id = String(req.params.id);\n    await db\n      .update(notificationsTable)\n      .set({ read: true })\n      .where(eq(notificationsTable.id, id));\n    publish(\"notifications\");\n    res.json({ ok: true });\n  },\n);\n\n/** Mark all notifications as read. */\nrouter.post(\n  \"/notifications/read-all\",\n  requireSection(\"display\"),\n  async (_req: RequestWithUser, res: Response): Promise<void> => {\n    await db\n      .update(notificationsTable)\n      .set({ read: true })\n      .where(eq(notificationsTable.read, false));\n    publish(\"notifications\");\n    res.json({ ok: true });\n  },\n);\n\nexport default router;\n", "import { Router, type IRouter } from \"express\";\nimport { eq, desc } from \"drizzle-orm\";\nimport { db, complaintsTable, usersTable } from \"@workspace/db\";\nimport { ReplyComplaintBody } from \"@workspace/api-zod\";\nimport { logAudit } from \"../lib/audit\";\nimport { getCurrentUser } from \"../lib/session\";\n\nconst router: IRouter = Router();\n\nrouter.get(\"/complaints\", async (_req, res): Promise<void> => {\n  const rows = await db\n    .select({\n      complaint: complaintsTable,\n      repliedByName: usersTable.name,\n    })\n    .from(complaintsTable)\n    .leftJoin(usersTable, eq(complaintsTable.repliedById, usersTable.id))\n    .orderBy(desc(complaintsTable.createdAt));\n\n  res.json(rows.map((r) => mapComplaint(r.complaint, r.repliedByName)));\n});\n\nrouter.get(\"/complaints/:id\", async (req, res): Promise<void> => {\n  const id = String(req.params.id);\n  const [r] = await db\n    .select({\n      complaint: complaintsTable,\n      repliedByName: usersTable.name,\n    })\n    .from(complaintsTable)\n    .leftJoin(usersTable, eq(complaintsTable.repliedById, usersTable.id))\n    .where(eq(complaintsTable.id, id));\n  if (!r) {\n    res.status(404).json({ error: \"\u0627\u0644\u0634\u0643\u0648\u0649 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629\" });\n    return;\n  }\n  res.json(mapComplaint(r.complaint, r.repliedByName));\n});\n\nrouter.post(\"/complaints/:id/reply\", async (req, res): Promise<void> => {\n  const user = await getCurrentUser(req);\n  const id = String(req.params.id);\n  const parsed = ReplyComplaintBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: parsed.error.message });\n    return;\n  }\n  const reply = parsed.data.reply.trim();\n  if (!reply) {\n    res.status(400).json({ error: \"\u0646\u0635 \u0627\u0644\u0631\u062F \u0645\u0637\u0644\u0648\u0628\" });\n    return;\n  }\n\n  const [existing] = await db\n    .select()\n    .from(complaintsTable)\n    .where(eq(complaintsTable.id, id));\n  if (!existing) {\n    res.status(404).json({ error: \"\u0627\u0644\u0634\u0643\u0648\u0649 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\u0629\" });\n    return;\n  }\n\n  const [updated] = await db\n    .update(complaintsTable)\n    .set({\n      reply,\n      status: \"replied\",\n      repliedById: user.id,\n      repliedAt: new Date(),\n    })\n    .where(eq(complaintsTable.id, id))\n    .returning();\n\n  await logAudit({\n    userId: user.id,\n    action: \"complaint.reply\",\n    entity: \"complaint\",\n    entityId: updated.id,\n    meta: { subject: updated.subject },\n  });\n\n  res.json(mapComplaint(updated, user.name));\n});\n\nfunction mapComplaint(\n  c: typeof complaintsTable.$inferSelect,\n  repliedByName: string | null,\n) {\n  return {\n    id: c.id,\n    name: c.name,\n    phone: c.phone,\n    subject: c.subject,\n    message: c.message,\n    status: c.status,\n    reply: c.reply,\n    repliedById: c.repliedById,\n    repliedByName: c.repliedById ? repliedByName : null,\n    repliedAt: c.repliedAt ? c.repliedAt.toISOString() : null,\n    createdAt: c.createdAt.toISOString(),\n  };\n}\n\nexport default router;\n", "import { Router, type IRouter, type Request, type Response } from \"express\";\nimport { eq, desc } from \"drizzle-orm\";\nimport { randomUUID } from \"crypto\";\nimport { db, qrFilesTable } from \"@workspace/db\";\nimport { requireAuth, type RequestWithUser } from \"../lib/session\";\nimport { can } from \"@workspace/permissions\";\nimport { logAudit } from \"../lib/audit\";\nimport { ObjectStorageService, ObjectNotFoundError } from \"../lib/objectStorage\";\nimport { Readable } from \"stream\";\nimport { z } from \"zod/v4\";\n\nconst router: IRouter = Router();\nconst objectStorageService = new ObjectStorageService();\n\nconst CreateQrFileBody = z.object({\n  name: z.string().min(1).max(200),\n  originalName: z.string().min(1).max(500),\n  objectPath: z.string().min(1),\n  mimeType: z.string().min(1).max(200),\n});\n\n/** GET /qr-files \u2014 list files. Admin sees all; quality_control sees own. */\nrouter.get(\"/qr-files\", requireAuth, async (req: RequestWithUser, res: Response): Promise<void> => {\n  const user = req.currentUser!;\n  if (!can(user, \"qrFiles\", \"view\")) {\n    res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n    return;\n  }\n  try {\n    const rows =\n      user.role === \"admin\"\n        ? await db.select().from(qrFilesTable).orderBy(desc(qrFilesTable.createdAt))\n        : await db\n            .select()\n            .from(qrFilesTable)\n            .where(eq(qrFilesTable.uploadedBy, user.id))\n            .orderBy(desc(qrFilesTable.createdAt));\n    res.json(rows.map((r) => ({ ...r, createdAt: r.createdAt.toISOString() })));\n  } catch (err) {\n    req.log.error({ err }, \"qr-files list error\");\n    res.status(500).json({ error: \"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A\" });\n  }\n});\n\n/** POST /qr-files \u2014 register an uploaded file and generate a QR token. */\nrouter.post(\"/qr-files\", requireAuth, async (req: RequestWithUser, res: Response): Promise<void> => {\n  const user = req.currentUser!;\n  if (!can(user, \"qrFiles\", \"edit\")) {\n    res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n    return;\n  }\n  const parsed = CreateQrFileBody.safeParse(req.body);\n  if (!parsed.success) {\n    res.status(400).json({ error: \"\u0628\u064A\u0627\u0646\u0627\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629\" });\n    return;\n  }\n  const { name, originalName, objectPath, mimeType } = parsed.data;\n  const token = randomUUID();\n  try {\n    const [row] = await db\n      .insert(qrFilesTable)\n      .values({ name, originalName, objectPath, mimeType, token, uploadedBy: user.id })\n      .returning();\n    await logAudit({ userId: user.id, action: \"qr_file.create\", entity: \"qr_files\", entityId: row.id, meta: { name } });\n    res.status(201).json({ ...row, createdAt: row.createdAt.toISOString() });\n  } catch (err) {\n    req.log.error({ err }, \"qr-file create error\");\n    res.status(500).json({ error: \"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u062D\u0641\u0638 \u0627\u0644\u0645\u0644\u0641\" });\n  }\n});\n\n/** DELETE /qr-files/:id \u2014 admin can delete any; quality_control only own. */\nrouter.delete(\"/qr-files/:id\", requireAuth, async (req: RequestWithUser, res: Response): Promise<void> => {\n  const user = req.currentUser!;\n  if (!can(user, \"qrFiles\", \"edit\")) {\n    res.status(403).json({ error: \"\u0635\u0644\u0627\u062D\u064A\u0627\u062A\u0643 \u0644\u0627 \u062A\u0633\u0645\u062D \u0628\u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\" });\n    return;\n  }\n  const id = String(req.params.id);\n  try {\n    // Verify ownership first for non-admin\n    const [existing] = await db.select().from(qrFilesTable).where(eq(qrFilesTable.id, id));\n    if (!existing) {\n      res.status(404).json({ error: \"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\" });\n      return;\n    }\n    if (user.role !== \"admin\" && existing.uploadedBy !== user.id) {\n      res.status(403).json({ error: \"\u0644\u0627 \u062A\u0645\u0644\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062D\u0630\u0641 \u0647\u0630\u0627 \u0627\u0644\u0645\u0644\u0641\" });\n      return;\n    }\n    const rows = await db.delete(qrFilesTable).where(eq(qrFilesTable.id, id)).returning();\n\n    const deleted = rows[0];\n    if (!deleted) {\n      res.status(404).json({ error: \"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F \u0623\u0648 \u0644\u0627 \u062A\u0645\u0644\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062D\u0630\u0641\u0647\" });\n      return;\n    }\n    await logAudit({ userId: user.id, action: \"qr_file.delete\", entity: \"qr_files\", entityId: deleted.id, meta: { name: deleted.name } });\n    res.json({ ok: true });\n  } catch (err) {\n    req.log.error({ err }, \"qr-file delete error\");\n    res.status(500).json({ error: \"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062D\u0630\u0641\" });\n  }\n});\n\n/** GET /public/qr/:token \u2014 public, no auth. Streams the file. */\nrouter.get(\"/public/qr/:token\", async (req: Request, res: Response): Promise<void> => {\n  const token = String(req.params.token);\n  try {\n    const [row] = await db\n      .select()\n      .from(qrFilesTable)\n      .where(eq(qrFilesTable.token, token));\n    if (!row) {\n      res.status(404).send(\"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\");\n      return;\n    }\n    const objectFile = await objectStorageService.getObjectEntityFile(row.objectPath);\n    const response = await objectStorageService.downloadObject(objectFile as any);\n    res.setHeader(\"Content-Type\", row.mimeType);\n    res.setHeader(\n      \"Content-Disposition\",\n      `inline; filename=\"${encodeURIComponent(row.originalName)}\"`,\n    );\n    if (typeof objectFile === \"string\") {\n      // local mode \u2014 objectFile is a disk path, response.body is a web ReadableStream\n      res.status(response.status);\n      response.headers.forEach((value, key) => res.setHeader(key, value));\n      if (response.body) {\n        const nodeStream = Readable.fromWeb(response.body as ReadableStream<Uint8Array>);\n        nodeStream.pipe(res);\n      } else {\n        res.end();\n      }\n    } else {\n      res.status(response.status);\n      response.headers.forEach((value, key) => res.setHeader(key, value));\n      if (response.body) {\n        const nodeStream = Readable.fromWeb(response.body as ReadableStream<Uint8Array>);\n        nodeStream.pipe(res);\n      } else {\n        res.end();\n      }\n    }\n  } catch (err) {\n    if (err instanceof ObjectNotFoundError) {\n      res.status(404).send(\"\u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F\");\n      return;\n    }\n    res.status(500).send(\"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\");\n  }\n});\n\nexport default router;\n", "export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, function, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, toJSONSchema, TimePrecision, NEVER, } from \"../core/index.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n", "export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./function.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n", "/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n    status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n    function init(inst, def) {\n        var _a;\n        Object.defineProperty(inst, \"_zod\", {\n            value: inst._zod ?? {},\n            enumerable: false,\n        });\n        (_a = inst._zod).traits ?? (_a.traits = new Set());\n        inst._zod.traits.add(name);\n        initializer(inst, def);\n        // support prototype modifications\n        for (const k in _.prototype) {\n            if (!(k in inst))\n                Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n        }\n        inst._zod.constr = _;\n        inst._zod.def = def;\n    }\n    // doesn't work if Parent has a constructor with arguments\n    const Parent = params?.Parent ?? Object;\n    class Definition extends Parent {\n    }\n    Object.defineProperty(Definition, \"name\", { value: name });\n    function _(def) {\n        var _a;\n        const inst = params?.Parent ? new Definition() : this;\n        init(inst, def);\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        for (const fn of inst._zod.deferred) {\n            fn();\n        }\n        return inst;\n    }\n    Object.defineProperty(_, \"init\", { value: init });\n    Object.defineProperty(_, Symbol.hasInstance, {\n        value: (inst) => {\n            if (params?.Parent && inst instanceof params.Parent)\n                return true;\n            return inst?._zod?.traits?.has(name);\n        },\n    });\n    Object.defineProperty(_, \"name\", { value: name });\n    return _;\n}\n//////////////////////////////   UTILITIES   ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n    constructor() {\n        super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n    }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n    if (newConfig)\n        Object.assign(globalConfig, newConfig);\n    return globalConfig;\n}\n", "// functions\nexport function assertEqual(val) {\n    return val;\n}\nexport function assertNotEqual(val) {\n    return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n    throw new Error();\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n    const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n    const values = Object.entries(entries)\n        .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n        .map(([_, v]) => v);\n    return values;\n}\nexport function joinValues(array, separator = \"|\") {\n    return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n    if (typeof value === \"bigint\")\n        return value.toString();\n    return value;\n}\nexport function cached(getter) {\n    const set = false;\n    return {\n        get value() {\n            if (!set) {\n                const value = getter();\n                Object.defineProperty(this, \"value\", { value });\n                return value;\n            }\n            throw new Error(\"cached value already set\");\n        },\n    };\n}\nexport function nullish(input) {\n    return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n    const start = source.startsWith(\"^\") ? 1 : 0;\n    const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n    return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nexport function defineLazy(object, key, getter) {\n    const set = false;\n    Object.defineProperty(object, key, {\n        get() {\n            if (!set) {\n                const value = getter();\n                object[key] = value;\n                return value;\n            }\n            throw new Error(\"cached value already set\");\n        },\n        set(v) {\n            Object.defineProperty(object, key, {\n                value: v,\n                // configurable: true,\n            });\n            // object[key] = v;\n        },\n        configurable: true,\n    });\n}\nexport function assignProp(target, prop, value) {\n    Object.defineProperty(target, prop, {\n        value,\n        writable: true,\n        enumerable: true,\n        configurable: true,\n    });\n}\nexport function getElementAtPath(obj, path) {\n    if (!path)\n        return obj;\n    return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n    const keys = Object.keys(promisesObj);\n    const promises = keys.map((key) => promisesObj[key]);\n    return Promise.all(promises).then((results) => {\n        const resolvedObj = {};\n        for (let i = 0; i < keys.length; i++) {\n            resolvedObj[keys[i]] = results[i];\n        }\n        return resolvedObj;\n    });\n}\nexport function randomString(length = 10) {\n    const chars = \"abcdefghijklmnopqrstuvwxyz\";\n    let str = \"\";\n    for (let i = 0; i < length; i++) {\n        str += chars[Math.floor(Math.random() * chars.length)];\n    }\n    return str;\n}\nexport function esc(str) {\n    return JSON.stringify(str);\n}\nexport const captureStackTrace = Error.captureStackTrace\n    ? Error.captureStackTrace\n    : (..._args) => { };\nexport function isObject(data) {\n    return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n    if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n        return false;\n    }\n    try {\n        const F = Function;\n        new F(\"\");\n        return true;\n    }\n    catch (_) {\n        return false;\n    }\n});\nexport function isPlainObject(o) {\n    if (isObject(o) === false)\n        return false;\n    // modified constructor\n    const ctor = o.constructor;\n    if (ctor === undefined)\n        return true;\n    // modified prototype\n    const prot = ctor.prototype;\n    if (isObject(prot) === false)\n        return false;\n    // ctor doesn't have static `isPrototypeOf`\n    if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n        return false;\n    }\n    return true;\n}\nexport function numKeys(data) {\n    let keyCount = 0;\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            keyCount++;\n        }\n    }\n    return keyCount;\n}\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return \"undefined\";\n        case \"string\":\n            return \"string\";\n        case \"number\":\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        case \"boolean\":\n            return \"boolean\";\n        case \"function\":\n            return \"function\";\n        case \"bigint\":\n            return \"bigint\";\n        case \"symbol\":\n            return \"symbol\";\n        case \"object\":\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return \"promise\";\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return \"map\";\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return \"set\";\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return \"date\";\n            }\n            if (typeof File !== \"undefined\" && data instanceof File) {\n                return \"file\";\n            }\n            return \"object\";\n        default:\n            throw new Error(`Unknown data type: ${t}`);\n    }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n    const cl = new inst._zod.constr(def ?? inst._zod.def);\n    if (!def || params?.parent)\n        cl._zod.parent = inst;\n    return cl;\n}\nexport function normalizeParams(_params) {\n    const params = _params;\n    if (!params)\n        return {};\n    if (typeof params === \"string\")\n        return { error: () => params };\n    if (params?.message !== undefined) {\n        if (params?.error !== undefined)\n            throw new Error(\"Cannot specify both `message` and `error` params\");\n        params.error = params.message;\n    }\n    delete params.message;\n    if (typeof params.error === \"string\")\n        return { ...params, error: () => params.error };\n    return params;\n}\nexport function createTransparentProxy(getter) {\n    let target;\n    return new Proxy({}, {\n        get(_, prop, receiver) {\n            target ?? (target = getter());\n            return Reflect.get(target, prop, receiver);\n        },\n        set(_, prop, value, receiver) {\n            target ?? (target = getter());\n            return Reflect.set(target, prop, value, receiver);\n        },\n        has(_, prop) {\n            target ?? (target = getter());\n            return Reflect.has(target, prop);\n        },\n        deleteProperty(_, prop) {\n            target ?? (target = getter());\n            return Reflect.deleteProperty(target, prop);\n        },\n        ownKeys(_) {\n            target ?? (target = getter());\n            return Reflect.ownKeys(target);\n        },\n        getOwnPropertyDescriptor(_, prop) {\n            target ?? (target = getter());\n            return Reflect.getOwnPropertyDescriptor(target, prop);\n        },\n        defineProperty(_, prop, descriptor) {\n            target ?? (target = getter());\n            return Reflect.defineProperty(target, prop, descriptor);\n        },\n    });\n}\nexport function stringifyPrimitive(value) {\n    if (typeof value === \"bigint\")\n        return value.toString() + \"n\";\n    if (typeof value === \"string\")\n        return `\"${value}\"`;\n    return `${value}`;\n}\nexport function optionalKeys(shape) {\n    return Object.keys(shape).filter((k) => {\n        return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n    });\n}\nexport const NUMBER_FORMAT_RANGES = {\n    safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n    int32: [-2147483648, 2147483647],\n    uint32: [0, 4294967295],\n    float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n    float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n    int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n    uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n    const newShape = {};\n    const currDef = schema._zod.def; //.shape;\n    for (const key in mask) {\n        if (!(key in currDef.shape)) {\n            throw new Error(`Unrecognized key: \"${key}\"`);\n        }\n        if (!mask[key])\n            continue;\n        // pick key\n        newShape[key] = currDef.shape[key];\n    }\n    return clone(schema, {\n        ...schema._zod.def,\n        shape: newShape,\n        checks: [],\n    });\n}\nexport function omit(schema, mask) {\n    const newShape = { ...schema._zod.def.shape };\n    const currDef = schema._zod.def; //.shape;\n    for (const key in mask) {\n        if (!(key in currDef.shape)) {\n            throw new Error(`Unrecognized key: \"${key}\"`);\n        }\n        if (!mask[key])\n            continue;\n        delete newShape[key];\n    }\n    return clone(schema, {\n        ...schema._zod.def,\n        shape: newShape,\n        checks: [],\n    });\n}\nexport function extend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to extend: expected a plain object\");\n    }\n    const def = {\n        ...schema._zod.def,\n        get shape() {\n            const _shape = { ...schema._zod.def.shape, ...shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n        checks: [], // delete existing checks\n    };\n    return clone(schema, def);\n}\nexport function merge(a, b) {\n    return clone(a, {\n        ...a._zod.def,\n        get shape() {\n            const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n        catchall: b._zod.def.catchall,\n        checks: [], // delete existing checks\n    });\n}\nexport function partial(Class, schema, mask) {\n    const oldShape = schema._zod.def.shape;\n    const shape = { ...oldShape };\n    if (mask) {\n        for (const key in mask) {\n            if (!(key in oldShape)) {\n                throw new Error(`Unrecognized key: \"${key}\"`);\n            }\n            if (!mask[key])\n                continue;\n            // if (oldShape[key]!._zod.optin === \"optional\") continue;\n            shape[key] = Class\n                ? new Class({\n                    type: \"optional\",\n                    innerType: oldShape[key],\n                })\n                : oldShape[key];\n        }\n    }\n    else {\n        for (const key in oldShape) {\n            // if (oldShape[key]!._zod.optin === \"optional\") continue;\n            shape[key] = Class\n                ? new Class({\n                    type: \"optional\",\n                    innerType: oldShape[key],\n                })\n                : oldShape[key];\n        }\n    }\n    return clone(schema, {\n        ...schema._zod.def,\n        shape,\n        checks: [],\n    });\n}\nexport function required(Class, schema, mask) {\n    const oldShape = schema._zod.def.shape;\n    const shape = { ...oldShape };\n    if (mask) {\n        for (const key in mask) {\n            if (!(key in shape)) {\n                throw new Error(`Unrecognized key: \"${key}\"`);\n            }\n            if (!mask[key])\n                continue;\n            // overwrite with non-optional\n            shape[key] = new Class({\n                type: \"nonoptional\",\n                innerType: oldShape[key],\n            });\n        }\n    }\n    else {\n        for (const key in oldShape) {\n            // overwrite with non-optional\n            shape[key] = new Class({\n                type: \"nonoptional\",\n                innerType: oldShape[key],\n            });\n        }\n    }\n    return clone(schema, {\n        ...schema._zod.def,\n        shape,\n        // optional: [],\n        checks: [],\n    });\n}\nexport function aborted(x, startIndex = 0) {\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue !== true)\n            return true;\n    }\n    return false;\n}\nexport function prefixIssues(path, issues) {\n    return issues.map((iss) => {\n        var _a;\n        (_a = iss).path ?? (_a.path = []);\n        iss.path.unshift(path);\n        return iss;\n    });\n}\nexport function unwrapMessage(message) {\n    return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n    const full = { ...iss, path: iss.path ?? [] };\n    // for backwards compatibility\n    if (!iss.message) {\n        const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n            unwrapMessage(ctx?.error?.(iss)) ??\n            unwrapMessage(config.customError?.(iss)) ??\n            unwrapMessage(config.localeError?.(iss)) ??\n            \"Invalid input\";\n        full.message = message;\n    }\n    // delete (full as any).def;\n    delete full.inst;\n    delete full.continue;\n    if (!ctx?.reportInput) {\n        delete full.input;\n    }\n    return full;\n}\nexport function getSizableOrigin(input) {\n    if (input instanceof Set)\n        return \"set\";\n    if (input instanceof Map)\n        return \"map\";\n    if (input instanceof File)\n        return \"file\";\n    return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n    if (Array.isArray(input))\n        return \"array\";\n    if (typeof input === \"string\")\n        return \"string\";\n    return \"unknown\";\n}\nexport function issue(...args) {\n    const [iss, input, inst] = args;\n    if (typeof iss === \"string\") {\n        return {\n            message: iss,\n            code: \"custom\",\n            input,\n            inst,\n        };\n    }\n    return { ...iss };\n}\nexport function cleanEnum(obj) {\n    return Object.entries(obj)\n        .filter(([k, _]) => {\n        // return true if NaN, meaning it's not a number, thus a string key\n        return Number.isNaN(Number.parseInt(k, 10));\n    })\n        .map((el) => el[1]);\n}\n// instanceof\nexport class Class {\n    constructor(..._args) { }\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n    inst.name = \"$ZodError\";\n    Object.defineProperty(inst, \"_zod\", {\n        value: inst._zod,\n        enumerable: false,\n    });\n    Object.defineProperty(inst, \"issues\", {\n        value: def,\n        enumerable: false,\n    });\n    Object.defineProperty(inst, \"message\", {\n        get() {\n            return JSON.stringify(def, util.jsonStringifyReplacer, 2);\n        },\n        enumerable: true,\n        // configurable: false,\n    });\n    Object.defineProperty(inst, \"toString\", {\n        value: () => inst.message,\n        enumerable: false,\n    });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = {};\n    const formErrors = [];\n    for (const sub of error.issues) {\n        if (sub.path.length > 0) {\n            fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n            fieldErrors[sub.path[0]].push(mapper(sub));\n        }\n        else {\n            formErrors.push(mapper(sub));\n        }\n    }\n    return { formErrors, fieldErrors };\n}\nexport function formatError(error, _mapper) {\n    const mapper = _mapper ||\n        function (issue) {\n            return issue.message;\n        };\n    const fieldErrors = { _errors: [] };\n    const processError = (error) => {\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                issue.errors.map((issues) => processError({ issues }));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues });\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues });\n            }\n            else if (issue.path.length === 0) {\n                fieldErrors._errors.push(mapper(issue));\n            }\n            else {\n                let curr = fieldErrors;\n                let i = 0;\n                while (i < issue.path.length) {\n                    const el = issue.path[i];\n                    const terminal = i === issue.path.length - 1;\n                    if (!terminal) {\n                        curr[el] = curr[el] || { _errors: [] };\n                    }\n                    else {\n                        curr[el] = curr[el] || { _errors: [] };\n                        curr[el]._errors.push(mapper(issue));\n                    }\n                    curr = curr[el];\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return fieldErrors;\n}\nexport function treeifyError(error, _mapper) {\n    const mapper = _mapper ||\n        function (issue) {\n            return issue.message;\n        };\n    const result = { errors: [] };\n    const processError = (error, path = []) => {\n        var _a, _b;\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                // regular union error\n                issue.errors.map((issues) => processError({ issues }, issue.path));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, issue.path);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, issue.path);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    result.errors.push(mapper(issue));\n                    continue;\n                }\n                let curr = result;\n                let i = 0;\n                while (i < fullpath.length) {\n                    const el = fullpath[i];\n                    const terminal = i === fullpath.length - 1;\n                    if (typeof el === \"string\") {\n                        curr.properties ?? (curr.properties = {});\n                        (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n                        curr = curr.properties[el];\n                    }\n                    else {\n                        curr.items ?? (curr.items = []);\n                        (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n                        curr = curr.items[el];\n                    }\n                    if (terminal) {\n                        curr.errors.push(mapper(issue));\n                    }\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n *   issues: [\n *     {\n *       expected: 'string',\n *       code: 'invalid_type',\n *       path: [ 'username' ],\n *       message: 'Invalid input: expected string'\n *     },\n *     {\n *       expected: 'number',\n *       code: 'invalid_type',\n *       path: [ 'favoriteNumbers', 1 ],\n *       message: 'Invalid input: expected number'\n *     }\n *   ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n *   \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n *   \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(path) {\n    const segs = [];\n    for (const seg of path) {\n        if (typeof seg === \"number\")\n            segs.push(`[${seg}]`);\n        else if (typeof seg === \"symbol\")\n            segs.push(`[${JSON.stringify(String(seg))}]`);\n        else if (/[^\\w$]/.test(seg))\n            segs.push(`[${JSON.stringify(seg)}]`);\n        else {\n            if (segs.length)\n                segs.push(\".\");\n            segs.push(seg);\n        }\n    }\n    return segs.join(\"\");\n}\nexport function prettifyError(error) {\n    const lines = [];\n    // sort by path length\n    const issues = [...error.issues].sort((a, b) => a.path.length - b.path.length);\n    // Process each issue\n    for (const issue of issues) {\n        lines.push(`\u2716 ${issue.message}`);\n        if (issue.path?.length)\n            lines.push(`  \u2192 at ${toDotPath(issue.path)}`);\n    }\n    // Convert Map to formatted string\n    return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    if (result.issues.length) {\n        const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, _params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    if (result.issues.length) {\n        const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    return result.issues.length\n        ? {\n            success: false,\n            error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    return result.issues.length\n        ? {\n            success: false,\n            error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n", "export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n    if (!version)\n        return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;\n    return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nexport const _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n    return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/;\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp =\n//   /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$/;\nexport const hostname = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n    const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n    const regex = typeof args.precision === \"number\"\n        ? args.precision === -1\n            ? `${hhmm}`\n            : args.precision === 0\n                ? `${hhmm}:[0-5]\\\\d`\n                : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n        : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n    return regex;\n}\nexport function time(args) {\n    return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n    const time = timeSource({ precision: args.precision });\n    const opts = [\"Z\"];\n    if (args.local)\n        opts.push(\"\");\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n    const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n    return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n    const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n    return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^\\d+n?$/;\nexport const integer = /^\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/i;\nexport const boolean = /true|false/i;\nconst _null = /null/i;\nexport { _null as null };\nconst _undefined = /undefined/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n    var _a;\n    inst._zod ?? (inst._zod = {});\n    inst._zod.def = def;\n    (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n    number: \"number\",\n    bigint: \"bigint\",\n    object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n        if (def.value < curr) {\n            if (def.inclusive)\n                bag.maximum = def.value;\n            else\n                bag.exclusiveMaximum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n        if (def.value > curr) {\n            if (def.inclusive)\n                bag.minimum = def.value;\n            else\n                bag.exclusiveMinimum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        var _a;\n        (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n    });\n    inst._zod.check = (payload) => {\n        if (typeof payload.value !== typeof def.value)\n            throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n        const isMultiple = typeof payload.value === \"bigint\"\n            ? payload.value % def.value === BigInt(0)\n            : util.floatSafeRemainder(payload.value, def.value) === 0;\n        if (isMultiple)\n            return;\n        payload.issues.push({\n            origin: typeof payload.value,\n            code: \"not_multiple_of\",\n            divisor: def.value,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    def.format = def.format || \"float64\";\n    const isInt = def.format?.includes(\"int\");\n    const origin = isInt ? \"int\" : \"number\";\n    const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n        if (isInt)\n            bag.pattern = regexes.integer;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (isInt) {\n            if (!Number.isInteger(input)) {\n                // invalid_format issue\n                // payload.issues.push({\n                //   expected: def.format,\n                //   format: def.format,\n                //   code: \"invalid_format\",\n                //   input,\n                //   inst,\n                // });\n                // invalid_type issue\n                payload.issues.push({\n                    expected: origin,\n                    format: def.format,\n                    code: \"invalid_type\",\n                    input,\n                    inst,\n                });\n                return;\n                // not_multiple_of issue\n                // payload.issues.push({\n                //   code: \"not_multiple_of\",\n                //   origin: \"number\",\n                //   input,\n                //   inst,\n                //   divisor: 1,\n                // });\n            }\n            if (!Number.isSafeInteger(input)) {\n                if (input > 0) {\n                    // too_big\n                    payload.issues.push({\n                        input,\n                        code: \"too_big\",\n                        maximum: Number.MAX_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        continue: !def.abort,\n                    });\n                }\n                else {\n                    // too_small\n                    payload.issues.push({\n                        input,\n                        code: \"too_small\",\n                        minimum: Number.MIN_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        continue: !def.abort,\n                    });\n                }\n                return;\n            }\n        }\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_small\",\n                minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inst,\n            });\n        }\n    };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_small\",\n                minimum: minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inst,\n            });\n        }\n    };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size <= def.maximum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_big\",\n            maximum: def.maximum,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size >= def.minimum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_small\",\n            minimum: def.minimum,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.size;\n        bag.maximum = def.size;\n        bag.size = def.size;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size === def.size)\n            return;\n        const tooBig = size > def.size;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length <= def.maximum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length >= def.minimum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.length;\n        bag.maximum = def.length;\n        bag.length = def.length;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length === def.length)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        const tooBig = length > def.length;\n        payload.issues.push({\n            origin,\n            ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n    var _a, _b;\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        if (def.pattern) {\n            bag.patterns ?? (bag.patterns = new Set());\n            bag.patterns.add(def.pattern);\n        }\n    });\n    if (def.pattern)\n        (_a = inst._zod).check ?? (_a.check = (payload) => {\n            def.pattern.lastIndex = 0;\n            if (def.pattern.test(payload.value))\n                return;\n            payload.issues.push({\n                origin: \"string\",\n                code: \"invalid_format\",\n                format: def.format,\n                input: payload.value,\n                ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n                inst,\n                continue: !def.abort,\n            });\n        });\n    else\n        (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n    $ZodCheckStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        def.pattern.lastIndex = 0;\n        if (def.pattern.test(payload.value))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"regex\",\n            input: payload.value,\n            pattern: def.pattern.toString(),\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.lowercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.uppercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const escapedRegex = util.escapeRegex(def.includes);\n    const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n    def.pattern = pattern;\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.includes(def.includes, def.position))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"includes\",\n            includes: def.includes,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.startsWith(def.prefix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"starts_with\",\n            prefix: def.prefix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.endsWith(def.suffix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"ends_with\",\n            suffix: def.suffix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n///////////////////////////////////\n/////    $ZodCheckProperty    /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n    if (result.issues.length) {\n        payload.issues.push(...util.prefixIssues(property, result.issues));\n    }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        const result = def.schema._zod.run({\n            value: payload.value[def.property],\n            issues: [],\n        }, {});\n        if (result instanceof Promise) {\n            return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n        }\n        handleCheckPropertyResult(result, payload, def.property);\n        return;\n    };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const mimeSet = new Set(def.mime);\n    inst._zod.onattach.push((inst) => {\n        inst._zod.bag.mime = def.mime;\n    });\n    inst._zod.check = (payload) => {\n        if (mimeSet.has(payload.value.type))\n            return;\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.mime,\n            input: payload.value.type,\n            inst,\n        });\n    };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        payload.value = def.tx(payload.value);\n    };\n});\n", "export class Doc {\n    constructor(args = []) {\n        this.content = [];\n        this.indent = 0;\n        if (this)\n            this.args = args;\n    }\n    indented(fn) {\n        this.indent += 1;\n        fn(this);\n        this.indent -= 1;\n    }\n    write(arg) {\n        if (typeof arg === \"function\") {\n            arg(this, { execution: \"sync\" });\n            arg(this, { execution: \"async\" });\n            return;\n        }\n        const content = arg;\n        const lines = content.split(\"\\n\").filter((x) => x);\n        const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n        const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n        for (const line of dedented) {\n            this.content.push(line);\n        }\n    }\n    compile() {\n        const F = Function;\n        const args = this?.args;\n        const content = this?.content ?? [``];\n        const lines = [...content.map((x) => `  ${x}`)];\n        // console.log(lines.join(\"\\n\"));\n        return new F(...args, lines.join(\"\\n\"));\n    }\n}\n", "export const version = {\n    major: 4,\n    minor: 0,\n    patch: 0,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n    var _a;\n    inst ?? (inst = {});\n    inst._zod.def = def; // set _def property\n    inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n    inst._zod.version = version;\n    const checks = [...(inst._zod.def.checks ?? [])];\n    // if inst is itself a checks.$ZodCheck, run it as a check\n    if (inst._zod.traits.has(\"$ZodCheck\")) {\n        checks.unshift(inst);\n    }\n    //\n    for (const ch of checks) {\n        for (const fn of ch._zod.onattach) {\n            fn(inst);\n        }\n    }\n    if (checks.length === 0) {\n        // deferred initializer\n        // inst._zod.parse is not yet defined\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred?.push(() => {\n            inst._zod.run = inst._zod.parse;\n        });\n    }\n    else {\n        const runChecks = (payload, checks, ctx) => {\n            let isAborted = util.aborted(payload);\n            let asyncResult;\n            for (const ch of checks) {\n                if (ch._zod.def.when) {\n                    const shouldRun = ch._zod.def.when(payload);\n                    if (!shouldRun)\n                        continue;\n                }\n                else if (isAborted) {\n                    continue;\n                }\n                const currLen = payload.issues.length;\n                const _ = ch._zod.check(payload);\n                if (_ instanceof Promise && ctx?.async === false) {\n                    throw new core.$ZodAsyncError();\n                }\n                if (asyncResult || _ instanceof Promise) {\n                    asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n                        await _;\n                        const nextLen = payload.issues.length;\n                        if (nextLen === currLen)\n                            return;\n                        if (!isAborted)\n                            isAborted = util.aborted(payload, currLen);\n                    });\n                }\n                else {\n                    const nextLen = payload.issues.length;\n                    if (nextLen === currLen)\n                        continue;\n                    if (!isAborted)\n                        isAborted = util.aborted(payload, currLen);\n                }\n            }\n            if (asyncResult) {\n                return asyncResult.then(() => {\n                    return payload;\n                });\n            }\n            return payload;\n        };\n        inst._zod.run = (payload, ctx) => {\n            const result = inst._zod.parse(payload, ctx);\n            if (result instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return result.then((result) => runChecks(result, checks, ctx));\n            }\n            return runChecks(result, checks, ctx);\n        };\n    }\n    inst[\"~standard\"] = {\n        validate: (value) => {\n            try {\n                const r = safeParse(inst, value);\n                return r.success ? { value: r.data } : { issues: r.error?.issues };\n            }\n            catch (_) {\n                return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n            }\n        },\n        vendor: \"zod\",\n        version: 1,\n    };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n    inst._zod.parse = (payload, _) => {\n        if (def.coerce)\n            try {\n                payload.value = String(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"string\")\n            return payload;\n        payload.issues.push({\n            expected: \"string\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n    // check initialization must come first\n    checks.$ZodCheckStringFormat.init(inst, def);\n    $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.guid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n    if (def.version) {\n        const versionMap = {\n            v1: 1,\n            v2: 2,\n            v3: 3,\n            v4: 4,\n            v5: 5,\n            v6: 6,\n            v7: 7,\n            v8: 8,\n        };\n        const v = versionMap[def.version];\n        if (v === undefined)\n            throw new Error(`Invalid UUID version: \"${def.version}\"`);\n        def.pattern ?? (def.pattern = regexes.uuid(v));\n    }\n    else\n        def.pattern ?? (def.pattern = regexes.uuid());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.email);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        try {\n            const orig = payload.value;\n            const url = new URL(orig);\n            const href = url.href;\n            if (def.hostname) {\n                def.hostname.lastIndex = 0;\n                if (!def.hostname.test(url.hostname)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid hostname\",\n                        pattern: regexes.hostname.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            if (def.protocol) {\n                def.protocol.lastIndex = 0;\n                if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid protocol\",\n                        pattern: def.protocol.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            // payload.value = url.href;\n            if (!orig.endsWith(\"/\") && href.endsWith(\"/\")) {\n                payload.value = href.slice(0, -1);\n            }\n            else {\n                payload.value = href;\n            }\n            return;\n        }\n        catch (_) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"url\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.emoji());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.nanoid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid2);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ulid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.xid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ksuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.datetime(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.date);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.time(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.duration);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv4);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = `ipv4`;\n    });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv6);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = `ipv6`;\n    });\n    inst._zod.check = (payload) => {\n        try {\n            new URL(`http://[${payload.value}]`);\n            // return;\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"ipv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv4);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        const [address, prefix] = payload.value.split(\"/\");\n        try {\n            if (!prefix)\n                throw new Error();\n            const prefixNum = Number(prefix);\n            if (`${prefixNum}` !== prefix)\n                throw new Error();\n            if (prefixNum < 0 || prefixNum > 128)\n                throw new Error();\n            new URL(`http://[${address}]`);\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"cidrv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64(data) {\n    if (data === \"\")\n        return true;\n    if (data.length % 4 !== 0)\n        return false;\n    try {\n        atob(data);\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        inst._zod.bag.contentEncoding = \"base64\";\n    });\n    inst._zod.check = (payload) => {\n        if (isValidBase64(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64URL(data) {\n    if (!regexes.base64url.test(data))\n        return false;\n    const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n    const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n    return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64url);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        inst._zod.bag.contentEncoding = \"base64url\";\n    });\n    inst._zod.check = (payload) => {\n        if (isValidBase64URL(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64url\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.e164);\n    $ZodStringFormat.init(inst, def);\n});\n//////////////////////////////   ZodJWT   //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n    try {\n        const tokensParts = token.split(\".\");\n        if (tokensParts.length !== 3)\n            return false;\n        const [header] = tokensParts;\n        if (!header)\n            return false;\n        const parsedHeader = JSON.parse(atob(header));\n        if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n            return false;\n        if (!parsedHeader.alg)\n            return false;\n        if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidJWT(payload.value, def.alg))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"jwt\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (def.fn(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: def.format,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Number(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n            return payload;\n        }\n        const received = typeof input === \"number\"\n            ? Number.isNaN(input)\n                ? \"NaN\"\n                : !Number.isFinite(input)\n                    ? \"Infinity\"\n                    : undefined\n            : undefined;\n        payload.issues.push({\n            expected: \"number\",\n            code: \"invalid_type\",\n            input,\n            inst,\n            ...(received ? { received } : {}),\n        });\n        return payload;\n    };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n    checks.$ZodCheckNumberFormat.init(inst, def);\n    $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.boolean;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Boolean(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"boolean\")\n            return payload;\n        payload.issues.push({\n            expected: \"boolean\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.bigint;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = BigInt(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"bigint\")\n            return payload;\n        payload.issues.push({\n            expected: \"bigint\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n    checks.$ZodCheckBigIntFormat.init(inst, def);\n    $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"symbol\")\n            return payload;\n        payload.issues.push({\n            expected: \"symbol\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.undefined;\n    inst._zod.values = new Set([undefined]);\n    inst._zod.optin = \"optional\";\n    inst._zod.optout = \"optional\";\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"undefined\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.null;\n    inst._zod.values = new Set([null]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (input === null)\n            return payload;\n        payload.issues.push({\n            expected: \"null\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        payload.issues.push({\n            expected: \"never\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"void\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce) {\n            try {\n                payload.value = new Date(payload.value);\n            }\n            catch (_err) { }\n        }\n        const input = payload.value;\n        const isDate = input instanceof Date;\n        const isValidDate = isDate && !Number.isNaN(input.getTime());\n        if (isValidDate)\n            return payload;\n        payload.issues.push({\n            expected: \"date\",\n            code: \"invalid_type\",\n            input,\n            ...(isDate ? { received: \"Invalid Date\" } : {}),\n            inst,\n        });\n        return payload;\n    };\n});\nfunction handleArrayResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                expected: \"array\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = Array(input.length);\n        const proms = [];\n        for (let i = 0; i < input.length; i++) {\n            const item = input[i];\n            const result = def.element._zod.run({\n                value: item,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n            }\n            else {\n                handleArrayResult(result, payload, i);\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload; //handleArrayResultsAsync(parseResults, final);\n    };\n});\nfunction handleObjectResult(result, final, key) {\n    // if(isOptional)\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(key, result.issues));\n    }\n    final.value[key] = result.value;\n}\nfunction handleOptionalObjectResult(result, final, key, input) {\n    if (result.issues.length) {\n        // validation failed against value schema\n        if (input[key] === undefined) {\n            // if input was undefined, ignore the error\n            if (key in input) {\n                final.value[key] = undefined;\n            }\n            else {\n                final.value[key] = result.value;\n            }\n        }\n        else {\n            final.issues.push(...util.prefixIssues(key, result.issues));\n        }\n    }\n    else if (result.value === undefined) {\n        // validation returned `undefined`\n        if (key in input)\n            final.value[key] = undefined;\n    }\n    else {\n        // non-undefined value\n        final.value[key] = result.value;\n    }\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodType.init(inst, def);\n    const _normalized = util.cached(() => {\n        const keys = Object.keys(def.shape);\n        for (const k of keys) {\n            if (!(def.shape[k] instanceof $ZodType)) {\n                throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n            }\n        }\n        const okeys = util.optionalKeys(def.shape);\n        return {\n            shape: def.shape,\n            keys,\n            keySet: new Set(keys),\n            numKeys: keys.length,\n            optionalKeys: new Set(okeys),\n        };\n    });\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const shape = def.shape;\n        const propValues = {};\n        for (const key in shape) {\n            const field = shape[key]._zod;\n            if (field.values) {\n                propValues[key] ?? (propValues[key] = new Set());\n                for (const v of field.values)\n                    propValues[key].add(v);\n            }\n        }\n        return propValues;\n    });\n    const generateFastpass = (shape) => {\n        const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n        const normalized = _normalized.value;\n        const parseStr = (key) => {\n            const k = util.esc(key);\n            return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n        };\n        doc.write(`const input = payload.value;`);\n        const ids = Object.create(null);\n        let counter = 0;\n        for (const key of normalized.keys) {\n            ids[key] = `key_${counter++}`;\n        }\n        // A: preserve key order {\n        doc.write(`const newResult = {}`);\n        for (const key of normalized.keys) {\n            if (normalized.optionalKeys.has(key)) {\n                const id = ids[key];\n                doc.write(`const ${id} = ${parseStr(key)};`);\n                const k = util.esc(key);\n                doc.write(`\n        if (${id}.issues.length) {\n          if (input[${k}] === undefined) {\n            if (${k} in input) {\n              newResult[${k}] = undefined;\n            }\n          } else {\n            payload.issues = payload.issues.concat(\n              ${id}.issues.map((iss) => ({\n                ...iss,\n                path: iss.path ? [${k}, ...iss.path] : [${k}],\n              }))\n            );\n          }\n        } else if (${id}.value === undefined) {\n          if (${k} in input) newResult[${k}] = undefined;\n        } else {\n          newResult[${k}] = ${id}.value;\n        }\n        `);\n            }\n            else {\n                const id = ids[key];\n                //  const id = ids[key];\n                doc.write(`const ${id} = ${parseStr(key)};`);\n                doc.write(`\n          if (${id}.issues.length) payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${util.esc(key)}, ...iss.path] : [${util.esc(key)}]\n          })));`);\n                doc.write(`newResult[${util.esc(key)}] = ${id}.value`);\n            }\n        }\n        doc.write(`payload.value = newResult;`);\n        doc.write(`return payload;`);\n        const fn = doc.compile();\n        return (payload, ctx) => fn(shape, payload, ctx);\n    };\n    let fastpass;\n    const isObject = util.isObject;\n    const jit = !core.globalConfig.jitless;\n    const allowsEval = util.allowsEval;\n    const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n            // always synchronous\n            if (!fastpass)\n                fastpass = generateFastpass(def.shape);\n            payload = fastpass(payload, ctx);\n        }\n        else {\n            payload.value = {};\n            const shape = value.shape;\n            for (const key of value.keys) {\n                const el = shape[key];\n                // do not add omitted optional keys\n                // if (!(key in input)) {\n                //   if (optionalKeys.has(key)) continue;\n                //   payload.issues.push({\n                //     code: \"invalid_type\",\n                //     path: [key],\n                //     expected: \"nonoptional\",\n                //     note: `Missing required key: \"${key}\"`,\n                //     input,\n                //     inst,\n                //   });\n                // }\n                const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n                const isOptional = el._zod.optin === \"optional\" && el._zod.optout === \"optional\";\n                if (r instanceof Promise) {\n                    proms.push(r.then((r) => isOptional ? handleOptionalObjectResult(r, payload, key, input) : handleObjectResult(r, payload, key)));\n                }\n                else if (isOptional) {\n                    handleOptionalObjectResult(r, payload, key, input);\n                }\n                else {\n                    handleObjectResult(r, payload, key);\n                }\n            }\n        }\n        if (!catchall) {\n            // return payload;\n            return proms.length ? Promise.all(proms).then(() => payload) : payload;\n        }\n        const unrecognized = [];\n        // iterate over input keys\n        const keySet = value.keySet;\n        const _catchall = catchall._zod;\n        const t = _catchall.def.type;\n        for (const key of Object.keys(input)) {\n            if (keySet.has(key))\n                continue;\n            if (t === \"never\") {\n                unrecognized.push(key);\n                continue;\n            }\n            const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((r) => handleObjectResult(r, payload, key)));\n            }\n            else {\n                handleObjectResult(r, payload, key);\n            }\n        }\n        if (unrecognized.length) {\n            payload.issues.push({\n                code: \"unrecognized_keys\",\n                keys: unrecognized,\n                input,\n                inst,\n            });\n        }\n        if (!proms.length)\n            return payload;\n        return Promise.all(proms).then(() => {\n            return payload;\n        });\n    };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n    for (const result of results) {\n        if (result.issues.length === 0) {\n            final.value = result.value;\n            return final;\n        }\n    }\n    final.issues.push({\n        code: \"invalid_union\",\n        input: final.value,\n        inst,\n        errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n    });\n    return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"values\", () => {\n        if (def.options.every((o) => o._zod.values)) {\n            return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n        }\n        return undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        if (def.options.every((o) => o._zod.pattern)) {\n            const patterns = def.options.map((o) => o._zod.pattern);\n            return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n        }\n        return undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                if (result.issues.length === 0)\n                    return result;\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n    $ZodUnion.init(inst, def);\n    const _super = inst._zod.parse;\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const propValues = {};\n        for (const option of def.options) {\n            const pv = option._zod.propValues;\n            if (!pv || Object.keys(pv).length === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n            for (const [k, v] of Object.entries(pv)) {\n                if (!propValues[k])\n                    propValues[k] = new Set();\n                for (const val of v) {\n                    propValues[k].add(val);\n                }\n            }\n        }\n        return propValues;\n    });\n    const disc = util.cached(() => {\n        const opts = def.options;\n        const map = new Map();\n        for (const o of opts) {\n            const values = o._zod.propValues[def.discriminator];\n            if (!values || values.size === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n            for (const v of values) {\n                if (map.has(v)) {\n                    throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n                }\n                map.set(v, o);\n            }\n        }\n        return map;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isObject(input)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"object\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const opt = disc.value.get(input?.[def.discriminator]);\n        if (opt) {\n            return opt._zod.run(payload, ctx);\n        }\n        if (def.unionFallback) {\n            return _super(payload, ctx);\n        }\n        // no matching discriminator\n        payload.issues.push({\n            code: \"invalid_union\",\n            errors: [],\n            note: \"No matching discriminator\",\n            input,\n            path: [def.discriminator],\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n        const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n        const async = left instanceof Promise || right instanceof Promise;\n        if (async) {\n            return Promise.all([left, right]).then(([left, right]) => {\n                return handleIntersectionResults(payload, left, right);\n            });\n        }\n        return handleIntersectionResults(payload, left, right);\n    };\n});\nfunction mergeValues(a, b) {\n    // const aType = parse.t(a);\n    // const bType = parse.t(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    if (a instanceof Date && b instanceof Date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    if (util.isPlainObject(a) && util.isPlainObject(b)) {\n        const bKeys = Object.keys(b);\n        const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    if (Array.isArray(a) && Array.isArray(b)) {\n        if (a.length !== b.length) {\n            return { valid: false, mergeErrorPath: [] };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n    if (left.issues.length) {\n        result.issues.push(...left.issues);\n    }\n    if (right.issues.length) {\n        result.issues.push(...right.issues);\n    }\n    if (util.aborted(result))\n        return result;\n    const merged = mergeValues(left.value, right.value);\n    if (!merged.valid) {\n        throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n    }\n    result.value = merged.data;\n    return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const items = def.items;\n    const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"tuple\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        payload.value = [];\n        const proms = [];\n        if (!def.rest) {\n            const tooBig = input.length > items.length;\n            const tooSmall = input.length < optStart - 1;\n            if (tooBig || tooSmall) {\n                payload.issues.push({\n                    input,\n                    inst,\n                    origin: \"array\",\n                    ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n                });\n                return payload;\n            }\n        }\n        let i = -1;\n        for (const item of items) {\n            i++;\n            if (i >= input.length)\n                if (i >= optStart)\n                    continue;\n            const result = item._zod.run({\n                value: input[i],\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n            }\n            else {\n                handleTupleResult(result, payload, i);\n            }\n        }\n        if (def.rest) {\n            const rest = input.slice(items.length);\n            for (const el of rest) {\n                i++;\n                const result = def.rest._zod.run({\n                    value: el,\n                    issues: [],\n                }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n                }\n                else {\n                    handleTupleResult(result, payload, i);\n                }\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleTupleResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isPlainObject(input)) {\n            payload.issues.push({\n                expected: \"record\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        if (def.keyType._zod.values) {\n            const values = def.keyType._zod.values;\n            payload.value = {};\n            for (const key of values) {\n                if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n                    const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                    if (result instanceof Promise) {\n                        proms.push(result.then((result) => {\n                            if (result.issues.length) {\n                                payload.issues.push(...util.prefixIssues(key, result.issues));\n                            }\n                            payload.value[key] = result.value;\n                        }));\n                    }\n                    else {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[key] = result.value;\n                    }\n                }\n            }\n            let unrecognized;\n            for (const key in input) {\n                if (!values.has(key)) {\n                    unrecognized = unrecognized ?? [];\n                    unrecognized.push(key);\n                }\n            }\n            if (unrecognized && unrecognized.length > 0) {\n                payload.issues.push({\n                    code: \"unrecognized_keys\",\n                    input,\n                    inst,\n                    keys: unrecognized,\n                });\n            }\n        }\n        else {\n            payload.value = {};\n            for (const key of Reflect.ownKeys(input)) {\n                if (key === \"__proto__\")\n                    continue;\n                const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                if (keyResult instanceof Promise) {\n                    throw new Error(\"Async schemas not supported in object keys currently\");\n                }\n                if (keyResult.issues.length) {\n                    payload.issues.push({\n                        origin: \"record\",\n                        code: \"invalid_key\",\n                        issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                        input: key,\n                        path: [key],\n                        inst,\n                    });\n                    payload.value[keyResult.value] = keyResult.value;\n                    continue;\n                }\n                const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[keyResult.value] = result.value;\n                    }));\n                }\n                else {\n                    if (result.issues.length) {\n                        payload.issues.push(...util.prefixIssues(key, result.issues));\n                    }\n                    payload.value[keyResult.value] = result.value;\n                }\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload;\n    };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Map)) {\n            payload.issues.push({\n                expected: \"map\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Map();\n        for (const [key, value] of input) {\n            const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n            const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n            if (keyResult instanceof Promise || valueResult instanceof Promise) {\n                proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n                    handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n                }));\n            }\n            else {\n                handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n    if (keyResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, keyResult.issues));\n        }\n        else {\n            final.issues.push({\n                origin: \"map\",\n                code: \"invalid_key\",\n                input,\n                inst,\n                issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    if (valueResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, valueResult.issues));\n        }\n        else {\n            final.issues.push({\n                origin: \"map\",\n                code: \"invalid_element\",\n                input,\n                inst,\n                key: key,\n                issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Set)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"set\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Set();\n        for (const item of input) {\n            const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleSetResult(result, payload)));\n            }\n            else\n                handleSetResult(result, payload);\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleSetResult(result, final) {\n    if (result.issues.length) {\n        final.issues.push(...result.issues);\n    }\n    final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const values = util.getEnumValues(def.entries);\n    inst._zod.values = new Set(values);\n    inst._zod.pattern = new RegExp(`^(${values\n        .filter((k) => util.propertyKeyTypes.has(typeof k))\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (inst._zod.values.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.values = new Set(def.values);\n    inst._zod.pattern = new RegExp(`^(${def.values\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? o.toString() : String(o)))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (inst._zod.values.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (input instanceof File)\n            return payload;\n        payload.issues.push({\n            expected: \"file\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const _out = def.transform(payload.value, payload);\n        if (_ctx.async) {\n            const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        if (_out instanceof Promise) {\n            throw new core.$ZodAsyncError();\n        }\n        payload.value = _out;\n        return payload;\n    };\n});\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    inst._zod.optout = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        if (def.innerType._zod.optin === \"optional\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        if (payload.value === undefined) {\n            return payload;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n    });\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        if (payload.value === null)\n            return payload;\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // inst._zod.qin = \"true\";\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n            /**\n             * $ZodDefault always returns the default value immediately.\n             * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe.   */\n            return payload;\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleDefaultResult(result, def));\n        }\n        return handleDefaultResult(result, def);\n    };\n});\nfunction handleDefaultResult(payload, def) {\n    if (payload.value === undefined) {\n        payload.value = def.defaultValue;\n    }\n    return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => {\n        const v = def.innerType._zod.values;\n        return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleNonOptionalResult(result, inst));\n        }\n        return handleNonOptionalResult(result, inst);\n    };\n});\nfunction handleNonOptionalResult(payload, inst) {\n    if (!payload.issues.length && payload.value === undefined) {\n        payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: payload.value,\n            inst,\n        });\n    }\n    return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.issues.length === 0;\n                return payload;\n            });\n        }\n        payload.value = result.issues.length === 0;\n        return payload;\n    };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.value;\n                if (result.issues.length) {\n                    payload.value = def.catchValue({\n                        ...payload,\n                        error: {\n                            issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                        },\n                        input: payload.value,\n                    });\n                    payload.issues = [];\n                }\n                return payload;\n            });\n        }\n        payload.value = result.value;\n        if (result.issues.length) {\n            payload.value = def.catchValue({\n                ...payload,\n                error: {\n                    issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                },\n                input: payload.value,\n            });\n            payload.issues = [];\n        }\n        return payload;\n    };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"nan\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n    inst._zod.parse = (payload, ctx) => {\n        const left = def.in._zod.run(payload, ctx);\n        if (left instanceof Promise) {\n            return left.then((left) => handlePipeResult(left, def, ctx));\n        }\n        return handlePipeResult(left, def, ctx);\n    };\n});\nfunction handlePipeResult(left, def, ctx) {\n    if (util.aborted(left)) {\n        return left;\n    }\n    return def.out._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then(handleReadonlyResult);\n        }\n        return handleReadonlyResult(result);\n    };\n});\nfunction handleReadonlyResult(payload) {\n    payload.value = Object.freeze(payload.value);\n    return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const regexParts = [];\n    for (const part of def.parts) {\n        if (part instanceof $ZodType) {\n            if (!part._zod.pattern) {\n                // if (!source)\n                throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n            }\n            const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n            if (!source)\n                throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n            const start = source.startsWith(\"^\") ? 1 : 0;\n            const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n            regexParts.push(source.slice(start, end));\n        }\n        else if (part === null || util.primitiveTypes.has(typeof part)) {\n            regexParts.push(util.escapeRegex(`${part}`));\n        }\n        else {\n            throw new Error(`Invalid template literal part: ${part}`);\n        }\n    }\n    inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"string\") {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"template_literal\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        inst._zod.pattern.lastIndex = 0;\n        if (!inst._zod.pattern.test(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                code: \"invalid_format\",\n                format: \"template_literal\",\n                pattern: inst._zod.pattern.source,\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n    };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n    util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n    util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n    util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout);\n    inst._zod.parse = (payload, ctx) => {\n        const inner = inst._zod.innerType;\n        return inner._zod.run(payload, ctx);\n    };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n    checks.$ZodCheck.init(inst, def);\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _) => {\n        return payload;\n    };\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const r = def.fn(input);\n        if (r instanceof Promise) {\n            return r.then((r) => handleRefineResult(r, payload, input, inst));\n        }\n        handleRefineResult(r, payload, input, inst);\n        return;\n    };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n    if (!result) {\n        const _iss = {\n            code: \"custom\",\n            input,\n            inst, // incorporates params.error into issue reporting\n            path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n            continue: !inst._zod.def.abort,\n            // params: inst._zod.def.params,\n        };\n        if (inst._zod.def.params)\n            _iss.params = inst._zod.def.params;\n        payload.issues.push(util.issue(_iss));\n    }\n}\n", "export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as id } from \"./id.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062D\u0631\u0641\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        file: { unit: \"\u0628\u0627\u064A\u062A\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        array: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        set: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0645\u062F\u062E\u0644\",\n        email: \"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n        url: \"\u0631\u0627\u0628\u0637\",\n        emoji: \"\u0625\u064A\u0645\u0648\u062C\u064A\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        date: \"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        time: \"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        duration: \"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        ipv4: \"\u0639\u0646\u0648\u0627\u0646 IPv4\",\n        ipv6: \"\u0639\u0646\u0648\u0627\u0646 IPv6\",\n        cidrv4: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4\",\n        cidrv6: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6\",\n        base64: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded\",\n        base64url: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded\",\n        json_string: \"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON\",\n        e164: \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0645\u062F\u062E\u0644\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${issue.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"}`;\n                return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 \"${issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`;\n            }\n            case \"not_multiple_of\":\n                return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u0645\u0639\u0631\u0641${issue.keys.length > 1 ? \"\u0627\u062A\" : \"\"} \u063A\u0631\u064A\u0628${issue.keys.length > 1 ? \"\u0629\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n            case \"invalid_key\":\n                return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n            case \"invalid_element\":\n                return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n            default:\n                return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"simvol\", verb: \"olmal\u0131d\u0131r\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n        array: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n        set: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${issue.expected}, daxil olan ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Yanl\u0131\u015F se\u00E7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.prefix}\" il\u0259 ba\u015Flamal\u0131d\u0131r`;\n                if (_issue.format === \"ends_with\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.suffix}\" il\u0259 bitm\u0259lidir`;\n                if (_issue.format === \"includes\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.includes}\" daxil olmal\u0131d\u0131r`;\n                if (_issue.format === \"regex\")\n                    return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;\n                return `Yanl\u0131\u015F ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Yanl\u0131\u015F \u0259d\u0259d: ${issue.divisor} il\u0259 b\u00F6l\u00FCn\u0259 bil\u0259n olmal\u0131d\u0131r`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan a\u00E7ar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} daxilind\u0259 yanl\u0131\u015F a\u00E7ar`;\n            case \"invalid_union\":\n                return \"Yanl\u0131\u015F d\u0259y\u0259r\";\n            case \"invalid_element\":\n                return `${issue.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;\n            default:\n                return `Yanl\u0131\u015F d\u0259y\u0259r`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"\u0441\u0456\u043C\u0432\u0430\u043B\",\n                few: \"\u0441\u0456\u043C\u0432\u0430\u043B\u044B\",\n                many: \"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        array: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        set: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        file: {\n            unit: {\n                one: \"\u0431\u0430\u0439\u0442\",\n                few: \"\u0431\u0430\u0439\u0442\u044B\",\n                many: \"\u0431\u0430\u0439\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u043B\u0456\u043A\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u043C\u0430\u0441\u0456\u045E\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0443\u0432\u043E\u0434\",\n        email: \"email \u0430\u0434\u0440\u0430\u0441\",\n        url: \"URL\",\n        emoji: \"\u044D\u043C\u043E\u0434\u0437\u0456\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441\",\n        date: \"ISO \u0434\u0430\u0442\u0430\",\n        time: \"ISO \u0447\u0430\u0441\",\n        duration: \"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0430\u0441\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0430\u0441\",\n        cidrv4: \"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n        cidrv6: \"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n        base64: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64\",\n        base64url: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url\",\n        json_string: \"JSON \u0440\u0430\u0434\u043E\u043A\",\n        e164: \"\u043D\u0443\u043C\u0430\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0443\u0432\u043E\u0434\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${issue.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue.keys.length > 1 ? \"\u043A\u043B\u044E\u0447\u044B\" : \"\u043A\u043B\u044E\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434\";\n            case \"invalid_element\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue.origin}`;\n            default:\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"car\u00E0cters\", verb: \"contenir\" },\n        file: { unit: \"bytes\", verb: \"contenir\" },\n        array: { unit: \"elements\", verb: \"contenir\" },\n        set: { unit: \"elements\", verb: \"contenir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"entrada\",\n        email: \"adre\u00E7a electr\u00F2nica\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"durada ISO\",\n        ipv4: \"adre\u00E7a IPv4\",\n        ipv6: \"adre\u00E7a IPv6\",\n        cidrv4: \"rang IPv4\",\n        cidrv6: \"rang IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"cadena codificada en base64url\",\n        json_string: \"cadena JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Tipus inv\u00E0lid: s'esperava ${issue.expected}, s'ha rebut ${parsedType(issue.input)}`;\n            // return `Tipus inv\u00E0lid: s'esperava ${issue.expected}, s'ha rebut ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Valor inv\u00E0lid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opci\u00F3 inv\u00E0lida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"com a m\u00E0xim\" : \"menys de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingu\u00E9s ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"com a m\u00EDnim\" : \"m\u00E9s de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Massa petit: s'esperava que ${issue.origin} contingu\u00E9s ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Format inv\u00E0lid: ha de comen\u00E7ar amb \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Format inv\u00E0lid: ha d'acabar amb \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Format inv\u00E0lid: ha d'incloure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Format inv\u00E0lid: ha de coincidir amb el patr\u00F3 ${_issue.pattern}`;\n                return `Format inv\u00E0lid per a ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E0lid: ha de ser m\u00FAltiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Clau inv\u00E0lida a ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E0lida\"; // Could also be \"Tipus d'uni\u00F3 inv\u00E0lid\" but \"Entrada inv\u00E0lida\" is more general\n            case \"invalid_element\":\n                return `Element inv\u00E0lid a ${issue.origin}`;\n            default:\n                return `Entrada inv\u00E0lida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znak\u016F\", verb: \"m\u00EDt\" },\n        file: { unit: \"bajt\u016F\", verb: \"m\u00EDt\" },\n        array: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n        set: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u010D\u00EDslo\";\n            }\n            case \"string\": {\n                return \"\u0159et\u011Bzec\";\n            }\n            case \"boolean\": {\n                return \"boolean\";\n            }\n            case \"bigint\": {\n                return \"bigint\";\n            }\n            case \"function\": {\n                return \"funkce\";\n            }\n            case \"symbol\": {\n                return \"symbol\";\n            }\n            case \"undefined\": {\n                return \"undefined\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"pole\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"regul\u00E1rn\u00ED v\u00FDraz\",\n        email: \"e-mailov\u00E1 adresa\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"datum a \u010Das ve form\u00E1tu ISO\",\n        date: \"datum ve form\u00E1tu ISO\",\n        time: \"\u010Das ve form\u00E1tu ISO\",\n        duration: \"doba trv\u00E1n\u00ED ISO\",\n        ipv4: \"IPv4 adresa\",\n        ipv6: \"IPv6 adresa\",\n        cidrv4: \"rozsah IPv4\",\n        cidrv6: \"rozsah IPv6\",\n        base64: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64\",\n        base64url: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64url\",\n        json_string: \"\u0159et\u011Bzec ve form\u00E1tu JSON\",\n        e164: \"\u010D\u00EDslo E.164\",\n        jwt: \"JWT\",\n        template_literal: \"vstup\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${issue.expected}, obdr\u017Eeno ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neplatn\u00E1 mo\u017Enost: o\u010Dek\u00E1v\u00E1na jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n                }\n                return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n                }\n                return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED za\u010D\u00EDnat na \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED kon\u010Dit na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED obsahovat \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED odpov\u00EDdat vzoru ${_issue.pattern}`;\n                return `Neplatn\u00FD form\u00E1t ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neplatn\u00E9 \u010D\u00EDslo: mus\u00ED b\u00FDt n\u00E1sobkem ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nezn\u00E1m\u00E9 kl\u00ED\u010De: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neplatn\u00FD kl\u00ED\u010D v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neplatn\u00FD vstup\";\n            case \"invalid_element\":\n                return `Neplatn\u00E1 hodnota v ${issue.origin}`;\n            default:\n                return `Neplatn\u00FD vstup`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"Zeichen\", verb: \"zu haben\" },\n        file: { unit: \"Bytes\", verb: \"zu haben\" },\n        array: { unit: \"Elemente\", verb: \"zu haben\" },\n        set: { unit: \"Elemente\", verb: \"zu haben\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"Zahl\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"Array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"Eingabe\",\n        email: \"E-Mail-Adresse\",\n        url: \"URL\",\n        emoji: \"Emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-Datum und -Uhrzeit\",\n        date: \"ISO-Datum\",\n        time: \"ISO-Uhrzeit\",\n        duration: \"ISO-Dauer\",\n        ipv4: \"IPv4-Adresse\",\n        ipv6: \"IPv6-Adresse\",\n        cidrv4: \"IPv4-Bereich\",\n        cidrv6: \"IPv6-Bereich\",\n        base64: \"Base64-codierter String\",\n        base64url: \"Base64-URL-codierter String\",\n        json_string: \"JSON-String\",\n        e164: \"E.164-Nummer\",\n        jwt: \"JWT\",\n        template_literal: \"Eingabe\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Ung\u00FCltige Eingabe: erwartet ${issue.expected}, erhalten ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ung\u00FCltige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ung\u00FCltige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n                return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n                }\n                return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ung\u00FCltiger String: muss mit \"${_issue.prefix}\" beginnen`;\n                if (_issue.format === \"ends_with\")\n                    return `Ung\u00FCltiger String: muss mit \"${_issue.suffix}\" enden`;\n                if (_issue.format === \"includes\")\n                    return `Ung\u00FCltiger String: muss \"${_issue.includes}\" enthalten`;\n                if (_issue.format === \"regex\")\n                    return `Ung\u00FCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n                return `Ung\u00FCltig: ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ung\u00FCltige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Unbekannte Schl\u00FCssel\" : \"Unbekannter Schl\u00FCssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ung\u00FCltiger Schl\u00FCssel in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ung\u00FCltige Eingabe\";\n            case \"invalid_element\":\n                return `Ung\u00FCltiger Wert in ${issue.origin}`;\n            default:\n                return `Ung\u00FCltige Eingabe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nexport const parsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"NaN\" : \"number\";\n        }\n        case \"object\": {\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                return data.constructor.name;\n            }\n        }\n    }\n    return t;\n};\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"characters\", verb: \"to have\" },\n        file: { unit: \"bytes\", verb: \"to have\" },\n        array: { unit: \"items\", verb: \"to have\" },\n        set: { unit: \"items\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const Nouns = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Invalid input: expected ${issue.expected}, received ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Invalid string: must start with \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Invalid string: must end with \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Invalid string: must include \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Invalid string: must match pattern ${_issue.pattern}`;\n                return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Invalid number: must be a multiple of ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Invalid key in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Invalid input\";\n            case \"invalid_element\":\n                return `Invalid value in ${issue.origin}`;\n            default:\n                return `Invalid input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nexport const parsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"NaN\" : \"nombro\";\n        }\n        case \"object\": {\n            if (Array.isArray(data)) {\n                return \"tabelo\";\n            }\n            if (data === null) {\n                return \"senvalora\";\n            }\n            if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                return data.constructor.name;\n            }\n        }\n    }\n    return t;\n};\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karaktrojn\", verb: \"havi\" },\n        file: { unit: \"bajtojn\", verb: \"havi\" },\n        array: { unit: \"elementojn\", verb: \"havi\" },\n        set: { unit: \"elementojn\", verb: \"havi\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const Nouns = {\n        regex: \"enigo\",\n        email: \"retadreso\",\n        url: \"URL\",\n        emoji: \"emo\u011Dio\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datotempo\",\n        date: \"ISO-dato\",\n        time: \"ISO-tempo\",\n        duration: \"ISO-da\u016Dro\",\n        ipv4: \"IPv4-adreso\",\n        ipv6: \"IPv6-adreso\",\n        cidrv4: \"IPv4-rango\",\n        cidrv6: \"IPv6-rango\",\n        base64: \"64-ume kodita karaktraro\",\n        base64url: \"URL-64-ume kodita karaktraro\",\n        json_string: \"JSON-karaktraro\",\n        e164: \"E.164-nombro\",\n        jwt: \"JWT\",\n        template_literal: \"enigo\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Nevalida enigo: atendi\u011Dis ${issue.expected}, ricevi\u011Dis ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nevalida enigo: atendi\u011Dis ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nevalida opcio: atendi\u011Dis unu el ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n                return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Tro malgranda: atendi\u011Dis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Tro malgranda: atendi\u011Dis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nevalida karaktraro: devas komenci\u011Di per \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nevalida karaktraro: devas fini\u011Di per \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n                return `Nevalida ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} \u015Dlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nevalida \u015Dlosilo en ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nevalida enigo\";\n            case \"invalid_element\":\n                return `Nevalida valoro en ${issue.origin}`;\n            default:\n                return `Nevalida enigo`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"tener\" },\n        file: { unit: \"bytes\", verb: \"tener\" },\n        array: { unit: \"elementos\", verb: \"tener\" },\n        set: { unit: \"elementos\", verb: \"tener\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"n\u00FAmero\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"arreglo\";\n                }\n                if (data === null) {\n                    return \"nulo\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"entrada\",\n        email: \"direcci\u00F3n de correo electr\u00F3nico\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"fecha y hora ISO\",\n        date: \"fecha ISO\",\n        time: \"hora ISO\",\n        duration: \"duraci\u00F3n ISO\",\n        ipv4: \"direcci\u00F3n IPv4\",\n        ipv6: \"direcci\u00F3n IPv6\",\n        cidrv4: \"rango IPv4\",\n        cidrv6: \"rango IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"URL codificada en base64\",\n        json_string: \"cadena JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Entrada inv\u00E1lida: se esperaba ${issue.expected}, recibido ${parsedType(issue.input)}`;\n            // return `Entrada inv\u00E1lida: se esperaba ${issue.expected}, recibido ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inv\u00E1lida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opci\u00F3n inv\u00E1lida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Demasiado grande: se esperaba que ${issue.origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Demasiado grande: se esperaba que ${issue.origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Demasiado peque\u00F1o: se esperaba que ${issue.origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Demasiado peque\u00F1o: se esperaba que ${issue.origin} fuera ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Cadena inv\u00E1lida: debe comenzar con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Cadena inv\u00E1lida: debe terminar en \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cadena inv\u00E1lida: debe incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cadena inv\u00E1lida: debe coincidir con el patr\u00F3n ${_issue.pattern}`;\n                return `Inv\u00E1lido ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E1lido: debe ser m\u00FAltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Llave inv\u00E1lida en ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E1lida\";\n            case \"invalid_element\":\n                return `Valor inv\u00E1lido en ${issue.origin}`;\n            default:\n                return `Entrada inv\u00E1lida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        file: { unit: \"\u0628\u0627\u06CC\u062A\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        array: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        set: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0639\u062F\u062F\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u0622\u0631\u0627\u06CC\u0647\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0648\u0631\u0648\u062F\u06CC\",\n        email: \"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644\",\n        url: \"URL\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        date: \"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648\",\n        time: \"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        duration: \"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        ipv4: \"IPv4 \u0622\u062F\u0631\u0633\",\n        ipv6: \"IPv6 \u0622\u062F\u0631\u0633\",\n        cidrv4: \"IPv4 \u062F\u0627\u0645\u0646\u0647\",\n        cidrv6: \"IPv6 \u062F\u0627\u0645\u0646\u0647\",\n        base64: \"base64-encoded \u0631\u0634\u062A\u0647\",\n        base64url: \"base64url-encoded \u0631\u0634\u062A\u0647\",\n        json_string: \"JSON \u0631\u0634\u062A\u0647\",\n        e164: \"E.164 \u0639\u062F\u062F\",\n        jwt: \"JWT\",\n        template_literal: \"\u0648\u0631\u0648\u062F\u06CC\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${issue.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${parsedType(issue.input)} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${util.stringifyPrimitive(issue.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n                }\n                return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"} \u0628\u0627\u0634\u062F`;\n                }\n                return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0628\u0627\u0634\u062F`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`;\n                }\n                return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0628\u0627\u0634\u062F`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.prefix}\" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.suffix}\" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 \"${_issue.includes}\" \u0628\u0627\u0634\u062F`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;\n                }\n                return `${Nouns[_issue.format] ?? issue.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n            }\n            case \"not_multiple_of\":\n                return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue.divisor} \u0628\u0627\u0634\u062F`;\n            case \"unrecognized_keys\":\n                return `\u06A9\u0644\u06CC\u062F${issue.keys.length > 1 ? \"\u0647\u0627\u06CC\" : \"\"} \u0646\u0627\u0634\u0646\u0627\u0633: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue.origin}`;\n            case \"invalid_union\":\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n            case \"invalid_element\":\n                return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue.origin}`;\n            default:\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"merkki\u00E4\", subject: \"merkkijonon\" },\n        file: { unit: \"tavua\", subject: \"tiedoston\" },\n        array: { unit: \"alkiota\", subject: \"listan\" },\n        set: { unit: \"alkiota\", subject: \"joukon\" },\n        number: { unit: \"\", subject: \"luvun\" },\n        bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n        int: { unit: \"\", subject: \"kokonaisluvun\" },\n        date: { unit: \"\", subject: \"p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4n\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"s\u00E4\u00E4nn\u00F6llinen lauseke\",\n        email: \"s\u00E4hk\u00F6postiosoite\",\n        url: \"URL-osoite\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-aikaleima\",\n        date: \"ISO-p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4\",\n        time: \"ISO-aika\",\n        duration: \"ISO-kesto\",\n        ipv4: \"IPv4-osoite\",\n        ipv6: \"IPv6-osoite\",\n        cidrv4: \"IPv4-alue\",\n        cidrv6: \"IPv6-alue\",\n        base64: \"base64-koodattu merkkijono\",\n        base64url: \"base64url-koodattu merkkijono\",\n        json_string: \"JSON-merkkijono\",\n        e164: \"E.164-luku\",\n        jwt: \"JWT\",\n        template_literal: \"templaattimerkkijono\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Virheellinen tyyppi: odotettiin ${issue.expected}, oli ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Virheellinen valinta: t\u00E4ytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian suuri: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian suuri: arvon t\u00E4ytyy olla ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian pieni: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian pieni: arvon t\u00E4ytyy olla ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy alkaa \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy loppua \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy sis\u00E4lt\u00E4\u00E4 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\") {\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy vastata s\u00E4\u00E4nn\u00F6llist\u00E4 lauseketta ${_issue.pattern}`;\n                }\n                return `Virheellinen ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Virheellinen luku: t\u00E4ytyy olla luvun ${issue.divisor} monikerta`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return \"Virheellinen avain tietueessa\";\n            case \"invalid_union\":\n                return \"Virheellinen unioni\";\n            case \"invalid_element\":\n                return \"Virheellinen arvo joukossa\";\n            default:\n                return `Virheellinen sy\u00F6te`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n        set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"nombre\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"tableau\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"entr\u00E9e\",\n        email: \"adresse e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date et heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"dur\u00E9e ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"cha\u00EEne encod\u00E9e en base64\",\n        base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n        json_string: \"cha\u00EEne JSON\",\n        e164: \"num\u00E9ro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entr\u00E9e\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Entr\u00E9e invalide : ${issue.expected} attendu, ${parsedType(issue.input)} re\u00E7u`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entr\u00E9e invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n                return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00E9l\u00E9ment(s)\"}`;\n                return `Trop grand : ${issue.origin ?? \"valeur\"} doit \u00EAtre ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Trop petit : ${issue.origin} doit \u00EAtre ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cha\u00EEne invalide : doit correspondre au mod\u00E8le ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Cl\u00E9 invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entr\u00E9e invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entr\u00E9e invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n        set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"entr\u00E9e\",\n        email: \"adresse courriel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date-heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"dur\u00E9e ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"cha\u00EEne encod\u00E9e en base64\",\n        base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n        json_string: \"cha\u00EEne JSON\",\n        e164: \"num\u00E9ro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entr\u00E9e\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Entr\u00E9e invalide : attendu ${issue.expected}, re\u00E7u ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entr\u00E9e invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u2264\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u2265\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cha\u00EEne invalide : doit correspondre au motif ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Cl\u00E9 invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entr\u00E9e invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entr\u00E9e invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u05D0\u05D5\u05EA\u05D9\u05D5\u05EA\", verb: \"\u05DC\u05DB\u05DC\u05D5\u05DC\" },\n        file: { unit: \"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD\", verb: \"\u05DC\u05DB\u05DC\u05D5\u05DC\" },\n        array: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", verb: \"\u05DC\u05DB\u05DC\u05D5\u05DC\" },\n        set: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", verb: \"\u05DC\u05DB\u05DC\u05D5\u05DC\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u05E7\u05DC\u05D8\",\n        email: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC\",\n        url: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA\",\n        emoji: \"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO\",\n        date: \"\u05EA\u05D0\u05E8\u05D9\u05DA ISO\",\n        time: \"\u05D6\u05DE\u05DF ISO\",\n        duration: \"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO\",\n        ipv4: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4\",\n        ipv6: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6\",\n        cidrv4: \"\u05D8\u05D5\u05D5\u05D7 IPv4\",\n        cidrv6: \"\u05D8\u05D5\u05D5\u05D7 IPv6\",\n        base64: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64\",\n        base64url: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA\",\n        json_string: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON\",\n        e164: \"\u05DE\u05E1\u05E4\u05E8 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u05E7\u05DC\u05D8\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA ${issue.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${parsedType(issue.input)}`;\n            // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05D0\u05D7\u05EA \u05DE\u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA  ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${issue.origin ?? \"value\"} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${issue.origin ?? \"value\"} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${issue.origin} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${issue.origin} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05E0\u05D4: \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1\"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05E0\u05D4: \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05E0\u05D4: \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05E0\u05D4: \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\n            }\n            case \"not_multiple_of\":\n                return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u05DE\u05E4\u05EA\u05D7${issue.keys.length > 1 ? \"\u05D5\u05EA\" : \"\"} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue.keys.length > 1 ? \"\u05D9\u05DD\" : \"\u05D4\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u05DE\u05E4\u05EA\u05D7 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF\";\n            case \"invalid_element\":\n                return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${issue.origin}`;\n            default:\n                return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"legyen\" },\n        file: { unit: \"byte\", verb: \"legyen\" },\n        array: { unit: \"elem\", verb: \"legyen\" },\n        set: { unit: \"elem\", verb: \"legyen\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"sz\u00E1m\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"t\u00F6mb\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"bemenet\",\n        email: \"email c\u00EDm\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO id\u0151b\u00E9lyeg\",\n        date: \"ISO d\u00E1tum\",\n        time: \"ISO id\u0151\",\n        duration: \"ISO id\u0151intervallum\",\n        ipv4: \"IPv4 c\u00EDm\",\n        ipv6: \"IPv6 c\u00EDm\",\n        cidrv4: \"IPv4 tartom\u00E1ny\",\n        cidrv6: \"IPv6 tartom\u00E1ny\",\n        base64: \"base64-k\u00F3dolt string\",\n        base64url: \"base64url-k\u00F3dolt string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 sz\u00E1m\",\n        jwt: \"JWT\",\n        template_literal: \"bemenet\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${issue.expected}, a kapott \u00E9rt\u00E9k ${parsedType(issue.input)}`;\n            // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u00C9rv\u00E9nytelen opci\u00F3: valamelyik \u00E9rt\u00E9k v\u00E1rt ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `T\u00FAl nagy: ${issue.origin ?? \"\u00E9rt\u00E9k\"} m\u00E9rete t\u00FAl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n                return `T\u00FAl nagy: a bemeneti \u00E9rt\u00E9k ${issue.origin ?? \"\u00E9rt\u00E9k\"} t\u00FAl nagy: ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} m\u00E9rete t\u00FAl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} t\u00FAl kicsi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.prefix}\" \u00E9rt\u00E9kkel kell kezd\u0151dnie`;\n                if (_issue.format === \"ends_with\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.suffix}\" \u00E9rt\u00E9kkel kell v\u00E9gz\u0151dnie`;\n                if (_issue.format === \"includes\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.includes}\" \u00E9rt\u00E9ket kell tartalmaznia`;\n                if (_issue.format === \"regex\")\n                    return `\u00C9rv\u00E9nytelen string: ${_issue.pattern} mint\u00E1nak kell megfelelnie`;\n                return `\u00C9rv\u00E9nytelen ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u00C9rv\u00E9nytelen sz\u00E1m: ${issue.divisor} t\u00F6bbsz\u00F6r\u00F6s\u00E9nek kell lennie`;\n            case \"unrecognized_keys\":\n                return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u00C9rv\u00E9nytelen kulcs ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u00C9rv\u00E9nytelen bemenet\";\n            case \"invalid_element\":\n                return `\u00C9rv\u00E9nytelen \u00E9rt\u00E9k: ${issue.origin}`;\n            default:\n                return `\u00C9rv\u00E9nytelen bemenet`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"memiliki\" },\n        file: { unit: \"byte\", verb: \"memiliki\" },\n        array: { unit: \"item\", verb: \"memiliki\" },\n        set: { unit: \"item\", verb: \"memiliki\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"input\",\n        email: \"alamat email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tanggal dan waktu format ISO\",\n        date: \"tanggal format ISO\",\n        time: \"jam format ISO\",\n        duration: \"durasi format ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"rentang alamat IPv4\",\n        cidrv6: \"rentang alamat IPv6\",\n        base64: \"string dengan enkode base64\",\n        base64url: \"string dengan enkode base64url\",\n        json_string: \"string JSON\",\n        e164: \"angka E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Input tidak valid: diharapkan ${issue.expected}, diterima ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} tidak valid`;\n            }\n            case \"not_multiple_of\":\n                return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak valid di ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak valid\";\n            case \"invalid_element\":\n                return `Nilai tidak valid di ${issue.origin}`;\n            default:\n                return `Input tidak valid`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caratteri\", verb: \"avere\" },\n        file: { unit: \"byte\", verb: \"avere\" },\n        array: { unit: \"elementi\", verb: \"avere\" },\n        set: { unit: \"elementi\", verb: \"avere\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"numero\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"vettore\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"input\",\n        email: \"indirizzo email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e ora ISO\",\n        date: \"data ISO\",\n        time: \"ora ISO\",\n        duration: \"durata ISO\",\n        ipv4: \"indirizzo IPv4\",\n        ipv6: \"indirizzo IPv6\",\n        cidrv4: \"intervallo IPv4\",\n        cidrv6: \"intervallo IPv6\",\n        base64: \"stringa codificata in base64\",\n        base64url: \"URL codificata in base64\",\n        json_string: \"stringa JSON\",\n        e164: \"numero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Input non valido: atteso ${issue.expected}, ricevuto ${parsedType(issue.input)}`;\n            // return `Input non valido: atteso ${issue.expected}, ricevuto ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n                return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n                return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chiave non valida in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input non valido\";\n            case \"invalid_element\":\n                return `Valore non valido in ${issue.origin}`;\n            default:\n                return `Input non valido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u6587\u5B57\", verb: \"\u3067\u3042\u308B\" },\n        file: { unit: \"\u30D0\u30A4\u30C8\", verb: \"\u3067\u3042\u308B\" },\n        array: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n        set: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u6570\u5024\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u914D\u5217\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u5165\u529B\u5024\",\n        email: \"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\",\n        url: \"URL\",\n        emoji: \"\u7D75\u6587\u5B57\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO\u65E5\u6642\",\n        date: \"ISO\u65E5\u4ED8\",\n        time: \"ISO\u6642\u523B\",\n        duration: \"ISO\u671F\u9593\",\n        ipv4: \"IPv4\u30A2\u30C9\u30EC\u30B9\",\n        ipv6: \"IPv6\u30A2\u30C9\u30EC\u30B9\",\n        cidrv4: \"IPv4\u7BC4\u56F2\",\n        cidrv6: \"IPv6\u7BC4\u56F2\",\n        base64: \"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n        base64url: \"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n        json_string: \"JSON\u6587\u5B57\u5217\",\n        e164: \"E.164\u756A\u53F7\",\n        jwt: \"JWT\",\n        template_literal: \"\u5165\u529B\u5024\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u7121\u52B9\u306A\u5165\u529B: ${issue.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${parsedType(issue.input)}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u7121\u52B9\u306A\u5165\u529B: ${util.stringifyPrimitive(issue.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;\n                return `\u7121\u52B9\u306A\u9078\u629E: ${util.joinValues(issue.values, \"\u3001\")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u4EE5\u4E0B\u3067\u3042\u308B\" : \"\u3088\u308A\u5C0F\u3055\u3044\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${sizing.unit ?? \"\u8981\u7D20\"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u4EE5\u4E0A\u3067\u3042\u308B\" : \"\u3088\u308A\u5927\u304D\u3044\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.prefix}\"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"ends_with\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.suffix}\"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"includes\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.includes}\"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"regex\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u7121\u52B9\u306A${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u7121\u52B9\u306A\u6570\u5024: ${issue.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            case \"unrecognized_keys\":\n                return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue.keys.length > 1 ? \"\u7FA4\" : \"\"}: ${util.joinValues(issue.keys, \"\u3001\")}`;\n            case \"invalid_key\":\n                return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;\n            case \"invalid_union\":\n                return \"\u7121\u52B9\u306A\u5165\u529B\";\n            case \"invalid_element\":\n                return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;\n            default:\n                return `\u7121\u52B9\u306A\u5165\u529B`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        file: { unit: \"\u1794\u17C3\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        array: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        set: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"\u1798\u17B7\u1793\u1798\u17C2\u1793\u1787\u17B6\u179B\u17C1\u1781 (NaN)\" : \"\u179B\u17C1\u1781\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u17A2\u17B6\u179A\u17C1 (Array)\";\n                }\n                if (data === null) {\n                    return \"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n        email: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B\",\n        url: \"URL\",\n        emoji: \"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO\",\n        date: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO\",\n        time: \"\u1798\u17C9\u17C4\u1784 ISO\",\n        duration: \"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO\",\n        ipv4: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n        ipv6: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n        cidrv4: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n        cidrv6: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n        base64: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64\",\n        base64url: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url\",\n        json_string: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON\",\n        e164: \"\u179B\u17C1\u1781 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u1792\u17B6\u178F\u17BB\"}`;\n                return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`;\n                return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n            case \"invalid_union\":\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n            case \"invalid_element\":\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n            default:\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\uBB38\uC790\", verb: \"to have\" },\n        file: { unit: \"\uBC14\uC774\uD2B8\", verb: \"to have\" },\n        array: { unit: \"\uAC1C\", verb: \"to have\" },\n        set: { unit: \"\uAC1C\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\uC785\uB825\",\n        email: \"\uC774\uBA54\uC77C \uC8FC\uC18C\",\n        url: \"URL\",\n        emoji: \"\uC774\uBAA8\uC9C0\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \uB0A0\uC9DC\uC2DC\uAC04\",\n        date: \"ISO \uB0A0\uC9DC\",\n        time: \"ISO \uC2DC\uAC04\",\n        duration: \"ISO \uAE30\uAC04\",\n        ipv4: \"IPv4 \uC8FC\uC18C\",\n        ipv6: \"IPv6 \uC8FC\uC18C\",\n        cidrv4: \"IPv4 \uBC94\uC704\",\n        cidrv6: \"IPv6 \uBC94\uC704\",\n        base64: \"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n        base64url: \"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n        json_string: \"JSON \uBB38\uC790\uC5F4\",\n        e164: \"E.164 \uBC88\uD638\",\n        jwt: \"JWT\",\n        template_literal: \"\uC785\uB825\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${issue.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${parsedType(issue.input)}\uC785\uB2C8\uB2E4`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${util.stringifyPrimitive(issue.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;\n                return `\uC798\uBABB\uB41C \uC635\uC158: ${util.joinValues(issue.values, \"\uB610\uB294 \")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\uC774\uD558\" : \"\uBBF8\uB9CC\";\n                const suffix = adj === \"\uBBF8\uB9CC\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"\uC694\uC18C\";\n                if (sizing)\n                    return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n                return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()} ${adj}${suffix}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\uC774\uC0C1\" : \"\uCD08\uACFC\";\n                const suffix = adj === \"\uC774\uC0C1\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"\uC694\uC18C\";\n                if (sizing) {\n                    return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n                }\n                return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()} ${adj}${suffix}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.prefix}\"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.suffix}\"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;\n                if (_issue.format === \"includes\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.includes}\"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                if (_issue.format === \"regex\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                return `\uC798\uBABB\uB41C ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n            case \"unrecognized_keys\":\n                return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\uC798\uBABB\uB41C \uD0A4: ${issue.origin}`;\n            case \"invalid_union\":\n                return `\uC798\uBABB\uB41C \uC785\uB825`;\n            case \"invalid_element\":\n                return `\uC798\uBABB\uB41C \uAC12: ${issue.origin}`;\n            default:\n                return `\uC798\uBABB\uB41C \uC785\uB825`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0437\u043D\u0430\u0446\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        file: { unit: \"\u0431\u0430\u0458\u0442\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        array: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        set: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0431\u0440\u043E\u0458\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u043D\u0438\u0437\u0430\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0432\u043D\u0435\u0441\",\n        email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430\",\n        url: \"URL\",\n        emoji: \"\u0435\u043C\u043E\u045F\u0438\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435\",\n        date: \"ISO \u0434\u0430\u0442\u0443\u043C\",\n        time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n        duration: \"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\",\n        cidrv4: \"IPv4 \u043E\u043F\u0441\u0435\u0433\",\n        cidrv6: \"IPv6 \u043E\u043F\u0441\u0435\u0433\",\n        base64: \"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n        base64url: \"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n        json_string: \"JSON \u043D\u0438\u0437\u0430\",\n        e164: \"E.164 \u0431\u0440\u043E\u0458\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u043D\u0435\u0441\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${parsedType(issue.input)}`;\n            // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438\"}`;\n                return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`;\n                return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438\" : \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441\";\n            case \"invalid_element\":\n                return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue.origin}`;\n            default:\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"aksara\", verb: \"mempunyai\" },\n        file: { unit: \"bait\", verb: \"mempunyai\" },\n        array: { unit: \"elemen\", verb: \"mempunyai\" },\n        set: { unit: \"elemen\", verb: \"mempunyai\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"nombor\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"input\",\n        email: \"alamat e-mel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tarikh masa ISO\",\n        date: \"tarikh ISO\",\n        time: \"masa ISO\",\n        duration: \"tempoh ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"julat IPv4\",\n        cidrv6: \"julat IPv6\",\n        base64: \"string dikodkan base64\",\n        base64url: \"string dikodkan base64url\",\n        json_string: \"string JSON\",\n        e164: \"nombor E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Input tidak sah: dijangka ${issue.expected}, diterima ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} tidak sah`;\n            }\n            case \"not_multiple_of\":\n                return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak sah dalam ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak sah\";\n            case \"invalid_element\":\n                return `Nilai tidak sah dalam ${issue.origin}`;\n            default:\n                return `Input tidak sah`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tekens\" },\n        file: { unit: \"bytes\" },\n        array: { unit: \"elementen\" },\n        set: { unit: \"elementen\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"getal\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"invoer\",\n        email: \"emailadres\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum en tijd\",\n        date: \"ISO datum\",\n        time: \"ISO tijd\",\n        duration: \"ISO duur\",\n        ipv4: \"IPv4-adres\",\n        ipv6: \"IPv6-adres\",\n        cidrv4: \"IPv4-bereik\",\n        cidrv6: \"IPv6-bereik\",\n        base64: \"base64-gecodeerde tekst\",\n        base64url: \"base64 URL-gecodeerde tekst\",\n        json_string: \"JSON string\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"invoer\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Ongeldige invoer: verwacht ${issue.expected}, ontving ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ongeldige optie: verwacht \u00E9\u00E9n van ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Te lang: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} bevat`;\n                return `Te lang: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} bevat`;\n                }\n                return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n                if (_issue.format === \"includes\")\n                    return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n                if (_issue.format === \"regex\")\n                    return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n                return `Ongeldig: ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n            case \"unrecognized_keys\":\n                return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ongeldige key in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ongeldige invoer\";\n            case \"invalid_element\":\n                return `Ongeldige waarde in ${issue.origin}`;\n            default:\n                return `Ongeldige invoer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tegn\", verb: \"\u00E5 ha\" },\n        file: { unit: \"bytes\", verb: \"\u00E5 ha\" },\n        array: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n        set: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"tall\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"liste\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"input\",\n        email: \"e-postadresse\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dato- og klokkeslett\",\n        date: \"ISO-dato\",\n        time: \"ISO-klokkeslett\",\n        duration: \"ISO-varighet\",\n        ipv4: \"IPv4-omr\u00E5de\",\n        ipv6: \"IPv6-omr\u00E5de\",\n        cidrv4: \"IPv4-spekter\",\n        cidrv6: \"IPv6-spekter\",\n        base64: \"base64-enkodet streng\",\n        base64url: \"base64url-enkodet streng\",\n        json_string: \"JSON-streng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Ugyldig input: forventet ${issue.expected}, fikk ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n                return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ugyldig streng: m\u00E5 starte med \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ugyldig streng: m\u00E5 ende med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ugyldig streng: m\u00E5 inneholde \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ugyldig streng: m\u00E5 matche m\u00F8nsteret ${_issue.pattern}`;\n                return `Ugyldig ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ugyldig tall: m\u00E5 v\u00E6re et multiplum av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ukjente n\u00F8kler\" : \"Ukjent n\u00F8kkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ugyldig n\u00F8kkel i ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ugyldig input\";\n            case \"invalid_element\":\n                return `Ugyldig verdi i ${issue.origin}`;\n            default:\n                return `Ugyldig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"harf\", verb: \"olmal\u0131d\u0131r\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n        array: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n        set: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"numara\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"saf\";\n                }\n                if (data === null) {\n                    return \"gayb\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"giren\",\n        email: \"epostag\u00E2h\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO heng\u00E2m\u0131\",\n        date: \"ISO tarihi\",\n        time: \"ISO zaman\u0131\",\n        duration: \"ISO m\u00FCddeti\",\n        ipv4: \"IPv4 ni\u015F\u00E2n\u0131\",\n        ipv6: \"IPv6 ni\u015F\u00E2n\u0131\",\n        cidrv4: \"IPv4 menzili\",\n        cidrv6: \"IPv6 menzili\",\n        base64: \"base64-\u015Fifreli metin\",\n        base64url: \"base64url-\u015Fifreli metin\",\n        json_string: \"JSON metin\",\n        e164: \"E.164 say\u0131s\u0131\",\n        jwt: \"JWT\",\n        template_literal: \"giren\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `F\u00E2sit giren: umulan ${issue.expected}, al\u0131nan ${parsedType(issue.input)}`;\n            // return `F\u00E2sit giren: umulan ${issue.expected}, al\u0131nan ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `F\u00E2sit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `F\u00E2sit tercih: m\u00FBteberler ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmal\u0131yd\u0131.`;\n                return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmal\u0131yd\u0131.`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`;\n                }\n                return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} olmal\u0131yd\u0131.`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `F\u00E2sit metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131.`;\n                if (_issue.format === \"ends_with\")\n                    return `F\u00E2sit metin: \"${_issue.suffix}\" ile bitmeli.`;\n                if (_issue.format === \"includes\")\n                    return `F\u00E2sit metin: \"${_issue.includes}\" ihtiv\u00E2 etmeli.`;\n                if (_issue.format === \"regex\")\n                    return `F\u00E2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;\n                return `F\u00E2sit ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `F\u00E2sit say\u0131: ${issue.divisor} kat\u0131 olmal\u0131yd\u0131.`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} i\u00E7in tan\u0131nmayan anahtar var.`;\n            case \"invalid_union\":\n                return \"Giren tan\u0131namad\u0131.\";\n            case \"invalid_element\":\n                return `${issue.origin} i\u00E7in tan\u0131nmayan k\u0131ymet var.`;\n            default:\n                return `K\u0131ymet tan\u0131namad\u0131.`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n        file: { unit: \"\u0628\u0627\u06CC\u067C\u0633\", verb: \"\u0648\u0644\u0631\u064A\" },\n        array: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n        set: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0639\u062F\u062F\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u0627\u0631\u06D0\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0648\u0631\u0648\u062F\u064A\",\n        email: \"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9\",\n        url: \"\u06CC\u0648 \u0622\u0631 \u0627\u0644\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u064A\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A\",\n        date: \"\u0646\u06D0\u067C\u0647\",\n        time: \"\u0648\u062E\u062A\",\n        duration: \"\u0645\u0648\u062F\u0647\",\n        ipv4: \"\u062F IPv4 \u067E\u062A\u0647\",\n        ipv6: \"\u062F IPv6 \u067E\u062A\u0647\",\n        cidrv4: \"\u062F IPv4 \u0633\u0627\u062D\u0647\",\n        cidrv6: \"\u062F IPv6 \u0633\u0627\u062D\u0647\",\n        base64: \"base64-encoded \u0645\u062A\u0646\",\n        base64url: \"base64url-encoded \u0645\u062A\u0646\",\n        json_string: \"JSON \u0645\u062A\u0646\",\n        e164: \"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647\",\n        jwt: \"JWT\",\n        template_literal: \"\u0648\u0631\u0648\u062F\u064A\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${issue.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${parsedType(issue.input)} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${util.stringifyPrimitive(issue.values[0])} \u0648\u0627\u06CC`;\n                }\n                return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${util.joinValues(issue.values, \"|\")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\u0648\u0646\u0647\"} \u0648\u0644\u0631\u064A`;\n                }\n                return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0648\u064A`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`;\n                }\n                return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0648\u064A`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.prefix}\" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.suffix}\" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \"${_issue.includes}\" \u0648\u0644\u0631\u064A`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;\n                }\n                return `${Nouns[_issue.format] ?? issue.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`;\n            }\n            case \"not_multiple_of\":\n                return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;\n            case \"unrecognized_keys\":\n                return `\u0646\u0627\u0633\u0645 ${issue.keys.length > 1 ? \"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647\" : \"\u06A9\u0644\u06CC\u0689\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n            case \"invalid_union\":\n                return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n            case \"invalid_element\":\n                return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n            default:\n                return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znak\u00F3w\", verb: \"mie\u0107\" },\n        file: { unit: \"bajt\u00F3w\", verb: \"mie\u0107\" },\n        array: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n        set: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"liczba\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"tablica\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"wyra\u017Cenie\",\n        email: \"adres email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i godzina w formacie ISO\",\n        date: \"data w formacie ISO\",\n        time: \"godzina w formacie ISO\",\n        duration: \"czas trwania ISO\",\n        ipv4: \"adres IPv4\",\n        ipv6: \"adres IPv6\",\n        cidrv4: \"zakres IPv4\",\n        cidrv6: \"zakres IPv6\",\n        base64: \"ci\u0105g znak\u00F3w zakodowany w formacie base64\",\n        base64url: \"ci\u0105g znak\u00F3w zakodowany w formacie base64url\",\n        json_string: \"ci\u0105g znak\u00F3w w formacie JSON\",\n        e164: \"liczba E.164\",\n        jwt: \"JWT\",\n        template_literal: \"wej\u015Bcie\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${issue.expected}, otrzymano ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n                }\n                return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n                }\n                return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zaczyna\u0107 si\u0119 od \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi ko\u0144czy\u0107 si\u0119 na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zawiera\u0107 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;\n                return `Nieprawid\u0142ow(y/a/e) ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nieprawid\u0142owy klucz w ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nieprawid\u0142owe dane wej\u015Bciowe\";\n            case \"invalid_element\":\n                return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue.origin}`;\n            default:\n                return `Nieprawid\u0142owe dane wej\u015Bciowe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"ter\" },\n        file: { unit: \"bytes\", verb: \"ter\" },\n        array: { unit: \"itens\", verb: \"ter\" },\n        set: { unit: \"itens\", verb: \"ter\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"n\u00FAmero\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"nulo\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"padr\u00E3o\",\n        email: \"endere\u00E7o de e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"dura\u00E7\u00E3o ISO\",\n        ipv4: \"endere\u00E7o IPv4\",\n        ipv6: \"endere\u00E7o IPv6\",\n        cidrv4: \"faixa de IPv4\",\n        cidrv6: \"faixa de IPv6\",\n        base64: \"texto codificado em base64\",\n        base64url: \"URL codificada em base64\",\n        json_string: \"texto JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Tipo inv\u00E1lido: esperado ${issue.expected}, recebido ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inv\u00E1lida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Op\u00E7\u00E3o inv\u00E1lida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Texto inv\u00E1lido: deve come\u00E7ar com \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Texto inv\u00E1lido: deve terminar com \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Texto inv\u00E1lido: deve incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Texto inv\u00E1lido: deve corresponder ao padr\u00E3o ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} inv\u00E1lido`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E1lido: deve ser m\u00FAltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chave inv\u00E1lida em ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E1lida\";\n            case \"invalid_element\":\n                return `Valor inv\u00E1lido em ${issue.origin}`;\n            default:\n                return `Campo inv\u00E1lido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"\u0441\u0438\u043C\u0432\u043E\u043B\",\n                few: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\",\n                many: \"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        file: {\n            unit: {\n                one: \"\u0431\u0430\u0439\u0442\",\n                few: \"\u0431\u0430\u0439\u0442\u0430\",\n                many: \"\u0431\u0430\u0439\u0442\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        array: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        set: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0447\u0438\u0441\u043B\u043E\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u043C\u0430\u0441\u0441\u0438\u0432\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0432\u0432\u043E\u0434\",\n        email: \"email \u0430\u0434\u0440\u0435\u0441\",\n        url: \"URL\",\n        emoji: \"\u044D\u043C\u043E\u0434\u0437\u0438\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\",\n        date: \"ISO \u0434\u0430\u0442\u0430\",\n        time: \"ISO \u0432\u0440\u0435\u043C\u044F\",\n        duration: \"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n        cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        base64: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64\",\n        base64url: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url\",\n        json_string: \"JSON \u0441\u0442\u0440\u043E\u043A\u0430\",\n        e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u0432\u043E\u0434\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue.keys.length > 1 ? \"\u044B\u0435\" : \"\u044B\u0439\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0438\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\";\n            case \"invalid_element\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue.origin}`;\n            default:\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znakov\", verb: \"imeti\" },\n        file: { unit: \"bajtov\", verb: \"imeti\" },\n        array: { unit: \"elementov\", verb: \"imeti\" },\n        set: { unit: \"elementov\", verb: \"imeti\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0161tevilo\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"tabela\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"vnos\",\n        email: \"e-po\u0161tni naslov\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum in \u010Das\",\n        date: \"ISO datum\",\n        time: \"ISO \u010Das\",\n        duration: \"ISO trajanje\",\n        ipv4: \"IPv4 naslov\",\n        ipv6: \"IPv6 naslov\",\n        cidrv4: \"obseg IPv4\",\n        cidrv6: \"obseg IPv6\",\n        base64: \"base64 kodiran niz\",\n        base64url: \"base64url kodiran niz\",\n        json_string: \"JSON niz\",\n        e164: \"E.164 \u0161tevilka\",\n        jwt: \"JWT\",\n        template_literal: \"vnos\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Neveljaven vnos: pri\u010Dakovano ${issue.expected}, prejeto ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neveljaven vnos: pri\u010Dakovano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n                return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Neveljaven niz: mora se za\u010Deti z \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Neveljaven niz: mora se kon\u010Dati z \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n                return `Neveljaven ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Neprepoznan${issue.keys.length > 1 ? \"i klju\u010Di\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neveljaven klju\u010D v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neveljaven vnos\";\n            case \"invalid_element\":\n                return `Neveljavna vrednost v ${issue.origin}`;\n            default:\n                return \"Neveljaven vnos\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tecken\", verb: \"att ha\" },\n        file: { unit: \"bytes\", verb: \"att ha\" },\n        array: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n        set: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"antal\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"lista\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"regulj\u00E4rt uttryck\",\n        email: \"e-postadress\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datum och tid\",\n        date: \"ISO-datum\",\n        time: \"ISO-tid\",\n        duration: \"ISO-varaktighet\",\n        ipv4: \"IPv4-intervall\",\n        ipv6: \"IPv6-intervall\",\n        cidrv4: \"IPv4-spektrum\",\n        cidrv6: \"IPv6-spektrum\",\n        base64: \"base64-kodad str\u00E4ng\",\n        base64url: \"base64url-kodad str\u00E4ng\",\n        json_string: \"JSON-str\u00E4ng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"mall-literal\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${issue.expected}, fick ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ogiltigt val: f\u00F6rv\u00E4ntade en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `F\u00F6r stor(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                }\n                return `F\u00F6r stor(t): f\u00F6rv\u00E4ntat ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ogiltig str\u00E4ng: m\u00E5ste b\u00F6rja med \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste sluta med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste inneh\u00E5lla \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste matcha m\u00F6nstret \"${_issue.pattern}\"`;\n                return `Ogiltig(t) ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ogiltigt tal: m\u00E5ste vara en multipel av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ok\u00E4nda nycklar\" : \"Ok\u00E4nd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ogiltig nyckel i ${issue.origin ?? \"v\u00E4rdet\"}`;\n            case \"invalid_union\":\n                return \"Ogiltig input\";\n            case \"invalid_element\":\n                return `Ogiltigt v\u00E4rde i ${issue.origin ?? \"v\u00E4rdet\"}`;\n            default:\n                return `Ogiltig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        file: { unit: \"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        array: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        set: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"\u0B8E\u0BA3\u0BCD \u0B85\u0BB2\u0BCD\u0BB2\u0BBE\u0BA4\u0BA4\u0BC1\" : \"\u0B8E\u0BA3\u0BCD\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u0B85\u0BA3\u0BBF\";\n                }\n                if (data === null) {\n                    return \"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\",\n        email: \"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n        date: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF\",\n        time: \"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n        duration: \"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1\",\n        ipv4: \"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        ipv6: \"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        cidrv4: \"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n        cidrv6: \"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n        base64: \"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n        base64url: \"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n        json_string: \"JSON \u0B9A\u0BB0\u0BAE\u0BCD\",\n        e164: \"E.164 \u0B8E\u0BA3\u0BCD\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.joinValues(issue.values, \"|\")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                }\n                return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; //\n                }\n                return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.prefix}\" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"ends_with\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.suffix}\" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"includes\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.includes}\" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"regex\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            case \"unrecognized_keys\":\n                return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue.keys.length > 1 ? \"\u0B95\u0BB3\u0BCD\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;\n            case \"invalid_union\":\n                return \"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\";\n            case \"invalid_element\":\n                return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;\n            default:\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        file: { unit: \"\u0E44\u0E1A\u0E15\u0E4C\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        array: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        set: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"\u0E44\u0E21\u0E48\u0E43\u0E0A\u0E48\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02 (NaN)\" : \"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)\";\n                }\n                if (data === null) {\n                    return \"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n        email: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25\",\n        url: \"URL\",\n        emoji: \"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        date: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO\",\n        time: \"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        duration: \"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        ipv4: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4\",\n        ipv6: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6\",\n        cidrv4: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4\",\n        cidrv6: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6\",\n        base64: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64\",\n        base64url: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL\",\n        json_string: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON\",\n        e164: \"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)\",\n        jwt: \"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT\",\n        template_literal: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${issue.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19\" : \"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\"}`;\n                return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22\" : \"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 \"${_issue.includes}\" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;\n                if (_issue.format === \"regex\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`;\n                return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;\n            case \"unrecognized_keys\":\n                return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49\";\n            case \"invalid_element\":\n                return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n            default:\n                return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nexport const parsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"NaN\" : \"number\";\n        }\n        case \"object\": {\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                return data.constructor.name;\n            }\n        }\n    }\n    return t;\n};\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"olmal\u0131\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131\" },\n        array: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n        set: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const Nouns = {\n        regex: \"girdi\",\n        email: \"e-posta adresi\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO tarih ve saat\",\n        date: \"ISO tarih\",\n        time: \"ISO saat\",\n        duration: \"ISO s\u00FCre\",\n        ipv4: \"IPv4 adresi\",\n        ipv6: \"IPv6 adresi\",\n        cidrv4: \"IPv4 aral\u0131\u011F\u0131\",\n        cidrv6: \"IPv6 aral\u0131\u011F\u0131\",\n        base64: \"base64 ile \u015Fifrelenmi\u015F metin\",\n        base64url: \"base64url ile \u015Fifrelenmi\u015F metin\",\n        json_string: \"JSON dizesi\",\n        e164: \"E.164 say\u0131s\u0131\",\n        jwt: \"JWT\",\n        template_literal: \"\u015Eablon dizesi\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `Ge\u00E7ersiz de\u011Fer: beklenen ${issue.expected}, al\u0131nan ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ge\u00E7ersiz de\u011Fer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ge\u00E7ersiz se\u00E7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00F6\u011Fe\"}`;\n                return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131`;\n                if (_issue.format === \"ends_with\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n                if (_issue.format === \"includes\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.includes}\" i\u00E7ermeli`;\n                if (_issue.format === \"regex\")\n                    return `Ge\u00E7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;\n                return `Ge\u00E7ersiz ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ge\u00E7ersiz say\u0131: ${issue.divisor} ile tam b\u00F6l\u00FCnebilmeli`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} i\u00E7inde ge\u00E7ersiz anahtar`;\n            case \"invalid_union\":\n                return \"Ge\u00E7ersiz de\u011Fer\";\n            case \"invalid_element\":\n                return `${issue.origin} i\u00E7inde ge\u00E7ersiz de\u011Fer`;\n            default:\n                return `Ge\u00E7ersiz de\u011Fer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        file: { unit: \"\u0431\u0430\u0439\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0447\u0438\u0441\u043B\u043E\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u043C\u0430\u0441\u0438\u0432\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n        email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438\",\n        url: \"URL\",\n        emoji: \"\u0435\u043C\u043E\u0434\u0437\u0456\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO\",\n        date: \"\u0434\u0430\u0442\u0430 ISO\",\n        time: \"\u0447\u0430\u0441 ISO\",\n        duration: \"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO\",\n        ipv4: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4\",\n        ipv6: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6\",\n        cidrv4: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4\",\n        cidrv6: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6\",\n        base64: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64\",\n        base64url: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url\",\n        json_string: \"\u0440\u044F\u0434\u043E\u043A JSON\",\n        e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${parsedType(issue.input)}`;\n            // return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${util.getParsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\"}`;\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} \u0431\u0443\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} \u0431\u0443\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0456\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\";\n            case \"invalid_element\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue.origin}`;\n            default:\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062D\u0631\u0648\u0641\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        file: { unit: \"\u0628\u0627\u0626\u0679\u0633\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        array: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        set: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"\u0646\u0645\u0628\u0631\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u0622\u0631\u06D2\";\n                }\n                if (data === null) {\n                    return \"\u0646\u0644\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0627\u0646 \u067E\u0679\",\n        email: \"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        url: \"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n        uuid: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        uuidv4: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4\",\n        uuidv6: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6\",\n        nanoid: \"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        guid: \"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        cuid: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        cuid2: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2\",\n        ulid: \"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC\",\n        xid: \"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC\",\n        ksuid: \"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        datetime: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645\",\n        date: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E\",\n        time: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A\",\n        duration: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A\",\n        ipv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        ipv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        cidrv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C\",\n        cidrv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C\",\n        base64: \"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n        base64url: \"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n        json_string: \"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF\",\n        e164: \"\u0627\u06CC 164 \u0646\u0645\u0628\u0631\",\n        jwt: \"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC\",\n        template_literal: \"\u0627\u0646 \u067E\u0679\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${issue.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${parsedType(issue.input)} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${util.stringifyPrimitive(issue.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n                return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u06D2 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0627\u0635\u0631\"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n                return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u0627 ${adj}${issue.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u06D2 ${adj}${issue.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n                }\n                return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u0627 ${adj}${issue.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.prefix}\" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.suffix}\" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                if (_issue.format === \"includes\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.includes}\" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                if (_issue.format === \"regex\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                return `\u063A\u0644\u0637 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n            case \"unrecognized_keys\":\n                return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue.keys.length > 1 ? \"\u0632\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;\n            case \"invalid_union\":\n                return \"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679\";\n            case \"invalid_element\":\n                return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;\n            default:\n                return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"k\u00FD t\u1EF1\", verb: \"c\u00F3\" },\n        file: { unit: \"byte\", verb: \"c\u00F3\" },\n        array: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n        set: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"s\u1ED1\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"m\u1EA3ng\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u0111\u1EA7u v\u00E0o\",\n        email: \"\u0111\u1ECBa ch\u1EC9 email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ng\u00E0y gi\u1EDD ISO\",\n        date: \"ng\u00E0y ISO\",\n        time: \"gi\u1EDD ISO\",\n        duration: \"kho\u1EA3ng th\u1EDDi gian ISO\",\n        ipv4: \"\u0111\u1ECBa ch\u1EC9 IPv4\",\n        ipv6: \"\u0111\u1ECBa ch\u1EC9 IPv6\",\n        cidrv4: \"d\u1EA3i IPv4\",\n        cidrv6: \"d\u1EA3i IPv6\",\n        base64: \"chu\u1ED7i m\u00E3 h\u00F3a base64\",\n        base64url: \"chu\u1ED7i m\u00E3 h\u00F3a base64url\",\n        json_string: \"chu\u1ED7i JSON\",\n        e164: \"s\u1ED1 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0111\u1EA7u v\u00E0o\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${issue.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${util.stringifyPrimitive(issue.values[0])}`;\n                return `T\u00F9y ch\u1ECDn kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\u00E1c gi\u00E1 tr\u1ECB ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"ph\u1EA7n t\u1EED\"}`;\n                return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\u00FAc b\u1EB1ng \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;\n                return `${Nouns[_issue.format] ?? issue.format} kh\u00F4ng h\u1EE3p l\u1EC7`;\n            }\n            case \"not_multiple_of\":\n                return `S\u1ED1 kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\u00E0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kh\u00F3a kh\u00F4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kh\u00F3a kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7\";\n            case \"invalid_element\":\n                return `Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n            default:\n                return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u5B57\u7B26\", verb: \"\u5305\u542B\" },\n        file: { unit: \"\u5B57\u8282\", verb: \"\u5305\u542B\" },\n        array: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n        set: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"\u975E\u6570\u5B57(NaN)\" : \"\u6570\u5B57\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"\u6570\u7EC4\";\n                }\n                if (data === null) {\n                    return \"\u7A7A\u503C(null)\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u8F93\u5165\",\n        email: \"\u7535\u5B50\u90AE\u4EF6\",\n        url: \"URL\",\n        emoji: \"\u8868\u60C5\u7B26\u53F7\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO\u65E5\u671F\u65F6\u95F4\",\n        date: \"ISO\u65E5\u671F\",\n        time: \"ISO\u65F6\u95F4\",\n        duration: \"ISO\u65F6\u957F\",\n        ipv4: \"IPv4\u5730\u5740\",\n        ipv6: \"IPv6\u5730\u5740\",\n        cidrv4: \"IPv4\u7F51\u6BB5\",\n        cidrv6: \"IPv6\u7F51\u6BB5\",\n        base64: \"base64\u7F16\u7801\u5B57\u7B26\u4E32\",\n        base64url: \"base64url\u7F16\u7801\u5B57\u7B26\u4E32\",\n        json_string: \"JSON\u5B57\u7B26\u4E32\",\n        e164: \"E.164\u53F7\u7801\",\n        jwt: \"JWT\",\n        template_literal: \"\u8F93\u5165\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${issue.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u4E2A\u5143\u7D20\"}`;\n                return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.prefix}\" \u5F00\u5934`;\n                if (_issue.format === \"ends_with\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.suffix}\" \u7ED3\u5C3E`;\n                if (_issue.format === \"includes\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;\n                return `\u65E0\u6548${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue.divisor} \u7684\u500D\u6570`;\n            case \"unrecognized_keys\":\n                return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;\n            case \"invalid_union\":\n                return \"\u65E0\u6548\u8F93\u5165\";\n            case \"invalid_element\":\n                return `${issue.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;\n            default:\n                return `\u65E0\u6548\u8F93\u5165`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u5B57\u5143\", verb: \"\u64C1\u6709\" },\n        file: { unit: \"\u4F4D\u5143\u7D44\", verb: \"\u64C1\u6709\" },\n        array: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n        set: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const parsedType = (data) => {\n        const t = typeof data;\n        switch (t) {\n            case \"number\": {\n                return Number.isNaN(data) ? \"NaN\" : \"number\";\n            }\n            case \"object\": {\n                if (Array.isArray(data)) {\n                    return \"array\";\n                }\n                if (data === null) {\n                    return \"null\";\n                }\n                if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n                    return data.constructor.name;\n                }\n            }\n        }\n        return t;\n    };\n    const Nouns = {\n        regex: \"\u8F38\u5165\",\n        email: \"\u90F5\u4EF6\u5730\u5740\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u65E5\u671F\u6642\u9593\",\n        date: \"ISO \u65E5\u671F\",\n        time: \"ISO \u6642\u9593\",\n        duration: \"ISO \u671F\u9593\",\n        ipv4: \"IPv4 \u4F4D\u5740\",\n        ipv6: \"IPv6 \u4F4D\u5740\",\n        cidrv4: \"IPv4 \u7BC4\u570D\",\n        cidrv6: \"IPv6 \u7BC4\u570D\",\n        base64: \"base64 \u7DE8\u78BC\u5B57\u4E32\",\n        base64url: \"base64url \u7DE8\u78BC\u5B57\u4E32\",\n        json_string: \"JSON \u5B57\u4E32\",\n        e164: \"E.164 \u6578\u503C\",\n        jwt: \"JWT\",\n        template_literal: \"\u8F38\u5165\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\":\n                return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${issue.expected}\uFF0C\u4F46\u6536\u5230 ${parsedType(issue.input)}`;\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u500B\u5143\u7D20\"}`;\n                return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.prefix}\" \u958B\u982D`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.suffix}\" \u7D50\u5C3E`;\n                if (_issue.format === \"includes\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;\n                return `\u7121\u6548\u7684 ${Nouns[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue.divisor} \u7684\u500D\u6578`;\n            case \"unrecognized_keys\":\n                return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue.keys.length > 1 ? \"\u5011\" : \"\"}\uFF1A${util.joinValues(issue.keys, \"\u3001\")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;\n            case \"invalid_union\":\n                return \"\u7121\u6548\u7684\u8F38\u5165\u503C\";\n            case \"invalid_element\":\n                return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;\n            default:\n                return `\u7121\u6548\u7684\u8F38\u5165\u503C`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n    constructor() {\n        this._map = new Map();\n        this._idmap = new Map();\n    }\n    add(schema, ..._meta) {\n        const meta = _meta[0];\n        this._map.set(schema, meta);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            if (this._idmap.has(meta.id)) {\n                throw new Error(`ID ${meta.id} already exists in the registry`);\n            }\n            this._idmap.set(meta.id, schema);\n        }\n        return this;\n    }\n    clear() {\n        this._map = new Map();\n        this._idmap = new Map();\n        return this;\n    }\n    remove(schema) {\n        const meta = this._map.get(schema);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.delete(meta.id);\n        }\n        this._map.delete(schema);\n        return this;\n    }\n    get(schema) {\n        // return this._map.get(schema) as any;\n        // inherit metadata\n        const p = schema._zod.parent;\n        if (p) {\n            const pm = { ...(this.get(p) ?? {}) };\n            delete pm.id; // do not inherit id\n            return { ...pm, ...this._map.get(schema) };\n        }\n        return this._map.get(schema);\n    }\n    has(schema) {\n        return this._map.has(schema);\n    }\n}\n// registries\nexport function registry() {\n    return new $ZodRegistry();\n}\nexport const globalRegistry = /*@__PURE__*/ registry();\n", "import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n    return new Class({\n        type: \"string\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _coercedString(Class, params) {\n    return new Class({\n        type: \"string\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _email(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"email\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _guid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"guid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uuidv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v4\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uuidv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v6\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uuidv7(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v7\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _emoji(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"emoji\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _nanoid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"nanoid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _cuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _cuid2(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid2\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _ulid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ulid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _xid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"xid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _ksuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ksuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _ipv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _ipv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _cidrv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _cidrv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _base64(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _base64url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _e164(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"e164\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _jwt(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"jwt\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const TimePrecision = {\n    Any: null,\n    Minute: -1,\n    Second: 0,\n    Millisecond: 3,\n    Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"datetime\",\n        check: \"string_format\",\n        offset: false,\n        local: false,\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _isoDate(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"date\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _isoTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"time\",\n        check: \"string_format\",\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _isoDuration(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"duration\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _number(Class, params) {\n    return new Class({\n        type: \"number\",\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\nexport function _coercedNumber(Class, params) {\n    return new Class({\n        type: \"number\",\n        coerce: true,\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\nexport function _int(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"safeint\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _float32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float32\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _float64(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float64\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _int32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"int32\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uint32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"uint32\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _boolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _coercedBoolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _bigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _coercedBigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _int64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"int64\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uint64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"uint64\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _symbol(Class, params) {\n    return new Class({\n        type: \"symbol\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _undefined(Class, params) {\n    return new Class({\n        type: \"undefined\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _null(Class, params) {\n    return new Class({\n        type: \"null\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _any(Class) {\n    return new Class({\n        type: \"any\",\n    });\n}\nexport function _unknown(Class) {\n    return new Class({\n        type: \"unknown\",\n    });\n}\nexport function _never(Class, params) {\n    return new Class({\n        type: \"never\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _void(Class, params) {\n    return new Class({\n        type: \"void\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _date(Class, params) {\n    return new Class({\n        type: \"date\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _coercedDate(Class, params) {\n    return new Class({\n        type: \"date\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _nan(Class, params) {\n    return new Class({\n        type: \"nan\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _lt(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\nexport function _lte(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\nexport function _gte(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n    return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n    return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n    return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n    return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n    return new checks.$ZodCheckMultipleOf({\n        check: \"multiple_of\",\n        ...util.normalizeParams(params),\n        value,\n    });\n}\nexport function _maxSize(maximum, params) {\n    return new checks.$ZodCheckMaxSize({\n        check: \"max_size\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n}\nexport function _minSize(minimum, params) {\n    return new checks.$ZodCheckMinSize({\n        check: \"min_size\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\nexport function _size(size, params) {\n    return new checks.$ZodCheckSizeEquals({\n        check: \"size_equals\",\n        ...util.normalizeParams(params),\n        size,\n    });\n}\nexport function _maxLength(maximum, params) {\n    const ch = new checks.$ZodCheckMaxLength({\n        check: \"max_length\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n    return ch;\n}\nexport function _minLength(minimum, params) {\n    return new checks.$ZodCheckMinLength({\n        check: \"min_length\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\nexport function _length(length, params) {\n    return new checks.$ZodCheckLengthEquals({\n        check: \"length_equals\",\n        ...util.normalizeParams(params),\n        length,\n    });\n}\nexport function _regex(pattern, params) {\n    return new checks.$ZodCheckRegex({\n        check: \"string_format\",\n        format: \"regex\",\n        ...util.normalizeParams(params),\n        pattern,\n    });\n}\nexport function _lowercase(params) {\n    return new checks.$ZodCheckLowerCase({\n        check: \"string_format\",\n        format: \"lowercase\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _uppercase(params) {\n    return new checks.$ZodCheckUpperCase({\n        check: \"string_format\",\n        format: \"uppercase\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _includes(includes, params) {\n    return new checks.$ZodCheckIncludes({\n        check: \"string_format\",\n        format: \"includes\",\n        ...util.normalizeParams(params),\n        includes,\n    });\n}\nexport function _startsWith(prefix, params) {\n    return new checks.$ZodCheckStartsWith({\n        check: \"string_format\",\n        format: \"starts_with\",\n        ...util.normalizeParams(params),\n        prefix,\n    });\n}\nexport function _endsWith(suffix, params) {\n    return new checks.$ZodCheckEndsWith({\n        check: \"string_format\",\n        format: \"ends_with\",\n        ...util.normalizeParams(params),\n        suffix,\n    });\n}\nexport function _property(property, schema, params) {\n    return new checks.$ZodCheckProperty({\n        check: \"property\",\n        property,\n        schema,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _mime(types, params) {\n    return new checks.$ZodCheckMimeType({\n        check: \"mime_type\",\n        mime: types,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _overwrite(tx) {\n    return new checks.$ZodCheckOverwrite({\n        check: \"overwrite\",\n        tx,\n    });\n}\n// normalize\nexport function _normalize(form) {\n    return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n    return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n    return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n    return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n    return new Class({\n        type: \"array\",\n        element,\n        // get element() {\n        //   return element;\n        // },\n        ...util.normalizeParams(params),\n    });\n}\nexport function _union(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _intersection(Class, left, right) {\n    return new Class({\n        type: \"intersection\",\n        left,\n        right,\n    });\n}\n// export function _tuple(\n//   Class: util.SchemaClass<schemas.$ZodTuple>,\n//   items: [],\n//   params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new Class({\n        type: \"tuple\",\n        items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _record(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"record\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _map(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"map\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _set(Class, valueType, params) {\n    return new Class({\n        type: \"set\",\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _enum(Class, values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    // if (Array.isArray(values)) {\n    //   for (const value of values) {\n    //     entries[value] = value;\n    //   }\n    // } else {\n    //   Object.assign(entries, values);\n    // }\n    // const entries: util.EnumLike = {};\n    // for (const val of values) {\n    //   entries[val] = val;\n    // }\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _literal(Class, value, params) {\n    return new Class({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\nexport function _file(Class, params) {\n    return new Class({\n        type: \"file\",\n        ...util.normalizeParams(params),\n    });\n}\nexport function _transform(Class, fn) {\n    return new Class({\n        type: \"transform\",\n        transform: fn,\n    });\n}\nexport function _optional(Class, innerType) {\n    return new Class({\n        type: \"optional\",\n        innerType,\n    });\n}\nexport function _nullable(Class, innerType) {\n    return new Class({\n        type: \"nullable\",\n        innerType,\n    });\n}\nexport function _default(Class, innerType, defaultValue) {\n    return new Class({\n        type: \"default\",\n        innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n        },\n    });\n}\nexport function _nonoptional(Class, innerType, params) {\n    return new Class({\n        type: \"nonoptional\",\n        innerType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _success(Class, innerType) {\n    return new Class({\n        type: \"success\",\n        innerType,\n    });\n}\nexport function _catch(Class, innerType, catchValue) {\n    return new Class({\n        type: \"catch\",\n        innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\nexport function _pipe(Class, in_, out) {\n    return new Class({\n        type: \"pipe\",\n        in: in_,\n        out,\n    });\n}\nexport function _readonly(Class, innerType) {\n    return new Class({\n        type: \"readonly\",\n        innerType,\n    });\n}\nexport function _templateLiteral(Class, parts, params) {\n    return new Class({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _lazy(Class, getter) {\n    return new Class({\n        type: \"lazy\",\n        getter,\n    });\n}\nexport function _promise(Class, innerType) {\n    return new Class({\n        type: \"promise\",\n        innerType,\n    });\n}\nexport function _custom(Class, fn, _params) {\n    const norm = util.normalizeParams(_params);\n    norm.abort ?? (norm.abort = true); // default to abort:false\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...norm,\n    });\n    return schema;\n}\n// export function _refine<T>(\n//   Class: util.SchemaClass<schemas.$ZodCustom>,\n//   fn: (arg: NoInfer<T>) => util.MaybeAsync<unknown>,\n//   _params: string | $ZodCustomParams = {}\n// ): checks.$ZodCheck<T> {\n//   return _custom(Class, fn, _params);\n// }\n// same as _custom but defaults to abort:false\nexport function _refine(Class, fn, _params) {\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...util.normalizeParams(_params),\n    });\n    return schema;\n}\nexport function _stringbool(Classes, _params) {\n    const params = util.normalizeParams(_params);\n    let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n    let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n    if (params.case !== \"sensitive\") {\n        truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n        falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n    }\n    const truthySet = new Set(truthyArray);\n    const falsySet = new Set(falsyArray);\n    const _Pipe = Classes.Pipe ?? schemas.$ZodPipe;\n    const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n    const _String = Classes.String ?? schemas.$ZodString;\n    const _Transform = Classes.Transform ?? schemas.$ZodTransform;\n    const tx = new _Transform({\n        type: \"transform\",\n        transform: (input, payload) => {\n            let data = input;\n            if (params.case !== \"sensitive\")\n                data = data.toLowerCase();\n            if (truthySet.has(data)) {\n                return true;\n            }\n            else if (falsySet.has(data)) {\n                return false;\n            }\n            else {\n                payload.issues.push({\n                    code: \"invalid_value\",\n                    expected: \"stringbool\",\n                    values: [...truthySet, ...falsySet],\n                    input: payload.value,\n                    inst: tx,\n                });\n                return {};\n            }\n        },\n        error: params.error,\n    });\n    // params.error;\n    const innerPipe = new _Pipe({\n        type: \"pipe\",\n        in: new _String({ type: \"string\", error: params.error }),\n        out: tx,\n        error: params.error,\n    });\n    const outerPipe = new _Pipe({\n        type: \"pipe\",\n        in: innerPipe,\n        out: new _Boolean({\n            type: \"boolean\",\n            error: params.error,\n        }),\n        error: params.error,\n    });\n    return outerPipe;\n}\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n    const params = util.normalizeParams(_params);\n    const def = {\n        ...util.normalizeParams(_params),\n        check: \"string_format\",\n        type: \"string\",\n        format,\n        fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n        ...params,\n    };\n    if (fnOrRegex instanceof RegExp) {\n        def.pattern = fnOrRegex;\n    }\n    const inst = new Class(def);\n    return inst;\n}\n", "import { _array, _tuple, _unknown } from \"./api.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as schemas from \"./schemas.js\";\nimport { $ZodTuple } from \"./schemas.js\";\nexport class $ZodFunction {\n    constructor(def) {\n        this._def = def;\n        this.def = def;\n    }\n    implement(func) {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implement() must be called with a function\");\n        }\n        const impl = ((...args) => {\n            const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args;\n            if (!Array.isArray(parsedArgs)) {\n                throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n            }\n            const output = func(...parsedArgs);\n            return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output;\n        });\n        return impl;\n    }\n    implementAsync(func) {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implement() must be called with a function\");\n        }\n        const impl = (async (...args) => {\n            const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args;\n            if (!Array.isArray(parsedArgs)) {\n                throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n            }\n            const output = await func(...parsedArgs);\n            return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output;\n        });\n        return impl;\n    }\n    input(...args) {\n        const F = this.constructor;\n        if (Array.isArray(args[0])) {\n            return new F({\n                type: \"function\",\n                input: new $ZodTuple({\n                    type: \"tuple\",\n                    items: args[0],\n                    rest: args[1],\n                }),\n                output: this._def.output,\n            });\n        }\n        return new F({\n            type: \"function\",\n            input: args[0],\n            output: this._def.output,\n        });\n    }\n    output(output) {\n        const F = this.constructor;\n        return new F({\n            type: \"function\",\n            input: this._def.input,\n            output,\n        });\n    }\n}\nfunction _function(params) {\n    return new $ZodFunction({\n        type: \"function\",\n        input: Array.isArray(params?.input)\n            ? _tuple(schemas.$ZodTuple, params?.input)\n            : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))),\n        output: params?.output ?? _unknown(schemas.$ZodUnknown),\n    });\n}\nexport { _function as function };\n", "import { $ZodRegistry, globalRegistry } from \"./registries.js\";\nimport { getEnumValues } from \"./util.js\";\nexport class JSONSchemaGenerator {\n    constructor(params) {\n        this.counter = 0;\n        this.metadataRegistry = params?.metadata ?? globalRegistry;\n        this.target = params?.target ?? \"draft-2020-12\";\n        this.unrepresentable = params?.unrepresentable ?? \"throw\";\n        this.override = params?.override ?? (() => { });\n        this.io = params?.io ?? \"output\";\n        this.seen = new Map();\n    }\n    process(schema, _params = { path: [], schemaPath: [] }) {\n        var _a;\n        const def = schema._zod.def;\n        const formatMap = {\n            guid: \"uuid\",\n            url: \"uri\",\n            datetime: \"date-time\",\n            json_string: \"json-string\",\n            regex: \"\", // do not set\n        };\n        // check for schema in seens\n        const seen = this.seen.get(schema);\n        if (seen) {\n            seen.count++;\n            // check if cycle\n            const isCycle = _params.schemaPath.includes(schema);\n            if (isCycle) {\n                seen.cycle = _params.path;\n            }\n            return seen.schema;\n        }\n        // initialize\n        const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n        this.seen.set(schema, result);\n        // custom method overrides default behavior\n        const overrideSchema = schema._zod.toJSONSchema?.();\n        if (overrideSchema) {\n            result.schema = overrideSchema;\n        }\n        else {\n            const params = {\n                ..._params,\n                schemaPath: [..._params.schemaPath, schema],\n                path: _params.path,\n            };\n            const parent = schema._zod.parent;\n            if (parent) {\n                // schema was cloned from another schema\n                result.ref = parent;\n                this.process(parent, params);\n                this.seen.get(parent).isParent = true;\n            }\n            else {\n                const _json = result.schema;\n                switch (def.type) {\n                    case \"string\": {\n                        const json = _json;\n                        json.type = \"string\";\n                        const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n                            .bag;\n                        if (typeof minimum === \"number\")\n                            json.minLength = minimum;\n                        if (typeof maximum === \"number\")\n                            json.maxLength = maximum;\n                        // custom pattern overrides format\n                        if (format) {\n                            json.format = formatMap[format] ?? format;\n                            if (json.format === \"\")\n                                delete json.format; // empty format is not valid\n                        }\n                        if (contentEncoding)\n                            json.contentEncoding = contentEncoding;\n                        if (patterns && patterns.size > 0) {\n                            const regexes = [...patterns];\n                            if (regexes.length === 1)\n                                json.pattern = regexes[0].source;\n                            else if (regexes.length > 1) {\n                                result.schema.allOf = [\n                                    ...regexes.map((regex) => ({\n                                        ...(this.target === \"draft-7\" ? { type: \"string\" } : {}),\n                                        pattern: regex.source,\n                                    })),\n                                ];\n                            }\n                        }\n                        break;\n                    }\n                    case \"number\": {\n                        const json = _json;\n                        const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n                        if (typeof format === \"string\" && format.includes(\"int\"))\n                            json.type = \"integer\";\n                        else\n                            json.type = \"number\";\n                        if (typeof exclusiveMinimum === \"number\")\n                            json.exclusiveMinimum = exclusiveMinimum;\n                        if (typeof minimum === \"number\") {\n                            json.minimum = minimum;\n                            if (typeof exclusiveMinimum === \"number\") {\n                                if (exclusiveMinimum >= minimum)\n                                    delete json.minimum;\n                                else\n                                    delete json.exclusiveMinimum;\n                            }\n                        }\n                        if (typeof exclusiveMaximum === \"number\")\n                            json.exclusiveMaximum = exclusiveMaximum;\n                        if (typeof maximum === \"number\") {\n                            json.maximum = maximum;\n                            if (typeof exclusiveMaximum === \"number\") {\n                                if (exclusiveMaximum <= maximum)\n                                    delete json.maximum;\n                                else\n                                    delete json.exclusiveMaximum;\n                            }\n                        }\n                        if (typeof multipleOf === \"number\")\n                            json.multipleOf = multipleOf;\n                        break;\n                    }\n                    case \"boolean\": {\n                        const json = _json;\n                        json.type = \"boolean\";\n                        break;\n                    }\n                    case \"bigint\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"BigInt cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"symbol\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Symbols cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"null\": {\n                        _json.type = \"null\";\n                        break;\n                    }\n                    case \"any\": {\n                        break;\n                    }\n                    case \"unknown\": {\n                        break;\n                    }\n                    case \"undefined\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Undefined cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"void\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Void cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"never\": {\n                        _json.not = {};\n                        break;\n                    }\n                    case \"date\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Date cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"array\": {\n                        const json = _json;\n                        const { minimum, maximum } = schema._zod.bag;\n                        if (typeof minimum === \"number\")\n                            json.minItems = minimum;\n                        if (typeof maximum === \"number\")\n                            json.maxItems = maximum;\n                        json.type = \"array\";\n                        json.items = this.process(def.element, { ...params, path: [...params.path, \"items\"] });\n                        break;\n                    }\n                    case \"object\": {\n                        const json = _json;\n                        json.type = \"object\";\n                        json.properties = {};\n                        const shape = def.shape; // params.shapeCache.get(schema)!;\n                        for (const key in shape) {\n                            json.properties[key] = this.process(shape[key], {\n                                ...params,\n                                path: [...params.path, \"properties\", key],\n                            });\n                        }\n                        // required keys\n                        const allKeys = new Set(Object.keys(shape));\n                        // const optionalKeys = new Set(def.optional);\n                        const requiredKeys = new Set([...allKeys].filter((key) => {\n                            const v = def.shape[key]._zod;\n                            if (this.io === \"input\") {\n                                return v.optin === undefined;\n                            }\n                            else {\n                                return v.optout === undefined;\n                            }\n                        }));\n                        if (requiredKeys.size > 0) {\n                            json.required = Array.from(requiredKeys);\n                        }\n                        // catchall\n                        if (def.catchall?._zod.def.type === \"never\") {\n                            // strict\n                            json.additionalProperties = false;\n                        }\n                        else if (!def.catchall) {\n                            // regular\n                            if (this.io === \"output\")\n                                json.additionalProperties = false;\n                        }\n                        else if (def.catchall) {\n                            json.additionalProperties = this.process(def.catchall, {\n                                ...params,\n                                path: [...params.path, \"additionalProperties\"],\n                            });\n                        }\n                        break;\n                    }\n                    case \"union\": {\n                        const json = _json;\n                        json.anyOf = def.options.map((x, i) => this.process(x, {\n                            ...params,\n                            path: [...params.path, \"anyOf\", i],\n                        }));\n                        break;\n                    }\n                    case \"intersection\": {\n                        const json = _json;\n                        const a = this.process(def.left, {\n                            ...params,\n                            path: [...params.path, \"allOf\", 0],\n                        });\n                        const b = this.process(def.right, {\n                            ...params,\n                            path: [...params.path, \"allOf\", 1],\n                        });\n                        const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n                        const allOf = [\n                            ...(isSimpleIntersection(a) ? a.allOf : [a]),\n                            ...(isSimpleIntersection(b) ? b.allOf : [b]),\n                        ];\n                        json.allOf = allOf;\n                        break;\n                    }\n                    case \"tuple\": {\n                        const json = _json;\n                        json.type = \"array\";\n                        const prefixItems = def.items.map((x, i) => this.process(x, { ...params, path: [...params.path, \"prefixItems\", i] }));\n                        if (this.target === \"draft-2020-12\") {\n                            json.prefixItems = prefixItems;\n                        }\n                        else {\n                            json.items = prefixItems;\n                        }\n                        if (def.rest) {\n                            const rest = this.process(def.rest, {\n                                ...params,\n                                path: [...params.path, \"items\"],\n                            });\n                            if (this.target === \"draft-2020-12\") {\n                                json.items = rest;\n                            }\n                            else {\n                                json.additionalItems = rest;\n                            }\n                        }\n                        // additionalItems\n                        if (def.rest) {\n                            json.items = this.process(def.rest, {\n                                ...params,\n                                path: [...params.path, \"items\"],\n                            });\n                        }\n                        // length\n                        const { minimum, maximum } = schema._zod.bag;\n                        if (typeof minimum === \"number\")\n                            json.minItems = minimum;\n                        if (typeof maximum === \"number\")\n                            json.maxItems = maximum;\n                        break;\n                    }\n                    case \"record\": {\n                        const json = _json;\n                        json.type = \"object\";\n                        json.propertyNames = this.process(def.keyType, { ...params, path: [...params.path, \"propertyNames\"] });\n                        json.additionalProperties = this.process(def.valueType, {\n                            ...params,\n                            path: [...params.path, \"additionalProperties\"],\n                        });\n                        break;\n                    }\n                    case \"map\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Map cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"set\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Set cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"enum\": {\n                        const json = _json;\n                        const values = getEnumValues(def.entries);\n                        // Number enums can have both string and number values\n                        if (values.every((v) => typeof v === \"number\"))\n                            json.type = \"number\";\n                        if (values.every((v) => typeof v === \"string\"))\n                            json.type = \"string\";\n                        json.enum = values;\n                        break;\n                    }\n                    case \"literal\": {\n                        const json = _json;\n                        const vals = [];\n                        for (const val of def.values) {\n                            if (val === undefined) {\n                                if (this.unrepresentable === \"throw\") {\n                                    throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n                                }\n                                else {\n                                    // do not add to vals\n                                }\n                            }\n                            else if (typeof val === \"bigint\") {\n                                if (this.unrepresentable === \"throw\") {\n                                    throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n                                }\n                                else {\n                                    vals.push(Number(val));\n                                }\n                            }\n                            else {\n                                vals.push(val);\n                            }\n                        }\n                        if (vals.length === 0) {\n                            // do nothing (an undefined literal was stripped)\n                        }\n                        else if (vals.length === 1) {\n                            const val = vals[0];\n                            json.type = val === null ? \"null\" : typeof val;\n                            json.const = val;\n                        }\n                        else {\n                            if (vals.every((v) => typeof v === \"number\"))\n                                json.type = \"number\";\n                            if (vals.every((v) => typeof v === \"string\"))\n                                json.type = \"string\";\n                            if (vals.every((v) => typeof v === \"boolean\"))\n                                json.type = \"string\";\n                            if (vals.every((v) => v === null))\n                                json.type = \"null\";\n                            json.enum = vals;\n                        }\n                        break;\n                    }\n                    case \"file\": {\n                        const json = _json;\n                        const file = {\n                            type: \"string\",\n                            format: \"binary\",\n                            contentEncoding: \"binary\",\n                        };\n                        const { minimum, maximum, mime } = schema._zod.bag;\n                        if (minimum !== undefined)\n                            file.minLength = minimum;\n                        if (maximum !== undefined)\n                            file.maxLength = maximum;\n                        if (mime) {\n                            if (mime.length === 1) {\n                                file.contentMediaType = mime[0];\n                                Object.assign(json, file);\n                            }\n                            else {\n                                json.anyOf = mime.map((m) => {\n                                    const mFile = { ...file, contentMediaType: m };\n                                    return mFile;\n                                });\n                            }\n                        }\n                        else {\n                            Object.assign(json, file);\n                        }\n                        // if (this.unrepresentable === \"throw\") {\n                        //   throw new Error(\"File cannot be represented in JSON Schema\");\n                        // }\n                        break;\n                    }\n                    case \"transform\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Transforms cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"nullable\": {\n                        const inner = this.process(def.innerType, params);\n                        _json.anyOf = [inner, { type: \"null\" }];\n                        break;\n                    }\n                    case \"nonoptional\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        break;\n                    }\n                    case \"success\": {\n                        const json = _json;\n                        json.type = \"boolean\";\n                        break;\n                    }\n                    case \"default\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        _json.default = JSON.parse(JSON.stringify(def.defaultValue));\n                        break;\n                    }\n                    case \"prefault\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        if (this.io === \"input\")\n                            _json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n                        break;\n                    }\n                    case \"catch\": {\n                        // use conditionals\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        let catchValue;\n                        try {\n                            catchValue = def.catchValue(undefined);\n                        }\n                        catch {\n                            throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n                        }\n                        _json.default = catchValue;\n                        break;\n                    }\n                    case \"nan\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"NaN cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    case \"template_literal\": {\n                        const json = _json;\n                        const pattern = schema._zod.pattern;\n                        if (!pattern)\n                            throw new Error(\"Pattern not found in template literal\");\n                        json.type = \"string\";\n                        json.pattern = pattern.source;\n                        break;\n                    }\n                    case \"pipe\": {\n                        const innerType = this.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n                        this.process(innerType, params);\n                        result.ref = innerType;\n                        break;\n                    }\n                    case \"readonly\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        _json.readOnly = true;\n                        break;\n                    }\n                    // passthrough types\n                    case \"promise\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        break;\n                    }\n                    case \"optional\": {\n                        this.process(def.innerType, params);\n                        result.ref = def.innerType;\n                        break;\n                    }\n                    case \"lazy\": {\n                        const innerType = schema._zod.innerType;\n                        this.process(innerType, params);\n                        result.ref = innerType;\n                        break;\n                    }\n                    case \"custom\": {\n                        if (this.unrepresentable === \"throw\") {\n                            throw new Error(\"Custom types cannot be represented in JSON Schema\");\n                        }\n                        break;\n                    }\n                    default: {\n                        def;\n                    }\n                }\n            }\n        }\n        // metadata\n        const meta = this.metadataRegistry.get(schema);\n        if (meta)\n            Object.assign(result.schema, meta);\n        if (this.io === \"input\" && isTransforming(schema)) {\n            // examples/defaults only apply to output type of pipe\n            delete result.schema.examples;\n            delete result.schema.default;\n        }\n        // set prefault as default\n        if (this.io === \"input\" && result.schema._prefault)\n            (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n        delete result.schema._prefault;\n        // pulling fresh from this.seen in case it was overwritten\n        const _result = this.seen.get(schema);\n        return _result.schema;\n    }\n    emit(schema, _params) {\n        const params = {\n            cycles: _params?.cycles ?? \"ref\",\n            reused: _params?.reused ?? \"inline\",\n            // unrepresentable: _params?.unrepresentable ?? \"throw\",\n            // uri: _params?.uri ?? ((id) => `${id}`),\n            external: _params?.external ?? undefined,\n        };\n        // iterate over seen map;\n        const root = this.seen.get(schema);\n        if (!root)\n            throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n        // initialize result with root schema fields\n        // Object.assign(result, seen.cached);\n        // returns a ref to the schema\n        // defId will be empty if the ref points to an external schema (or #)\n        const makeURI = (entry) => {\n            // comparing the seen objects because sometimes\n            // multiple schemas map to the same seen object.\n            // e.g. lazy\n            // external is configured\n            const defsSegment = this.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n            if (params.external) {\n                const externalId = params.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${this.counter++}`;\n                // check if schema is in the external registry\n                const uriGenerator = params.external.uri ?? ((id) => id);\n                if (externalId) {\n                    return { ref: uriGenerator(externalId) };\n                }\n                // otherwise, add to __shared\n                const id = entry[1].defId ?? entry[1].schema.id ?? `schema${this.counter++}`;\n                entry[1].defId = id; // set defId so it will be reused if needed\n                return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n            }\n            if (entry[1] === root) {\n                return { ref: \"#\" };\n            }\n            // self-contained schema\n            const uriPrefix = `#`;\n            const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n            const defId = entry[1].schema.id ?? `__schema${this.counter++}`;\n            return { defId, ref: defUriPrefix + defId };\n        };\n        // stored cached version in `def` property\n        // remove all properties, set $ref\n        const extractToDef = (entry) => {\n            // if the schema is already a reference, do not extract it\n            if (entry[1].schema.$ref) {\n                return;\n            }\n            const seen = entry[1];\n            const { ref, defId } = makeURI(entry);\n            seen.def = { ...seen.schema };\n            // defId won't be set if the schema is a reference to an external schema\n            if (defId)\n                seen.defId = defId;\n            // wipe away all properties except $ref\n            const schema = seen.schema;\n            for (const key in schema) {\n                delete schema[key];\n            }\n            schema.$ref = ref;\n        };\n        // throw on cycles\n        // break cycles\n        if (params.cycles === \"throw\") {\n            for (const entry of this.seen.entries()) {\n                const seen = entry[1];\n                if (seen.cycle) {\n                    throw new Error(\"Cycle detected: \" +\n                        `#/${seen.cycle?.join(\"/\")}/<root>` +\n                        '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n                }\n            }\n        }\n        // extract schemas into $defs\n        for (const entry of this.seen.entries()) {\n            const seen = entry[1];\n            // convert root schema to # $ref\n            if (schema === entry[0]) {\n                extractToDef(entry); // this has special handling for the root schema\n                continue;\n            }\n            // extract schemas that are in the external registry\n            if (params.external) {\n                const ext = params.external.registry.get(entry[0])?.id;\n                if (schema !== entry[0] && ext) {\n                    extractToDef(entry);\n                    continue;\n                }\n            }\n            // extract schemas with `id` meta\n            const id = this.metadataRegistry.get(entry[0])?.id;\n            if (id) {\n                extractToDef(entry);\n                continue;\n            }\n            // break cycles\n            if (seen.cycle) {\n                // any\n                extractToDef(entry);\n                continue;\n            }\n            // extract reused schemas\n            if (seen.count > 1) {\n                if (params.reused === \"ref\") {\n                    extractToDef(entry);\n                    // biome-ignore lint:\n                    continue;\n                }\n            }\n        }\n        // flatten _refs\n        const flattenRef = (zodSchema, params) => {\n            const seen = this.seen.get(zodSchema);\n            const schema = seen.def ?? seen.schema;\n            const _cached = { ...schema };\n            // already seen\n            if (seen.ref === null) {\n                return;\n            }\n            // flatten ref if defined\n            const ref = seen.ref;\n            seen.ref = null; // prevent recursion\n            if (ref) {\n                flattenRef(ref, params);\n                // merge referenced schema into current\n                const refSchema = this.seen.get(ref).schema;\n                if (refSchema.$ref && params.target === \"draft-7\") {\n                    schema.allOf = schema.allOf ?? [];\n                    schema.allOf.push(refSchema);\n                }\n                else {\n                    Object.assign(schema, refSchema);\n                    Object.assign(schema, _cached); // prevent overwriting any fields in the original schema\n                }\n            }\n            // execute overrides\n            if (!seen.isParent)\n                this.override({\n                    zodSchema: zodSchema,\n                    jsonSchema: schema,\n                    path: seen.path ?? [],\n                });\n        };\n        for (const entry of [...this.seen.entries()].reverse()) {\n            flattenRef(entry[0], { target: this.target });\n        }\n        const result = {};\n        if (this.target === \"draft-2020-12\") {\n            result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n        }\n        else if (this.target === \"draft-7\") {\n            result.$schema = \"http://json-schema.org/draft-07/schema#\";\n        }\n        else {\n            console.warn(`Invalid target: ${this.target}`);\n        }\n        if (params.external?.uri) {\n            const id = params.external.registry.get(schema)?.id;\n            if (!id)\n                throw new Error(\"Schema is missing an `id` property\");\n            result.$id = params.external.uri(id);\n        }\n        Object.assign(result, root.def);\n        // build defs object\n        const defs = params.external?.defs ?? {};\n        for (const entry of this.seen.entries()) {\n            const seen = entry[1];\n            if (seen.def && seen.defId) {\n                defs[seen.defId] = seen.def;\n            }\n        }\n        // set definitions in result\n        if (params.external) {\n        }\n        else {\n            if (Object.keys(defs).length > 0) {\n                if (this.target === \"draft-2020-12\") {\n                    result.$defs = defs;\n                }\n                else {\n                    result.definitions = defs;\n                }\n            }\n        }\n        try {\n            // this \"finalizes\" this schema and ensures all cycles are removed\n            // each call to .emit() is functionally independent\n            // though the seen map is shared\n            return JSON.parse(JSON.stringify(result));\n        }\n        catch (_err) {\n            throw new Error(\"Error converting schema to JSON.\");\n        }\n    }\n}\nexport function toJSONSchema(input, _params) {\n    if (input instanceof $ZodRegistry) {\n        const gen = new JSONSchemaGenerator(_params);\n        const defs = {};\n        for (const entry of input._idmap.entries()) {\n            const [_, schema] = entry;\n            gen.process(schema);\n        }\n        const schemas = {};\n        const external = {\n            registry: input,\n            uri: _params?.uri,\n            defs,\n        };\n        for (const entry of input._idmap.entries()) {\n            const [key, schema] = entry;\n            schemas[key] = gen.emit(schema, {\n                ..._params,\n                external,\n            });\n        }\n        if (Object.keys(defs).length > 0) {\n            const defsSegment = gen.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n            schemas.__shared = {\n                [defsSegment]: defs,\n            };\n        }\n        return { schemas };\n    }\n    const gen = new JSONSchemaGenerator(_params);\n    gen.process(input);\n    return gen.emit(input, _params);\n}\nfunction isTransforming(_schema, _ctx) {\n    const ctx = _ctx ?? { seen: new Set() };\n    if (ctx.seen.has(_schema))\n        return false;\n    ctx.seen.add(_schema);\n    const schema = _schema;\n    const def = schema._zod.def;\n    switch (def.type) {\n        case \"string\":\n        case \"number\":\n        case \"bigint\":\n        case \"boolean\":\n        case \"date\":\n        case \"symbol\":\n        case \"undefined\":\n        case \"null\":\n        case \"any\":\n        case \"unknown\":\n        case \"never\":\n        case \"void\":\n        case \"literal\":\n        case \"enum\":\n        case \"nan\":\n        case \"file\":\n        case \"template_literal\":\n            return false;\n        case \"array\": {\n            return isTransforming(def.element, ctx);\n        }\n        case \"object\": {\n            for (const key in def.shape) {\n                if (isTransforming(def.shape[key], ctx))\n                    return true;\n            }\n            return false;\n        }\n        case \"union\": {\n            for (const option of def.options) {\n                if (isTransforming(option, ctx))\n                    return true;\n            }\n            return false;\n        }\n        case \"intersection\": {\n            return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n        }\n        case \"tuple\": {\n            for (const item of def.items) {\n                if (isTransforming(item, ctx))\n                    return true;\n            }\n            if (def.rest && isTransforming(def.rest, ctx))\n                return true;\n            return false;\n        }\n        case \"record\": {\n            return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n        }\n        case \"map\": {\n            return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n        }\n        case \"set\": {\n            return isTransforming(def.valueType, ctx);\n        }\n        // inner types\n        case \"promise\":\n        case \"optional\":\n        case \"nonoptional\":\n        case \"nullable\":\n        case \"readonly\":\n            return isTransforming(def.innerType, ctx);\n        case \"lazy\":\n            return isTransforming(def.getter(), ctx);\n        case \"default\": {\n            return isTransforming(def.innerType, ctx);\n        }\n        case \"prefault\": {\n            return isTransforming(def.innerType, ctx);\n        }\n        case \"custom\": {\n            return false;\n        }\n        case \"transform\": {\n            return true;\n        }\n        case \"pipe\": {\n            return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n        }\n        case \"success\": {\n            return false;\n        }\n        case \"catch\": {\n            return false;\n        }\n        default:\n            def;\n    }\n    throw new Error(`Unknown schema type: ${def.type}`);\n}\n", "export {};\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n    core.$ZodISODateTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n    return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n    core.$ZodISODate.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n    return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n    core.$ZodISOTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n    return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n    core.$ZodISODuration.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n    return core._isoDuration(ZodISODuration, params);\n}\n", "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nconst initializer = (inst, issues) => {\n    $ZodError.init(inst, issues);\n    inst.name = \"ZodError\";\n    Object.defineProperties(inst, {\n        format: {\n            value: (mapper) => core.formatError(inst, mapper),\n            // enumerable: false,\n        },\n        flatten: {\n            value: (mapper) => core.flattenError(inst, mapper),\n            // enumerable: false,\n        },\n        addIssue: {\n            value: (issue) => inst.issues.push(issue),\n            // enumerable: false,\n        },\n        addIssues: {\n            value: (issues) => inst.issues.push(...issues),\n            // enumerable: false,\n        },\n        isEmpty: {\n            get() {\n                return inst.issues.length === 0;\n            },\n            // enumerable: false,\n        },\n    });\n    // Object.defineProperty(inst, \"isEmpty\", {\n    //   get() {\n    //     return inst.issues.length === 0;\n    //   },\n    // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n    Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n", "import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n    core.$ZodType.init(inst, def);\n    inst.def = def;\n    Object.defineProperty(inst, \"_def\", { value: def });\n    // base methods\n    inst.check = (...checks) => {\n        return inst.clone({\n            ...def,\n            checks: [\n                ...(def.checks ?? []),\n                ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n            ],\n        }\n        // { parent: true }\n        );\n    };\n    inst.clone = (def, params) => core.clone(inst, def, params);\n    inst.brand = () => inst;\n    inst.register = ((reg, meta) => {\n        reg.add(inst, meta);\n        return inst;\n    });\n    // parsing\n    inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n    inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n    inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n    inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n    inst.spa = inst.safeParseAsync;\n    // refinements\n    inst.refine = (check, params) => inst.check(refine(check, params));\n    inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n    inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n    // wrappers\n    inst.optional = () => optional(inst);\n    inst.nullable = () => nullable(inst);\n    inst.nullish = () => optional(nullable(inst));\n    inst.nonoptional = (params) => nonoptional(inst, params);\n    inst.array = () => array(inst);\n    inst.or = (arg) => union([inst, arg]);\n    inst.and = (arg) => intersection(inst, arg);\n    inst.transform = (tx) => pipe(inst, transform(tx));\n    inst.default = (def) => _default(inst, def);\n    inst.prefault = (def) => prefault(inst, def);\n    // inst.coalesce = (def, params) => coalesce(inst, def, params);\n    inst.catch = (params) => _catch(inst, params);\n    inst.pipe = (target) => pipe(inst, target);\n    inst.readonly = () => readonly(inst);\n    // meta\n    inst.describe = (description) => {\n        const cl = inst.clone();\n        core.globalRegistry.add(cl, { description });\n        return cl;\n    };\n    Object.defineProperty(inst, \"description\", {\n        get() {\n            return core.globalRegistry.get(inst)?.description;\n        },\n        configurable: true,\n    });\n    inst.meta = (...args) => {\n        if (args.length === 0) {\n            return core.globalRegistry.get(inst);\n        }\n        const cl = inst.clone();\n        core.globalRegistry.add(cl, args[0]);\n        return cl;\n    };\n    // helpers\n    inst.isOptional = () => inst.safeParse(undefined).success;\n    inst.isNullable = () => inst.safeParse(null).success;\n    return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    ZodType.init(inst, def);\n    const bag = inst._zod.bag;\n    inst.format = bag.format ?? null;\n    inst.minLength = bag.minimum ?? null;\n    inst.maxLength = bag.maximum ?? null;\n    // validations\n    inst.regex = (...args) => inst.check(checks.regex(...args));\n    inst.includes = (...args) => inst.check(checks.includes(...args));\n    inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n    inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n    inst.min = (...args) => inst.check(checks.minLength(...args));\n    inst.max = (...args) => inst.check(checks.maxLength(...args));\n    inst.length = (...args) => inst.check(checks.length(...args));\n    inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n    inst.lowercase = (params) => inst.check(checks.lowercase(params));\n    inst.uppercase = (params) => inst.check(checks.uppercase(params));\n    // transforms\n    inst.trim = () => inst.check(checks.trim());\n    inst.normalize = (...args) => inst.check(checks.normalize(...args));\n    inst.toLowerCase = () => inst.check(checks.toLowerCase());\n    inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    _ZodString.init(inst, def);\n    inst.email = (params) => inst.check(core._email(ZodEmail, params));\n    inst.url = (params) => inst.check(core._url(ZodURL, params));\n    inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n    inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n    inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n    inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n    inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n    inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n    inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n    inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n    inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n    inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n    inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n    inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n    inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n    inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n    inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n    inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n    inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n    // iso\n    inst.datetime = (params) => inst.check(iso.datetime(params));\n    inst.date = (params) => inst.check(iso.date(params));\n    inst.time = (params) => inst.check(iso.time(params));\n    inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n    return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n    core.$ZodStringFormat.init(inst, def);\n    _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmail.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n    return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodGUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n    return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodUUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n    return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n    return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n    return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n    return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodURL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n    return core._url(ZodURL, params);\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmoji.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n    return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodNanoID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n    return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n    return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID2.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n    return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodULID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n    return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodXID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n    return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodKSUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n    return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n    return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n    return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n    core.$ZodCIDRv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n    return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n    core.$ZodCIDRv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n    return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n    return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64URL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n    return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodE164.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n    return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodJWT.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n    return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCustomStringFormat.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n    return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n    core.$ZodNumber.init(inst, def);\n    ZodType.init(inst, def);\n    inst.gt = (value, params) => inst.check(checks.gt(value, params));\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.lt = (value, params) => inst.check(checks.lt(value, params));\n    inst.lte = (value, params) => inst.check(checks.lte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    inst.int = (params) => inst.check(int(params));\n    inst.safe = (params) => inst.check(int(params));\n    inst.positive = (params) => inst.check(checks.gt(0, params));\n    inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n    inst.negative = (params) => inst.check(checks.lt(0, params));\n    inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n    inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n    inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n    // inst.finite = (params) => inst.check(core.finite(params));\n    inst.finite = () => inst;\n    const bag = inst._zod.bag;\n    inst.minValue =\n        Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n    inst.maxValue =\n        Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n    inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n    inst.isFinite = true;\n    inst.format = bag.format ?? null;\n});\nexport function number(params) {\n    return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n    core.$ZodNumberFormat.init(inst, def);\n    ZodNumber.init(inst, def);\n});\nexport function int(params) {\n    return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n    return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n    return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n    return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n    return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n    core.$ZodBoolean.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function boolean(params) {\n    return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n    core.$ZodBigInt.init(inst, def);\n    ZodType.init(inst, def);\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.gt = (value, params) => inst.check(checks.gt(value, params));\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.lt = (value, params) => inst.check(checks.lt(value, params));\n    inst.lte = (value, params) => inst.check(checks.lte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n    inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n    inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n    inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n    inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n    const bag = inst._zod.bag;\n    inst.minValue = bag.minimum ?? null;\n    inst.maxValue = bag.maximum ?? null;\n    inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n    return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n    core.$ZodBigIntFormat.init(inst, def);\n    ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n    return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n    return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n    core.$ZodSymbol.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function symbol(params) {\n    return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n    core.$ZodUndefined.init(inst, def);\n    ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n    return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n    core.$ZodNull.init(inst, def);\n    ZodType.init(inst, def);\n});\nfunction _null(params) {\n    return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n    core.$ZodAny.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function any() {\n    return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n    core.$ZodUnknown.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function unknown() {\n    return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n    core.$ZodNever.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function never(params) {\n    return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n    core.$ZodVoid.init(inst, def);\n    ZodType.init(inst, def);\n});\nfunction _void(params) {\n    return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n    core.$ZodDate.init(inst, def);\n    ZodType.init(inst, def);\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    const c = inst._zod.bag;\n    inst.minDate = c.minimum ? new Date(c.minimum) : null;\n    inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n    return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n    core.$ZodArray.init(inst, def);\n    ZodType.init(inst, def);\n    inst.element = def.element;\n    inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n    inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n    inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n    inst.length = (len, params) => inst.check(checks.length(len, params));\n    inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n    return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n    const shape = schema._zod.def.shape;\n    return literal(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n    core.$ZodObject.init(inst, def);\n    ZodType.init(inst, def);\n    util.defineLazy(inst, \"shape\", () => def.shape);\n    inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n    inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n    inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n    // inst.nonstrict = () => inst.clone({ ...inst._zod.def, catchall: api.unknown() });\n    inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n    inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n    inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n    inst.extend = (incoming) => {\n        return util.extend(inst, incoming);\n    };\n    inst.merge = (other) => util.merge(inst, other);\n    inst.pick = (mask) => util.pick(inst, mask);\n    inst.omit = (mask) => util.omit(inst, mask);\n    inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n    inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n    const def = {\n        type: \"object\",\n        get shape() {\n            util.assignProp(this, \"shape\", { ...shape });\n            return this.shape;\n        },\n        ...util.normalizeParams(params),\n    };\n    return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        get shape() {\n            util.assignProp(this, \"shape\", { ...shape });\n            return this.shape;\n        },\n        catchall: never(),\n        ...util.normalizeParams(params),\n    });\n}\n// looseObject\nexport function looseObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        get shape() {\n            util.assignProp(this, \"shape\", { ...shape });\n            return this.shape;\n        },\n        catchall: unknown(),\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n    core.$ZodUnion.init(inst, def);\n    ZodType.init(inst, def);\n    inst.options = def.options;\n});\nexport function union(options, params) {\n    return new ZodUnion({\n        type: \"union\",\n        options: options,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n    // const [options, params] = args;\n    return new ZodDiscriminatedUnion({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n    core.$ZodIntersection.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n    return new ZodIntersection({\n        type: \"intersection\",\n        left: left,\n        right: right,\n    });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n    core.$ZodTuple.init(inst, def);\n    ZodType.init(inst, def);\n    inst.rest = (rest) => inst.clone({\n        ...inst._zod.def,\n        rest: rest,\n    });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof core.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new ZodTuple({\n        type: \"tuple\",\n        items: items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n    core.$ZodRecord.init(inst, def);\n    ZodType.init(inst, def);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType: union([keyType, never()]),\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n    core.$ZodMap.init(inst, def);\n    ZodType.init(inst, def);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n    return new ZodMap({\n        type: \"map\",\n        keyType: keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n    core.$ZodSet.init(inst, def);\n    ZodType.init(inst, def);\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n    return new ZodSet({\n        type: \"set\",\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n    core.$ZodEnum.init(inst, def);\n    ZodType.init(inst, def);\n    inst.enum = def.entries;\n    inst.options = Object.values(def.entries);\n    const keys = new Set(Object.keys(def.entries));\n    inst.extract = (values, params) => {\n        const newEntries = {};\n        for (const value of values) {\n            if (keys.has(value)) {\n                newEntries[value] = def.entries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n    inst.exclude = (values, params) => {\n        const newEntries = { ...def.entries };\n        for (const value of values) {\n            if (keys.has(value)) {\n                delete newEntries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n});\nfunction _enum(values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n    core.$ZodLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst.values = new Set(def.values);\n    Object.defineProperty(inst, \"value\", {\n        get() {\n            if (def.values.length > 1) {\n                throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n            }\n            return def.values[0];\n        },\n    });\n});\nexport function literal(value, params) {\n    return new ZodLiteral({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n    core.$ZodFile.init(inst, def);\n    ZodType.init(inst, def);\n    inst.min = (size, params) => inst.check(core._minSize(size, params));\n    inst.max = (size, params) => inst.check(core._maxSize(size, params));\n    inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n    return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n    core.$ZodTransform.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = inst);\n                _issue.continue ?? (_issue.continue = true);\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        const output = def.transform(payload.value, payload);\n        if (output instanceof Promise) {\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        payload.value = output;\n        return payload;\n    };\n});\nexport function transform(fn) {\n    return new ZodTransform({\n        type: \"transform\",\n        transform: fn,\n    });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n    core.$ZodOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n    return new ZodOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n    core.$ZodNullable.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n    return new ZodNullable({\n        type: \"nullable\",\n        innerType: innerType,\n    });\n}\n// nullish\nexport function nullish(innerType) {\n    return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n    core.$ZodDefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n    return new ZodDefault({\n        type: \"default\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n        },\n    });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n    core.$ZodPrefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n    return new ZodPrefault({\n        type: \"prefault\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n        },\n    });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n    core.$ZodNonOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n    return new ZodNonOptional({\n        type: \"nonoptional\",\n        innerType: innerType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n    core.$ZodSuccess.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n    return new ZodSuccess({\n        type: \"success\",\n        innerType: innerType,\n    });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n    core.$ZodCatch.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n    return new ZodCatch({\n        type: \"catch\",\n        innerType: innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n    core.$ZodNaN.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function nan(params) {\n    return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n    core.$ZodPipe.init(inst, def);\n    ZodType.init(inst, def);\n    inst.in = def.in;\n    inst.out = def.out;\n});\nexport function pipe(in_, out) {\n    return new ZodPipe({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        // ...util.normalizeParams(params),\n    });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n    core.$ZodReadonly.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function readonly(innerType) {\n    return new ZodReadonly({\n        type: \"readonly\",\n        innerType: innerType,\n    });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n    core.$ZodTemplateLiteral.init(inst, def);\n    ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n    return new ZodTemplateLiteral({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n    core.$ZodLazy.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n    return new ZodLazy({\n        type: \"lazy\",\n        getter: getter,\n    });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n    core.$ZodPromise.init(inst, def);\n    ZodType.init(inst, def);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n    return new ZodPromise({\n        type: \"promise\",\n        innerType: innerType,\n    });\n}\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n    core.$ZodCustom.init(inst, def);\n    ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn) {\n    const ch = new core.$ZodCheck({\n        check: \"custom\",\n        // ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\nexport function custom(fn, _params) {\n    return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n    return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n    const ch = check((payload) => {\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = ch);\n                _issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        return fn(payload.value, payload);\n    });\n    return ch;\n}\nfunction _instanceof(cls, params = {\n    error: `Input not instance of ${cls.name}`,\n}) {\n    const inst = new ZodCustom({\n        type: \"custom\",\n        check: \"custom\",\n        fn: (data) => data instanceof cls,\n        abort: true,\n        ...util.normalizeParams(params),\n    });\n    inst._zod.bag.Class = cls;\n    return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n    Pipe: ZodPipe,\n    Boolean: ZodBoolean,\n    String: ZodString,\n    Transform: ZodTransform,\n}, ...args);\nexport function json(params) {\n    const jsonSchema = lazy(() => {\n        return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n    });\n    return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n    return pipe(transform(fn), schema);\n}\n", "// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n    invalid_type: \"invalid_type\",\n    too_big: \"too_big\",\n    too_small: \"too_small\",\n    invalid_format: \"invalid_format\",\n    not_multiple_of: \"not_multiple_of\",\n    unrecognized_keys: \"unrecognized_keys\",\n    invalid_union: \"invalid_union\",\n    invalid_key: \"invalid_key\",\n    invalid_element: \"invalid_element\",\n    invalid_value: \"invalid_value\",\n    custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n    core.config({\n        customError: map,\n    });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n    return core.config().customError;\n}\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n    return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n    return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n    return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n    return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n    return core._coercedDate(schemas.ZodDate, params);\n}\n", "import { db, usersTable } from \"@workspace/db\";\nimport { eq } from \"drizzle-orm\";\nimport bcrypt from \"bcryptjs\";\nimport { logger } from \"./logger\";\n\nconst BCRYPT_ROUNDS = 10;\n\nconst SEED_USERS = [\n  {\n    email: \"admin@clinic.eg\",\n    name: \"\u0623. \u0645\u062D\u0645\u062F \u0641\u0624\u0627\u062F\",\n    role: \"admin\" as const,\n    defaultPassword: \"admin1234\",\n  },\n  {\n    email: \"ashraf.maabad@clinic.eg\",\n    name: \"\u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F\",\n    role: \"doctor\" as const,\n    defaultPassword: \"doctor1234\",\n  },\n  {\n    email: \"mona.elsayed@clinic.eg\",\n    name: \"\u0623. \u0645\u0646\u0649 \u0627\u0644\u0633\u064A\u062F\",\n    role: \"nurse\" as const,\n    defaultPassword: \"nurse1234\",\n  },\n];\n\n/**\n * Creates development seed accounts ONLY when ENABLE_SEED_USERS=true is\n * explicitly set in the environment. Disabled by default so that production\n * deployments never auto-create accounts with known default passwords.\n */\nexport async function ensureSeedUsers(): Promise<void> {\n  if (process.env[\"ENABLE_SEED_USERS\"] !== \"true\") {\n    logger.info(\"ensureSeedUsers: skipped (ENABLE_SEED_USERS not set)\");\n    return;\n  }\n\n  if (process.env[\"NODE_ENV\"] === \"production\") {\n    logger.error(\n      \"ENABLE_SEED_USERS=true must not be set in production \u2014 it creates accounts with known default passwords. Aborting startup.\",\n    );\n    process.exit(1);\n  }\n\n  logger.warn(\n    \"ensureSeedUsers: ENABLE_SEED_USERS=true \u2014 creating development seed accounts with default passwords. Do NOT set this in production.\",\n  );\n\n  try {\n    for (const seed of SEED_USERS) {\n      const [existing] = await db\n        .select()\n        .from(usersTable)\n        .where(eq(usersTable.email, seed.email))\n        .limit(1);\n\n      if (!existing) {\n        const hash = await bcrypt.hash(seed.defaultPassword, BCRYPT_ROUNDS);\n        await db.insert(usersTable).values({\n          email: seed.email,\n          name: seed.name,\n          role: seed.role,\n          passwordHash: hash,\n        });\n        logger.info(\n          { email: seed.email },\n          \"Created seed user with default password (development only)\",\n        );\n      }\n    }\n  } catch (err) {\n    logger.error({ err }, \"ensureSeedUsers failed (continuing startup)\");\n  }\n}\n", "import {\n  db,\n  siteSettingsTable,\n  siteDoctorsTable,\n  siteServicesTable,\n} from \"@workspace/db\";\nimport { sql } from \"drizzle-orm\";\nimport { logger } from \"./logger\";\n\n/**\n * Default page-text content mirroring the values that were previously\n * hardcoded across the public site pages (Home, About, Instructions, Rights).\n * Stored in site_settings.pageContent and editable from the admin control panel.\n */\nconst DEFAULT_PAGE_CONTENT = {\n  home: {\n    heroBadge: \"\u0631\u0639\u0627\u064A\u0629 \u0645\u062A\u0643\u0627\u0645\u0644\u0629 \u0644\u0635\u062D\u0629 \u0623\u0637\u0641\u0627\u0644\u0643\u0645\",\n    heroTitle: \"\u0639\u064A\u0627\u062F\u0629 \u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u0627\u0644\u062A\u062E\u0635\u0635\u064A\",\n    heroSubtitle:\n      \"\u0646\u0642\u062F\u0645 \u0631\u0639\u0627\u064A\u0629 \u0637\u0628\u064A\u0629 \u0645\u062A\u0643\u0627\u0645\u0644\u0629 \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629 \u0628\u0623\u062D\u062F\u062B \u0627\u0644\u0623\u0633\u0627\u0644\u064A\u0628 \u0627\u0644\u0637\u0628\u064A\u0629 \u0648\u062A\u062D\u062A \u0625\u0634\u0631\u0627\u0641 \u0637\u0628\u064A \u0645\u062A\u062E\u0635\u0635. \u0635\u062D\u0629 \u0637\u0641\u0644\u0643 \u0623\u0645\u0627\u0646\u0629 \u0641\u064A \u0623\u064A\u062F\u064D \u0623\u0645\u064A\u0646\u0629.\",\n    heroBadges: [\"\u062E\u0628\u0631\u0629 +20 \u0633\u0646\u0629\", \"\u0623\u062D\u062F\u062B \u0627\u0644\u0623\u062C\u0647\u0632\u0629\", \"\u0631\u0639\u0627\u064A\u0629 \u0634\u0627\u0645\u0644\u0629\"],\n    doctorIntro:\n      \"\u0646\u0647\u062A\u0645 \u0628\u0635\u062D\u0629 \u0637\u0641\u0644\u0643 \u0645\u0646 \u0627\u0644\u0644\u062D\u0638\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u0649 \u0644\u0644\u0648\u0644\u0627\u062F\u0629 \u0648\u062D\u062A\u0649 \u0645\u0631\u062D\u0644\u0629 \u0627\u0644\u0645\u0631\u0627\u0647\u0642\u0629\u060C \u0641\u064A \u0628\u064A\u0626\u0629 \u0622\u0645\u0646\u0629 \u0648\u0648\u062F\u0648\u062F\u0629\u060C \u0648\u0628\u062E\u0637\u0629 \u0639\u0644\u0627\u062C\u064A\u0629 \u0648\u0627\u0636\u062D\u0629 \u0644\u0643\u0644 \u062D\u0627\u0644\u0629.\",\n    credentials: [\n      \"\u0645\u0627\u062C\u0633\u062A\u064A\u0631 \u0641\u064A \u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644\",\n      \"\u0639\u0636\u0648 \u0627\u0644\u062C\u0645\u0639\u064A\u0629 \u0627\u0644\u0645\u0635\u0631\u064A\u0629 \u0644\u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644\",\n      \"\u0628\u0631\u0648\u062A\u0648\u0643\u0648\u0644\u0627\u062A \u0639\u0644\u0627\u062C \u0645\u0639\u062A\u0645\u062F\u0629 \u0639\u0627\u0644\u0645\u064A\u0627\u064B\",\n      \"\u0645\u0644\u0641 \u0637\u0628\u064A \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0644\u0643\u0644 \u0637\u0641\u0644\",\n    ],\n    features: [\n      {\n        title: \"\u0646\u0638\u0627\u0645 \u0637\u0628\u064A \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0645\u062A\u0643\u0627\u0645\u0644\",\n        desc: \"\u0643\u0644 \u0632\u064A\u0627\u0631\u0629 \u0648\u0643\u0644 \u0631\u0648\u0634\u062A\u0629 \u0645\u0648\u062B\u0642\u0629 \u0641\u064A \u0645\u0644\u0641 \u0637\u0641\u0644\u0643 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064A\u0647 \u0623\u0648\u0646\u0644\u0627\u064A\u0646.\",\n      },\n      {\n        title: \"\u0645\u0648\u0627\u0639\u064A\u062F \u0628\u062F\u0648\u0646 \u0627\u0646\u062A\u0638\u0627\u0631\",\n        desc: \"\u0627\u062D\u062C\u0632 \u0645\u0648\u0639\u062F\u0643 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u0627\u064B \u0648\u0627\u062E\u062A\u0631 \u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0645\u0646\u0627\u0633\u0628 \u0644\u0643.\",\n      },\n      {\n        title: \"\u062A\u0648\u0627\u0635\u0644 \u0645\u0633\u062A\u0645\u0631\",\n        desc: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0639\u062F \u0627\u0644\u0632\u064A\u0627\u0631\u0629 \u0639\u0628\u0631 \u0627\u0644\u0648\u0627\u062A\u0633\u0627\u0628 \u0648\u062A\u0630\u0643\u064A\u0631 \u0628\u0645\u0648\u0627\u0639\u064A\u062F \u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A.\",\n      },\n    ],\n    quote:\n      \"\u0646\u0624\u0645\u0646 \u0628\u0623\u0646 \u0637\u0641\u0644\u0643 \u064A\u0633\u062A\u062D\u0642 \u0623\u0641\u0636\u0644 \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u064A\u0629 \u0645\u0645\u0643\u0646\u0629\u060C \u0648\u0623\u0646 \u0631\u0627\u062D\u0629 \u0627\u0644\u0623\u0647\u0644 \u0648\u0627\u0637\u0645\u0626\u0646\u0627\u0646\u0647\u0645 \u062C\u0632\u0621 \u0645\u0646 \u0627\u0644\u0639\u0644\u0627\u062C.\",\n  },\n  about: {\n    heroTitle: \"\u0646\u0647\u062A\u0645 \u0628\u0637\u0641\u0644\u0643 \u0643\u0623\u0646\u0647 \u0637\u0641\u0644\u0646\u0627\",\n    intro:\n      \"\u0639\u064A\u0627\u062F\u0629 \u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F \u0645\u062A\u062E\u0635\u0635\u0629 \u0641\u064A \u062A\u0642\u062F\u064A\u0645 \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u064A\u0629 \u0645\u062A\u0643\u0627\u0645\u0644\u0629 \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\u060C \u062A\u062C\u0645\u0639 \u0628\u064A\u0646 \u0627\u0644\u062E\u0628\u0631\u0629 \u0627\u0644\u0637\u0628\u064A\u0629 \u0648\u0627\u0644\u0627\u0647\u062A\u0645\u0627\u0645 \u0627\u0644\u0625\u0646\u0633\u0627\u0646\u064A.\",\n    whoWeAre:\n      \"\u0646\u0624\u0645\u0646 \u0628\u0623\u0646 \u0637\u0641\u0644\u0643 \u064A\u0633\u062A\u062D\u0642 \u0623\u0641\u0636\u0644 \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u064A\u0629 \u0645\u0645\u0643\u0646\u0629. \u0644\u0630\u0644\u0643 \u0646\u0648\u0641\u0631 \u0628\u064A\u0626\u0629 \u0647\u0627\u062F\u0626\u0629 \u0648\u0648\u062F\u0648\u062F\u0629 \u0648\u0641\u0631\u064A\u0642 \u0637\u0628\u064A \u0645\u062A\u062E\u0635\u0635 \u064A\u0647\u062A\u0645 \u0628\u0643\u0644 \u062A\u0641\u0627\u0635\u064A\u0644 \u0635\u062D\u0629 \u0637\u0641\u0644\u0643 \u0645\u0646 \u0627\u0644\u0644\u062D\u0638\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u0649 \u0644\u0644\u0648\u0644\u0627\u062F\u0629 \u0648\u062D\u062A\u0649 \u0645\u0631\u062D\u0644\u0629 \u0627\u0644\u0645\u0631\u0627\u0647\u0642\u0629. \u0646\u0633\u062A\u062E\u062F\u0645 \u0623\u062D\u062F\u062B \u0627\u0644\u0623\u062C\u0647\u0632\u0629 \u0627\u0644\u0637\u0628\u064A\u0629 \u0648\u0646\u062A\u0628\u0639 \u0627\u0644\u0628\u0631\u0648\u062A\u0648\u0643\u0648\u0644\u0627\u062A \u0627\u0644\u0639\u0644\u0627\u062C\u064A\u0629 \u0627\u0644\u0645\u0639\u062A\u0645\u062F\u0629 \u0639\u0627\u0644\u0645\u064A\u0627\u064B \u0644\u0636\u0645\u0627\u0646 \u062F\u0642\u0629 \u0627\u0644\u062A\u0634\u062E\u064A\u0635 \u0648\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0639\u0644\u0627\u062C.\",\n    mission:\n      \"\u062A\u0648\u0641\u064A\u0631 \u0631\u0639\u0627\u064A\u0629 \u0637\u0628\u064A\u0629 \u0645\u062A\u0643\u0627\u0645\u0644\u0629 \u0648\u0622\u0645\u0646\u0629 \u0644\u0643\u0644 \u0637\u0641\u0644\u060C \u0645\u0639 \u0627\u0644\u0627\u0647\u062A\u0645\u0627\u0645 \u0628\u0627\u0644\u062C\u0648\u0627\u0646\u0628 \u0627\u0644\u0646\u0641\u0633\u064A\u0629 \u0644\u0644\u0623\u0647\u0644 \u0648\u0627\u0644\u0637\u0641\u0644\u060C \u0648\u0628\u0646\u0627\u0621 \u0639\u0644\u0627\u0642\u0629 \u0637\u0648\u064A\u0644\u0629 \u0627\u0644\u0623\u0645\u062F \u0642\u0627\u0626\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u062B\u0642\u0629 \u0648\u0627\u0644\u0627\u062D\u062A\u0631\u0627\u0645.\",\n    values: [\n      { title: \"\u0627\u0644\u0631\u062D\u0645\u0629\", desc: \"\u0646\u062A\u0639\u0627\u0645\u0644 \u0645\u0639 \u0643\u0644 \u0637\u0641\u0644 \u0648\u0643\u0623\u0646\u0647 \u0648\u0627\u062D\u062F \u0645\u0646 \u0623\u0648\u0644\u0627\u062F\u0646\u0627.\" },\n      { title: \"\u0627\u0644\u062C\u0648\u062F\u0629\", desc: \"\u0646\u0644\u062A\u0632\u0645 \u0628\u0623\u0639\u0644\u0649 \u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u062C\u0648\u062F\u0629 \u0627\u0644\u0637\u0628\u064A\u0629.\" },\n      { title: \"\u0627\u0644\u062A\u0645\u064A\u0632\", desc: \"\u0646\u0633\u0639\u0649 \u062F\u0627\u0626\u0645\u0627\u064B \u0644\u0644\u062A\u0637\u0648\u064A\u0631 \u0648\u0645\u0648\u0627\u0643\u0628\u0629 \u0643\u0644 \u062C\u062F\u064A\u062F.\" },\n      { title: \"\u0627\u0644\u062E\u0628\u0631\u0629\", desc: \"\u0641\u0631\u064A\u0642 \u0637\u0628\u064A \u0645\u0624\u0647\u0644 \u0648\u0630\u0648 \u062E\u0628\u0631\u0629 \u0637\u0648\u064A\u0644\u0629.\" },\n    ],\n  },\n  instructions: {\n    intro:\n      \"\u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u0646 \u0627\u0644\u0625\u0631\u0634\u0627\u062F\u0627\u062A \u0627\u0644\u0637\u0628\u064A\u0629 \u0627\u0644\u0645\u0647\u0645\u0629 \u0644\u0645\u0633\u0627\u0639\u062F\u062A\u0643 \u0641\u064A \u0631\u0639\u0627\u064A\u0629 \u0637\u0641\u0644\u0643 \u0628\u0634\u0643\u0644 \u0635\u062D\u064A\u062D.\",\n    sections: [\n      {\n        title: \"\u0642\u0628\u0644 \u0627\u0644\u0632\u064A\u0627\u0631\u0629\",\n        items: [\n          \"\u0627\u062D\u0631\u0635 \u0639\u0644\u0649 \u0627\u0644\u062D\u0636\u0648\u0631 \u0642\u0628\u0644 \u0627\u0644\u0645\u0648\u0639\u062F \u0628\u0640 10 \u062F\u0642\u0627\u0626\u0642 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0644\u0625\u062A\u0645\u0627\u0645 \u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0627\u0633\u062A\u0642\u0628\u0627\u0644.\",\n          \"\u0623\u062D\u0636\u0631 \u0628\u0637\u0627\u0642\u0629 \u0631\u0642\u0645 \u0645\u0644\u0641 \u0627\u0644\u0637\u0641\u0644 (\u0625\u0646 \u0648\u062C\u062F) \u0623\u0648 \u0631\u0642\u0645 \u0627\u0644\u062D\u062C\u0632.\",\n          \"\u0623\u062D\u0636\u0631 \u062F\u0641\u062A\u0631 \u062A\u0637\u0639\u064A\u0645\u0627\u062A \u0627\u0644\u0637\u0641\u0644 \u0648\u0623\u064A \u062A\u062D\u0627\u0644\u064A\u0644 \u0623\u0648 \u0623\u0634\u0639\u0629 \u0633\u0627\u0628\u0642\u0629.\",\n          \"\u0627\u0643\u062A\u0628 \u0642\u0627\u0626\u0645\u0629 \u0628\u0627\u0644\u0623\u062F\u0648\u064A\u0629 \u0627\u0644\u062D\u0627\u0644\u064A\u0629 \u0627\u0644\u062A\u064A \u064A\u062A\u0646\u0627\u0648\u0644\u0647\u0627 \u0627\u0644\u0637\u0641\u0644 \u0648\u0627\u0644\u062C\u0631\u0639\u0627\u062A.\",\n          \"\u062F\u0648\u0651\u0646 \u0623\u064A \u0623\u0639\u0631\u0627\u0636 \u0638\u0647\u0631\u062A \u0648\u0645\u062F\u062A\u0647\u0627 \u0644\u062A\u0633\u0627\u0639\u062F\u0646\u0627 \u0641\u064A \u0627\u0644\u062A\u0634\u062E\u064A\u0635 \u0627\u0644\u062F\u0642\u064A\u0642.\",\n        ],\n      },\n      {\n        title: \"\u062A\u0639\u0644\u064A\u0645\u0627\u062A \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0623\u062F\u0648\u064A\u0629\",\n        items: [\n          \"\u0627\u0644\u062A\u0632\u0645 \u0628\u0627\u0644\u062C\u0631\u0639\u0627\u062A \u0627\u0644\u0645\u062D\u062F\u062F\u0629 \u0641\u064A \u0627\u0644\u0631\u0648\u0634\u062A\u0629 \u0628\u062F\u0642\u0629\u060C \u0648\u0644\u0627 \u062A\u0632\u062F \u0623\u0648 \u062A\u0646\u0642\u0635 \u062F\u0648\u0646 \u0627\u0633\u062A\u0634\u0627\u0631\u0629 \u0627\u0644\u0637\u0628\u064A\u0628.\",\n          \"\u0641\u064A \u062D\u0627\u0644 \u0646\u0633\u064A\u0627\u0646 \u062C\u0631\u0639\u0629\u060C \u062E\u0630\u0647\u0627 \u0628\u0645\u062C\u0631\u062F \u0627\u0644\u062A\u0630\u0643\u0631 \u0625\u0644\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0648\u0642\u062A \u0627\u0644\u062C\u0631\u0639\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629 \u0642\u0631\u064A\u0628\u0627\u064B.\",\n          \"\u0627\u062D\u0641\u0638 \u0627\u0644\u0623\u062F\u0648\u064A\u0629 \u0641\u064A \u0645\u0643\u0627\u0646 \u062C\u0627\u0641 \u0628\u0639\u064A\u062F\u0627\u064B \u0639\u0646 \u0645\u062A\u0646\u0627\u0648\u0644 \u0627\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u0641\u064A \u062F\u0631\u062C\u0629 \u062D\u0631\u0627\u0631\u0629 \u0645\u0646\u0627\u0633\u0628\u0629.\",\n          \"\u0628\u0639\u0636 \u0627\u0644\u0623\u062F\u0648\u064A\u0629 \u062A\u062D\u062A\u0627\u062C \u0644\u0644\u062D\u0641\u0638 \u0641\u064A \u0627\u0644\u062B\u0644\u0627\u062C\u0629\u060C \u0627\u0642\u0631\u0623 \u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A \u0639\u0644\u0649 \u0627\u0644\u0639\u0628\u0648\u0629 \u062C\u064A\u062F\u0627\u064B.\",\n          \"\u0644\u0627 \u062A\u0633\u062A\u062E\u062F\u0645 \u0623\u064A \u062F\u0648\u0627\u0621 \u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u062A\u0647 \u0623\u0648 \u062A\u063A\u064A\u0631 \u0644\u0648\u0646\u0647 \u0623\u0648 \u0631\u0627\u0626\u062D\u062A\u0647.\",\n          \"\u0623\u0643\u0645\u0644 \u062F\u0648\u0631\u0629 \u0627\u0644\u0645\u0636\u0627\u062F \u0627\u0644\u062D\u064A\u0648\u064A \u0643\u0627\u0645\u0644\u0629 \u062D\u062A\u0649 \u0644\u0648 \u062A\u062D\u0633\u0646\u062A \u0627\u0644\u0623\u0639\u0631\u0627\u0636.\",\n        ],\n      },\n      {\n        title: \"\u0627\u0644\u062A\u0639\u0627\u0645\u0644 \u0645\u0639 \u0627\u0644\u062D\u0645\u0649\",\n        items: [\n          \"\u0642\u0633 \u062F\u0631\u062C\u0629 \u0627\u0644\u062D\u0631\u0627\u0631\u0629 \u0628\u0645\u064A\u0632\u0627\u0646 \u062D\u0631\u0627\u0631\u0629 \u062F\u0642\u064A\u0642 (\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u062A\u062D\u062A \u0627\u0644\u0625\u0628\u0637 \u0623\u0648 \u0641\u064A \u0627\u0644\u0623\u0630\u0646).\",\n          \"\u0625\u0630\u0627 \u062A\u062C\u0627\u0648\u0632\u062A \u0627\u0644\u062D\u0631\u0627\u0631\u0629 38.5\u00B0 \u064A\u0645\u0643\u0646 \u0625\u0639\u0637\u0627\u0621 \u062E\u0627\u0641\u0636 \u0644\u0644\u062D\u0631\u0627\u0631\u0629 \u0628\u0627\u0644\u062C\u0631\u0639\u0629 \u0627\u0644\u0645\u0648\u0635\u0649 \u0628\u0647\u0627 \u0644\u0648\u0632\u0646 \u0627\u0644\u0637\u0641\u0644.\",\n          \"\u0627\u0639\u0645\u0644 \u0643\u0645\u0627\u062F\u0627\u062A \u0628\u0645\u0627\u0621 \u0641\u0627\u062A\u0631 (\u0648\u0644\u064A\u0633 \u0628\u0627\u0631\u062F) \u0639\u0644\u0649 \u0627\u0644\u062C\u0628\u0647\u0629 \u0648\u062A\u062D\u062A \u0627\u0644\u0625\u0628\u0637.\",\n          \"\u062A\u0623\u0643\u062F \u0645\u0646 \u0634\u0631\u0628 \u0627\u0644\u0637\u0641\u0644 \u0644\u0643\u0645\u064A\u0627\u062A \u0643\u0627\u0641\u064A\u0629 \u0645\u0646 \u0627\u0644\u0633\u0648\u0627\u0626\u0644.\",\n          \"\u0627\u0637\u0644\u0628 \u0627\u0644\u0627\u0633\u062A\u0634\u0627\u0631\u0629 \u0641\u0648\u0631\u0627\u064B \u0625\u0630\u0627 \u062A\u062C\u0627\u0648\u0632\u062A \u0627\u0644\u062D\u0631\u0627\u0631\u0629 39.5\u00B0 \u0623\u0648 \u0627\u0633\u062A\u0645\u0631\u062A \u0623\u0643\u062B\u0631 \u0645\u0646 3 \u0623\u064A\u0627\u0645.\",\n        ],\n      },\n      {\n        title: \"\u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A\",\n        items: [\n          \"\u0627\u0644\u062A\u0632\u0645 \u0628\u0645\u0648\u0627\u0639\u064A\u062F \u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A \u0641\u064A \u062F\u0641\u062A\u0631 \u0627\u0644\u0637\u0641\u0644\u060C \u0641\u0647\u064A \u062A\u062D\u0645\u064A \u0645\u0646 \u0623\u0645\u0631\u0627\u0636 \u062E\u0637\u064A\u0631\u0629.\",\n          \"\u0628\u0639\u062F \u0627\u0644\u062A\u0637\u0639\u064A\u0645 \u0642\u062F \u064A\u062D\u062F\u062B \u0627\u0631\u062A\u0641\u0627\u0639 \u0637\u0641\u064A\u0641 \u0641\u064A \u0627\u0644\u062D\u0631\u0627\u0631\u0629 \u0648\u062A\u0648\u0631\u0645 \u0628\u0633\u064A\u0637 \u0641\u064A \u0645\u0643\u0627\u0646 \u0627\u0644\u062D\u0642\u0646 \u2014 \u0647\u0630\u0627 \u0637\u0628\u064A\u0639\u064A.\",\n          \"\u0627\u0633\u062A\u062E\u062F\u0645 \u062E\u0627\u0641\u0636 \u062D\u0631\u0627\u0631\u0629 \u0628\u062C\u0631\u0639\u0629 \u0627\u0644\u0648\u0632\u0646 \u0627\u0644\u0645\u0646\u0627\u0633\u0628\u0629 \u0639\u0646\u062F \u0627\u0644\u062D\u0627\u062C\u0629.\",\n          \"\u062A\u0648\u0627\u0635\u0644 \u0645\u0639\u0646\u0627 \u0641\u0648\u0631\u0627\u064B \u0639\u0646\u062F \u0638\u0647\u0648\u0631 \u0631\u062F \u0641\u0639\u0644 \u0642\u0648\u064A \u0645\u062B\u0644 \u062A\u0648\u0631\u0645 \u0634\u062F\u064A\u062F\u060C \u0637\u0641\u062D \u062C\u0644\u062F\u064A\u060C \u0623\u0648 \u0635\u0639\u0648\u0628\u0629 \u062A\u0646\u0641\u0633.\",\n        ],\n      },\n      {\n        title: \"\u0628\u0639\u062F \u0627\u0644\u0632\u064A\u0627\u0631\u0629\",\n        items: [\n          \"\u062A\u0627\u0628\u0639 \u062A\u0646\u0641\u064A\u0630 \u0627\u0644\u062E\u0637\u0629 \u0627\u0644\u0639\u0644\u0627\u062C\u064A\u0629 \u0648\u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A \u0627\u0644\u0645\u0643\u062A\u0648\u0628\u0629 \u0641\u064A \u0627\u0644\u0631\u0648\u0634\u062A\u0629.\",\n          \"\u0627\u062D\u062A\u0641\u0638 \u0628\u0627\u0644\u0631\u0648\u0634\u062A\u0629 \u0648\u0627\u0645\u0633\u062D \u0643\u0648\u062F QR \u0644\u062A\u0635\u0641\u062D\u0647\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u0627\u064B \u0641\u064A \u0623\u064A \u0648\u0642\u062A.\",\n          \"\u0627\u062A\u0635\u0644 \u0628\u0646\u0627 \u0625\u0630\u0627 \u0644\u0645 \u062A\u062A\u062D\u0633\u0646 \u0627\u0644\u0623\u0639\u0631\u0627\u0636 \u062E\u0644\u0627\u0644 \u0627\u0644\u0641\u062A\u0631\u0629 \u0627\u0644\u0645\u062A\u0648\u0642\u0639\u0629.\",\n          \"\u0627\u062D\u062C\u0632 \u0645\u0648\u0639\u062F \u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0643\u0645\u0627 \u0623\u0648\u0635\u0649 \u0627\u0644\u0637\u0628\u064A\u0628.\",\n        ],\n      },\n    ],\n    urgent: [\n      \"\u0635\u0639\u0648\u0628\u0629 \u0641\u064A \u0627\u0644\u062A\u0646\u0641\u0633 \u0623\u0648 \u0627\u0632\u0631\u0642\u0627\u0642 \u0627\u0644\u0634\u0641\u0627\u0647.\",\n      \"\u062D\u0645\u0649 \u0634\u062F\u064A\u062F\u0629 \u0644\u0627 \u062A\u0633\u062A\u062C\u064A\u0628 \u0644\u0644\u062F\u0648\u0627\u0621 \u0623\u0648 \u062A\u0633\u062A\u0645\u0631 \u0623\u0643\u062B\u0631 \u0645\u0646 3 \u0623\u064A\u0627\u0645.\",\n      \"\u0642\u064A\u0621 \u0623\u0648 \u0625\u0633\u0647\u0627\u0644 \u0634\u062F\u064A\u062F \u0644\u0627 \u064A\u0633\u062A\u062C\u064A\u0628 \u0644\u0644\u0639\u0644\u0627\u062C \u0645\u0639 \u0639\u0644\u0627\u0645\u0627\u062A \u062C\u0641\u0627\u0641.\",\n      \"\u062A\u0634\u0646\u062C\u0627\u062A \u0623\u0648 \u0641\u0642\u062F\u0627\u0646 \u0644\u0644\u0648\u0639\u064A.\",\n      \"\u0623\u0644\u0645 \u0634\u062F\u064A\u062F \u0648\u0645\u0633\u062A\u0645\u0631 \u0641\u064A \u0627\u0644\u0628\u0637\u0646.\",\n      \"\u0637\u0641\u062D \u062C\u0644\u062F\u064A \u0645\u0639 \u0627\u0631\u062A\u0641\u0627\u0639 \u0634\u062F\u064A\u062F \u0641\u064A \u0627\u0644\u062D\u0631\u0627\u0631\u0629.\",\n    ],\n  },\n  rights: {\n    intro:\n      \"\u0646\u0644\u062A\u0632\u0645 \u0628\u062D\u0645\u0627\u064A\u0629 \u062D\u0642\u0648\u0642\u0643 \u0648\u0646\u0624\u0645\u0646 \u0628\u0623\u0646 \u0627\u0644\u0634\u0631\u0627\u0643\u0629 \u0628\u064A\u0646 \u0627\u0644\u0637\u0628\u064A\u0628 \u0648\u0627\u0644\u0645\u0631\u064A\u0636 \u0647\u064A \u0623\u0633\u0627\u0633 \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u064A\u0629 \u0646\u0627\u062C\u062D\u0629.\",\n    rights: [\n      {\n        title: \"\u0627\u0644\u062D\u0642 \u0641\u064A \u0631\u0639\u0627\u064A\u0629 \u0643\u0631\u064A\u0645\u0629\",\n        desc: \"\u062A\u0644\u0642\u064A \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u064A\u0629 \u0628\u0643\u0631\u0627\u0645\u0629 \u0648\u0627\u062D\u062A\u0631\u0627\u0645 \u062F\u0648\u0646 \u062A\u0645\u064A\u064A\u0632 \u0628\u0633\u0628\u0628 \u0627\u0644\u062C\u0646\u0633 \u0623\u0648 \u0627\u0644\u0639\u0631\u0642 \u0623\u0648 \u0627\u0644\u062F\u064A\u0646 \u0623\u0648 \u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0627\u062C\u062A\u0645\u0627\u0639\u064A\u0629.\",\n      },\n      {\n        title: \"\u0627\u0644\u062E\u0635\u0648\u0635\u064A\u0629 \u0648\u0627\u0644\u0633\u0631\u064A\u0629\",\n        desc: \"\u062D\u0645\u0627\u064A\u0629 \u0628\u064A\u0627\u0646\u0627\u062A\u0643 \u0627\u0644\u0637\u0628\u064A\u0629 \u0648\u0639\u062F\u0645 \u0627\u0644\u0625\u0641\u0635\u0627\u062D \u0639\u0646\u0647\u0627 \u0644\u0623\u064A \u0637\u0631\u0641 \u062B\u0627\u0644\u062B \u062F\u0648\u0646 \u0625\u0630\u0646\u0643 \u0627\u0644\u0643\u062A\u0627\u0628\u064A\u060C \u0628\u0627\u0633\u062A\u062B\u0646\u0627\u0621 \u0645\u0627 \u064A\u062A\u0637\u0644\u0628\u0647 \u0627\u0644\u0642\u0627\u0646\u0648\u0646.\",\n      },\n      {\n        title: \"\u0627\u0644\u0645\u0639\u0631\u0641\u0629 \u0648\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A\",\n        desc: \"\u062D\u0642 \u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0648\u0627\u0636\u062D\u0629 \u0639\u0646 \u0627\u0644\u062A\u0634\u062E\u064A\u0635 \u0648\u0627\u0644\u062E\u0637\u0629 \u0627\u0644\u0639\u0644\u0627\u062C\u064A\u0629 \u0648\u0627\u0644\u0622\u062B\u0627\u0631 \u0627\u0644\u062C\u0627\u0646\u0628\u064A\u0629 \u0627\u0644\u0645\u062D\u062A\u0645\u0644\u0629 \u0642\u0628\u0644 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0623\u064A \u0639\u0644\u0627\u062C.\",\n      },\n      {\n        title: \"\u0627\u062A\u062E\u0627\u0630 \u0627\u0644\u0642\u0631\u0627\u0631\",\n        desc: \"\u062D\u0642 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0623\u0648 \u0627\u0644\u0631\u0641\u0636 \u0627\u0644\u0645\u0633\u062A\u0646\u064A\u0631 \u0644\u0623\u064A \u0625\u062C\u0631\u0627\u0621 \u0637\u0628\u064A \u0628\u0639\u062F \u062A\u0648\u0636\u064A\u062D\u0647 \u0628\u0627\u0644\u0643\u0627\u0645\u0644 \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0637\u0628\u064A\u0628.\",\n      },\n      {\n        title: \"\u0627\u0644\u0633\u0644\u0627\u0645\u0629\",\n        desc: \"\u062A\u0644\u0642\u064A \u0627\u0644\u0631\u0639\u0627\u064A\u0629 \u0641\u064A \u0628\u064A\u0626\u0629 \u0622\u0645\u0646\u0629 \u0648\u0641\u0642\u0627\u064B \u0644\u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0637\u0628\u064A\u0629 \u0627\u0644\u0645\u0639\u062A\u0645\u062F\u0629.\",\n      },\n      {\n        title: \"\u062A\u0642\u062F\u064A\u0645 \u0634\u0643\u0648\u0649\",\n        desc: \"\u062D\u0642 \u0627\u0644\u062A\u0639\u0628\u064A\u0631 \u0639\u0646 \u0623\u064A \u0634\u0643\u0648\u0649 \u0623\u0648 \u0645\u0644\u0627\u062D\u0638\u0629 \u0628\u0634\u0623\u0646 \u0627\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0645\u0642\u062F\u0645\u0629 \u0648\u0636\u0645\u0627\u0646 \u062F\u0631\u0627\u0633\u062A\u0647\u0627 \u0628\u062C\u062F\u064A\u0629.\",\n      },\n    ],\n    duties: [\n      \"\u062A\u0642\u062F\u064A\u0645 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0635\u062D\u064A\u062D\u0629 \u0648\u0643\u0627\u0645\u0644\u0629 \u0639\u0646 \u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0635\u062D\u064A\u0629 \u0644\u0644\u0637\u0641\u0644 \u0648\u062A\u0627\u0631\u064A\u062E\u0647 \u0627\u0644\u0645\u0631\u0636\u064A.\",\n      \"\u0625\u062E\u0628\u0627\u0631 \u0627\u0644\u0637\u0628\u064A\u0628 \u0639\u0646 \u0623\u064A \u062D\u0633\u0627\u0633\u064A\u0629 \u0623\u0648 \u0623\u062F\u0648\u064A\u0629 \u064A\u062A\u0646\u0627\u0648\u0644\u0647\u0627 \u0627\u0644\u0637\u0641\u0644.\",\n      \"\u0627\u0644\u0627\u0644\u062A\u0632\u0627\u0645 \u0628\u0627\u0644\u062E\u0637\u0629 \u0627\u0644\u0639\u0644\u0627\u062C\u064A\u0629 \u0648\u0627\u0644\u0645\u0648\u0627\u0639\u064A\u062F \u0627\u0644\u0645\u062D\u062F\u062F\u0629 \u0644\u0644\u0632\u064A\u0627\u0631\u0627\u062A \u0648\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629.\",\n      \"\u0627\u062D\u062A\u0631\u0627\u0645 \u0637\u0627\u0642\u0645 \u0627\u0644\u0639\u0645\u0644 \u0627\u0644\u0637\u0628\u064A \u0648\u0627\u0644\u0625\u062F\u0627\u0631\u064A \u0648\u0632\u0645\u0644\u0627\u0621 \u0627\u0644\u0645\u0631\u0636\u0649.\",\n      \"\u0627\u062D\u062A\u0631\u0627\u0645 \u0645\u0648\u0627\u0639\u064A\u062F \u0627\u0644\u062D\u062C\u0632 \u0648\u0627\u0644\u062D\u0636\u0648\u0631 \u0641\u064A \u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0645\u062D\u062F\u062F\u060C \u0623\u0648 \u0627\u0644\u0625\u0644\u063A\u0627\u0621 \u0645\u0633\u0628\u0642\u0627\u064B \u0639\u0646\u062F \u062A\u0639\u0630\u0631 \u0627\u0644\u062D\u0636\u0648\u0631.\",\n      \"\u0627\u0644\u0627\u0644\u062A\u0632\u0627\u0645 \u0628\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0639\u064A\u0627\u062F\u0629 \u0648\u0627\u0644\u062D\u0641\u0627\u0638 \u0639\u0644\u0649 \u0646\u0638\u0627\u0641\u062A\u0647\u0627 \u0648\u0645\u0645\u062A\u0644\u0643\u0627\u062A\u0647\u0627.\",\n      \"\u0633\u062F\u0627\u062F \u0627\u0644\u0631\u0633\u0648\u0645 \u0627\u0644\u0645\u0633\u062A\u062D\u0642\u0629 \u0641\u064A \u0645\u0648\u0627\u0639\u064A\u062F\u0647\u0627.\",\n    ],\n  },\n};\n\nconst DEFAULT_SETTINGS = {\n  id: \"main\",\n  clinicName: \"\u0639\u064A\u0627\u062F\u0629 \u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n  doctorName: \"\u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F\",\n  doctorTitle: \"\u0627\u0633\u062A\u0634\u0627\u0631\u064A \u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n  address: \"\u0639\u0645\u0627\u0631\u0629 \u0627\u0644\u062D\u0627\u062C \u0628\u062E\u064A\u062A - \u0642\u0633\u0645 \u062B\u0627\u0646\u0649 \u0623\u0633\u0648\u0627\u0646 - \u0623\u0645\u0627\u0645 \u0645\u0631\u0648\u0631 \u0627\u0644\u0633\u064A\u0644 - \u0623\u0633\u0648\u0627\u0646\",\n  phones: [\"+20 101 004 0078\"],\n  whatsapp: \"+20 101 004 0078\",\n  email: \"ashrafmaabdsoft@gmail.com\",\n  workingHours: [\n    { day: \"\u0643\u0644 \u0623\u064A\u0627\u0645 \u0627\u0644\u0623\u0633\u0628\u0648\u0639\", from: \"16:00\", to: \"21:00\" },\n  ],\n  bookingSchedule: {\n    openDays: [0, 1, 2, 3, 4, 5, 6],\n    startTime: \"16:00\",\n    endTime: \"21:00\",\n    closedDates: [] as string[],\n    slotMinutes: 15,\n  },\n  socials: {},\n  pageContent: DEFAULT_PAGE_CONTENT,\n};\n\nconst DEFAULT_DOCTORS = [\n  {\n    name: \"\u062F. \u0623\u0634\u0631\u0641 \u0645\u0639\u0628\u062F\",\n    title: \"\u0627\u0633\u062A\u0634\u0627\u0631\u064A \u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644 \u0648\u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n    bio: \"\u062E\u0628\u0631\u0629 \u062A\u062A\u062C\u0627\u0648\u0632 20 \u0639\u0627\u0645\u0627\u064B \u0641\u064A \u0631\u0639\u0627\u064A\u0629 \u0635\u062D\u0629 \u0627\u0644\u0623\u0637\u0641\u0627\u0644\u060C \u0646\u0647\u062A\u0645 \u0628\u0635\u062D\u0629 \u0637\u0641\u0644\u0643 \u0645\u0646 \u0627\u0644\u0644\u062D\u0638\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u0649 \u0644\u0644\u0648\u0644\u0627\u062F\u0629 \u0648\u062D\u062A\u0649 \u0645\u0631\u062D\u0644\u0629 \u0627\u0644\u0645\u0631\u0627\u0647\u0642\u0629.\",\n    photoUrl: null,\n    credentials: [\n      \"\u0645\u0627\u062C\u0633\u062A\u064A\u0631 \u0641\u064A \u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644\",\n      \"\u0639\u0636\u0648 \u0627\u0644\u062C\u0645\u0639\u064A\u0629 \u0627\u0644\u0645\u0635\u0631\u064A\u0629 \u0644\u0637\u0628 \u0627\u0644\u0623\u0637\u0641\u0627\u0644\",\n      \"\u062E\u0628\u0631\u0629 \u062A\u062A\u062C\u0627\u0648\u0632 20 \u0639\u0627\u0645\u0627\u064B\",\n      \"\u0628\u0631\u0648\u062A\u0648\u0643\u0648\u0644\u0627\u062A \u0639\u0644\u0627\u062C \u0645\u0639\u062A\u0645\u062F\u0629 \u0639\u0627\u0644\u0645\u064A\u0627\u064B\",\n    ],\n    sortOrder: 0,\n  },\n];\n\nconst DEFAULT_SERVICES = [\n  // Home page grid\n  {\n    category: \"home\" as const,\n    icon: \"Baby\",\n    title: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n    description:\n      \"\u0643\u0634\u0641 \u0648\u0641\u062D\u0635 \u0634\u0627\u0645\u0644 \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629 \u0648\u0636\u0645\u0627\u0646 \u0646\u0645\u0648 \u0633\u0644\u064A\u0645 \u0645\u0646\u0630 \u0627\u0644\u0623\u064A\u0627\u0645 \u0627\u0644\u0623\u0648\u0644\u0649.\",\n    sortOrder: 0,\n  },\n  {\n    category: \"home\" as const,\n    icon: \"HeartPulse\",\n    title: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0646\u0645\u0648 \u0648\u0627\u0644\u062A\u0637\u0648\u0631\",\n    description:\n      \"\u0645\u062A\u0627\u0628\u0639\u0629 \u062F\u0648\u0631\u064A\u0629 \u0644\u0644\u0648\u0632\u0646 \u0648\u0627\u0644\u0637\u0648\u0644 \u0648\u0645\u062D\u064A\u0637 \u0627\u0644\u0631\u0623\u0633 \u0645\u0639 \u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0637\u0648\u0631\u064A\u0629.\",\n    sortOrder: 1,\n  },\n  {\n    category: \"home\" as const,\n    icon: \"ShieldCheck\",\n    title: \"\u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A\",\n    description:\n      \"\u062C\u0645\u064A\u0639 \u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A \u0627\u0644\u0625\u062C\u0628\u0627\u0631\u064A\u0629 \u0648\u0627\u0644\u0627\u062E\u062A\u064A\u0627\u0631\u064A\u0629 \u0648\u0641\u0642 \u0623\u062D\u062F\u062B \u0627\u0644\u062C\u062F\u0627\u0648\u0644 \u0627\u0644\u0639\u0627\u0644\u0645\u064A\u0629.\",\n    sortOrder: 2,\n  },\n  {\n    category: \"home\" as const,\n    icon: \"ClipboardList\",\n    title: \"\u0639\u0644\u0627\u062C \u0627\u0644\u0623\u0645\u0631\u0627\u0636 \u0627\u0644\u0634\u0627\u0626\u0639\u0629\",\n    description:\n      \"\u062A\u0634\u062E\u064A\u0635 \u0648\u0639\u0644\u0627\u062C \u0646\u0632\u0644\u0627\u062A \u0627\u0644\u0628\u0631\u062F\u060C \u0627\u0636\u0637\u0631\u0627\u0628\u0627\u062A \u0627\u0644\u062C\u0647\u0627\u0632 \u0627\u0644\u0647\u0636\u0645\u064A\u060C \u0627\u0644\u062D\u0633\u0627\u0633\u064A\u0629 \u0648\u0627\u0644\u0631\u0628\u0648 \u0648\u063A\u064A\u0631\u0647\u0627.\",\n    sortOrder: 3,\n  },\n  // Services page \u2014 featured (with images)\n  {\n    category: \"featured\" as const,\n    icon: \"Baby\",\n    title: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\",\n    description:\n      \"\u0643\u0634\u0641 \u0648\u0641\u062D\u0635 \u0634\u0627\u0645\u0644 \u0644\u0644\u0623\u0637\u0641\u0627\u0644 \u062D\u062F\u064A\u062B\u064A \u0627\u0644\u0648\u0644\u0627\u062F\u0629\u060C \u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u064A\u0631\u0642\u0627\u0646\u060C \u0627\u0644\u0631\u0636\u0627\u0639\u0629\u060C \u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0646\u0645\u0648 \u0627\u0644\u0623\u0648\u0644\u0649\u060C \u0648\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062D\u064A\u0648\u064A\u0629.\",\n    sortOrder: 0,\n  },\n  {\n    category: \"featured\" as const,\n    icon: \"ShieldCheck\",\n    title: \"\u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A\",\n    description:\n      \"\u062C\u0645\u064A\u0639 \u0627\u0644\u062A\u0637\u0639\u064A\u0645\u0627\u062A \u0627\u0644\u0625\u062C\u0628\u0627\u0631\u064A\u0629 \u0648\u0627\u0644\u0627\u062E\u062A\u064A\u0627\u0631\u064A\u0629 \u0648\u0641\u0642 \u0623\u062D\u062F\u062B \u0627\u0644\u062C\u062F\u0627\u0648\u0644 \u0627\u0644\u0639\u0627\u0644\u0645\u064A\u0629 \u0648\u0628\u0631\u0648\u062A\u0648\u0643\u0648\u0644\u0627\u062A \u0648\u0632\u0627\u0631\u0629 \u0627\u0644\u0635\u062D\u0629.\",\n    sortOrder: 1,\n  },\n  {\n    category: \"featured\" as const,\n    icon: \"HeartPulse\",\n    title: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0646\u0645\u0648 \u0648\u0627\u0644\u062A\u0637\u0648\u0631\",\n    description:\n      \"\u0645\u062A\u0627\u0628\u0639\u0629 \u062F\u0648\u0631\u064A\u0629 \u0644\u0644\u0648\u0632\u0646 \u0648\u0627\u0644\u0637\u0648\u0644 \u0648\u0645\u062D\u064A\u0637 \u0627\u0644\u0631\u0623\u0633 \u0645\u0639 \u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u0637\u0648\u0631\u064A\u0629 \u0648\u0631\u0633\u0645 \u0645\u0646\u062D\u0646\u064A\u0627\u062A \u0627\u0644\u0646\u0645\u0648.\",\n    sortOrder: 2,\n  },\n  // Services page \u2014 more (compact grid)\n  {\n    category: \"more\" as const,\n    icon: \"Syringe\",\n    title: \"\u0639\u0644\u0627\u062C \u0627\u0636\u0637\u0631\u0627\u0628\u0627\u062A \u0627\u0644\u062C\u0647\u0627\u0632 \u0627\u0644\u0647\u0636\u0645\u064A\",\n    description: \"\u0639\u0644\u0627\u062C \u0645\u0634\u0627\u0643\u0644 \u0627\u0644\u0625\u0633\u0647\u0627\u0644\u060C \u0627\u0644\u0625\u0645\u0633\u0627\u0643\u060C \u0627\u0644\u0627\u0631\u062A\u062C\u0627\u0639\u060C \u0627\u0644\u0645\u063A\u0635\u060C \u0648\u062D\u0633\u0627\u0633\u064A\u0629 \u0627\u0644\u0637\u0639\u0627\u0645.\",\n    sortOrder: 0,\n  },\n  {\n    category: \"more\" as const,\n    icon: \"ThermometerSun\",\n    title: \"\u0639\u0644\u0627\u062C \u0627\u0644\u0623\u0645\u0631\u0627\u0636 \u0627\u0644\u0645\u0639\u062F\u064A\u0629\",\n    description:\n      \"\u062A\u0634\u062E\u064A\u0635 \u0648\u0639\u0644\u0627\u062C \u0646\u0632\u0644\u0627\u062A \u0627\u0644\u0628\u0631\u062F\u060C \u0627\u0644\u0625\u0646\u0641\u0644\u0648\u0646\u0632\u0627\u060C \u0627\u0644\u062A\u0647\u0627\u0628 \u0627\u0644\u062D\u0644\u0642\u060C \u0627\u0644\u062A\u0647\u0627\u0628\u0627\u062A \u0627\u0644\u0623\u0630\u0646 \u0648\u0627\u0644\u0635\u062F\u0631.\",\n    sortOrder: 1,\n  },\n  {\n    category: \"more\" as const,\n    icon: \"Activity\",\n    title: \"\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0631\u0628\u0648 \u0648\u0627\u0644\u062D\u0633\u0627\u0633\u064A\u0629\",\n    description:\n      \"\u062A\u0634\u062E\u064A\u0635 \u0648\u0639\u0644\u0627\u062C \u0627\u0644\u0631\u0628\u0648 \u0648\u062D\u0633\u0627\u0633\u064A\u0629 \u0627\u0644\u062C\u0644\u062F \u0648\u0627\u0644\u0635\u062F\u0631 \u0648\u0627\u0644\u0623\u0646\u0641\u060C \u0645\u0639 \u0648\u0636\u0639 \u062E\u0637\u0637 \u0639\u0644\u0627\u062C\u064A\u0629 \u0637\u0648\u064A\u0644\u0629 \u0627\u0644\u0623\u0645\u062F.\",\n    sortOrder: 2,\n  },\n  {\n    category: \"more\" as const,\n    icon: \"Microscope\",\n    title: \"\u0627\u0644\u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0639\u0627\u0645\",\n    description: \"\u0643\u0634\u0641 \u0639\u0627\u0645 \u062F\u0648\u0631\u064A \u0644\u0644\u0627\u0637\u0645\u0626\u0646\u0627\u0646 \u0639\u0644\u0649 \u0635\u062D\u0629 \u0627\u0644\u0637\u0641\u0644 \u0645\u0646 \u062C\u0645\u064A\u0639 \u0627\u0644\u062C\u0648\u0627\u0646\u0628.\",\n    sortOrder: 3,\n  },\n  {\n    category: \"more\" as const,\n    icon: \"Brain\",\n    title: \"\u0627\u0644\u062A\u0637\u0648\u0631 \u0627\u0644\u0646\u0641\u0633\u064A \u0648\u0627\u0644\u0633\u0644\u0648\u0643\u064A\",\n    description: \"\u062A\u0642\u064A\u064A\u0645 \u062A\u0637\u0648\u0631 \u0627\u0644\u0637\u0641\u0644 \u0627\u0644\u0646\u0641\u0633\u064A \u0648\u0627\u0644\u0633\u0644\u0648\u0643\u064A \u0648\u062A\u0642\u062F\u064A\u0645 \u0627\u0644\u0625\u0631\u0634\u0627\u062F \u0644\u0644\u0623\u0647\u0644.\",\n    sortOrder: 4,\n  },\n  {\n    category: \"more\" as const,\n    icon: \"ClipboardList\",\n    title: \"\u0646\u0638\u0627\u0645 \u0637\u0628\u064A \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n    description:\n      \"\u0643\u0644 \u0632\u064A\u0627\u0631\u0629 \u0648\u0631\u0648\u0634\u062A\u0629 \u0645\u0648\u062B\u0642\u0629 \u0641\u064A \u0645\u0644\u0641 \u0637\u0641\u0644\u0643 \u064A\u0645\u0643\u0646\u0643 \u0645\u0631\u0627\u062C\u0639\u062A\u0647 \u0645\u0646 \u062E\u0644\u0627\u0644 \u0635\u0641\u062D\u0629 (\u0645\u0644\u0641\u064A \u0627\u0644\u0637\u0628\u064A).\",\n    sortOrder: 5,\n  },\n];\n\n/**\n * Seeds the public-site content tables with the original hardcoded values the\n * first time the app boots against an empty database. Idempotent: each table is\n * only populated when it has no rows, so admin edits are never overwritten.\n * Runs unconditionally on every boot (safe in production).\n */\nexport async function ensureSeedSiteContent(): Promise<void> {\n  try {\n    const [existingSettings] = await db\n      .select({ id: siteSettingsTable.id })\n      .from(siteSettingsTable)\n      .limit(1);\n\n    if (!existingSettings) {\n      await db.insert(siteSettingsTable).values(DEFAULT_SETTINGS);\n      logger.info(\"ensureSeedSiteContent: seeded site_settings\");\n    }\n\n    const [{ count: doctorCount }] = await db\n      .select({ count: sql<number>`count(*)::int` })\n      .from(siteDoctorsTable);\n\n    if (!doctorCount) {\n      await db.insert(siteDoctorsTable).values(DEFAULT_DOCTORS);\n      logger.info(\"ensureSeedSiteContent: seeded site_doctors\");\n    }\n\n    const [{ count: serviceCount }] = await db\n      .select({ count: sql<number>`count(*)::int` })\n      .from(siteServicesTable);\n\n    if (!serviceCount) {\n      await db.insert(siteServicesTable).values(DEFAULT_SERVICES);\n      logger.info(\"ensureSeedSiteContent: seeded site_services\");\n    }\n  } catch (err) {\n    logger.error({ err }, \"ensureSeedSiteContent failed (continuing startup)\");\n  }\n}\n", "import { db, examinationTypesTable } from \"@workspace/db\";\nimport { sql } from \"drizzle-orm\";\nimport { logger } from \"./logger\";\n\n/**\n * Default examination types (\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u0634\u0648\u0641\u0627\u062A) clinic staff can assign to\n * appointments. Admin-editable from the control panel after seeding.\n */\nconst DEFAULT_EXAMINATION_TYPES = [\n  { name: \"\u0643\u0634\u0641 \u062C\u062F\u064A\u062F\", color: \"#2563eb\", sortOrder: 0 },\n  { name: \"\u0645\u062A\u0627\u0628\u0639\u0629\", color: \"#0d9488\", sortOrder: 1 },\n  { name: \"\u0627\u0633\u062A\u0634\u0627\u0631\u0629\", color: \"#7c3aed\", sortOrder: 2 },\n  { name: \"\u062A\u0637\u0639\u064A\u0645\", color: \"#16a34a\", sortOrder: 3 },\n  { name: \"\u0637\u0648\u0627\u0631\u0626\", color: \"#dc2626\", sortOrder: 4 },\n];\n\n/**\n * Seeds the examination_types table the first time the app boots against an\n * empty table. Idempotent: only populated when it has no rows, so admin edits\n * are never overwritten. Safe to run unconditionally on every boot.\n */\nexport async function ensureSeedExaminationTypes(): Promise<void> {\n  try {\n    const [{ count }] = await db\n      .select({ count: sql<number>`count(*)::int` })\n      .from(examinationTypesTable);\n\n    if (!count) {\n      await db.insert(examinationTypesTable).values(DEFAULT_EXAMINATION_TYPES);\n      logger.info(\n        \"ensureSeedExaminationTypes: seeded examination_types\",\n      );\n    }\n  } catch (err) {\n    logger.error(\n      { err },\n      \"ensureSeedExaminationTypes failed (continuing startup)\",\n    );\n  }\n}\n", "import { db, patientsTable } from \"@workspace/db\";\nimport { like, sql } from \"drizzle-orm\";\nimport { randomBytes } from \"crypto\";\nimport { logger } from \"./logger\";\n\nconst CODE_CHARS = \"ABCDEFGHJKLMNPQRSTUVWXYZ23456789\";\nconst CODE_LEN = 6;\n\nfunction makeRandomCode(): string {\n  const buf = randomBytes(CODE_LEN);\n  let suffix = \"\";\n  for (let i = 0; i < CODE_LEN; i++) {\n    suffix += CODE_CHARS[buf[i] % CODE_CHARS.length];\n  }\n  return `P-${suffix}`;\n}\n\n/**\n * One-time startup migration that replaces any remaining sequential patient\n * codes (e.g. \"P-0001\", \"P-0042\") with cryptographically random ones\n * (e.g. \"P-K7M3AX\").  Sequential codes are enumerable and were therefore\n * a factor in a brute-force attack against the public lookup endpoint.\n *\n * Safe to run on every boot: it only touches rows whose code matches the\n * legacy `P-\\d+` pattern and is idempotent once all legacy codes are gone.\n */\nexport async function rotateSequentialPatientCodes(): Promise<void> {\n  const sequentialRows = await db\n    .select({ id: patientsTable.id, code: patientsTable.code })\n    .from(patientsTable)\n    .where(like(patientsTable.code, \"P-%\"));\n\n  const legacyRows = sequentialRows.filter((r) => /^P-\\d+$/.test(r.code));\n\n  if (legacyRows.length === 0) {\n    logger.info(\"rotateSequentialPatientCodes: no legacy codes found\");\n    return;\n  }\n\n  logger.info(\n    { count: legacyRows.length },\n    \"rotateSequentialPatientCodes: rotating legacy sequential codes\",\n  );\n\n  let rotated = 0;\n  for (const row of legacyRows) {\n    let success = false;\n    for (let attempt = 0; attempt < 5 && !success; attempt++) {\n      const newCode = makeRandomCode();\n      try {\n        await db\n          .update(patientsTable)\n          .set({ code: newCode })\n          .where(sql`${patientsTable.id} = ${row.id} AND ${patientsTable.code} = ${row.code}`);\n        rotated++;\n        success = true;\n      } catch (err: unknown) {\n        const pgCode = (err as { code?: string }).code;\n        if (pgCode !== \"23505\") {\n          // Not a unique-violation \u2013 log and break out of the retry loop.\n          logger.warn({ err, id: row.id }, \"rotateSequentialPatientCodes: unexpected DB error for row\");\n          break;\n        }\n        // unique violation on new code \u2013 try a different random value next iteration\n      }\n    }\n    if (!success) {\n      logger.warn({ id: row.id }, \"rotateSequentialPatientCodes: could not rotate code after 5 attempts\");\n    }\n  }\n\n  logger.info(\n    { rotated, total: legacyRows.length },\n    \"rotateSequentialPatientCodes: done\",\n  );\n}\n", "import app from \"./app\";\nimport { logger } from \"./lib/logger\";\nimport { ensureSeedUsers } from \"./lib/ensureSeedUsers\";\nimport { ensureSeedSiteContent } from \"./lib/ensureSeedSiteContent\";\nimport { ensureSeedExaminationTypes } from \"./lib/ensureSeedExaminationTypes\";\nimport { ensureSeedSystemSettings } from \"./lib/ensureSeedSystemSettings\";\nimport { rotateSequentialPatientCodes } from \"./lib/rotateSequentialPatientCodes\";\nimport { startRealtimeBridge } from \"./lib/realtime\";\n\nconst rawPort = process.env[\"PORT\"];\n\nif (!rawPort) {\n  throw new Error(\n    \"PORT environment variable is required but was not provided.\",\n  );\n}\n\nconst port = Number(rawPort);\n\nif (Number.isNaN(port) || port <= 0) {\n  throw new Error(`Invalid PORT value: \"${rawPort}\"`);\n}\n\nvoid rotateSequentialPatientCodes()\n  .catch((err) => logger.error({ err }, \"rotateSequentialPatientCodes failed\"))\n  .then(() => ensureSeedUsers())\n  .then(() => ensureSeedSiteContent())\n  .then(() => ensureSeedExaminationTypes())\n  .then(() => ensureSeedSystemSettings())\n  .finally(() => {\n    app.listen(port, (err) => {\n      if (err) {\n        logger.error({ err }, \"Error listening on port\");\n        process.exit(1);\n      }\n\n      logger.info({ port }, \"Server listening\");\n      startRealtimeBridge();\n    });\n  });\n"],
  "mappings": "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G,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,oTAAqD;AAAA,MAC7D,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,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I,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,GAAE,SAAU,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAA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AAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAi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AAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAEA,QAAM,SAAS;AAAA,MACb;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAEA,QAAM,UAAU;AAAA,MACd;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAEA,QAAM,iBAAiB;AAAA,MACrB;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAGA,QAAM,aAAa;AAAA,MACjB;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC3D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAA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UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UACvD;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,U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AG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAEA,QAAM,cAAc;AAAA,MAClB;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IAC/C;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC5oBjB,IAAAE,sBAAA;AAAA;AAAA;AAEA,QAAM,EAAE,SAAS,IAAI,UAAQ,QAAQ;AAErC,QAAM,EAAE,WAAW,IAAI;AAEvB,QAAM,aAAN,cAAyB,SAAS;AAAA,MAChC,YAAY,KAAK;AACf,cAAM,aAAa;AAAA,UACjB,aAAa;AAAA,UACb,WAAW;AAAA,UACX,eAAgB,OAAO,IAAI,kBAAkB,WAC3B,IAAI,gBACJ;AAAA,QACpB;AACA,cAAM,UAAU;AAEhB,YAAI,UAAW,IAAI,cAAc;AACjC,YAAI,IAAI,QAAQ,UAAU,OAAO,IAAI,QAAQ,OAAO,YAAY;AAC9D,oBAAU,IAAI,QAAQ,OAAO;AAE/B,aAAK,UAAU;AAEf,cAAM,SAAS,IAAI;AACnB,aAAK,iBAAkB,UAAU,OAAO,OAAO,cAAc,WACpC,OAAO,YACP,IAAI,OAAO;AACpC,aAAK,cAAe,UAAU,OAAO,OAAO,WAAW,WACjC,OAAO,SACP;AACtB,aAAK,qBACH,UAAU,OAAO,OAAO,kBAAkB,WACxC,OAAO,gBACP;AAGJ,aAAK,SAAS;AACd,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,UAAU;AACf,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,aAAK,WAAW,WAAW,OAAO;AAAA,MACpC;AAAA,MAEA,OAAO,OAAO,SAAS;AACrB,eAAQ,QAAQ,SAAS,iBACd,QAAQ,YAAY;AAAA,MACjC;AAAA,MAEA,OAAO,OAAO,KAAK,IAAI;AACrB,YAAI,KAAK,WAAW,KAAK;AACvB,iBAAO,GAAG;AAEZ,YAAI,IAAI;AACR,cAAM,MAAM,MAAM;AAClB,aAAK,WAAW;AAGhB,YAAI,KAAK,UAAU,IAAI;AACrB,cAAI,WAAW,MAAM,OAAO,GAAG,GAAG;AAClC,cAAI,MAAM;AACR,mBAAO,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAClD,cAAI,KAAK;AACP,mBAAO,GAAG;AACZ,cAAI,KAAK;AACP,cAAE,KAAK;AAAA;AAEP,cAAE,KAAK;AAAA,QACX;AAEJ;AACI,iBAAO,IAAI,KAAK;AACd,gBAAI,KAAK,QAAQ;AAGf,kBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AAEpC,qBAAO,IAAI,KAAK;AACd,wBAAQ,MAAM,CAAC,GAAG;AAAA,kBAChB,KAAK;AACH,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,WAAW,EAAE;AAClB,yBAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO;AACjD,yBAAK,UAAU;AACf,yBAAK,SAAS;AACd,6BAAS;AAAA,kBACX,KAAK;AACH,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,WAAW,EAAE;AAClB,yBAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO;AACjD,yBAAK,UAAU;AACf,wBAAI,KAAK,YAAY,GAAG;AACtB,2BAAK;AAAA,wBACH;AAAA,wBACA,KAAK;AAAA,wBACL;AAAA,wBACA;AAAA,0BAAE,eAAe,KAAK;AAAA,0BACpB,gBAAgB;AAAA,0BAChB,UAAU,KAAK;AAAA,0BACf,UAAU;AAAA,wBAAa;AAAA,sBAC3B;AAAA,oBACF;AACA,yBAAK,OAAO;AACZ,yBAAK,OAAO;AACZ,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,wBAAI,EAAE,KAAK,WAAW,KAAK,aAAa;AACtC,2BAAK,KAAK,aAAa;AACvB,6BAAO,GAAG;AAAA,oBACZ;AACA;AAAA,kBACF,KAAK;AACH,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,QAAQ;AACb,yBAAK,WAAW,IAAI;AACpB;AAAA,kBACF,KAAK;AACH,wBAAI,KAAK,YAAY;AACnB,2BAAK,UAAU;AACjB,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,WAAW,IAAI;AACpB,yBAAK,QAAQ;AACb,wBAAI,WAAW,MAAM,OAAO,IAAI,GAAG,GAAG;AACtC,wBAAI,MAAM;AACR,6BAAO,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAClD,wBAAI,KAAK;AACP,6BAAO,GAAG;AACZ,sBAAE,KAAK;AACP,wBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AACpC;AAAA,gBACJ;AACA,kBAAE;AACF,kBAAE,KAAK;AACP,oBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AAAA,cACtC;AACA,kBAAI,KAAK,WAAW;AAClB,qBAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AAAA,YACnD,OAAO;AAGL,kBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AAEpC,qBAAO,IAAI,KAAK;AACd,wBAAQ,MAAM,CAAC,GAAG;AAAA,kBAChB,KAAK;AACH,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,WAAW,EAAE;AAClB,yBAAK,SAAS;AACd,yBAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO;AACjD,yBAAK,UAAU;AACf,wBAAI,KAAK,YAAY,KAAK,KAAK,YAAY,GAAG;AAC5C,2BAAK;AAAA,wBACH;AAAA,wBACA,KAAK;AAAA,wBACL,KAAK;AAAA,wBACL;AAAA,0BAAE,eAAe,KAAK;AAAA,0BACpB,gBAAgB,KAAK;AAAA,0BACrB,UAAU,KAAK;AAAA,0BACf,UAAU;AAAA,wBAAa;AAAA,sBAC3B;AAAA,oBACF;AACA,yBAAK,OAAO;AACZ,yBAAK,OAAO;AACZ,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,yBAAK,YAAY;AACjB,wBAAI,EAAE,KAAK,WAAW,KAAK,aAAa;AACtC,2BAAK,KAAK,aAAa;AACvB,6BAAO,GAAG;AAAA,oBACZ;AACA,6BAAS;AAAA,kBACX,KAAK;AACH,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,QAAQ;AACb,yBAAK,WAAW,IAAI;AACpB;AAAA,kBACF,KAAK;AACH,wBAAI,KAAK,YAAY;AACnB,2BAAK,UAAU;AACjB,wBAAI,KAAK,WAAW;AAClB,2BAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AACjD,yBAAK,WAAW,IAAI;AACpB,yBAAK,QAAQ;AACb,wBAAI,WAAW,MAAM,OAAO,IAAI,GAAG,GAAG;AACtC,wBAAI,MAAM;AACR,6BAAO,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAClD,wBAAI,KAAK;AACP,6BAAO,GAAG;AACZ,sBAAE,KAAK;AACP,wBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AACpC;AAAA,gBACJ;AACA,kBAAE;AACF,kBAAE,KAAK;AACP,oBAAI,aAAa,MAAM,OAAO,GAAG,GAAG;AAAA,cACtC;AACA,kBAAI,KAAK,WAAW;AAClB,qBAAK,QAAQ,MAAM,YAAY,KAAK,UAAU,CAAC;AAAA,YACnD;AAAA,UACF;AAEA,WAAG;AAAA,MACL;AAAA,MAEA,OAAO,IAAI;AACT,YAAI,KAAK,UAAU;AACjB,iBAAO,GAAG,IAAI,MAAM,2BAA2B,CAAC;AAClD,YAAI,CAAC,KAAK,UAAU,KAAK,YAAY,KAAK,KAAK,YAAY,GAAG;AAC5D,cAAI,KAAK;AACP,iBAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO;AAAA;AAEjD,iBAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO;AACnD,eAAK;AAAA,YACH;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AAAA,YACL;AAAA,cAAE,eAAe,KAAK;AAAA,cACpB,gBAAgB,KAAK;AAAA,cACrB,UAAU,KAAK;AAAA,cACf,UAAU;AAAA,YAAa;AAAA,UAC3B;AAAA,QACF;AACA,WAAG;AAAA,MACL;AAAA,IACF;AAEA,aAAS,WAAWC,OAAM,OAAO,KAAK,KAAK;AACzC,UAAI,OAAO;AACT,eAAO;AAET,UAAIA,MAAK,UAAU,IAAI;AAErB,cAAM,WAAW,WAAW,MAAM,KAAK,CAAC;AACxC,YAAI,aAAa;AACf,iBAAO;AAET,YAAI,YAAY;AACd,UAAAA,MAAK,UAAU;AAEjB,YAAI,MAAM,KAAK;AAEb,gBAAM,WAAW,WAAW,MAAM,KAAK,CAAC;AACxC,cAAI,aAAa;AACf,mBAAO;AAET,cAAIA,MAAK;AACP,YAAAA,MAAK,QAAQ,OAAO,cAAc,YAAY,KAAK,QAAQ;AAAA;AAE3D,YAAAA,MAAK,QAAQ,OAAO,cAAc,YAAY,KAAK,QAAQ;AAE7D,UAAAA,MAAK,QAAQ;AACb,UAAAA,MAAK,WAAW;AAAA,QAClB,OAAO;AAEL,UAAAA,MAAK,QAAQ;AAAA,QACf;AAAA,MACF,OAAO;AAEL,cAAM,WAAW,WAAW,MAAM,KAAK,CAAC;AACxC,YAAI,aAAa;AACf,iBAAO;AAET,YAAIA,MAAK;AACP,UAAAA,MAAK,QAAQ,OAAO,cAAcA,MAAK,SAAS,KAAK,QAAQ;AAAA;AAE7D,UAAAA,MAAK,QAAQ,OAAO,cAAcA,MAAK,SAAS,KAAK,QAAQ;AAE/D,QAAAA,MAAK,QAAQ;AACb,QAAAA,MAAK,WAAW;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,aAAaA,OAAM,OAAO,KAAK,KAAK;AAE3C,UAAIA,MAAK,YAAYA,MAAK,oBAAoB;AAC5C,YAAI,CAACA,MAAK,WAAW;AACnB,cAAIA,MAAK,WAAW;AAClB,YAAAA,MAAK,QAAQ,MAAM,YAAYA,MAAK,UAAU,MAAM,CAAC;AAAA,QACzD;AACA,QAAAA,MAAK,YAAY;AACjB,eAAO,MAAM,KAAK,EAAE,KAAK;AACvB,gBAAM,OAAO,MAAM,GAAG;AACtB,cAAI,SAAS,MAAe,SAAS;AACnC;AACF,YAAEA,MAAK;AAAA,QACT;AACA,QAAAA,MAAK,WAAW;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,aAAaA,OAAM,OAAO,KAAK,KAAK;AAE3C,UAAIA,MAAK,YAAYA,MAAK,gBAAgB;AACxC,YAAI,CAACA,MAAK,WAAW;AACnB,cAAIA,MAAK,WAAW;AAClB,YAAAA,MAAK,QAAQ,MAAM,YAAYA,MAAK,UAAU,MAAM,CAAC;AAAA,QACzD;AACA,QAAAA,MAAK,YAAY;AACjB,eAAO,MAAM,KAAK,EAAE,KAAK;AACvB,cAAI,MAAM,GAAG,MAAM;AACjB;AACF,YAAEA,MAAK;AAAA,QACT;AACA,QAAAA,MAAK,WAAW;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAGA,QAAM,aAAa;AAAA,MACjB;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC3D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5D;AAAA,MAAI;AAAA,MAAI;AAAA,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EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAC5D;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAA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",
  "names": ["parse", "coerce", "hash", "self", "index", "extend", "index", "error", "util", "error", "useColors", "file", "count", "timestamp", "set", "error", "codes", "map", "status", "util", "desc", "exports", "parse", "map", "Buffer", "hasOwn", "module", "Buffer", "Buffer", "Buffer", "Buffer", "base64Regex", "i", "Buffer", "Buffer", "i", "Buffer", "Buffer", "streamModule", "string", "i", "fn", "error", "parse", "string", "index", "db", "charset", "path", "extension", "types", "parse", "string", "index", "types", "parse", "error", "json", "parse", "index", "partial", "error", "text", "int", "isArray", "isPlainObject", "hasOwn", "isNaN", "number", "concatty", "slicy", "Empty", "desc", "undefined", "doEval", "hasOwn", "stringToPath", "string", "number", "getBaseIntrinsic", "desc", "require_utils", "isArray", "markOverflow", "isOverflow", "getMaxIndex", "setMaxIndex", "array", "compactQueue", "arrayToObject", "merge", "encode", "string", "compact", "isRegExp", "isBuffer", "combine", "maybeMap", "isArray", "defaults", "date", "isNonNullishPrimitive", "stringify", "object", "value", "normalizeStringifyOptions", "isArray", "defaults", "index", "splitKeyIntoSegments", "normalizeParseOptions", "require_lib", "parse", "parse", "count", "index", "url", "string", "escape", "index", "url", "parse", "path", "fs", "file", "resolve", "crypto", "hash", "parse", "string", "error", "error1", "require_utils", "Buffer", "types", "index", "cb", "parse", "escape", "text", "index", "path", "match", "process", "result", "path", "error", "match", "path", "methods", "Router", "router", "methods", "self", "path", "err", "route", "url", "error", "Router", "app", "router", "path", "fn", "set", "View", "index", "index", "comparator", "index", "index", "string", "count", "set", "types", "date", "timestamp", "index", "parse", "range", "types", "index", "hostname", "subdomains", "path", "parse", "string", "index", "crypto", "parse", "index", "decode", "fs", "path", "Stream", "util", "error", "etag", "match", "pipe", "send", "self", "err", "stream", "type", "count", "date", "timestamp", "parse", "path", "Buffer", "send", "app", "json", "escape", "res", "file", "url", "self", "url", "serveStatic", "path", "error", "Router", "app", "req", "res", "require_express", "require_lib", "defaults", "cors", "Events", "required", "port", "require_common", "url", "extend", "required", "config", "url", "key", "error", "url", "URL", "assert", "error", "noop", "self", "escapeRegex", "isArray", "exports", "domain", "proxyReq", "url", "proxyError", "head", "extend", "port", "hostname", "self", "require_http_proxy", "require_http_proxy", "ERRORS", "require_debug", "error", "isResponseLike", "noopLogger", "require_logger_plugin", "logger", "hostname", "port", "desc", "exports", "index", "check", "require_utils", "node", "require_stringify", "compare", "count", "max", "intersection", "string", "integer", "util", "isObject", "transform", "index", "require_parse", "parse", "index", "parse", "require_constants", "require_utils", "path", "index", "require_parse", "index", "branch", "parse", "opts", "value", "count", "literal", "esc", "rest", "source", "parse", "isObject", "state", "require_picomatch", "util", "index", "omit", "url", "isObject", "isPlainObject", "path", "require_router", "config", "router", "path", "Router", "options", "path", "createProxyMiddleware", "error", "decompress", "desc", "exports", "url", "logger", "require_public", "desc", "exports", "require_dist", "desc", "exports", "Buffer", "require_ms", "parse", "require_debug", "coerce", "hash", "self", "index", "require_browser", "useColors", "index", "require_node", "util", "useColors", "fd", "stream", "fs", "require_src", "require_cookie_signature", "crypto", "crypto", "randomBytes", "randomBytes", "require_cookie", "Cookie", "date", "util", "self", "util", "session", "set", "Buffer", "crypto", "session", "generate", "hash", "req", "index", "transform", "array", "transform", "date", "extend", "extend", "parse", "array", "string", "bits", "value", "elementType", "parse", "array", "i", "count", "require_utils", "defaults", "util", "date", "config", "escapeIdentifier", "escapeLiteral", "nodeCrypto", "string", "text", "nodeCrypto", "randomBytes", "string", "hash", "text", "require_utils", "index", "crypto", "session", "text", "types", "TypeOverrides", "parse", "config", "hostname", "fs", "defaults", "parse", "config", "types", "Result", "desc", "Result", "Query", "config", "DatabaseError", "text", "string", "password", "text", "parse", "query", "types", "config", "string", "text", "parse", "getStream", "getSecureStream", "parse", "Connection", "config", "self", "port", "error", "text", "transform", "error", "self", "noop", "path", "Stream", "util", "file", "require_lib", "path", "fs", "file", "TypeOverrides", "Query", "defaults", "Connection", "crypto", "Client", "config", "self", "error", "client", "index", "client", "Promise", "pool", "Pool", "Client", "text", "response", "err", "require_query", "util", "config", "client", "self", "require_client", "TypeOverrides", "util", "Client", "config", "self", "err", "error", "index", "require_lib", "Client", "defaults", "Connection", "Result", "Pool", "TypeOverrides", "DatabaseError", "escapeIdentifier", "escapeLiteral", "clientConstructor", "connectPgSimple", "session", "fs", "err", "err", "path", "path", "cloned", "index", "path", "date", "index", "sleep", "fs", "path", "sleep", "assert", "file", "err", "n", "releasedBufObj", "error", "registry", "index", "index", "check", "version", "assert", "FinalizationRegistry", "WeakRef", "registry", "error", "sleep", "onExit", "fixTarget", "noop", "time", "stringify", "_", "require_constants", "noop", "noop", "version", "bindings", "array", "number", "value", "bigint", "tmp", "key", "res", "join", "stringify", "clone", "streamLevels", "index", "path", "time", "noop", "version", "hostname", "number", "pino", "serializers", "timestamp", "stack", "require_logger", "pino", "customLogLevel", "useLevel", "logger", "error", "require_media_typer", "parse", "string", "index", "require_db", "require_mime_db", "require_mime_types", "db", "charset", "path", "extension", "types", "require_type_is", "types", "require_utils", "path", "self", "Readable", "noop", "self", "data", "require_urlencoded", "self", "require_lib", "extend", "util", "file", "file", "extend", "file", "err", "path", "fs", "er", "made", "fs", "path", "crypto", "file", "err", "nextTick", "require_stream", "require_safe_buffer", "Buffer", "isArray", "isNull", "isObject", "Buffer", "util", "err", "self", "require_node", "util", "Stream", "Buffer", "object", "count", "keys", "util", "Readable", "self", "Buffer", "self", "Readable", "isArray", "Stream", "Buffer", "util", "index", "self", "n", "util", "util", "Stream", "string", "undefined", "desc", "index", "f", "ArrayBuffer", "ArrayBufferView", "array", "min", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "DataView", "arrayType", "require_memory", "file", "file", "import_express", "path", "pg", "pgTable", "text", "uuid", "timestamp", "jsonb", "pgTable", "text", "uuid", "timestamp", "pgTable", "uuid", "timestamp", "text", "pgTable", "text", "uuid", "timestamp", "boolean", "integer", "pgTable", "text", "uuid", "timestamp", "pgTable", "uuid", "timestamp", "text", "boolean", "integer", "pgTable", "text", "uuid", "timestamp", "jsonb", "pgTable", "uuid", "text", "jsonb", "timestamp", "pgTable", "text", "uuid", "timestamp", "integer", "pgTable", "uuid", "text", "integer", "timestamp", "pgTable", "text", "uuid", "timestamp", "integer", "pgTable", "uuid", "text", "integer", "timestamp", "pgTable", "text", "uuid", "timestamp", "pgTable", "text", "uuid", "timestamp", "doublePrecision", "pgTable", "uuid", "doublePrecision", "text", "timestamp", "pgTable", "text", "uuid", "timestamp", "pgTable", "uuid", "text", "timestamp", "pgTable", "text", "pgTable", "timestamp", "index", "pgTable", "text", "uuid", "timestamp", "jsonb", "index", "pgTable", "uuid", "text", "jsonb", "timestamp", "index", "pgTable", "text", "uuid", "integer", "boolean", "jsonb", "timestamp", "index", "pgTable", "text", "jsonb", "timestamp", "sql", "pgTable", "text", "uuid", "integer", "boolean", "timestamp", "index", "uniqueIndex", "pgTable", "text", "uuid", "boolean", "timestamp", "index", "pgTable", "text", "uuid", "timestamp", "pgTable", "uuid", "text", "timestamp", "pgTable", "text", "uuid", "timestamp", "pgTable", "uuid", "text", "timestamp", "Pool", "import_express", "util", "assertIs", "assertNever", "object", "joinValues", "array", "objectUtil", "json", "issue", "error", "issue", "map", "path", "map", "issue", "errorUtil", "path", "error", "errorMap", "check", "transform", "version", "jwt", "base64", "_ZodString", "parsedType", "ctx", "result", "issue", "index", "issues", "types", "elements", "processed", "preprocess", "parsedType", "result", "check", "r", "ZodFirstPartyTypeKind", "import_express", "eq", "callback", "salt", "unknown", "hash", "string", "err", "pino", "router", "email", "eq", "hash", "router", "import_express", "eq", "or", "sql", "sql", "eq", "randomBytes", "eq", "date", "eq", "randomBytes", "eq", "sql", "router", "or", "eq", "sql", "import_express", "desc", "eq", "sql", "client", "sql", "eq", "router", "date", "desc", "import_express", "eq", "desc", "and", "gte", "router", "eq", "gte", "and", "desc", "mapPatient", "import_express", "eq", "desc", "router", "eq", "desc", "router", "import_express", "eq", "desc", "router", "eq", "desc", "buildDetail", "import_express", "ilike", "or", "asc", "router", "or", "ilike", "asc", "import_express", "and", "desc", "eq", "router", "mapRow", "eq", "and", "desc", "import_express", "and", "desc", "eq", "gte", "lt", "sql", "router", "sql", "and", "gte", "lt", "eq", "desc", "map", "import_express", "and", "desc", "eq", "router", "eq", "and", "desc", "import_express", "eq", "desc", "and", "gte", "lt", "sql", "router", "eq", "desc", "and", "gte", "lt", "sql", "router", "import_express", "eq", "eq", "router", "BCRYPT_ROUNDS", "email", "eq", "normalizeName", "passwordHash", "import_express", "eq", "desc", "and", "asc", "sql", "uuid4", "crypto", "error", "error", "url", "text", "index", "client", "logger", "client", "logger", "self", "index", "client", "json", "text", "client", "transform", "client", "Page", "client", "process", "fetch", "cached", "promise", "client", "path", "index", "file", "error", "error", "logger", "index", "_BetaMessageStream_getFinalMessage", "_BetaMessageStream_getFinalText", "_BetaMessageStream_beginRequest", "_BetaMessageStream_addStreamEvent", "_BetaMessageStream_endRequest", "_BetaMessageStream_accumulateMessage", "chunk", "promise", "client", "_BetaToolRunner_checkAndCompact", "_a", "error", "_BetaToolRunner_generateToolResponse", "Versions", "version", "Versions", "getOutputFormat", "error", "JSON_BUF_PROPERTY", "tracksToolInput", "error", "logger", "index", "_MessageStream_getFinalMessage", "_MessageStream_getFinalText", "_MessageStream_beginRequest", "_MessageStream_addStreamEvent", "checkNever", "_MessageStream_endRequest", "_MessageStream_accumulateMessage", "chunk", "Batches", "Messages", "Batches", "DEPRECATED_MODELS", "MODELS_TO_WARN_WITH_THINKING_ENABLED", "Models", "baseURL", "apiKey", "client", "uuid4", "error", "path", "url", "opts", "retryMessage", "err", "Page", "Messages", "Models", "time", "text", "router", "ageInMonths", "eq", "asc", "and", "sql", "desc", "import_express", "Readable", "fs", "fsp", "path", "randomUUID", "randomUUID", "path", "path", "file", "nodeStream", "webStream", "randomUUID", "url", "router", "isLocalMode", "localObjectsDir", "path", "fs", "_file", "randomUUID", "error", "file", "fsp", "Readable", "import_express", "and", "asc", "eq", "gte", "router", "eq", "and", "gte", "asc", "import_express", "eq", "router", "settingsSchema", "eq", "import_express", "asc", "eq", "router", "asc", "eq", "import_express", "router", "import_express", "and", "asc", "desc", "eq", "gte", "lt", "sql", "router", "eq", "desc", "asc", "and", "gte", "lt", "sql", "import_express", "desc", "eq", "router", "desc", "eq", "import_express", "eq", "desc", "router", "eq", "desc", "import_express", "eq", "desc", "randomUUID", "Readable", "external_exports", "NEVER", "ZodAny", "ZodArray", "ZodBigInt", "ZodBoolean", "ZodCatch", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodEnum", "ZodError", "ZodIntersection", "ZodIssueCode", "ZodLazy", "ZodLiteral", "ZodMap", "ZodNaN", "ZodNever", "ZodNull", "ZodNullable", "ZodNumber", "ZodObject", "ZodOptional", "ZodPromise", "ZodReadonly", "ZodRecord", "ZodSet", "ZodString", "ZodSymbol", "ZodTuple", "ZodType", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "_default", "base64", "base64url", "bigint", "boolean", "_catch", "cidrv4", "cidrv6", "core_exports", "cuid", "cuid2", "custom", "date", "e164", "email", "emoji", "_enum", "getErrorMap", "guid", "ipv4", "ipv6", "json", "ksuid", "nanoid", "_null", "nullish", "number", "parse", "parseAsync", "safeParse", "safeParseAsync", "setErrorMap", "string", "ulid", "_undefined", "uuid", "_void", "xid", "core_exports", "NEVER", "_emoji", "_null", "_undefined", "isValidJWT", "NEVER", "initializer", "_a", "floatSafeRemainder", "getParsedType", "array", "set", "object", "path", "Class", "_a", "config", "error", "issue", "path", "_a", "boolean", "date", "integer", "uuid", "uuid4", "uuid6", "uuid7", "version", "time", "timeRegex", "_a", "inst", "floatSafeRemainder", "integer", "result", "_a", "checks", "isAborted", "result", "_", "uuid", "url", "date", "inst", "base64", "isValidJWT", "boolean", "index", "isObject", "allowsEval", "r", "results", "map", "left", "right", "mergeValues", "keyResult", "valueResult", "output", "en_default", "parsedType", "issue", "error", "parsedType", "issue", "count", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "issue", "en_default", "parsedType", "error", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "count", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "parsedType", "error", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "error", "parsedType", "issue", "Class", "_emoji", "_undefined", "_null", "types", "Class", "_a", "json", "file", "id", "schema", "params", "gen", "date", "datetime", "duration", "time", "datetime", "date", "time", "duration", "initializer", "issue", "issues", "ZodError", "parse", "parseAsync", "safeParse", "safeParseAsync", "ZodType", "def", "parse", "safeParse", "parseAsync", "safeParseAsync", "check", "_default", "_catch", "ZodString", "_emoji", "datetime", "date", "time", "duration", "string", "email", "guid", "uuid", "emoji", "nanoid", "cuid", "cuid2", "ulid", "xid", "ksuid", "ipv4", "ipv6", "cidrv4", "cidrv6", "base64", "base64url", "e164", "ZodNumber", "number", "ZodBoolean", "boolean", "ZodBigInt", "bigint", "ZodSymbol", "ZodUndefined", "_undefined", "ZodNull", "ZodType", "_null", "ZodAny", "ZodType", "ZodUnknown", "ZodNever", "ZodVoid", "_void", "ZodDate", "ZodType", "date", "ZodArray", "ZodObject", "_enum", "ZodOptional", "ZodUnion", "ZodDiscriminatedUnion", "ZodIntersection", "ZodTuple", "ZodRecord", "ZodMap", "ZodSet", "ZodEnum", "ZodEnum", "ZodLiteral", "ZodType", "types", "issue", "output", "ZodOptional", "ZodNullable", "nullish", "ZodDefault", "_default", "ZodCatch", "_catch", "ZodNaN", "ZodType", "ZodReadonly", "ZodLazy", "ZodPromise", "custom", "issue", "ZodBoolean", "ZodString", "json", "string", "number", "boolean", "_null", "ZodIssueCode", "setErrorMap", "map", "getErrorMap", "bigint", "boolean", "date", "number", "string", "string", "ZodString", "number", "ZodNumber", "boolean", "ZodBoolean", "bigint", "ZodBigInt", "date", "ZodDate", "en_default", "router", "objectStorageService", "external_exports", "desc", "eq", "randomUUID", "Readable", "router", "express", "pinoHttp", "cors", "connectPgSimple", "session", "__dirname", "path", "eq", "BCRYPT_ROUNDS", "eq", "hash", "sql", "sql", "sql", "count", "sql", "like", "sql", "randomBytes", "randomBytes", "like", "success", "sql"]
}
