tedious 16.4.0 → 16.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/benchmarks/bulk-load/iterable.js +1 -1
- package/benchmarks/common.js +2 -4
- package/benchmarks/package-lock.json +21173 -0
- package/benchmarks/package.json +11 -0
- package/benchmarks/query/call-tvp.js +1 -1
- package/benchmarks/query/insert-varbinary.js +1 -1
- package/benchmarks/query/select-many-rows.js +1 -1
- package/benchmarks/query/select-nvarchar.js +1 -1
- package/benchmarks/query/select-varbinary.js +1 -1
- package/benchmarks/request/rpcrequest-payload-tvp.js +2 -2
- package/benchmarks/request/rpcrequest-payload-varbinary.js +2 -2
- package/benchmarks/token-parser/colmetadata-token.js +4 -2
- package/benchmarks/token-parser/done-token.js +5 -2
- package/benchmarks/token-parser/simple-tokens.js +8 -2
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
- package/lib/always-encrypted/cek-entry.js +1 -7
- package/lib/always-encrypted/cek-entry.js.map +1 -1
- package/lib/always-encrypted/get-parameter-encryption-metadata.js +1 -1
- package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -1
- package/lib/always-encrypted/key-crypto.js +1 -1
- package/lib/always-encrypted/key-crypto.js.map +1 -1
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +1 -8
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -1
- package/lib/always-encrypted/symmetric-key-cache.js +1 -1
- package/lib/always-encrypted/symmetric-key-cache.js.map +1 -1
- package/lib/always-encrypted/symmetric-key.js +1 -2
- package/lib/always-encrypted/symmetric-key.js.map +1 -1
- package/lib/always-encrypted/types.js +1 -1
- package/lib/always-encrypted/types.js.map +1 -1
- package/lib/bulk-load-payload.js +1 -3
- package/lib/bulk-load-payload.js.map +1 -1
- package/lib/bulk-load.js +15 -23
- package/lib/bulk-load.js.map +1 -1
- package/lib/collation.js +1 -7
- package/lib/collation.js.map +1 -1
- package/lib/connection.js +50 -35
- package/lib/connection.js.map +1 -1
- package/lib/connector.js +1 -1
- package/lib/connector.js.map +1 -1
- package/lib/data-type.js +1 -1
- package/lib/data-type.js.map +1 -1
- package/lib/data-types/bigint.js +1 -1
- package/lib/data-types/bigint.js.map +1 -1
- package/lib/data-types/binary.js +1 -1
- package/lib/data-types/binary.js.map +1 -1
- package/lib/data-types/bit.js +1 -1
- package/lib/data-types/bit.js.map +1 -1
- package/lib/data-types/bitn.js +1 -1
- package/lib/data-types/bitn.js.map +1 -1
- package/lib/data-types/char.js +1 -1
- package/lib/data-types/char.js.map +1 -1
- package/lib/data-types/date.js +1 -1
- package/lib/data-types/date.js.map +1 -1
- package/lib/data-types/datetime.js +1 -1
- package/lib/data-types/datetime.js.map +1 -1
- package/lib/data-types/datetime2.js +1 -1
- package/lib/data-types/datetime2.js.map +1 -1
- package/lib/data-types/datetimen.js +1 -1
- package/lib/data-types/datetimen.js.map +1 -1
- package/lib/data-types/datetimeoffset.js +1 -1
- package/lib/data-types/datetimeoffset.js.map +1 -1
- package/lib/data-types/decimal.js +1 -1
- package/lib/data-types/decimal.js.map +1 -1
- package/lib/data-types/decimaln.js +1 -1
- package/lib/data-types/decimaln.js.map +1 -1
- package/lib/data-types/float.js +1 -1
- package/lib/data-types/float.js.map +1 -1
- package/lib/data-types/floatn.js +1 -1
- package/lib/data-types/floatn.js.map +1 -1
- package/lib/data-types/image.js +1 -1
- package/lib/data-types/image.js.map +1 -1
- package/lib/data-types/int.js +1 -1
- package/lib/data-types/int.js.map +1 -1
- package/lib/data-types/intn.js +1 -1
- package/lib/data-types/intn.js.map +1 -1
- package/lib/data-types/money.js +1 -1
- package/lib/data-types/money.js.map +1 -1
- package/lib/data-types/moneyn.js +1 -1
- package/lib/data-types/moneyn.js.map +1 -1
- package/lib/data-types/nchar.js +1 -1
- package/lib/data-types/nchar.js.map +1 -1
- package/lib/data-types/ntext.js +1 -1
- package/lib/data-types/ntext.js.map +1 -1
- package/lib/data-types/null.js +1 -1
- package/lib/data-types/null.js.map +1 -1
- package/lib/data-types/numeric.js +1 -1
- package/lib/data-types/numeric.js.map +1 -1
- package/lib/data-types/numericn.js +1 -1
- package/lib/data-types/numericn.js.map +1 -1
- package/lib/data-types/nvarchar.js +1 -1
- package/lib/data-types/nvarchar.js.map +1 -1
- package/lib/data-types/real.js +1 -1
- package/lib/data-types/real.js.map +1 -1
- package/lib/data-types/smalldatetime.js +1 -1
- package/lib/data-types/smalldatetime.js.map +1 -1
- package/lib/data-types/smallint.js +1 -1
- package/lib/data-types/smallint.js.map +1 -1
- package/lib/data-types/smallmoney.js +1 -1
- package/lib/data-types/smallmoney.js.map +1 -1
- package/lib/data-types/sql-variant.js +1 -1
- package/lib/data-types/sql-variant.js.map +1 -1
- package/lib/data-types/text.js +1 -1
- package/lib/data-types/text.js.map +1 -1
- package/lib/data-types/time.js +1 -1
- package/lib/data-types/time.js.map +1 -1
- package/lib/data-types/tinyint.js +1 -1
- package/lib/data-types/tinyint.js.map +1 -1
- package/lib/data-types/tvp.js +1 -1
- package/lib/data-types/tvp.js.map +1 -1
- package/lib/data-types/udt.js +1 -1
- package/lib/data-types/udt.js.map +1 -1
- package/lib/data-types/uniqueidentifier.js +1 -1
- package/lib/data-types/uniqueidentifier.js.map +1 -1
- package/lib/data-types/varbinary.js +1 -1
- package/lib/data-types/varbinary.js.map +1 -1
- package/lib/data-types/varchar.js +1 -1
- package/lib/data-types/varchar.js.map +1 -1
- package/lib/data-types/xml.js +1 -1
- package/lib/data-types/xml.js.map +1 -1
- package/lib/debug.js +1 -4
- package/lib/debug.js.map +1 -1
- package/lib/errors/abort-error.js +1 -2
- package/lib/errors/abort-error.js.map +1 -1
- package/lib/errors/timeout-error.js +1 -2
- package/lib/errors/timeout-error.js.map +1 -1
- package/lib/errors.js +1 -10
- package/lib/errors.js.map +1 -1
- package/lib/incoming-message-stream.js +1 -4
- package/lib/incoming-message-stream.js.map +1 -1
- package/lib/login7-payload.js +1 -23
- package/lib/login7-payload.js.map +1 -1
- package/lib/message-io.js +1 -8
- package/lib/message-io.js.map +1 -1
- package/lib/message.js +1 -4
- package/lib/message.js.map +1 -1
- package/lib/metadata-parser.js +1 -1
- package/lib/metadata-parser.js.map +1 -1
- package/lib/ntlm-payload.js +1 -2
- package/lib/ntlm-payload.js.map +1 -1
- package/lib/outgoing-message-stream.js +1 -5
- package/lib/outgoing-message-stream.js.map +1 -1
- package/lib/packet.js +1 -2
- package/lib/packet.js.map +1 -1
- package/lib/prelogin-payload.js +1 -11
- package/lib/prelogin-payload.js.map +1 -1
- package/lib/request.js +13 -19
- package/lib/request.js.map +1 -1
- package/lib/rpcrequest-payload.js +1 -6
- package/lib/rpcrequest-payload.js.map +1 -1
- package/lib/sqlbatch-payload.js +1 -4
- package/lib/sqlbatch-payload.js.map +1 -1
- package/lib/tedious.js +1 -1
- package/lib/tedious.js.map +1 -1
- package/lib/token/colmetadata-token-parser.js +1 -1
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/done-token-parser.js +1 -1
- package/lib/token/done-token-parser.js.map +1 -1
- package/lib/token/env-change-token-parser.js +1 -1
- package/lib/token/env-change-token-parser.js.map +1 -1
- package/lib/token/feature-ext-ack-parser.js +1 -1
- package/lib/token/feature-ext-ack-parser.js.map +1 -1
- package/lib/token/fedauth-info-parser.js +1 -1
- package/lib/token/fedauth-info-parser.js.map +1 -1
- package/lib/token/handler.js +3 -13
- package/lib/token/handler.js.map +1 -1
- package/lib/token/infoerror-token-parser.js +1 -1
- package/lib/token/infoerror-token-parser.js.map +1 -1
- package/lib/token/loginack-token-parser.js +1 -1
- package/lib/token/loginack-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.js +1 -1
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/order-token-parser.js +1 -1
- package/lib/token/order-token-parser.js.map +1 -1
- package/lib/token/returnstatus-token-parser.js +1 -1
- package/lib/token/returnstatus-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.js +1 -1
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.js +1 -1
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/sspi-token-parser.js +1 -1
- package/lib/token/sspi-token-parser.js.map +1 -1
- package/lib/token/stream-parser.js +1 -10
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token-stream-parser.js +1 -4
- package/lib/token/token-stream-parser.js.map +1 -1
- package/lib/token/token.js +2 -88
- package/lib/token/token.js.map +1 -1
- package/lib/tracking-buffer/writable-tracking-buffer.js +1 -7
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
- package/lib/transaction.js +1 -4
- package/lib/transaction.js.map +1 -1
- package/lib/value-parser.js +1 -1
- package/lib/value-parser.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.json +2 -2
- package/benchmarks/bulk-load/stream.js +0 -62
- package/benchmarks/bulk-load/sync.js +0 -59
|
@@ -30,4 +30,4 @@ function orderParser(parser, _options, callback) {
|
|
|
30
30
|
var _default = orderParser;
|
|
31
31
|
exports.default = _default;
|
|
32
32
|
module.exports = orderParser;
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwib3JkZXJQYXJzZXIiLCJwYXJzZXIiLCJfb3B0aW9ucyIsImNhbGxiYWNrIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiY29sdW1uQ291bnQiLCJvcmRlckNvbHVtbnMiLCJpIiwibmV4dCIsImRvbmUiLCJjb2x1bW4iLCJwdXNoIiwiT3JkZXJUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vb3JkZXItdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4xNFxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBPcmRlclRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmZ1bmN0aW9uIG9yZGVyUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6ICh0b2tlbjogT3JkZXJUb2tlbikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChsZW5ndGgpID0+IHtcbiAgICBjb25zdCBjb2x1bW5Db3VudCA9IGxlbmd0aCAvIDI7XG4gICAgY29uc3Qgb3JkZXJDb2x1bW5zOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgbGV0IGkgPSAwO1xuICAgIGZ1bmN0aW9uIG5leHQoZG9uZTogKCkgPT4gdm9pZCkge1xuICAgICAgaWYgKGkgPT09IGNvbHVtbkNvdW50KSB7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlci5yZWFkVUludDE2TEUoKGNvbHVtbikgPT4ge1xuICAgICAgICBvcmRlckNvbHVtbnMucHVzaChjb2x1bW4pO1xuXG4gICAgICAgIGkrKztcblxuICAgICAgICBuZXh0KGRvbmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV4dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjayhuZXcgT3JkZXJUb2tlbihvcmRlckNvbHVtbnMpKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9yZGVyUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBvcmRlclBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBSEE7O0FBS0EsU0FBU0MsV0FBV0EsQ0FBQ0MsTUFBYyxFQUFFQyxRQUF1QixFQUFFQyxRQUFxQyxFQUFFO0VBQ25HRixNQUFNLENBQUNHLFlBQVksQ0FBRUMsTUFBTSxJQUFLO0lBQzlCLE1BQU1DLFdBQVcsR0FBR0QsTUFBTSxHQUFHLENBQUM7SUFDOUIsTUFBTUUsWUFBc0IsR0FBRyxFQUFFO0lBRWpDLElBQUlDLENBQUMsR0FBRyxDQUFDO0lBQ1QsU0FBU0MsSUFBSUEsQ0FBQ0MsSUFBZ0IsRUFBRTtNQUM5QixJQUFJRixDQUFDLEtBQUtGLFdBQVcsRUFBRTtRQUNyQixPQUFPSSxJQUFJLENBQUMsQ0FBQztNQUNmO01BRUFULE1BQU0sQ0FBQ0csWUFBWSxDQUFFTyxNQUFNLElBQUs7UUFDOUJKLFlBQVksQ0FBQ0ssSUFBSSxDQUFDRCxNQUFNLENBQUM7UUFFekJILENBQUMsRUFBRTtRQUVIQyxJQUFJLENBQUNDLElBQUksQ0FBQztNQUNaLENBQUMsQ0FBQztJQUNKO0lBRUFELElBQUksQ0FBQyxNQUFNO01BQ1ROLFFBQVEsQ0FBQyxJQUFJVSxpQkFBVSxDQUFDTixZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSjtBQUFDLElBQUFPLFFBQUEsR0FFY2QsV0FBVztBQUFBZSxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUMxQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdmLFdBQVcifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-token-parser.js","names":["_token","require","orderParser","parser","_options","callback","readUInt16LE","length","columnCount","orderColumns","i","next","done","column","push","OrderToken","_default","exports","default","module"],"sources":["../../src/token/order-token-parser.ts"],"sourcesContent":["// s2.2.7.14\nimport Parser, { ParserOptions } from './stream-parser';\n\nimport { OrderToken } from './token';\n\nfunction orderParser(parser: Parser, _options: ParserOptions, callback: (token: OrderToken) => void) {\n parser.readUInt16LE((length) => {\n const columnCount = length / 2;\n const orderColumns: number[] = [];\n\n let i = 0;\n function next(done: () => void) {\n if (i === columnCount) {\n return done();\n }\n\n parser.readUInt16LE((column) => {\n orderColumns.push(column);\n\n i++;\n\n next(done);\n });\n }\n\n next(() => {\n callback(new OrderToken(orderColumns));\n });\n });\n}\n\nexport default orderParser;\nmodule.exports = orderParser;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAHA;;AAKA,SAASC,WAAWA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAAqC,EAAE;EACnGF,MAAM,CAACG,YAAY,CAAEC,MAAM,IAAK;IAC9B,MAAMC,WAAW,GAAGD,MAAM,GAAG,CAAC;IAC9B,MAAME,YAAsB,GAAG,EAAE;IAEjC,IAAIC,CAAC,GAAG,CAAC;IACT,SAASC,IAAIA,CAACC,IAAgB,EAAE;MAC9B,IAAIF,CAAC,KAAKF,WAAW,EAAE;QACrB,OAAOI,IAAI,CAAC,CAAC;MACf;MAEAT,MAAM,CAACG,YAAY,CAAEO,MAAM,IAAK;QAC9BJ,YAAY,CAACK,IAAI,CAACD,MAAM,CAAC;QAEzBH,CAAC,EAAE;QAEHC,IAAI,CAACC,IAAI,CAAC;MACZ,CAAC,CAAC;IACJ;IAEAD,IAAI,CAAC,MAAM;MACTN,QAAQ,CAAC,IAAIU,iBAAU,CAACN,YAAY,CAAC,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAAC,IAAAO,QAAA,GAEcd,WAAW;AAAAe,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAC1BG,MAAM,CAACF,OAAO,GAAGf,WAAW"}
|
|
1
|
+
{"version":3,"file":"order-token-parser.js","names":["_token","require","orderParser","parser","_options","callback","readUInt16LE","length","columnCount","orderColumns","i","next","done","column","push","OrderToken","_default","exports","default","module"],"sources":["../../src/token/order-token-parser.ts"],"sourcesContent":["// s2.2.7.14\nimport Parser, { type ParserOptions } from './stream-parser';\n\nimport { OrderToken } from './token';\n\nfunction orderParser(parser: Parser, _options: ParserOptions, callback: (token: OrderToken) => void) {\n parser.readUInt16LE((length) => {\n const columnCount = length / 2;\n const orderColumns: number[] = [];\n\n let i = 0;\n function next(done: () => void) {\n if (i === columnCount) {\n return done();\n }\n\n parser.readUInt16LE((column) => {\n orderColumns.push(column);\n\n i++;\n\n next(done);\n });\n }\n\n next(() => {\n callback(new OrderToken(orderColumns));\n });\n });\n}\n\nexport default orderParser;\nmodule.exports = orderParser;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAHA;;AAKA,SAASC,WAAWA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAAqC,EAAE;EACnGF,MAAM,CAACG,YAAY,CAAEC,MAAM,IAAK;IAC9B,MAAMC,WAAW,GAAGD,MAAM,GAAG,CAAC;IAC9B,MAAME,YAAsB,GAAG,EAAE;IAEjC,IAAIC,CAAC,GAAG,CAAC;IACT,SAASC,IAAIA,CAACC,IAAgB,EAAE;MAC9B,IAAIF,CAAC,KAAKF,WAAW,EAAE;QACrB,OAAOI,IAAI,CAAC,CAAC;MACf;MAEAT,MAAM,CAACG,YAAY,CAAEO,MAAM,IAAK;QAC9BJ,YAAY,CAACK,IAAI,CAACD,MAAM,CAAC;QAEzBH,CAAC,EAAE;QAEHC,IAAI,CAACC,IAAI,CAAC;MACZ,CAAC,CAAC;IACJ;IAEAD,IAAI,CAAC,MAAM;MACTN,QAAQ,CAAC,IAAIU,iBAAU,CAACN,YAAY,CAAC,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAAC,IAAAO,QAAA,GAEcd,WAAW;AAAAe,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAC1BG,MAAM,CAACF,OAAO,GAAGf,WAAW"}
|
|
@@ -15,4 +15,4 @@ function returnStatusParser(parser, _options, callback) {
|
|
|
15
15
|
var _default = returnStatusParser;
|
|
16
16
|
exports.default = _default;
|
|
17
17
|
module.exports = returnStatusParser;
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwicmV0dXJuU3RhdHVzUGFyc2VyIiwicGFyc2VyIiwiX29wdGlvbnMiLCJjYWxsYmFjayIsInJlYWRJbnQzMkxFIiwidmFsdWUiLCJSZXR1cm5TdGF0dXNUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTZcbmltcG9ydCBQYXJzZXIsIHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgUmV0dXJuU3RhdHVzVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZnVuY3Rpb24gcmV0dXJuU3RhdHVzUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6ICh0b2tlbjogUmV0dXJuU3RhdHVzVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRJbnQzMkxFKCh2YWx1ZSkgPT4ge1xuICAgIGNhbGxiYWNrKG5ldyBSZXR1cm5TdGF0dXNUb2tlbih2YWx1ZSkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmV0dXJuU3RhdHVzUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSByZXR1cm5TdGF0dXNQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUhBOztBQUtBLFNBQVNDLGtCQUFrQkEsQ0FBQ0MsTUFBYyxFQUFFQyxRQUF1QixFQUFFQyxRQUE0QyxFQUFFO0VBQ2pIRixNQUFNLENBQUNHLFdBQVcsQ0FBRUMsS0FBSyxJQUFLO0lBQzVCRixRQUFRLENBQUMsSUFBSUcsd0JBQWlCLENBQUNELEtBQUssQ0FBQyxDQUFDO0VBQ3hDLENBQUMsQ0FBQztBQUNKO0FBQUMsSUFBQUUsUUFBQSxHQUVjUCxrQkFBa0I7QUFBQVEsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDakNHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHUixrQkFBa0IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returnstatus-token-parser.js","names":["_token","require","returnStatusParser","parser","_options","callback","readInt32LE","value","ReturnStatusToken","_default","exports","default","module"],"sources":["../../src/token/returnstatus-token-parser.ts"],"sourcesContent":["// s2.2.7.16\nimport Parser, { ParserOptions } from './stream-parser';\n\nimport { ReturnStatusToken } from './token';\n\nfunction returnStatusParser(parser: Parser, _options: ParserOptions, callback: (token: ReturnStatusToken) => void) {\n parser.readInt32LE((value) => {\n callback(new ReturnStatusToken(value));\n });\n}\n\nexport default returnStatusParser;\nmodule.exports = returnStatusParser;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAHA;;AAKA,SAASC,kBAAkBA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAA4C,EAAE;EACjHF,MAAM,CAACG,WAAW,CAAEC,KAAK,IAAK;IAC5BF,QAAQ,CAAC,IAAIG,wBAAiB,CAACD,KAAK,CAAC,CAAC;EACxC,CAAC,CAAC;AACJ;AAAC,IAAAE,QAAA,GAEcP,kBAAkB;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACjCG,MAAM,CAACF,OAAO,GAAGR,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"returnstatus-token-parser.js","names":["_token","require","returnStatusParser","parser","_options","callback","readInt32LE","value","ReturnStatusToken","_default","exports","default","module"],"sources":["../../src/token/returnstatus-token-parser.ts"],"sourcesContent":["// s2.2.7.16\nimport Parser, { type ParserOptions } from './stream-parser';\n\nimport { ReturnStatusToken } from './token';\n\nfunction returnStatusParser(parser: Parser, _options: ParserOptions, callback: (token: ReturnStatusToken) => void) {\n parser.readInt32LE((value) => {\n callback(new ReturnStatusToken(value));\n });\n}\n\nexport default returnStatusParser;\nmodule.exports = returnStatusParser;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAHA;;AAKA,SAASC,kBAAkBA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAA4C,EAAE;EACjHF,MAAM,CAACG,WAAW,CAAEC,KAAK,IAAK;IAC5BF,QAAQ,CAAC,IAAIG,wBAAiB,CAACD,KAAK,CAAC,CAAC;EACxC,CAAC,CAAC;AACJ;AAAC,IAAAE,QAAA,GAEcP,kBAAkB;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACjCG,MAAM,CAACF,OAAO,GAAGR,kBAAkB"}
|
|
@@ -36,4 +36,4 @@ function returnParser(parser, options, callback) {
|
|
|
36
36
|
var _default = returnParser;
|
|
37
37
|
exports.default = _default;
|
|
38
38
|
module.exports = returnParser;
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX21ldGFkYXRhUGFyc2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl92YWx1ZVBhcnNlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicmV0dXJuUGFyc2VyIiwicGFyc2VyIiwib3B0aW9ucyIsImNhbGxiYWNrIiwicmVhZFVJbnQxNkxFIiwicGFyYW1PcmRpbmFsIiwicmVhZEJWYXJDaGFyIiwicGFyYW1OYW1lIiwiY2hhckF0Iiwic2xpY2UiLCJyZWFkVUludDgiLCJtZXRhZGF0YVBhcnNlIiwibWV0YWRhdGEiLCJ2YWx1ZVBhcnNlIiwidmFsdWUiLCJSZXR1cm5WYWx1ZVRva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTZcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBSZXR1cm5WYWx1ZVRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCBtZXRhZGF0YVBhcnNlIGZyb20gJy4uL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgdmFsdWVQYXJzZSBmcm9tICcuLi92YWx1ZS1wYXJzZXInO1xuXG5mdW5jdGlvbiByZXR1cm5QYXJzZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IFJldHVyblZhbHVlVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MTZMRSgocGFyYW1PcmRpbmFsKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRCVmFyQ2hhcigocGFyYW1OYW1lKSA9PiB7XG4gICAgICBpZiAocGFyYW1OYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICAgIHBhcmFtTmFtZSA9IHBhcmFtTmFtZS5zbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdHVzXG4gICAgICBwYXJzZXIucmVhZFVJbnQ4KCgpID0+IHtcbiAgICAgICAgbWV0YWRhdGFQYXJzZShwYXJzZXIsIG9wdGlvbnMsIChtZXRhZGF0YSkgPT4ge1xuICAgICAgICAgIHZhbHVlUGFyc2UocGFyc2VyLCBtZXRhZGF0YSwgb3B0aW9ucywgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgUmV0dXJuVmFsdWVUb2tlbih7XG4gICAgICAgICAgICAgIHBhcmFtT3JkaW5hbDogcGFyYW1PcmRpbmFsLFxuICAgICAgICAgICAgICBwYXJhbU5hbWU6IHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJldHVyblBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gcmV0dXJuUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxlQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFBeUMsU0FBQUUsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFQekM7O0FBU0EsU0FBU0csWUFBWUEsQ0FBQ0MsTUFBYyxFQUFFQyxPQUFzQixFQUFFQyxRQUEyQyxFQUFFO0VBQ3pHRixNQUFNLENBQUNHLFlBQVksQ0FBRUMsWUFBWSxJQUFLO0lBQ3BDSixNQUFNLENBQUNLLFlBQVksQ0FBRUMsU0FBUyxJQUFLO01BQ2pDLElBQUlBLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUMvQkQsU0FBUyxHQUFHQSxTQUFTLENBQUNFLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDaEM7O01BRUE7TUFDQVIsTUFBTSxDQUFDUyxTQUFTLENBQUMsTUFBTTtRQUNyQixJQUFBQyx1QkFBYSxFQUFDVixNQUFNLEVBQUVDLE9BQU8sRUFBR1UsUUFBUSxJQUFLO1VBQzNDLElBQUFDLG9CQUFVLEVBQUNaLE1BQU0sRUFBRVcsUUFBUSxFQUFFVixPQUFPLEVBQUdZLEtBQUssSUFBSztZQUMvQ1gsUUFBUSxDQUFDLElBQUlZLHVCQUFnQixDQUFDO2NBQzVCVixZQUFZLEVBQUVBLFlBQVk7Y0FDMUJFLFNBQVMsRUFBRUEsU0FBUztjQUNwQkssUUFBUSxFQUFFQSxRQUFRO2NBQ2xCRSxLQUFLLEVBQUVBO1lBQ1QsQ0FBQyxDQUFDLENBQUM7VUFDTCxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSjtBQUFDLElBQUFFLFFBQUEsR0FFY2hCLFlBQVk7QUFBQWlCLE9BQUEsQ0FBQWxCLE9BQUEsR0FBQWlCLFFBQUE7QUFDM0JFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHakIsWUFBWSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returnvalue-token-parser.js","names":["_token","require","_metadataParser","_interopRequireDefault","_valueParser","obj","__esModule","default","returnParser","parser","options","callback","readUInt16LE","paramOrdinal","readBVarChar","paramName","charAt","slice","readUInt8","metadataParse","metadata","valueParse","value","ReturnValueToken","_default","exports","module"],"sources":["../../src/token/returnvalue-token-parser.ts"],"sourcesContent":["// s2.2.7.16\n\nimport Parser, { ParserOptions } from './stream-parser';\n\nimport { ReturnValueToken } from './token';\n\nimport metadataParse from '../metadata-parser';\nimport valueParse from '../value-parser';\n\nfunction returnParser(parser: Parser, options: ParserOptions, callback: (token: ReturnValueToken) => void) {\n parser.readUInt16LE((paramOrdinal) => {\n parser.readBVarChar((paramName) => {\n if (paramName.charAt(0) === '@') {\n paramName = paramName.slice(1);\n }\n\n // status\n parser.readUInt8(() => {\n metadataParse(parser, options, (metadata) => {\n valueParse(parser, metadata, options, (value) => {\n callback(new ReturnValueToken({\n paramOrdinal: paramOrdinal,\n paramName: paramName,\n metadata: metadata,\n value: value\n }));\n });\n });\n });\n });\n });\n}\n\nexport default returnParser;\nmodule.exports = returnParser;\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAyC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPzC;;AASA,SAASG,YAAYA,CAACC,MAAc,EAAEC,OAAsB,EAAEC,QAA2C,EAAE;EACzGF,MAAM,CAACG,YAAY,CAAEC,YAAY,IAAK;IACpCJ,MAAM,CAACK,YAAY,CAAEC,SAAS,IAAK;MACjC,IAAIA,SAAS,CAACC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC/BD,SAAS,GAAGA,SAAS,CAACE,KAAK,CAAC,CAAC,CAAC;MAChC;;MAEA;MACAR,MAAM,CAACS,SAAS,CAAC,MAAM;QACrB,IAAAC,uBAAa,EAACV,MAAM,EAAEC,OAAO,EAAGU,QAAQ,IAAK;UAC3C,IAAAC,oBAAU,EAACZ,MAAM,EAAEW,QAAQ,EAAEV,OAAO,EAAGY,KAAK,IAAK;YAC/CX,QAAQ,CAAC,IAAIY,uBAAgB,CAAC;cAC5BV,YAAY,EAAEA,YAAY;cAC1BE,SAAS,EAAEA,SAAS;cACpBK,QAAQ,EAAEA,QAAQ;cAClBE,KAAK,EAAEA;YACT,CAAC,CAAC,CAAC;UACL,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAAC,IAAAE,QAAA,GAEchB,YAAY;AAAAiB,OAAA,CAAAlB,OAAA,GAAAiB,QAAA;AAC3BE,MAAM,CAACD,OAAO,GAAGjB,YAAY"}
|
|
1
|
+
{"version":3,"file":"returnvalue-token-parser.js","names":["_token","require","_metadataParser","_interopRequireDefault","_valueParser","obj","__esModule","default","returnParser","parser","options","callback","readUInt16LE","paramOrdinal","readBVarChar","paramName","charAt","slice","readUInt8","metadataParse","metadata","valueParse","value","ReturnValueToken","_default","exports","module"],"sources":["../../src/token/returnvalue-token-parser.ts"],"sourcesContent":["// s2.2.7.16\n\nimport Parser, { type ParserOptions } from './stream-parser';\n\nimport { ReturnValueToken } from './token';\n\nimport metadataParse from '../metadata-parser';\nimport valueParse from '../value-parser';\n\nfunction returnParser(parser: Parser, options: ParserOptions, callback: (token: ReturnValueToken) => void) {\n parser.readUInt16LE((paramOrdinal) => {\n parser.readBVarChar((paramName) => {\n if (paramName.charAt(0) === '@') {\n paramName = paramName.slice(1);\n }\n\n // status\n parser.readUInt8(() => {\n metadataParse(parser, options, (metadata) => {\n valueParse(parser, metadata, options, (value) => {\n callback(new ReturnValueToken({\n paramOrdinal: paramOrdinal,\n paramName: paramName,\n metadata: metadata,\n value: value\n }));\n });\n });\n });\n });\n });\n}\n\nexport default returnParser;\nmodule.exports = returnParser;\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAyC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPzC;;AASA,SAASG,YAAYA,CAACC,MAAc,EAAEC,OAAsB,EAAEC,QAA2C,EAAE;EACzGF,MAAM,CAACG,YAAY,CAAEC,YAAY,IAAK;IACpCJ,MAAM,CAACK,YAAY,CAAEC,SAAS,IAAK;MACjC,IAAIA,SAAS,CAACC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC/BD,SAAS,GAAGA,SAAS,CAACE,KAAK,CAAC,CAAC,CAAC;MAChC;;MAEA;MACAR,MAAM,CAACS,SAAS,CAAC,MAAM;QACrB,IAAAC,uBAAa,EAACV,MAAM,EAAEC,OAAO,EAAGU,QAAQ,IAAK;UAC3C,IAAAC,oBAAU,EAACZ,MAAM,EAAEW,QAAQ,EAAEV,OAAO,EAAGY,KAAK,IAAK;YAC/CX,QAAQ,CAAC,IAAIY,uBAAgB,CAAC;cAC5BV,YAAY,EAAEA,YAAY;cAC1BE,SAAS,EAAEA,SAAS;cACpBK,QAAQ,EAAEA,QAAQ;cAClBE,KAAK,EAAEA;YACT,CAAC,CAAC,CAAC;UACL,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAAC,IAAAE,QAAA,GAEchB,YAAY;AAAAiB,OAAA,CAAAlB,OAAA,GAAAiB,QAAA;AAC3BE,MAAM,CAACD,OAAO,GAAGjB,YAAY"}
|
|
@@ -46,4 +46,4 @@ async function rowParser(parser) {
|
|
|
46
46
|
var _default = rowParser;
|
|
47
47
|
exports.default = _default;
|
|
48
48
|
module.exports = rowParser;
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX3ZhbHVlUGFyc2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwicm93UGFyc2VyIiwicGFyc2VyIiwiY29sTWV0YWRhdGEiLCJsZW5ndGgiLCJjb2x1bW5zIiwiaSIsImN1cnJDb2xNZXRhZGF0YSIsInZhbHVlIiwidmFsdWVQYXJzZSIsIm9wdGlvbnMiLCJ2Iiwic3VzcGVuZGVkIiwic3RyZWFtQnVmZmVyIiwid2FpdEZvckNodW5rIiwibmV4dCIsInB1c2giLCJtZXRhZGF0YSIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1uc01hcCIsIk9iamVjdCIsImNyZWF0ZSIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xOYW1lIiwiUm93VG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcm93LXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTdcblxuaW1wb3J0IFBhcnNlciBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcblxuaW1wb3J0IHsgUm93VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW1wb3J0IHZhbHVlUGFyc2UgZnJvbSAnLi4vdmFsdWUtcGFyc2VyJztcblxuaW50ZXJmYWNlIENvbHVtbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBtZXRhZGF0YTogQ29sdW1uTWV0YWRhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJvd1BhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8Um93VG9rZW4+IHtcbiAgY29uc3QgY29sTWV0YWRhdGEgPSBwYXJzZXIuY29sTWV0YWRhdGE7XG4gIGNvbnN0IGxlbmd0aCA9IGNvbE1ldGFkYXRhLmxlbmd0aDtcbiAgY29uc3QgY29sdW1uczogQ29sdW1uW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3VyckNvbE1ldGFkYXRhID0gY29sTWV0YWRhdGFbaV07XG4gICAgbGV0IHZhbHVlO1xuICAgIHZhbHVlUGFyc2UocGFyc2VyLCBjdXJyQ29sTWV0YWRhdGEsIHBhcnNlci5vcHRpb25zLCAodikgPT4ge1xuICAgICAgdmFsdWUgPSB2O1xuICAgIH0pO1xuXG4gICAgd2hpbGUgKHBhcnNlci5zdXNwZW5kZWQpIHtcbiAgICAgIGF3YWl0IHBhcnNlci5zdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG5cbiAgICAgIHBhcnNlci5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IG5leHQgPSBwYXJzZXIubmV4dCE7XG5cbiAgICAgIG5leHQoKTtcbiAgICB9XG4gICAgY29sdW1ucy5wdXNoKHtcbiAgICAgIHZhbHVlLFxuICAgICAgbWV0YWRhdGE6IGN1cnJDb2xNZXRhZGF0YVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzKSB7XG4gICAgY29uc3QgY29sdW1uc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3QgY29sTmFtZSA9IGNvbHVtbi5tZXRhZGF0YS5jb2xOYW1lO1xuICAgICAgaWYgKGNvbHVtbnNNYXBbY29sTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICBjb2x1bW5zTWFwW2NvbE5hbWVdID0gY29sdW1uO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSb3dUb2tlbihjb2x1bW5zTWFwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFJvd1Rva2VuKGNvbHVtbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJvd1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gcm93UGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBeUMsU0FBQUUsdUJBQUFDLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFQekM7O0FBY0EsZUFBZUcsU0FBU0EsQ0FBQ0MsTUFBYyxFQUFxQjtFQUMxRCxNQUFNQyxXQUFXLEdBQUdELE1BQU0sQ0FBQ0MsV0FBVztFQUN0QyxNQUFNQyxNQUFNLEdBQUdELFdBQVcsQ0FBQ0MsTUFBTTtFQUNqQyxNQUFNQyxPQUFpQixHQUFHLEVBQUU7RUFFNUIsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLE1BQU0sRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0IsTUFBTUMsZUFBZSxHQUFHSixXQUFXLENBQUNHLENBQUMsQ0FBQztJQUN0QyxJQUFJRSxLQUFLO0lBQ1QsSUFBQUMsb0JBQVUsRUFBQ1AsTUFBTSxFQUFFSyxlQUFlLEVBQUVMLE1BQU0sQ0FBQ1EsT0FBTyxFQUFHQyxDQUFDLElBQUs7TUFDekRILEtBQUssR0FBR0csQ0FBQztJQUNYLENBQUMsQ0FBQztJQUVGLE9BQU9ULE1BQU0sQ0FBQ1UsU0FBUyxFQUFFO01BQ3ZCLE1BQU1WLE1BQU0sQ0FBQ1csWUFBWSxDQUFDQyxZQUFZLENBQUMsQ0FBQztNQUV4Q1osTUFBTSxDQUFDVSxTQUFTLEdBQUcsS0FBSztNQUN4QixNQUFNRyxJQUFJLEdBQUdiLE1BQU0sQ0FBQ2EsSUFBSztNQUV6QkEsSUFBSSxDQUFDLENBQUM7SUFDUjtJQUNBVixPQUFPLENBQUNXLElBQUksQ0FBQztNQUNYUixLQUFLO01BQ0xTLFFBQVEsRUFBRVY7SUFDWixDQUFDLENBQUM7RUFDSjtFQUVBLElBQUlMLE1BQU0sQ0FBQ1EsT0FBTyxDQUFDUSxjQUFjLEVBQUU7SUFDakMsTUFBTUMsVUFBcUMsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRWpFaEIsT0FBTyxDQUFDaUIsT0FBTyxDQUFFQyxNQUFNLElBQUs7TUFDMUIsTUFBTUMsT0FBTyxHQUFHRCxNQUFNLENBQUNOLFFBQVEsQ0FBQ08sT0FBTztNQUN2QyxJQUFJTCxVQUFVLENBQUNLLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRTtRQUMvQkwsVUFBVSxDQUFDSyxPQUFPLENBQUMsR0FBR0QsTUFBTTtNQUM5QjtJQUNGLENBQUMsQ0FBQztJQUVGLE9BQU8sSUFBSUUsZUFBUSxDQUFDTixVQUFVLENBQUM7RUFDakMsQ0FBQyxNQUFNO0lBQ0wsT0FBTyxJQUFJTSxlQUFRLENBQUNwQixPQUFPLENBQUM7RUFDOUI7QUFDRjtBQUFDLElBQUFxQixRQUFBLEdBRWN6QixTQUFTO0FBQUEwQixPQUFBLENBQUEzQixPQUFBLEdBQUEwQixRQUFBO0FBQ3hCRSxNQUFNLENBQUNELE9BQU8sR0FBRzFCLFNBQVMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-token-parser.js","names":["_token","require","_valueParser","_interopRequireDefault","obj","__esModule","default","rowParser","parser","colMetadata","length","columns","i","currColMetadata","value","valueParse","options","v","suspended","streamBuffer","waitForChunk","next","push","metadata","useColumnNames","columnsMap","Object","create","forEach","column","colName","RowToken","_default","exports","module"],"sources":["../../src/token/row-token-parser.ts"],"sourcesContent":["// s2.2.7.17\n\nimport Parser from './stream-parser';\nimport { ColumnMetadata } from './colmetadata-token-parser';\n\nimport { RowToken } from './token';\n\nimport valueParse from '../value-parser';\n\ninterface Column {\n value: unknown;\n metadata: ColumnMetadata;\n}\n\nasync function rowParser(parser: Parser): Promise<RowToken> {\n const colMetadata = parser.colMetadata;\n const length = colMetadata.length;\n const columns: Column[] = [];\n\n for (let i = 0; i < length; i++) {\n const currColMetadata = colMetadata[i];\n let value;\n valueParse(parser, currColMetadata, parser.options, (v) => {\n value = v;\n });\n\n while (parser.suspended) {\n await parser.streamBuffer.waitForChunk();\n\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n }\n columns.push({\n value,\n metadata: currColMetadata\n });\n }\n\n if (parser.options.useColumnNames) {\n const columnsMap: { [key: string]: Column } = Object.create(null);\n\n columns.forEach((column) => {\n const colName = column.metadata.colName;\n if (columnsMap[colName] == null) {\n columnsMap[colName] = column;\n }\n });\n\n return new RowToken(columnsMap);\n } else {\n return new RowToken(columns);\n }\n}\n\nexport default rowParser;\nmodule.exports = rowParser;\n"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAyC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPzC;;AAcA,eAAeG,SAASA,CAACC,MAAc,EAAqB;EAC1D,MAAMC,WAAW,GAAGD,MAAM,CAACC,WAAW;EACtC,MAAMC,MAAM,GAAGD,WAAW,CAACC,MAAM;EACjC,MAAMC,OAAiB,GAAG,EAAE;EAE5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,EAAEE,CAAC,EAAE,EAAE;IAC/B,MAAMC,eAAe,GAAGJ,WAAW,CAACG,CAAC,CAAC;IACtC,IAAIE,KAAK;IACT,IAAAC,oBAAU,EAACP,MAAM,EAAEK,eAAe,EAAEL,MAAM,CAACQ,OAAO,EAAGC,CAAC,IAAK;MACzDH,KAAK,GAAGG,CAAC;IACX,CAAC,CAAC;IAEF,OAAOT,MAAM,CAACU,SAAS,EAAE;MACvB,MAAMV,MAAM,CAACW,YAAY,CAACC,YAAY,CAAC,CAAC;MAExCZ,MAAM,CAACU,SAAS,GAAG,KAAK;MACxB,MAAMG,IAAI,GAAGb,MAAM,CAACa,IAAK;MAEzBA,IAAI,CAAC,CAAC;IACR;IACAV,OAAO,CAACW,IAAI,CAAC;MACXR,KAAK;MACLS,QAAQ,EAAEV;IACZ,CAAC,CAAC;EACJ;EAEA,IAAIL,MAAM,CAACQ,OAAO,CAACQ,cAAc,EAAE;IACjC,MAAMC,UAAqC,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;IAEjEhB,OAAO,CAACiB,OAAO,CAAEC,MAAM,IAAK;MAC1B,MAAMC,OAAO,GAAGD,MAAM,CAACN,QAAQ,CAACO,OAAO;MACvC,IAAIL,UAAU,CAACK,OAAO,CAAC,IAAI,IAAI,EAAE;QAC/BL,UAAU,CAACK,OAAO,CAAC,GAAGD,MAAM;MAC9B;IACF,CAAC,CAAC;IAEF,OAAO,IAAIE,eAAQ,CAACN,UAAU,CAAC;EACjC,CAAC,MAAM;IACL,OAAO,IAAIM,eAAQ,CAACpB,OAAO,CAAC;EAC9B;AACF;AAAC,IAAAqB,QAAA,GAEczB,SAAS;AAAA0B,OAAA,CAAA3B,OAAA,GAAA0B,QAAA;AACxBE,MAAM,CAACD,OAAO,GAAG1B,SAAS"}
|
|
1
|
+
{"version":3,"file":"row-token-parser.js","names":["_token","require","_valueParser","_interopRequireDefault","obj","__esModule","default","rowParser","parser","colMetadata","length","columns","i","currColMetadata","value","valueParse","options","v","suspended","streamBuffer","waitForChunk","next","push","metadata","useColumnNames","columnsMap","Object","create","forEach","column","colName","RowToken","_default","exports","module"],"sources":["../../src/token/row-token-parser.ts"],"sourcesContent":["// s2.2.7.17\n\nimport Parser from './stream-parser';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\n\nimport { RowToken } from './token';\n\nimport valueParse from '../value-parser';\n\ninterface Column {\n value: unknown;\n metadata: ColumnMetadata;\n}\n\nasync function rowParser(parser: Parser): Promise<RowToken> {\n const colMetadata = parser.colMetadata;\n const length = colMetadata.length;\n const columns: Column[] = [];\n\n for (let i = 0; i < length; i++) {\n const currColMetadata = colMetadata[i];\n let value;\n valueParse(parser, currColMetadata, parser.options, (v) => {\n value = v;\n });\n\n while (parser.suspended) {\n await parser.streamBuffer.waitForChunk();\n\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n }\n columns.push({\n value,\n metadata: currColMetadata\n });\n }\n\n if (parser.options.useColumnNames) {\n const columnsMap: { [key: string]: Column } = Object.create(null);\n\n columns.forEach((column) => {\n const colName = column.metadata.colName;\n if (columnsMap[colName] == null) {\n columnsMap[colName] = column;\n }\n });\n\n return new RowToken(columnsMap);\n } else {\n return new RowToken(columns);\n }\n}\n\nexport default rowParser;\nmodule.exports = rowParser;\n"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAyC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPzC;;AAcA,eAAeG,SAASA,CAACC,MAAc,EAAqB;EAC1D,MAAMC,WAAW,GAAGD,MAAM,CAACC,WAAW;EACtC,MAAMC,MAAM,GAAGD,WAAW,CAACC,MAAM;EACjC,MAAMC,OAAiB,GAAG,EAAE;EAE5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,EAAEE,CAAC,EAAE,EAAE;IAC/B,MAAMC,eAAe,GAAGJ,WAAW,CAACG,CAAC,CAAC;IACtC,IAAIE,KAAK;IACT,IAAAC,oBAAU,EAACP,MAAM,EAAEK,eAAe,EAAEL,MAAM,CAACQ,OAAO,EAAGC,CAAC,IAAK;MACzDH,KAAK,GAAGG,CAAC;IACX,CAAC,CAAC;IAEF,OAAOT,MAAM,CAACU,SAAS,EAAE;MACvB,MAAMV,MAAM,CAACW,YAAY,CAACC,YAAY,CAAC,CAAC;MAExCZ,MAAM,CAACU,SAAS,GAAG,KAAK;MACxB,MAAMG,IAAI,GAAGb,MAAM,CAACa,IAAK;MAEzBA,IAAI,CAAC,CAAC;IACR;IACAV,OAAO,CAACW,IAAI,CAAC;MACXR,KAAK;MACLS,QAAQ,EAAEV;IACZ,CAAC,CAAC;EACJ;EAEA,IAAIL,MAAM,CAACQ,OAAO,CAACQ,cAAc,EAAE;IACjC,MAAMC,UAAqC,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;IAEjEhB,OAAO,CAACiB,OAAO,CAAEC,MAAM,IAAK;MAC1B,MAAMC,OAAO,GAAGD,MAAM,CAACN,QAAQ,CAACO,OAAO;MACvC,IAAIL,UAAU,CAACK,OAAO,CAAC,IAAI,IAAI,EAAE;QAC/BL,UAAU,CAACK,OAAO,CAAC,GAAGD,MAAM;MAC9B;IACF,CAAC,CAAC;IAEF,OAAO,IAAIE,eAAQ,CAACN,UAAU,CAAC;EACjC,CAAC,MAAM;IACL,OAAO,IAAIM,eAAQ,CAACpB,OAAO,CAAC;EAC9B;AACF;AAAC,IAAAqB,QAAA,GAEczB,SAAS;AAAA0B,OAAA,CAAA3B,OAAA,GAAA0B,QAAA;AACxBE,MAAM,CAACD,OAAO,GAAG1B,SAAS"}
|
|
@@ -31,4 +31,4 @@ function sspiParser(parser, _options, callback) {
|
|
|
31
31
|
var _default = sspiParser;
|
|
32
32
|
exports.default = _default;
|
|
33
33
|
module.exports = sspiParser;
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwicGFyc2VDaGFsbGVuZ2UiLCJidWZmZXIiLCJjaGFsbGVuZ2UiLCJtYWdpYyIsInNsaWNlIiwidG9TdHJpbmciLCJ0eXBlIiwicmVhZEludDMyTEUiLCJkb21haW5MZW4iLCJyZWFkSW50MTZMRSIsImRvbWFpbk1heCIsImRvbWFpbk9mZnNldCIsImZsYWdzIiwibm9uY2UiLCJ6ZXJvZXMiLCJ0YXJnZXRMZW4iLCJ0YXJnZXRNYXgiLCJ0YXJnZXRPZmZzZXQiLCJvZGREYXRhIiwiZG9tYWluIiwidGFyZ2V0Iiwic3NwaVBhcnNlciIsInBhcnNlciIsIl9vcHRpb25zIiwiY2FsbGJhY2siLCJyZWFkVXNWYXJCeXRlIiwiU1NQSVRva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9zc3BpLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IFNTUElUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbnRlcmZhY2UgRGF0YSB7XG4gIG1hZ2ljOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgZG9tYWluTGVuOiBudW1iZXI7XG4gIGRvbWFpbk1heDogbnVtYmVyO1xuICBkb21haW5PZmZzZXQ6IG51bWJlcjtcbiAgZmxhZ3M6IG51bWJlcjtcbiAgbm9uY2U6IEJ1ZmZlcjtcbiAgemVyb2VzOiBCdWZmZXI7XG4gIHRhcmdldExlbjogbnVtYmVyO1xuICB0YXJnZXRNYXg6IG51bWJlcjtcbiAgdGFyZ2V0T2Zmc2V0OiBudW1iZXI7XG4gIG9kZERhdGE6IEJ1ZmZlcjtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIHRhcmdldDogQnVmZmVyO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNoYWxsZW5nZShidWZmZXI6IEJ1ZmZlcikge1xuICBjb25zdCBjaGFsbGVuZ2U6IFBhcnRpYWw8RGF0YT4gPSB7fTtcblxuICBjaGFsbGVuZ2UubWFnaWMgPSBidWZmZXIuc2xpY2UoMCwgOCkudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgY2hhbGxlbmdlLnR5cGUgPSBidWZmZXIucmVhZEludDMyTEUoOCk7XG4gIGNoYWxsZW5nZS5kb21haW5MZW4gPSBidWZmZXIucmVhZEludDE2TEUoMTIpO1xuICBjaGFsbGVuZ2UuZG9tYWluTWF4ID0gYnVmZmVyLnJlYWRJbnQxNkxFKDE0KTtcbiAgY2hhbGxlbmdlLmRvbWFpbk9mZnNldCA9IGJ1ZmZlci5yZWFkSW50MzJMRSgxNik7XG4gIGNoYWxsZW5nZS5mbGFncyA9IGJ1ZmZlci5yZWFkSW50MzJMRSgyMCk7XG4gIGNoYWxsZW5nZS5ub25jZSA9IGJ1ZmZlci5zbGljZSgyNCwgMzIpO1xuICBjaGFsbGVuZ2UuemVyb2VzID0gYnVmZmVyLnNsaWNlKDMyLCA0MCk7XG4gIGNoYWxsZW5nZS50YXJnZXRMZW4gPSBidWZmZXIucmVhZEludDE2TEUoNDApO1xuICBjaGFsbGVuZ2UudGFyZ2V0TWF4ID0gYnVmZmVyLnJlYWRJbnQxNkxFKDQyKTtcbiAgY2hhbGxlbmdlLnRhcmdldE9mZnNldCA9IGJ1ZmZlci5yZWFkSW50MzJMRSg0NCk7XG4gIGNoYWxsZW5nZS5vZGREYXRhID0gYnVmZmVyLnNsaWNlKDQ4LCA1Nik7XG4gIGNoYWxsZW5nZS5kb21haW4gPSBidWZmZXIuc2xpY2UoNTYsIDU2ICsgY2hhbGxlbmdlLmRvbWFpbkxlbikudG9TdHJpbmcoJ3VjczInKTtcbiAgY2hhbGxlbmdlLnRhcmdldCA9IGJ1ZmZlci5zbGljZSg1NiArIGNoYWxsZW5nZS5kb21haW5MZW4sIDU2ICsgY2hhbGxlbmdlLmRvbWFpbkxlbiArIGNoYWxsZW5nZS50YXJnZXRMZW4pO1xuXG4gIHJldHVybiBjaGFsbGVuZ2UgYXMgRGF0YTtcbn1cblxuZnVuY3Rpb24gc3NwaVBhcnNlcihwYXJzZXI6IFBhcnNlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IFNTUElUb2tlbikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVzVmFyQnl0ZSgoYnVmZmVyKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IFNTUElUb2tlbihwYXJzZUNoYWxsZW5nZShidWZmZXIpLCBidWZmZXIpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNzcGlQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHNzcGlQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQW1CQSxTQUFTQyxjQUFjQSxDQUFDQyxNQUFjLEVBQUU7RUFDdEMsTUFBTUMsU0FBd0IsR0FBRyxDQUFDLENBQUM7RUFFbkNBLFNBQVMsQ0FBQ0MsS0FBSyxHQUFHRixNQUFNLENBQUNHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxNQUFNLENBQUM7RUFDckRILFNBQVMsQ0FBQ0ksSUFBSSxHQUFHTCxNQUFNLENBQUNNLFdBQVcsQ0FBQyxDQUFDLENBQUM7RUFDdENMLFNBQVMsQ0FBQ00sU0FBUyxHQUFHUCxNQUFNLENBQUNRLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDNUNQLFNBQVMsQ0FBQ1EsU0FBUyxHQUFHVCxNQUFNLENBQUNRLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDNUNQLFNBQVMsQ0FBQ1MsWUFBWSxHQUFHVixNQUFNLENBQUNNLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDL0NMLFNBQVMsQ0FBQ1UsS0FBSyxHQUFHWCxNQUFNLENBQUNNLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDeENMLFNBQVMsQ0FBQ1csS0FBSyxHQUFHWixNQUFNLENBQUNHLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0VBQ3RDRixTQUFTLENBQUNZLE1BQU0sR0FBR2IsTUFBTSxDQUFDRyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztFQUN2Q0YsU0FBUyxDQUFDYSxTQUFTLEdBQUdkLE1BQU0sQ0FBQ1EsV0FBVyxDQUFDLEVBQUUsQ0FBQztFQUM1Q1AsU0FBUyxDQUFDYyxTQUFTLEdBQUdmLE1BQU0sQ0FBQ1EsV0FBVyxDQUFDLEVBQUUsQ0FBQztFQUM1Q1AsU0FBUyxDQUFDZSxZQUFZLEdBQUdoQixNQUFNLENBQUNNLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDL0NMLFNBQVMsQ0FBQ2dCLE9BQU8sR0FBR2pCLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDeENGLFNBQVMsQ0FBQ2lCLE1BQU0sR0FBR2xCLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUdGLFNBQVMsQ0FBQ00sU0FBUyxDQUFDLENBQUNILFFBQVEsQ0FBQyxNQUFNLENBQUM7RUFDOUVILFNBQVMsQ0FBQ2tCLE1BQU0sR0FBR25CLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLEVBQUUsR0FBR0YsU0FBUyxDQUFDTSxTQUFTLEVBQUUsRUFBRSxHQUFHTixTQUFTLENBQUNNLFNBQVMsR0FBR04sU0FBUyxDQUFDYSxTQUFTLENBQUM7RUFFekcsT0FBT2IsU0FBUztBQUNsQjtBQUVBLFNBQVNtQixVQUFVQSxDQUFDQyxNQUFjLEVBQUVDLFFBQXVCLEVBQUVDLFFBQW9DLEVBQUU7RUFDakdGLE1BQU0sQ0FBQ0csYUFBYSxDQUFFeEIsTUFBTSxJQUFLO0lBQy9CdUIsUUFBUSxDQUFDLElBQUlFLGdCQUFTLENBQUMxQixjQUFjLENBQUNDLE1BQU0sQ0FBQyxFQUFFQSxNQUFNLENBQUMsQ0FBQztFQUN6RCxDQUFDLENBQUM7QUFDSjtBQUFDLElBQUEwQixRQUFBLEdBRWNOLFVBQVU7QUFBQU8sT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDekJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHUCxVQUFVIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sspi-token-parser.js","names":["_token","require","parseChallenge","buffer","challenge","magic","slice","toString","type","readInt32LE","domainLen","readInt16LE","domainMax","domainOffset","flags","nonce","zeroes","targetLen","targetMax","targetOffset","oddData","domain","target","sspiParser","parser","_options","callback","readUsVarByte","SSPIToken","_default","exports","default","module"],"sources":["../../src/token/sspi-token-parser.ts"],"sourcesContent":["import Parser, { ParserOptions } from './stream-parser';\n\nimport { SSPIToken } from './token';\n\ninterface Data {\n magic: string;\n type: number;\n domainLen: number;\n domainMax: number;\n domainOffset: number;\n flags: number;\n nonce: Buffer;\n zeroes: Buffer;\n targetLen: number;\n targetMax: number;\n targetOffset: number;\n oddData: Buffer;\n domain: string;\n target: Buffer;\n}\n\nfunction parseChallenge(buffer: Buffer) {\n const challenge: Partial<Data> = {};\n\n challenge.magic = buffer.slice(0, 8).toString('utf8');\n challenge.type = buffer.readInt32LE(8);\n challenge.domainLen = buffer.readInt16LE(12);\n challenge.domainMax = buffer.readInt16LE(14);\n challenge.domainOffset = buffer.readInt32LE(16);\n challenge.flags = buffer.readInt32LE(20);\n challenge.nonce = buffer.slice(24, 32);\n challenge.zeroes = buffer.slice(32, 40);\n challenge.targetLen = buffer.readInt16LE(40);\n challenge.targetMax = buffer.readInt16LE(42);\n challenge.targetOffset = buffer.readInt32LE(44);\n challenge.oddData = buffer.slice(48, 56);\n challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2');\n challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen);\n\n return challenge as Data;\n}\n\nfunction sspiParser(parser: Parser, _options: ParserOptions, callback: (token: SSPIToken) => void) {\n parser.readUsVarByte((buffer) => {\n callback(new SSPIToken(parseChallenge(buffer), buffer));\n });\n}\n\nexport default sspiParser;\nmodule.exports = sspiParser;\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAmBA,SAASC,cAAcA,CAACC,MAAc,EAAE;EACtC,MAAMC,SAAwB,GAAG,CAAC,CAAC;EAEnCA,SAAS,CAACC,KAAK,GAAGF,MAAM,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC;EACrDH,SAAS,CAACI,IAAI,GAAGL,MAAM,CAACM,WAAW,CAAC,CAAC,CAAC;EACtCL,SAAS,CAACM,SAAS,GAAGP,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACQ,SAAS,GAAGT,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACS,YAAY,GAAGV,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACU,KAAK,GAAGX,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EACxCL,SAAS,CAACW,KAAK,GAAGZ,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACtCF,SAAS,CAACY,MAAM,GAAGb,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACvCF,SAAS,CAACa,SAAS,GAAGd,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACc,SAAS,GAAGf,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACe,YAAY,GAAGhB,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACgB,OAAO,GAAGjB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACxCF,SAAS,CAACiB,MAAM,GAAGlB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,GAAGF,SAAS,CAACM,SAAS,CAAC,CAACH,QAAQ,CAAC,MAAM,CAAC;EAC9EH,SAAS,CAACkB,MAAM,GAAGnB,MAAM,CAACG,KAAK,CAAC,EAAE,GAAGF,SAAS,CAACM,SAAS,EAAE,EAAE,GAAGN,SAAS,CAACM,SAAS,GAAGN,SAAS,CAACa,SAAS,CAAC;EAEzG,OAAOb,SAAS;AAClB;AAEA,SAASmB,UAAUA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAAoC,EAAE;EACjGF,MAAM,CAACG,aAAa,CAAExB,MAAM,IAAK;IAC/BuB,QAAQ,CAAC,IAAIE,gBAAS,CAAC1B,cAAc,CAACC,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAC;EACzD,CAAC,CAAC;AACJ;AAAC,IAAA0B,QAAA,GAEcN,UAAU;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACzBG,MAAM,CAACF,OAAO,GAAGP,UAAU"}
|
|
1
|
+
{"version":3,"file":"sspi-token-parser.js","names":["_token","require","parseChallenge","buffer","challenge","magic","slice","toString","type","readInt32LE","domainLen","readInt16LE","domainMax","domainOffset","flags","nonce","zeroes","targetLen","targetMax","targetOffset","oddData","domain","target","sspiParser","parser","_options","callback","readUsVarByte","SSPIToken","_default","exports","default","module"],"sources":["../../src/token/sspi-token-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './stream-parser';\n\nimport { SSPIToken } from './token';\n\ninterface Data {\n magic: string;\n type: number;\n domainLen: number;\n domainMax: number;\n domainOffset: number;\n flags: number;\n nonce: Buffer;\n zeroes: Buffer;\n targetLen: number;\n targetMax: number;\n targetOffset: number;\n oddData: Buffer;\n domain: string;\n target: Buffer;\n}\n\nfunction parseChallenge(buffer: Buffer) {\n const challenge: Partial<Data> = {};\n\n challenge.magic = buffer.slice(0, 8).toString('utf8');\n challenge.type = buffer.readInt32LE(8);\n challenge.domainLen = buffer.readInt16LE(12);\n challenge.domainMax = buffer.readInt16LE(14);\n challenge.domainOffset = buffer.readInt32LE(16);\n challenge.flags = buffer.readInt32LE(20);\n challenge.nonce = buffer.slice(24, 32);\n challenge.zeroes = buffer.slice(32, 40);\n challenge.targetLen = buffer.readInt16LE(40);\n challenge.targetMax = buffer.readInt16LE(42);\n challenge.targetOffset = buffer.readInt32LE(44);\n challenge.oddData = buffer.slice(48, 56);\n challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2');\n challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen);\n\n return challenge as Data;\n}\n\nfunction sspiParser(parser: Parser, _options: ParserOptions, callback: (token: SSPIToken) => void) {\n parser.readUsVarByte((buffer) => {\n callback(new SSPIToken(parseChallenge(buffer), buffer));\n });\n}\n\nexport default sspiParser;\nmodule.exports = sspiParser;\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAmBA,SAASC,cAAcA,CAACC,MAAc,EAAE;EACtC,MAAMC,SAAwB,GAAG,CAAC,CAAC;EAEnCA,SAAS,CAACC,KAAK,GAAGF,MAAM,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC;EACrDH,SAAS,CAACI,IAAI,GAAGL,MAAM,CAACM,WAAW,CAAC,CAAC,CAAC;EACtCL,SAAS,CAACM,SAAS,GAAGP,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACQ,SAAS,GAAGT,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACS,YAAY,GAAGV,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACU,KAAK,GAAGX,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EACxCL,SAAS,CAACW,KAAK,GAAGZ,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACtCF,SAAS,CAACY,MAAM,GAAGb,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACvCF,SAAS,CAACa,SAAS,GAAGd,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACc,SAAS,GAAGf,MAAM,CAACQ,WAAW,CAAC,EAAE,CAAC;EAC5CP,SAAS,CAACe,YAAY,GAAGhB,MAAM,CAACM,WAAW,CAAC,EAAE,CAAC;EAC/CL,SAAS,CAACgB,OAAO,GAAGjB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;EACxCF,SAAS,CAACiB,MAAM,GAAGlB,MAAM,CAACG,KAAK,CAAC,EAAE,EAAE,EAAE,GAAGF,SAAS,CAACM,SAAS,CAAC,CAACH,QAAQ,CAAC,MAAM,CAAC;EAC9EH,SAAS,CAACkB,MAAM,GAAGnB,MAAM,CAACG,KAAK,CAAC,EAAE,GAAGF,SAAS,CAACM,SAAS,EAAE,EAAE,GAAGN,SAAS,CAACM,SAAS,GAAGN,SAAS,CAACa,SAAS,CAAC;EAEzG,OAAOb,SAAS;AAClB;AAEA,SAASmB,UAAUA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAAoC,EAAE;EACjGF,MAAM,CAACG,aAAa,CAAExB,MAAM,IAAK;IAC/BuB,QAAQ,CAAC,IAAIE,gBAAS,CAAC1B,cAAc,CAACC,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAC;EACzD,CAAC,CAAC;AACJ;AAAC,IAAA0B,QAAA,GAEcN,UAAU;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACzBG,MAAM,CAACF,OAAO,GAAGP,UAAU"}
|
|
@@ -35,9 +35,6 @@ const tokenParsers = {
|
|
|
35
35
|
[_token.TYPE.SSPI]: _sspiTokenParser.default
|
|
36
36
|
};
|
|
37
37
|
class StreamBuffer {
|
|
38
|
-
iterator;
|
|
39
|
-
buffer;
|
|
40
|
-
position;
|
|
41
38
|
constructor(iterable) {
|
|
42
39
|
this.iterator = (iterable[Symbol.asyncIterator] || iterable[Symbol.iterator]).call(iterable);
|
|
43
40
|
this.buffer = Buffer.alloc(0);
|
|
@@ -57,12 +54,6 @@ class StreamBuffer {
|
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
class Parser {
|
|
60
|
-
debug;
|
|
61
|
-
colMetadata;
|
|
62
|
-
options;
|
|
63
|
-
suspended;
|
|
64
|
-
next;
|
|
65
|
-
streamBuffer;
|
|
66
57
|
static async *parseTokens(iterable, debug, options, colMetadata = []) {
|
|
67
58
|
let token;
|
|
68
59
|
const onDoneParsing = t => {
|
|
@@ -380,4 +371,4 @@ class Parser {
|
|
|
380
371
|
var _default = Parser;
|
|
381
372
|
exports.default = _default;
|
|
382
373
|
module.exports = Parser;
|
|
383
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidG9rZW5QYXJzZXJzIiwiVFlQRSIsIkRPTkUiLCJkb25lUGFyc2VyIiwiRE9ORUlOUFJPQyIsImRvbmVJblByb2NQYXJzZXIiLCJET05FUFJPQyIsImRvbmVQcm9jUGFyc2VyIiwiRU5WQ0hBTkdFIiwiZW52Q2hhbmdlUGFyc2VyIiwiRVJST1IiLCJlcnJvclBhcnNlciIsIkZFREFVVEhJTkZPIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJGRUFUVVJFRVhUQUNLIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsIklORk8iLCJpbmZvUGFyc2VyIiwiTE9HSU5BQ0siLCJsb2dpbkFja1BhcnNlciIsIk9SREVSIiwib3JkZXJQYXJzZXIiLCJSRVRVUk5TVEFUVVMiLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJSRVRVUk5WQUxVRSIsInJldHVyblZhbHVlUGFyc2VyIiwiU1NQSSIsInNzcGlQYXJzZXIiLCJTdHJlYW1CdWZmZXIiLCJpdGVyYXRvciIsImJ1ZmZlciIsInBvc2l0aW9uIiwiY29uc3RydWN0b3IiLCJpdGVyYWJsZSIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJjYWxsIiwiQnVmZmVyIiwiYWxsb2MiLCJ3YWl0Rm9yQ2h1bmsiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIkVycm9yIiwibGVuZ3RoIiwidmFsdWUiLCJjb25jYXQiLCJzbGljZSIsIlBhcnNlciIsImRlYnVnIiwiY29sTWV0YWRhdGEiLCJvcHRpb25zIiwic3VzcGVuZGVkIiwic3RyZWFtQnVmZmVyIiwicGFyc2VUb2tlbnMiLCJ0b2tlbiIsIm9uRG9uZVBhcnNpbmciLCJ0IiwicGFyc2VyIiwiZXJyIiwiQ29sTWV0YWRhdGFUb2tlbiIsImNvbHVtbnMiLCJ0eXBlIiwicmVhZFVJbnQ4IiwiQ09MTUVUQURBVEEiLCJjb2xNZXRhZGF0YVBhcnNlciIsIlJPVyIsInJvd1BhcnNlciIsIk5CQ1JPVyIsIm5iY1Jvd1BhcnNlciIsInVuZGVmaW5lZCIsInN1c3BlbmQiLCJhd2FpdERhdGEiLCJjYWxsYmFjayIsInJlYWRJbnQ4IiwiZGF0YSIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkVUludDE2TEUiLCJyZWFkVUludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkSW50NjRMRSIsIk1hdGgiLCJwb3ciLCJyZWFkSW50NjRCRSIsInJlYWRCaWdVSW50NjRMRSIsInJlYWRVSW50NjRMRSIsInJlYWRVSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJyZWFkVUludDI0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVJbnQ0MExFIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJkd29yZDEiLCJkd29yZDIiLCJkd29yZDMiLCJyZWFkVU51bWVyaWMxMjhMRSIsImR3b3JkNCIsInJlYWRCdWZmZXIiLCJyZWFkQlZhckNoYXIiLCJ0b1N0cmluZyIsInJlYWRVc1ZhckNoYXIiLCJyZWFkQlZhckJ5dGUiLCJyZWFkVXNWYXJCeXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3N0cmVhbS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlYnVnIGZyb20gJy4uL2RlYnVnJztcbmltcG9ydCB7IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tICcuLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVFlQRSwgVG9rZW4sIENvbE1ldGFkYXRhVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW1wb3J0IGNvbE1ldGFkYXRhUGFyc2VyLCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZG9uZVBhcnNlciwgZG9uZUluUHJvY1BhcnNlciwgZG9uZVByb2NQYXJzZXIgfSBmcm9tICcuL2RvbmUtdG9rZW4tcGFyc2VyJztcbmltcG9ydCBlbnZDaGFuZ2VQYXJzZXIgZnJvbSAnLi9lbnYtY2hhbmdlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBlcnJvclBhcnNlciwgaW5mb1BhcnNlciB9IGZyb20gJy4vaW5mb2Vycm9yLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZmVkQXV0aEluZm9QYXJzZXIgZnJvbSAnLi9mZWRhdXRoLWluZm8tcGFyc2VyJztcbmltcG9ydCBmZWF0dXJlRXh0QWNrUGFyc2VyIGZyb20gJy4vZmVhdHVyZS1leHQtYWNrLXBhcnNlcic7XG5pbXBvcnQgbG9naW5BY2tQYXJzZXIgZnJvbSAnLi9sb2dpbmFjay10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG9yZGVyUGFyc2VyIGZyb20gJy4vb3JkZXItdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5TdGF0dXNQYXJzZXIgZnJvbSAnLi9yZXR1cm5zdGF0dXMtdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5WYWx1ZVBhcnNlciBmcm9tICcuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcm93UGFyc2VyIGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgbmJjUm93UGFyc2VyIGZyb20gJy4vbmJjcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgc3NwaVBhcnNlciBmcm9tICcuL3NzcGktdG9rZW4tcGFyc2VyJztcblxuY29uc3QgdG9rZW5QYXJzZXJzID0ge1xuICBbVFlQRS5ET05FXTogZG9uZVBhcnNlcixcbiAgW1RZUEUuRE9ORUlOUFJPQ106IGRvbmVJblByb2NQYXJzZXIsXG4gIFtUWVBFLkRPTkVQUk9DXTogZG9uZVByb2NQYXJzZXIsXG4gIFtUWVBFLkVOVkNIQU5HRV06IGVudkNoYW5nZVBhcnNlcixcbiAgW1RZUEUuRVJST1JdOiBlcnJvclBhcnNlcixcbiAgW1RZUEUuRkVEQVVUSElORk9dOiBmZWRBdXRoSW5mb1BhcnNlcixcbiAgW1RZUEUuRkVBVFVSRUVYVEFDS106IGZlYXR1cmVFeHRBY2tQYXJzZXIsXG4gIFtUWVBFLklORk9dOiBpbmZvUGFyc2VyLFxuICBbVFlQRS5MT0dJTkFDS106IGxvZ2luQWNrUGFyc2VyLFxuICBbVFlQRS5PUkRFUl06IG9yZGVyUGFyc2VyLFxuICBbVFlQRS5SRVRVUk5TVEFUVVNdOiByZXR1cm5TdGF0dXNQYXJzZXIsXG4gIFtUWVBFLlJFVFVSTlZBTFVFXTogcmV0dXJuVmFsdWVQYXJzZXIsXG4gIFtUWVBFLlNTUEldOiBzc3BpUGFyc2VyXG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZXJPcHRpb25zID0gUGljazxJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCAndXNlVVRDJyB8ICdsb3dlckNhc2VHdWlkcycgfCAndGRzVmVyc2lvbicgfCAndXNlQ29sdW1uTmFtZXMnIHwgJ2NvbHVtbk5hbWVSZXBsYWNlcicgfCAnY2FtZWxDYXNlQ29sdW1ucyc+O1xuXG5jbGFzcyBTdHJlYW1CdWZmZXIge1xuICBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPiB8IEl0ZXJhdG9yPEJ1ZmZlciwgYW55LCB1bmRlZmluZWQ+O1xuICBidWZmZXI6IEJ1ZmZlcjtcbiAgcG9zaXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPikge1xuICAgIHRoaXMuaXRlcmF0b3IgPSAoKGl0ZXJhYmxlIGFzIEFzeW5jSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIHx8IChpdGVyYWJsZSBhcyBJdGVyYWJsZTxCdWZmZXI+KVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKGl0ZXJhYmxlKTtcblxuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvckNodW5rKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaXRlcmF0b3IubmV4dCgpO1xuICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBkYXRhJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5idWZmZXIgPSByZXN1bHQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbdGhpcy5idWZmZXIuc2xpY2UodGhpcy5wb3NpdGlvbiksIHJlc3VsdC52YWx1ZV0pO1xuICAgIH1cbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxufVxuXG5jbGFzcyBQYXJzZXIge1xuICBkZWJ1ZzogRGVidWc7XG4gIGNvbE1ldGFkYXRhOiBDb2x1bW5NZXRhZGF0YVtdO1xuICBvcHRpb25zOiBQYXJzZXJPcHRpb25zO1xuXG4gIHN1c3BlbmRlZDogYm9vbGVhbjtcbiAgbmV4dDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBzdHJlYW1CdWZmZXI6IFN0cmVhbUJ1ZmZlcjtcblxuICBzdGF0aWMgYXN5bmMgKnBhcnNlVG9rZW5zKGl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPEJ1ZmZlcj4gfCBJdGVyYWJsZTxCdWZmZXI+LCBkZWJ1ZzogRGVidWcsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNvbE1ldGFkYXRhOiBDb2x1bW5NZXRhZGF0YVtdID0gW10pIHtcbiAgICBsZXQgdG9rZW46IFRva2VuIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9uRG9uZVBhcnNpbmcgPSAodDogVG9rZW4gfCB1bmRlZmluZWQpID0+IHsgdG9rZW4gPSB0OyB9O1xuXG4gICAgY29uc3Qgc3RyZWFtQnVmZmVyID0gbmV3IFN0cmVhbUJ1ZmZlcihpdGVyYWJsZSk7XG5cbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKHN0cmVhbUJ1ZmZlciwgZGVidWcsIG9wdGlvbnMpO1xuICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IGNvbE1ldGFkYXRhO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHN0cmVhbUJ1ZmZlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgICBpZiAoc3RyZWFtQnVmZmVyLnBvc2l0aW9uID09PSBzdHJlYW1CdWZmZXIuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnNlci5zdXNwZW5kZWQpIHtcbiAgICAgICAgLy8gVW5zdXNwZW5kIGFuZCBjb250aW51ZSBmcm9tIHdoZXJlIGV2ZXIgd2UgbGVmdCBvZmYuXG4gICAgICAgIHBhcnNlci5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV4dCA9IHBhcnNlci5uZXh0ITtcblxuICAgICAgICBuZXh0KCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYSBuZXcgdG9rZW4gd2FzIHBhcnNlZCBhZnRlciB1bnN1c3BlbnNpb24uXG4gICAgICAgIGlmICghcGFyc2VyLnN1c3BlbmRlZCAmJiB0b2tlbikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIENvbE1ldGFkYXRhVG9rZW4pIHtcbiAgICAgICAgICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IHRva2VuLmNvbHVtbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCFwYXJzZXIuc3VzcGVuZGVkICYmIHBhcnNlci5wb3NpdGlvbiArIDEgPD0gcGFyc2VyLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQ4KHBhcnNlci5wb3NpdGlvbik7XG5cbiAgICAgICAgcGFyc2VyLnBvc2l0aW9uICs9IDE7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFRZUEUuQ09MTUVUQURBVEEpIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGNvbE1ldGFkYXRhUGFyc2VyKHBhcnNlcik7XG4gICAgICAgICAgcGFyc2VyLmNvbE1ldGFkYXRhID0gdG9rZW4uY29sdW1ucztcbiAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUWVBFLlJPVykge1xuICAgICAgICAgIHlpZWxkIHJvd1BhcnNlcihwYXJzZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRZUEUuTkJDUk9XKSB7XG4gICAgICAgICAgeWllbGQgbmJjUm93UGFyc2VyKHBhcnNlcik7XG4gICAgICAgIH0gZWxzZSBpZiAodG9rZW5QYXJzZXJzW3R5cGVdKSB7XG4gICAgICAgICAgdG9rZW5QYXJzZXJzW3R5cGVdKHBhcnNlciwgcGFyc2VyLm9wdGlvbnMsIG9uRG9uZVBhcnNpbmcpO1xuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgYSBuZXcgdG9rZW4gd2FzIHBhcnNlZCBhZnRlciB1bnN1c3BlbnNpb24uXG4gICAgICAgICAgaWYgKCFwYXJzZXIuc3VzcGVuZGVkICYmIHRva2VuKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgICAgICAgICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IHRva2VuLmNvbHVtbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHR5cGU6ICcgKyB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUJ1ZmZlcjogU3RyZWFtQnVmZmVyLCBkZWJ1ZzogRGVidWcsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5jb2xNZXRhZGF0YSA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICB0aGlzLnN0cmVhbUJ1ZmZlciA9IHN0cmVhbUJ1ZmZlcjtcbiAgICB0aGlzLnN1c3BlbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMubmV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBidWZmZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtQnVmZmVyLmJ1ZmZlcjtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJlYW1CdWZmZXIucG9zaXRpb247XG4gIH1cblxuICBzZXQgcG9zaXRpb24odmFsdWUpIHtcbiAgICB0aGlzLnN0cmVhbUJ1ZmZlci5wb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgc3VzcGVuZChuZXh0OiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zdXNwZW5kZWQgPSB0cnVlO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICBhd2FpdERhdGEobGVuZ3RoOiBudW1iZXIsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gKyBsZW5ndGggPD0gdGhpcy5idWZmZXIubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1c3BlbmQoKCkgPT4ge1xuICAgICAgICB0aGlzLmF3YWl0RGF0YShsZW5ndGgsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRJbnQ4KGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMSwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRJbnQ4KHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAxO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDgoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgxLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAxO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50MTZMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDIsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50MTZMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMjtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDE2QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDE2QkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MTZMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDIsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDE2TEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MTZCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDIsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRJbnQzMkxFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoNCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRJbnQzMkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA0O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50MzJCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50MzJCRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQzMkxFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoNCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQzMkJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoNCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJCRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEJpZ0ludDY0TEUoY2FsbGJhY2s6IChkYXRhOiBiaWdpbnQpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEJpZ0ludDY0TEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IE1hdGgucG93KDIsIDMyKSAqIHRoaXMuYnVmZmVyLnJlYWRJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA0KSArICgodGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIDRdICYgMHg4MCkgPT09IDB4ODAgPyAxIDogLTEpICogdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50NjRCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkSW50MzJCRSh0aGlzLnBvc2l0aW9uKSArICgodGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbl0gJiAweDgwKSA9PT0gMHg4MCA/IDEgOiAtMSkgKiB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkQmlnVUludDY0TEUoY2FsbGJhY2s6IChkYXRhOiBiaWdpbnQpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEJpZ1VJbnQ2NExFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDY0TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTWF0aC5wb3coMiwgMzIpICogdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA0KSArIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ2NEJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IE1hdGgucG93KDIsIDMyKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJCRSh0aGlzLnBvc2l0aW9uKSArIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJCRSh0aGlzLnBvc2l0aW9uICsgNCk7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRGbG9hdExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoNCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRGbG9hdExFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA0O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkRmxvYXRCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRmxvYXRCRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZERvdWJsZUxFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWREb3VibGVMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZERvdWJsZUJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWREb3VibGVCRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQyNExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMywgKCkgPT4ge1xuICAgICAgY29uc3QgbG93ID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgY29uc3QgaGlnaCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OCh0aGlzLnBvc2l0aW9uICsgMik7XG5cbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMztcblxuICAgICAgY2FsbGJhY2sobG93IHwgKGhpZ2ggPDwgMTYpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50NDBMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDUsICgpID0+IHtcbiAgICAgIGNvbnN0IGxvdyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGhpZ2ggPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgodGhpcy5wb3NpdGlvbiArIDQpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDU7XG5cbiAgICAgIGNhbGxiYWNrKCgweDEwMDAwMDAwMCAqIGhpZ2gpICsgbG93KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVTnVtZXJpYzY0TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBsb3cgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBoaWdoID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA0KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuXG4gICAgICBjYWxsYmFjaygoMHgxMDAwMDAwMDAgKiBoaWdoKSArIGxvdyk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWM5NkxFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMTIsICgpID0+IHtcbiAgICAgIGNvbnN0IGR3b3JkMSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGR3b3JkMiA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCk7XG4gICAgICBjb25zdCBkd29yZDMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDgpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDEyO1xuXG4gICAgICBjYWxsYmFjayhkd29yZDEgKyAoMHgxMDAwMDAwMDAgKiBkd29yZDIpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiBkd29yZDMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVTnVtZXJpYzEyOExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMTYsICgpID0+IHtcbiAgICAgIGNvbnN0IGR3b3JkMSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGR3b3JkMiA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCk7XG4gICAgICBjb25zdCBkd29yZDMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDgpO1xuICAgICAgY29uc3QgZHdvcmQ0ID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyAxMik7XG5cbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTY7XG5cbiAgICAgIGNhbGxiYWNrKGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMykgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQ0KSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBWYXJpYWJsZSBsZW5ndGggZGF0YVxuXG4gIHJlYWRCdWZmZXIobGVuZ3RoOiBudW1iZXIsIGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEobGVuZ3RoLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIuc2xpY2UodGhpcy5wb3NpdGlvbiwgdGhpcy5wb3NpdGlvbiArIGxlbmd0aCk7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhZCBhIFVuaWNvZGUgU3RyaW5nIChCVkFSQ0hBUilcbiAgcmVhZEJWYXJDaGFyKGNhbGxiYWNrOiAoZGF0YTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDgoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCAqIDIsIChkYXRhKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGRhdGEudG9TdHJpbmcoJ3VjczInKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWQgYSBVbmljb2RlIFN0cmluZyAoVVNWQVJDSEFSKVxuICByZWFkVXNWYXJDaGFyKGNhbGxiYWNrOiAoZGF0YTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDE2TEUoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCAqIDIsIChkYXRhKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGRhdGEudG9TdHJpbmcoJ3VjczInKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWQgYmluYXJ5IGRhdGEgKEJWQVJCWVRFKVxuICByZWFkQlZhckJ5dGUoY2FsbGJhY2s6IChkYXRhOiBCdWZmZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLnJlYWRVSW50OCgobGVuZ3RoKSA9PiB7XG4gICAgICB0aGlzLnJlYWRCdWZmZXIobGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGJpbmFyeSBkYXRhIChVU1ZBUkJZVEUpXG4gIHJlYWRVc1ZhckJ5dGUoY2FsbGJhY2s6IChkYXRhOiBCdWZmZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLnJlYWRVSW50MTZMRSgobGVuZ3RoKSA9PiB7XG4gICAgICB0aGlzLnJlYWRCdWZmZXIobGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLHFCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sb0JBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLG9CQUFBLEdBQUFOLHNCQUFB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
|
|
374
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidG9rZW5QYXJzZXJzIiwiVFlQRSIsIkRPTkUiLCJkb25lUGFyc2VyIiwiRE9ORUlOUFJPQyIsImRvbmVJblByb2NQYXJzZXIiLCJET05FUFJPQyIsImRvbmVQcm9jUGFyc2VyIiwiRU5WQ0hBTkdFIiwiZW52Q2hhbmdlUGFyc2VyIiwiRVJST1IiLCJlcnJvclBhcnNlciIsIkZFREFVVEhJTkZPIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJGRUFUVVJFRVhUQUNLIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsIklORk8iLCJpbmZvUGFyc2VyIiwiTE9HSU5BQ0siLCJsb2dpbkFja1BhcnNlciIsIk9SREVSIiwib3JkZXJQYXJzZXIiLCJSRVRVUk5TVEFUVVMiLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJSRVRVUk5WQUxVRSIsInJldHVyblZhbHVlUGFyc2VyIiwiU1NQSSIsInNzcGlQYXJzZXIiLCJTdHJlYW1CdWZmZXIiLCJjb25zdHJ1Y3RvciIsIml0ZXJhYmxlIiwiaXRlcmF0b3IiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwiY2FsbCIsImJ1ZmZlciIsIkJ1ZmZlciIsImFsbG9jIiwicG9zaXRpb24iLCJ3YWl0Rm9yQ2h1bmsiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIkVycm9yIiwibGVuZ3RoIiwidmFsdWUiLCJjb25jYXQiLCJzbGljZSIsIlBhcnNlciIsInBhcnNlVG9rZW5zIiwiZGVidWciLCJvcHRpb25zIiwiY29sTWV0YWRhdGEiLCJ0b2tlbiIsIm9uRG9uZVBhcnNpbmciLCJ0Iiwic3RyZWFtQnVmZmVyIiwicGFyc2VyIiwiZXJyIiwic3VzcGVuZGVkIiwiQ29sTWV0YWRhdGFUb2tlbiIsImNvbHVtbnMiLCJ0eXBlIiwicmVhZFVJbnQ4IiwiQ09MTUVUQURBVEEiLCJjb2xNZXRhZGF0YVBhcnNlciIsIlJPVyIsInJvd1BhcnNlciIsIk5CQ1JPVyIsIm5iY1Jvd1BhcnNlciIsInVuZGVmaW5lZCIsInN1c3BlbmQiLCJhd2FpdERhdGEiLCJjYWxsYmFjayIsInJlYWRJbnQ4IiwiZGF0YSIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkVUludDE2TEUiLCJyZWFkVUludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkSW50NjRMRSIsIk1hdGgiLCJwb3ciLCJyZWFkSW50NjRCRSIsInJlYWRCaWdVSW50NjRMRSIsInJlYWRVSW50NjRMRSIsInJlYWRVSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJyZWFkVUludDI0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVJbnQ0MExFIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJkd29yZDEiLCJkd29yZDIiLCJkd29yZDMiLCJyZWFkVU51bWVyaWMxMjhMRSIsImR3b3JkNCIsInJlYWRCdWZmZXIiLCJyZWFkQlZhckNoYXIiLCJ0b1N0cmluZyIsInJlYWRVc1ZhckNoYXIiLCJyZWFkQlZhckJ5dGUiLCJyZWFkVXNWYXJCeXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3N0cmVhbS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlYnVnIGZyb20gJy4uL2RlYnVnJztcbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuXG5pbXBvcnQgeyBUWVBFLCBUb2tlbiwgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgY29sTWV0YWRhdGFQYXJzZXIsIHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IGRvbmVQYXJzZXIsIGRvbmVJblByb2NQYXJzZXIsIGRvbmVQcm9jUGFyc2VyIH0gZnJvbSAnLi9kb25lLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZW52Q2hhbmdlUGFyc2VyIGZyb20gJy4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZXJyb3JQYXJzZXIsIGluZm9QYXJzZXIgfSBmcm9tICcuL2luZm9lcnJvci10b2tlbi1wYXJzZXInO1xuaW1wb3J0IGZlZEF1dGhJbmZvUGFyc2VyIGZyb20gJy4vZmVkYXV0aC1pbmZvLXBhcnNlcic7XG5pbXBvcnQgZmVhdHVyZUV4dEFja1BhcnNlciBmcm9tICcuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXInO1xuaW1wb3J0IGxvZ2luQWNrUGFyc2VyIGZyb20gJy4vbG9naW5hY2stdG9rZW4tcGFyc2VyJztcbmltcG9ydCBvcmRlclBhcnNlciBmcm9tICcuL29yZGVyLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuU3RhdHVzUGFyc2VyIGZyb20gJy4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuVmFsdWVQYXJzZXIgZnJvbSAnLi9yZXR1cm52YWx1ZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHJvd1BhcnNlciBmcm9tICcuL3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG5iY1Jvd1BhcnNlciBmcm9tICcuL25iY3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHNzcGlQYXJzZXIgZnJvbSAnLi9zc3BpLXRva2VuLXBhcnNlcic7XG5cbmNvbnN0IHRva2VuUGFyc2VycyA9IHtcbiAgW1RZUEUuRE9ORV06IGRvbmVQYXJzZXIsXG4gIFtUWVBFLkRPTkVJTlBST0NdOiBkb25lSW5Qcm9jUGFyc2VyLFxuICBbVFlQRS5ET05FUFJPQ106IGRvbmVQcm9jUGFyc2VyLFxuICBbVFlQRS5FTlZDSEFOR0VdOiBlbnZDaGFuZ2VQYXJzZXIsXG4gIFtUWVBFLkVSUk9SXTogZXJyb3JQYXJzZXIsXG4gIFtUWVBFLkZFREFVVEhJTkZPXTogZmVkQXV0aEluZm9QYXJzZXIsXG4gIFtUWVBFLkZFQVRVUkVFWFRBQ0tdOiBmZWF0dXJlRXh0QWNrUGFyc2VyLFxuICBbVFlQRS5JTkZPXTogaW5mb1BhcnNlcixcbiAgW1RZUEUuTE9HSU5BQ0tdOiBsb2dpbkFja1BhcnNlcixcbiAgW1RZUEUuT1JERVJdOiBvcmRlclBhcnNlcixcbiAgW1RZUEUuUkVUVVJOU1RBVFVTXTogcmV0dXJuU3RhdHVzUGFyc2VyLFxuICBbVFlQRS5SRVRVUk5WQUxVRV06IHJldHVyblZhbHVlUGFyc2VyLFxuICBbVFlQRS5TU1BJXTogc3NwaVBhcnNlclxufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VyT3B0aW9ucyA9IFBpY2s8SW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgJ3VzZVVUQycgfCAnbG93ZXJDYXNlR3VpZHMnIHwgJ3Rkc1ZlcnNpb24nIHwgJ3VzZUNvbHVtbk5hbWVzJyB8ICdjb2x1bW5OYW1lUmVwbGFjZXInIHwgJ2NhbWVsQ2FzZUNvbHVtbnMnPjtcblxuY2xhc3MgU3RyZWFtQnVmZmVyIHtcbiAgZGVjbGFyZSBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPiB8IEl0ZXJhdG9yPEJ1ZmZlciwgYW55LCB1bmRlZmluZWQ+O1xuICBkZWNsYXJlIGJ1ZmZlcjogQnVmZmVyO1xuICBkZWNsYXJlIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8QnVmZmVyPiB8IEl0ZXJhYmxlPEJ1ZmZlcj4pIHtcbiAgICB0aGlzLml0ZXJhdG9yID0gKChpdGVyYWJsZSBhcyBBc3luY0l0ZXJhYmxlPEJ1ZmZlcj4pW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSB8fCAoaXRlcmFibGUgYXMgSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChpdGVyYWJsZSk7XG5cbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGFzeW5jIHdhaXRGb3JDaHVuaygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLml0ZXJhdG9yLm5leHQoKTtcbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgZGF0YScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gcmVzdWx0LnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24pLCByZXN1bHQudmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gIH1cbn1cblxuY2xhc3MgUGFyc2VyIHtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgY29sTWV0YWRhdGE6IENvbHVtbk1ldGFkYXRhW107XG4gIGRlY2xhcmUgb3B0aW9uczogUGFyc2VyT3B0aW9ucztcblxuICBkZWNsYXJlIHN1c3BlbmRlZDogYm9vbGVhbjtcbiAgZGVjbGFyZSBuZXh0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgc3RyZWFtQnVmZmVyOiBTdHJlYW1CdWZmZXI7XG5cbiAgc3RhdGljIGFzeW5jICpwYXJzZVRva2VucyhpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPiwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXSA9IFtdKSB7XG4gICAgbGV0IHRva2VuOiBUb2tlbiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbkRvbmVQYXJzaW5nID0gKHQ6IFRva2VuIHwgdW5kZWZpbmVkKSA9PiB7IHRva2VuID0gdDsgfTtcblxuICAgIGNvbnN0IHN0cmVhbUJ1ZmZlciA9IG5ldyBTdHJlYW1CdWZmZXIoaXRlcmFibGUpO1xuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihzdHJlYW1CdWZmZXIsIGRlYnVnLCBvcHRpb25zKTtcbiAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSBjb2xNZXRhZGF0YTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG4gICAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgICAgaWYgKHN0cmVhbUJ1ZmZlci5wb3NpdGlvbiA9PT0gc3RyZWFtQnVmZmVyLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZXIuc3VzcGVuZGVkKSB7XG4gICAgICAgIC8vIFVuc3VzcGVuZCBhbmQgY29udGludWUgZnJvbSB3aGVyZSBldmVyIHdlIGxlZnQgb2ZmLlxuICAgICAgICBwYXJzZXIuc3VzcGVuZGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwYXJzZXIubmV4dCE7XG5cbiAgICAgICAgbmV4dCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICBpZiAoIXBhcnNlci5zdXNwZW5kZWQgJiYgdG9rZW4pIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICghcGFyc2VyLnN1c3BlbmRlZCAmJiBwYXJzZXIucG9zaXRpb24gKyAxIDw9IHBhcnNlci5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJzZXIuYnVmZmVyLnJlYWRVSW50OChwYXJzZXIucG9zaXRpb24pO1xuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiArPSAxO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUWVBFLkNPTE1FVEFEQVRBKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBjb2xNZXRhZGF0YVBhcnNlcihwYXJzZXIpO1xuICAgICAgICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IHRva2VuLmNvbHVtbnM7XG4gICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVFlQRS5ST1cpIHtcbiAgICAgICAgICB5aWVsZCByb3dQYXJzZXIocGFyc2VyKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUWVBFLk5CQ1JPVykge1xuICAgICAgICAgIHlpZWxkIG5iY1Jvd1BhcnNlcihwYXJzZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuUGFyc2Vyc1t0eXBlXSkge1xuICAgICAgICAgIHRva2VuUGFyc2Vyc1t0eXBlXShwYXJzZXIsIHBhcnNlci5vcHRpb25zLCBvbkRvbmVQYXJzaW5nKTtcblxuICAgICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICAgIGlmICghcGFyc2VyLnN1c3BlbmRlZCAmJiB0b2tlbikge1xuICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQ29sTWV0YWRhdGFUb2tlbikge1xuICAgICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB0eXBlOiAnICsgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdHJlYW1CdWZmZXI6IFN0cmVhbUJ1ZmZlciwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKSB7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuY29sTWV0YWRhdGEgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy5zdHJlYW1CdWZmZXIgPSBzdHJlYW1CdWZmZXI7XG4gICAgdGhpcy5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYnVmZmVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmVhbUJ1ZmZlci5idWZmZXI7XG4gIH1cblxuICBnZXQgcG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtQnVmZmVyLnBvc2l0aW9uO1xuICB9XG5cbiAgc2V0IHBvc2l0aW9uKHZhbHVlKSB7XG4gICAgdGhpcy5zdHJlYW1CdWZmZXIucG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIHN1c3BlbmQobmV4dDogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuc3VzcGVuZGVkID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgYXdhaXREYXRhKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLnBvc2l0aW9uICsgbGVuZ3RoIDw9IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdXNwZW5kKCgpID0+IHtcbiAgICAgICAgdGhpcy5hd2FpdERhdGEobGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWFkSW50OChjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ4KGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMSwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDE2TEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRJbnQxNkJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMiwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDMyQkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRCaWdJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdJbnQ2NExFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50NjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyA0XSAmIDB4ODApID09PSAweDgwID8gMSA6IC0xKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDY0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTWF0aC5wb3coMiwgMzIpICogdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbikgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dICYgMHg4MCkgPT09IDB4ODAgPyAxIDogLTEpICogdGhpcy5idWZmZXIucmVhZFVJbnQzMkJFKHRoaXMucG9zaXRpb24gKyA0KTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEJpZ1VJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdVSW50NjRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IE1hdGgucG93KDIsIDMyKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50NjRCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbikgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkRmxvYXRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRmxvYXRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEZsb2F0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEZsb2F0QkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDMsICgpID0+IHtcbiAgICAgIGNvbnN0IGxvdyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MTZMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGhpZ2ggPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgodGhpcy5wb3NpdGlvbiArIDIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDM7XG5cbiAgICAgIGNhbGxiYWNrKGxvdyB8IChoaWdoIDw8IDE2KSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDQwTEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg1LCAoKSA9PiB7XG4gICAgICBjb25zdCBsb3cgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBoaWdoID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KHRoaXMucG9zaXRpb24gKyA0KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSA1O1xuXG4gICAgICBjYWxsYmFjaygoMHgxMDAwMDAwMDAgKiBoaWdoKSArIGxvdyk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWM2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgbG93ID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgY29uc3QgaGlnaCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCk7XG5cbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcblxuICAgICAgY2FsbGJhY2soKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVOdW1lcmljOTZMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSAxMjtcblxuICAgICAgY2FsbGJhY2soZHdvcmQxICsgKDB4MTAwMDAwMDAwICogZHdvcmQyKSArICgweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQzKSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWMxMjhMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDE2LCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcbiAgICAgIGNvbnN0IGR3b3JkNCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgMTIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDE2O1xuXG4gICAgICBjYWxsYmFjayhkd29yZDEgKyAoMHgxMDAwMDAwMDAgKiBkd29yZDIpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiBkd29yZDMpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkNCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFyaWFibGUgbGVuZ3RoIGRhdGFcblxuICByZWFkQnVmZmVyKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKGRhdGE6IEJ1ZmZlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKGxlbmd0aCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24sIHRoaXMucG9zaXRpb24gKyBsZW5ndGgpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWQgYSBVbmljb2RlIFN0cmluZyAoQlZBUkNIQVIpXG4gIHJlYWRCVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQ4KChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGEgVW5pY29kZSBTdHJpbmcgKFVTVkFSQ0hBUilcbiAgcmVhZFVzVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQxNkxFKChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGJpbmFyeSBkYXRhIChCVkFSQllURSlcbiAgcmVhZEJWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDgoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhZCBiaW5hcnkgZGF0YSAoVVNWQVJCWVRFKVxuICByZWFkVXNWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDE2TEUoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsaUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLHdCQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyx1QkFBQSxHQUFBVCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVksZUFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWEsa0JBQUEsR0FBQVgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFjLGdCQUFBLEdBQUFaLHNCQUFBLENBQUFGLE9BQUE7QUFBNkMsU0FBQUUsdUJBQUFhLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFN0MsTUFBTUcsWUFBWSxHQUFHO0VBQ25CLENBQUNDLFdBQUksQ0FBQ0MsSUFBSSxHQUFHQywyQkFBVTtFQUN2QixDQUFDRixXQUFJLENBQUNHLFVBQVUsR0FBR0MsaUNBQWdCO0VBQ25DLENBQUNKLFdBQUksQ0FBQ0ssUUFBUSxHQUFHQywrQkFBYztFQUMvQixDQUFDTixXQUFJLENBQUNPLFNBQVMsR0FBR0MsNkJBQWU7RUFDakMsQ0FBQ1IsV0FBSSxDQUFDUyxLQUFLLEdBQUdDLGlDQUFXO0VBQ3pCLENBQUNWLFdBQUksQ0FBQ1csV0FBVyxHQUFHQywwQkFBaUI7RUFDckMsQ0FBQ1osV0FBSSxDQUFDYSxhQUFhLEdBQUdDLDRCQUFtQjtFQUN6QyxDQUFDZCxXQUFJLENBQUNlLElBQUksR0FBR0MsZ0NBQVU7RUFDdkIsQ0FBQ2hCLFdBQUksQ0FBQ2lCLFFBQVEsR0FBR0MsNEJBQWM7RUFDL0IsQ0FBQ2xCLFdBQUksQ0FBQ21CLEtBQUssR0FBR0MseUJBQVc7RUFDekIsQ0FBQ3BCLFdBQUksQ0FBQ3FCLFlBQVksR0FBR0MsZ0NBQWtCO0VBQ3ZDLENBQUN0QixXQUFJLENBQUN1QixXQUFXLEdBQUdDLCtCQUFpQjtFQUNyQyxDQUFDeEIsV0FBSSxDQUFDeUIsSUFBSSxHQUFHQztBQUNmLENBQUM7QUFJRCxNQUFNQyxZQUFZLENBQUM7RUFLakJDLFdBQVdBLENBQUNDLFFBQWtELEVBQUU7SUFDOUQsSUFBSSxDQUFDQyxRQUFRLEdBQUcsQ0FBRUQsUUFBUSxDQUEyQkUsTUFBTSxDQUFDQyxhQUFhLENBQUMsSUFBS0gsUUFBUSxDQUFzQkUsTUFBTSxDQUFDRCxRQUFRLENBQUMsRUFBRUcsSUFBSSxDQUFDSixRQUFRLENBQUM7SUFFN0ksSUFBSSxDQUFDSyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUNDLFFBQVEsR0FBRyxDQUFDO0VBQ25CO0VBRUEsTUFBTUMsWUFBWUEsQ0FBQSxFQUFHO0lBQ25CLE1BQU1DLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQ1QsUUFBUSxDQUFDVSxJQUFJLENBQUMsQ0FBQztJQUN6QyxJQUFJRCxNQUFNLENBQUNFLElBQUksRUFBRTtNQUNmLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDO0lBQzNDO0lBRUEsSUFBSSxJQUFJLENBQUNMLFFBQVEsS0FBSyxJQUFJLENBQUNILE1BQU0sQ0FBQ1MsTUFBTSxFQUFFO01BQ3hDLElBQUksQ0FBQ1QsTUFBTSxHQUFHSyxNQUFNLENBQUNLLEtBQUs7SUFDNUIsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDVixNQUFNLEdBQUdDLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDWCxNQUFNLENBQUNZLEtBQUssQ0FBQyxJQUFJLENBQUNULFFBQVEsQ0FBQyxFQUFFRSxNQUFNLENBQUNLLEtBQUssQ0FBQyxDQUFDO0lBQy9FO0lBQ0EsSUFBSSxDQUFDUCxRQUFRLEdBQUcsQ0FBQztFQUNuQjtBQUNGO0FBRUEsTUFBTVUsTUFBTSxDQUFDO0VBU1gsY0FBY0MsV0FBV0EsQ0FBQ25CLFFBQWtELEVBQUVvQixLQUFZLEVBQUVDLE9BQXNCLEVBQUVDLFdBQTZCLEdBQUcsRUFBRSxFQUFFO0lBQ3RKLElBQUlDLEtBQXdCO0lBQzVCLE1BQU1DLGFBQWEsR0FBSUMsQ0FBb0IsSUFBSztNQUFFRixLQUFLLEdBQUdFLENBQUM7SUFBRSxDQUFDO0lBRTlELE1BQU1DLFlBQVksR0FBRyxJQUFJNUIsWUFBWSxDQUFDRSxRQUFRLENBQUM7SUFFL0MsTUFBTTJCLE1BQU0sR0FBRyxJQUFJVCxNQUFNLENBQUNRLFlBQVksRUFBRU4sS0FBSyxFQUFFQyxPQUFPLENBQUM7SUFDdkRNLE1BQU0sQ0FBQ0wsV0FBVyxHQUFHQSxXQUFXO0lBRWhDLE9BQU8sSUFBSSxFQUFFO01BQ1gsSUFBSTtRQUNGLE1BQU1JLFlBQVksQ0FBQ2pCLFlBQVksQ0FBQyxDQUFDO01BQ25DLENBQUMsQ0FBQyxPQUFPbUIsR0FBWSxFQUFFO1FBQ3JCLElBQUlGLFlBQVksQ0FBQ2xCLFFBQVEsS0FBS2tCLFlBQVksQ0FBQ3JCLE1BQU0sQ0FBQ1MsTUFBTSxFQUFFO1VBQ3hEO1FBQ0Y7UUFFQSxNQUFNYyxHQUFHO01BQ1g7TUFFQSxJQUFJRCxNQUFNLENBQUNFLFNBQVMsRUFBRTtRQUNwQjtRQUNBRixNQUFNLENBQUNFLFNBQVMsR0FBRyxLQUFLO1FBQ3hCLE1BQU1sQixJQUFJLEdBQUdnQixNQUFNLENBQUNoQixJQUFLO1FBRXpCQSxJQUFJLENBQUMsQ0FBQzs7UUFFTjtRQUNBLElBQUksQ0FBQ2dCLE1BQU0sQ0FBQ0UsU0FBUyxJQUFJTixLQUFLLEVBQUU7VUFDOUIsSUFBSUEsS0FBSyxZQUFZTyx1QkFBZ0IsRUFBRTtZQUNyQ0gsTUFBTSxDQUFDTCxXQUFXLEdBQUdDLEtBQUssQ0FBQ1EsT0FBTztVQUNwQztVQUVBLE1BQU1SLEtBQUs7UUFDYjtNQUNGO01BRUEsT0FBTyxDQUFDSSxNQUFNLENBQUNFLFNBQVMsSUFBSUYsTUFBTSxDQUFDbkIsUUFBUSxHQUFHLENBQUMsSUFBSW1CLE1BQU0sQ0FBQ3RCLE1BQU0sQ0FBQ1MsTUFBTSxFQUFFO1FBQ3ZFLE1BQU1rQixJQUFJLEdBQUdMLE1BQU0sQ0FBQ3RCLE1BQU0sQ0FBQzRCLFNBQVMsQ0FBQ04sTUFBTSxDQUFDbkIsUUFBUSxDQUFDO1FBRXJEbUIsTUFBTSxDQUFDbkIsUUFBUSxJQUFJLENBQUM7UUFFcEIsSUFBSXdCLElBQUksS0FBSzdELFdBQUksQ0FBQytELFdBQVcsRUFBRTtVQUM3QixNQUFNWCxLQUFLLEdBQUcsTUFBTSxJQUFBWSwrQkFBaUIsRUFBQ1IsTUFBTSxDQUFDO1VBQzdDQSxNQUFNLENBQUNMLFdBQVcsR0FBR0MsS0FBSyxDQUFDUSxPQUFPO1VBQ2xDLE1BQU1SLEtBQUs7UUFDYixDQUFDLE1BQU0sSUFBSVMsSUFBSSxLQUFLN0QsV0FBSSxDQUFDaUUsR0FBRyxFQUFFO1VBQzVCLE1BQU0sSUFBQUMsdUJBQVMsRUFBQ1YsTUFBTSxDQUFDO1FBQ3pCLENBQUMsTUFBTSxJQUFJSyxJQUFJLEtBQUs3RCxXQUFJLENBQUNtRSxNQUFNLEVBQUU7VUFDL0IsTUFBTSxJQUFBQywwQkFBWSxFQUFDWixNQUFNLENBQUM7UUFDNUIsQ0FBQyxNQUFNLElBQUl6RCxZQUFZLENBQUM4RCxJQUFJLENBQUMsRUFBRTtVQUM3QjlELFlBQVksQ0FBQzhELElBQUksQ0FBQyxDQUFDTCxNQUFNLEVBQUVBLE1BQU0sQ0FBQ04sT0FBTyxFQUFFRyxhQUFhLENBQUM7O1VBRXpEO1VBQ0EsSUFBSSxDQUFDRyxNQUFNLENBQUNFLFNBQVMsSUFBSU4sS0FBSyxFQUFFO1lBQzlCLElBQUlBLEtBQUssWUFBWU8sdUJBQWdCLEVBQUU7Y0FDckNILE1BQU0sQ0FBQ0wsV0FBVyxHQUFHQyxLQUFLLENBQUNRLE9BQU87WUFDcEM7WUFDQSxNQUFNUixLQUFLO1VBQ2I7UUFDRixDQUFDLE1BQU07VUFDTCxNQUFNLElBQUlWLEtBQUssQ0FBQyxnQkFBZ0IsR0FBR21CLElBQUksQ0FBQztRQUMxQztNQUNGO0lBQ0Y7RUFDRjtFQUVBakMsV0FBV0EsQ0FBQzJCLFlBQTBCLEVBQUVOLEtBQVksRUFBRUMsT0FBc0IsRUFBRTtJQUM1RSxJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNFLFdBQVcsR0FBRyxFQUFFO0lBQ3JCLElBQUksQ0FBQ0QsT0FBTyxHQUFHQSxPQUFPO0lBRXRCLElBQUksQ0FBQ0ssWUFBWSxHQUFHQSxZQUFZO0lBQ2hDLElBQUksQ0FBQ0csU0FBUyxHQUFHLEtBQUs7SUFDdEIsSUFBSSxDQUFDbEIsSUFBSSxHQUFHNkIsU0FBUztFQUN2QjtFQUVBLElBQUluQyxNQUFNQSxDQUFBLEVBQUc7SUFDWCxPQUFPLElBQUksQ0FBQ3FCLFlBQVksQ0FBQ3JCLE1BQU07RUFDakM7RUFFQSxJQUFJRyxRQUFRQSxDQUFBLEVBQUc7SUFDYixPQUFPLElBQUksQ0FBQ2tCLFlBQVksQ0FBQ2xCLFFBQVE7RUFDbkM7RUFFQSxJQUFJQSxRQUFRQSxDQUFDTyxLQUFLLEVBQUU7SUFDbEIsSUFBSSxDQUFDVyxZQUFZLENBQUNsQixRQUFRLEdBQUdPLEtBQUs7RUFDcEM7RUFFQTBCLE9BQU9BLENBQUM5QixJQUFnQixFQUFFO0lBQ3hCLElBQUksQ0FBQ2tCLFNBQVMsR0FBRyxJQUFJO0lBQ3JCLElBQUksQ0FBQ2xCLElBQUksR0FBR0EsSUFBSTtFQUNsQjtFQUVBK0IsU0FBU0EsQ0FBQzVCLE1BQWMsRUFBRTZCLFFBQW9CLEVBQUU7SUFDOUMsSUFBSSxJQUFJLENBQUNuQyxRQUFRLEdBQUdNLE1BQU0sSUFBSSxJQUFJLENBQUNULE1BQU0sQ0FBQ1MsTUFBTSxFQUFFO01BQ2hENkIsUUFBUSxDQUFDLENBQUM7SUFDWixDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNGLE9BQU8sQ0FBQyxNQUFNO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDNUIsTUFBTSxFQUFFNkIsUUFBUSxDQUFDO01BQ2xDLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFFQUMsUUFBUUEsQ0FBQ0QsUUFBZ0MsRUFBRTtJQUN6QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDdUMsUUFBUSxDQUFDLElBQUksQ0FBQ3BDLFFBQVEsQ0FBQztNQUNoRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQVosU0FBU0EsQ0FBQ1UsUUFBZ0MsRUFBRTtJQUMxQyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDNEIsU0FBUyxDQUFDLElBQUksQ0FBQ3pCLFFBQVEsQ0FBQztNQUNqRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUMsV0FBV0EsQ0FBQ0gsUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDeUMsV0FBVyxDQUFDLElBQUksQ0FBQ3RDLFFBQVEsQ0FBQztNQUNuRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUUsV0FBV0EsQ0FBQ0osUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDMEMsV0FBVyxDQUFDLElBQUksQ0FBQ3ZDLFFBQVEsQ0FBQztNQUNuRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUcsWUFBWUEsQ0FBQ0wsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDMkMsWUFBWSxDQUFDLElBQUksQ0FBQ3hDLFFBQVEsQ0FBQztNQUNwRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUksWUFBWUEsQ0FBQ04sUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDNEMsWUFBWSxDQUFDLElBQUksQ0FBQ3pDLFFBQVEsQ0FBQztNQUNwRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQUssV0FBV0EsQ0FBQ1AsUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDNkMsV0FBVyxDQUFDLElBQUksQ0FBQzFDLFFBQVEsQ0FBQztNQUNuRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQU0sV0FBV0EsQ0FBQ1IsUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDOEMsV0FBVyxDQUFDLElBQUksQ0FBQzNDLFFBQVEsQ0FBQztNQUNuRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQU8sWUFBWUEsQ0FBQ1QsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsQ0FBQztNQUNwRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQVEsWUFBWUEsQ0FBQ1YsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDZ0QsWUFBWSxDQUFDLElBQUksQ0FBQzdDLFFBQVEsQ0FBQztNQUNwRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQVMsY0FBY0EsQ0FBQ1gsUUFBZ0MsRUFBRTtJQUMvQyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDaUQsY0FBYyxDQUFDLElBQUksQ0FBQzlDLFFBQVEsQ0FBQztNQUN0RCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQVUsV0FBV0EsQ0FBQ1osUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUdXLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUNwRCxNQUFNLENBQUM2QyxXQUFXLENBQUMsSUFBSSxDQUFDMUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNILE1BQU0sQ0FBQyxJQUFJLENBQUNHLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUNILE1BQU0sQ0FBQytDLFlBQVksQ0FBQyxJQUFJLENBQUM1QyxRQUFRLENBQUM7TUFDakwsSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQztNQUNsQm1DLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKO0VBRUFhLFdBQVdBLENBQUNmLFFBQWdDLEVBQUU7SUFDNUMsSUFBSSxDQUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU07TUFDdEIsTUFBTUcsSUFBSSxHQUFHVyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDcEQsTUFBTSxDQUFDOEMsV0FBVyxDQUFDLElBQUksQ0FBQzNDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNILE1BQU0sQ0FBQyxJQUFJLENBQUNHLFFBQVEsQ0FBQyxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQ0gsTUFBTSxDQUFDZ0QsWUFBWSxDQUFDLElBQUksQ0FBQzdDLFFBQVEsR0FBRyxDQUFDLENBQUM7TUFDN0ssSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQztNQUNsQm1DLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKO0VBRUFjLGVBQWVBLENBQUNoQixRQUFnQyxFQUFFO0lBQ2hELElBQUksQ0FBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNO01BQ3RCLE1BQU1HLElBQUksR0FBRyxJQUFJLENBQUN4QyxNQUFNLENBQUNzRCxlQUFlLENBQUMsSUFBSSxDQUFDbkQsUUFBUSxDQUFDO01BQ3ZELElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUM7TUFDbEJtQyxRQUFRLENBQUNFLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7RUFDSjtFQUVBZSxZQUFZQSxDQUFDakIsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUdXLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUNwRCxNQUFNLENBQUMrQyxZQUFZLENBQUMsSUFBSSxDQUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ0gsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsQ0FBQztNQUNwSCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQWdCLFlBQVlBLENBQUNsQixRQUFnQyxFQUFFO0lBQzdDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNO01BQ3RCLE1BQU1HLElBQUksR0FBR1csSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQ3BELE1BQU0sQ0FBQ2dELFlBQVksQ0FBQyxJQUFJLENBQUM3QyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUNILE1BQU0sQ0FBQ2dELFlBQVksQ0FBQyxJQUFJLENBQUM3QyxRQUFRLEdBQUcsQ0FBQyxDQUFDO01BQ3BILElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUM7TUFDbEJtQyxRQUFRLENBQUNFLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7RUFDSjtFQUVBaUIsV0FBV0EsQ0FBQ25CLFFBQWdDLEVBQUU7SUFDNUMsSUFBSSxDQUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU07TUFDdEIsTUFBTUcsSUFBSSxHQUFHLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQ3lELFdBQVcsQ0FBQyxJQUFJLENBQUN0RCxRQUFRLENBQUM7TUFDbkQsSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQztNQUNsQm1DLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKO0VBRUFrQixXQUFXQSxDQUFDcEIsUUFBZ0MsRUFBRTtJQUM1QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNRyxJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDMEQsV0FBVyxDQUFDLElBQUksQ0FBQ3ZELFFBQVEsQ0FBQztNQUNuRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BQ2xCbUMsUUFBUSxDQUFDRSxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0o7RUFFQW1CLFlBQVlBLENBQUNyQixRQUFnQyxFQUFFO0lBQzdDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNO01BQ3RCLE1BQU1HLElBQUksR0FBRyxJQUFJLENBQUN4QyxNQUFNLENBQUMyRCxZQUFZLENBQUMsSUFBSSxDQUFDeEQsUUFBUSxDQUFDO01BQ3BELElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUM7TUFDbEJtQyxRQUFRLENBQUNFLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7RUFDSjtFQUVBb0IsWUFBWUEsQ0FBQ3RCLFFBQWdDLEVBQUU7SUFDN0MsSUFBSSxDQUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU07TUFDdEIsTUFBTUcsSUFBSSxHQUFHLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQzRELFlBQVksQ0FBQyxJQUFJLENBQUN6RCxRQUFRLENBQUM7TUFDcEQsSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQztNQUNsQm1DLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKO0VBRUFxQixZQUFZQSxDQUFDdkIsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNeUIsR0FBRyxHQUFHLElBQUksQ0FBQzlELE1BQU0sQ0FBQzJDLFlBQVksQ0FBQyxJQUFJLENBQUN4QyxRQUFRLENBQUM7TUFDbkQsTUFBTTRELElBQUksR0FBRyxJQUFJLENBQUMvRCxNQUFNLENBQUM0QixTQUFTLENBQUMsSUFBSSxDQUFDekIsUUFBUSxHQUFHLENBQUMsQ0FBQztNQUVyRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BRWxCbUMsUUFBUSxDQUFDd0IsR0FBRyxHQUFJQyxJQUFJLElBQUksRUFBRyxDQUFDO0lBQzlCLENBQUMsQ0FBQztFQUNKO0VBRUFDLFlBQVlBLENBQUMxQixRQUFnQyxFQUFFO0lBQzdDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNO01BQ3RCLE1BQU15QixHQUFHLEdBQUcsSUFBSSxDQUFDOUQsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsQ0FBQztNQUNuRCxNQUFNNEQsSUFBSSxHQUFHLElBQUksQ0FBQy9ELE1BQU0sQ0FBQzRCLFNBQVMsQ0FBQyxJQUFJLENBQUN6QixRQUFRLEdBQUcsQ0FBQyxDQUFDO01BRXJELElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUM7TUFFbEJtQyxRQUFRLENBQUUsV0FBVyxHQUFHeUIsSUFBSSxHQUFJRCxHQUFHLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0VBQ0o7RUFFQUcsZ0JBQWdCQSxDQUFDM0IsUUFBZ0MsRUFBRTtJQUNqRCxJQUFJLENBQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTTtNQUN0QixNQUFNeUIsR0FBRyxHQUFHLElBQUksQ0FBQzlELE1BQU0sQ0FBQytDLFlBQVksQ0FBQyxJQUFJLENBQUM1QyxRQUFRLENBQUM7TUFDbkQsTUFBTTRELElBQUksR0FBRyxJQUFJLENBQUMvRCxNQUFNLENBQUMrQyxZQUFZLENBQUMsSUFBSSxDQUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQztNQUV4RCxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDO01BRWxCbUMsUUFBUSxDQUFFLFdBQVcsR0FBR3lCLElBQUksR0FBSUQsR0FBRyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztFQUNKO0VBRUFJLGdCQUFnQkEsQ0FBQzVCLFFBQWdDLEVBQUU7SUFDakQsSUFBSSxDQUFDRCxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU07TUFDdkIsTUFBTThCLE1BQU0sR0FBRyxJQUFJLENBQUNuRSxNQUFNLENBQUMrQyxZQUFZLENBQUMsSUFBSSxDQUFDNUMsUUFBUSxDQUFDO01BQ3RELE1BQU1pRSxNQUFNLEdBQUcsSUFBSSxDQUFDcEUsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsR0FBRyxDQUFDLENBQUM7TUFDMUQsTUFBTWtFLE1BQU0sR0FBRyxJQUFJLENBQUNyRSxNQUFNLENBQUMrQyxZQUFZLENBQUMsSUFBSSxDQUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQztNQUUxRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxFQUFFO01BRW5CbUMsUUFBUSxDQUFDNkIsTUFBTSxHQUFJLFdBQVcsR0FBR0MsTUFBTyxHQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUdDLE1BQU8sQ0FBQztJQUNsRixDQUFDLENBQUM7RUFDSjtFQUVBQyxpQkFBaUJBLENBQUNoQyxRQUFnQyxFQUFFO0lBQ2xELElBQUksQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNO01BQ3ZCLE1BQU04QixNQUFNLEdBQUcsSUFBSSxDQUFDbkUsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsQ0FBQztNQUN0RCxNQUFNaUUsTUFBTSxHQUFHLElBQUksQ0FBQ3BFLE1BQU0sQ0FBQytDLFlBQVksQ0FBQyxJQUFJLENBQUM1QyxRQUFRLEdBQUcsQ0FBQyxDQUFDO01BQzFELE1BQU1rRSxNQUFNLEdBQUcsSUFBSSxDQUFDckUsTUFBTSxDQUFDK0MsWUFBWSxDQUFDLElBQUksQ0FBQzVDLFFBQVEsR0FBRyxDQUFDLENBQUM7TUFDMUQsTUFBTW9FLE1BQU0sR0FBRyxJQUFJLENBQUN2RSxNQUFNLENBQUMrQyxZQUFZLENBQUMsSUFBSSxDQUFDNUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztNQUUzRCxJQUFJLENBQUNBLFFBQVEsSUFBSSxFQUFFO01BRW5CbUMsUUFBUSxDQUFDNkIsTUFBTSxHQUFJLFdBQVcsR0FBR0MsTUFBTyxHQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUdDLE1BQU8sR0FBSSxXQUFXLEdBQUcsV0FBVyxHQUFHLFdBQVcsR0FBR0UsTUFBTyxDQUFDO0lBQ3ZJLENBQUMsQ0FBQztFQUNKOztFQUVBOztFQUVBQyxVQUFVQSxDQUFDL0QsTUFBYyxFQUFFNkIsUUFBZ0MsRUFBRTtJQUMzRCxJQUFJLENBQUNELFNBQVMsQ0FBQzVCLE1BQU0sRUFBRSxNQUFNO01BQzNCLE1BQU0rQixJQUFJLEdBQUcsSUFBSSxDQUFDeEMsTUFBTSxDQUFDWSxLQUFLLENBQUMsSUFBSSxDQUFDVCxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLEdBQUdNLE1BQU0sQ0FBQztNQUNyRSxJQUFJLENBQUNOLFFBQVEsSUFBSU0sTUFBTTtNQUN2QjZCLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztFQUNKOztFQUVBO0VBQ0FpQyxZQUFZQSxDQUFDbkMsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNWLFNBQVMsQ0FBRW5CLE1BQU0sSUFBSztNQUN6QixJQUFJLENBQUMrRCxVQUFVLENBQUMvRCxNQUFNLEdBQUcsQ0FBQyxFQUFHK0IsSUFBSSxJQUFLO1FBQ3BDRixRQUFRLENBQUNFLElBQUksQ0FBQ2tDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztNQUNqQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSjs7RUFFQTtFQUNBQyxhQUFhQSxDQUFDckMsUUFBZ0MsRUFBRTtJQUM5QyxJQUFJLENBQUNLLFlBQVksQ0FBRWxDLE1BQU0sSUFBSztNQUM1QixJQUFJLENBQUMrRCxVQUFVLENBQUMvRCxNQUFNLEdBQUcsQ0FBQyxFQUFHK0IsSUFBSSxJQUFLO1FBQ3BDRixRQUFRLENBQUNFLElBQUksQ0FBQ2tDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztNQUNqQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSjs7RUFFQTtFQUNBRSxZQUFZQSxDQUFDdEMsUUFBZ0MsRUFBRTtJQUM3QyxJQUFJLENBQUNWLFNBQVMsQ0FBRW5CLE1BQU0sSUFBSztNQUN6QixJQUFJLENBQUMrRCxVQUFVLENBQUMvRCxNQUFNLEVBQUU2QixRQUFRLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7RUFDQXVDLGFBQWFBLENBQUN2QyxRQUFnQyxFQUFFO0lBQzlDLElBQUksQ0FBQ0ssWUFBWSxDQUFFbEMsTUFBTSxJQUFLO01BQzVCLElBQUksQ0FBQytELFVBQVUsQ0FBQy9ELE1BQU0sRUFBRTZCLFFBQVEsQ0FBQztJQUNuQyxDQUFDLENBQUM7RUFDSjtBQUNGO0FBQUMsSUFBQXdDLFFBQUEsR0FFY2pFLE1BQU07QUFBQWtFLE9BQUEsQ0FBQW5ILE9BQUEsR0FBQWtILFFBQUE7QUFDckJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHbEUsTUFBTSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-parser.js","names":["_token","require","_colmetadataTokenParser","_interopRequireDefault","_doneTokenParser","_envChangeTokenParser","_infoerrorTokenParser","_fedauthInfoParser","_featureExtAckParser","_loginackTokenParser","_orderTokenParser","_returnstatusTokenParser","_returnvalueTokenParser","_rowTokenParser","_nbcrowTokenParser","_sspiTokenParser","obj","__esModule","default","tokenParsers","TYPE","DONE","doneParser","DONEINPROC","doneInProcParser","DONEPROC","doneProcParser","ENVCHANGE","envChangeParser","ERROR","errorParser","FEDAUTHINFO","fedAuthInfoParser","FEATUREEXTACK","featureExtAckParser","INFO","infoParser","LOGINACK","loginAckParser","ORDER","orderParser","RETURNSTATUS","returnStatusParser","RETURNVALUE","returnValueParser","SSPI","sspiParser","StreamBuffer","iterator","buffer","position","constructor","iterable","Symbol","asyncIterator","call","Buffer","alloc","waitForChunk","result","next","done","Error","length","value","concat","slice","Parser","debug","colMetadata","options","suspended","streamBuffer","parseTokens","token","onDoneParsing","t","parser","err","ColMetadataToken","columns","type","readUInt8","COLMETADATA","colMetadataParser","ROW","rowParser","NBCROW","nbcRowParser","undefined","suspend","awaitData","callback","readInt8","data","readInt16LE","readInt16BE","readUInt16LE","readUInt16BE","readInt32LE","readInt32BE","readUInt32LE","readUInt32BE","readBigInt64LE","readInt64LE","Math","pow","readInt64BE","readBigUInt64LE","readUInt64LE","readUInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","readUInt24LE","low","high","readUInt40LE","readUNumeric64LE","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4","readBuffer","readBVarChar","toString","readUsVarChar","readBVarByte","readUsVarByte","_default","exports","module"],"sources":["../../src/token/stream-parser.ts"],"sourcesContent":["import Debug from '../debug';\nimport { InternalConnectionOptions } from '../connection';\n\nimport { TYPE, Token, ColMetadataToken } from './token';\n\nimport colMetadataParser, { ColumnMetadata } from './colmetadata-token-parser';\nimport { doneParser, doneInProcParser, doneProcParser } from './done-token-parser';\nimport envChangeParser from './env-change-token-parser';\nimport { errorParser, infoParser } from './infoerror-token-parser';\nimport fedAuthInfoParser from './fedauth-info-parser';\nimport featureExtAckParser from './feature-ext-ack-parser';\nimport loginAckParser from './loginack-token-parser';\nimport orderParser from './order-token-parser';\nimport returnStatusParser from './returnstatus-token-parser';\nimport returnValueParser from './returnvalue-token-parser';\nimport rowParser from './row-token-parser';\nimport nbcRowParser from './nbcrow-token-parser';\nimport sspiParser from './sspi-token-parser';\n\nconst tokenParsers = {\n [TYPE.DONE]: doneParser,\n [TYPE.DONEINPROC]: doneInProcParser,\n [TYPE.DONEPROC]: doneProcParser,\n [TYPE.ENVCHANGE]: envChangeParser,\n [TYPE.ERROR]: errorParser,\n [TYPE.FEDAUTHINFO]: fedAuthInfoParser,\n [TYPE.FEATUREEXTACK]: featureExtAckParser,\n [TYPE.INFO]: infoParser,\n [TYPE.LOGINACK]: loginAckParser,\n [TYPE.ORDER]: orderParser,\n [TYPE.RETURNSTATUS]: returnStatusParser,\n [TYPE.RETURNVALUE]: returnValueParser,\n [TYPE.SSPI]: sspiParser\n};\n\nexport type ParserOptions = Pick<InternalConnectionOptions, 'useUTC' | 'lowerCaseGuids' | 'tdsVersion' | 'useColumnNames' | 'columnNameReplacer' | 'camelCaseColumns'>;\n\nclass StreamBuffer {\n iterator: AsyncIterator<Buffer, any, undefined> | Iterator<Buffer, any, undefined>;\n buffer: Buffer;\n position: number;\n\n constructor(iterable: AsyncIterable<Buffer> | Iterable<Buffer>) {\n this.iterator = ((iterable as AsyncIterable<Buffer>)[Symbol.asyncIterator] || (iterable as Iterable<Buffer>)[Symbol.iterator]).call(iterable);\n\n this.buffer = Buffer.alloc(0);\n this.position = 0;\n }\n\n async waitForChunk() {\n const result = await this.iterator.next();\n if (result.done) {\n throw new Error('unexpected end of data');\n }\n\n if (this.position === this.buffer.length) {\n this.buffer = result.value;\n } else {\n this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n }\n this.position = 0;\n }\n}\n\nclass Parser {\n debug: Debug;\n colMetadata: ColumnMetadata[];\n options: ParserOptions;\n\n suspended: boolean;\n next: (() => void) | undefined;\n streamBuffer: StreamBuffer;\n\n static async *parseTokens(iterable: AsyncIterable<Buffer> | Iterable<Buffer>, debug: Debug, options: ParserOptions, colMetadata: ColumnMetadata[] = []) {\n let token: Token | undefined;\n const onDoneParsing = (t: Token | undefined) => { token = t; };\n\n const streamBuffer = new StreamBuffer(iterable);\n\n const parser = new Parser(streamBuffer, debug, options);\n parser.colMetadata = colMetadata;\n\n while (true) {\n try {\n await streamBuffer.waitForChunk();\n } catch (err: unknown) {\n if (streamBuffer.position === streamBuffer.buffer.length) {\n return;\n }\n\n throw err;\n }\n\n if (parser.suspended) {\n // Unsuspend and continue from where ever we left off.\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n\n yield token;\n }\n }\n\n while (!parser.suspended && parser.position + 1 <= parser.buffer.length) {\n const type = parser.buffer.readUInt8(parser.position);\n\n parser.position += 1;\n\n if (type === TYPE.COLMETADATA) {\n const token = await colMetadataParser(parser);\n parser.colMetadata = token.columns;\n yield token;\n } else if (type === TYPE.ROW) {\n yield rowParser(parser);\n } else if (type === TYPE.NBCROW) {\n yield nbcRowParser(parser);\n } else if (tokenParsers[type]) {\n tokenParsers[type](parser, parser.options, onDoneParsing);\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n yield token;\n }\n } else {\n throw new Error('Unknown type: ' + type);\n }\n }\n }\n }\n\n constructor(streamBuffer: StreamBuffer, debug: Debug, options: ParserOptions) {\n this.debug = debug;\n this.colMetadata = [];\n this.options = options;\n\n this.streamBuffer = streamBuffer;\n this.suspended = false;\n this.next = undefined;\n }\n\n get buffer() {\n return this.streamBuffer.buffer;\n }\n\n get position() {\n return this.streamBuffer.position;\n }\n\n set position(value) {\n this.streamBuffer.position = value;\n }\n\n suspend(next: () => void) {\n this.suspended = true;\n this.next = next;\n }\n\n awaitData(length: number, callback: () => void) {\n if (this.position + length <= this.buffer.length) {\n callback();\n } else {\n this.suspend(() => {\n this.awaitData(length, callback);\n });\n }\n }\n\n readInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readUInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readUInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readBigInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32LE(this.position + 4) + ((this.buffer[this.position + 4] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32BE(this.position) + ((this.buffer[this.position] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readBigUInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigUInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32LE(this.position + 4) + this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32BE(this.position) + this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readFloatLE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatLE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readFloatBE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatBE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readDoubleLE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleLE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readDoubleBE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleBE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt24LE(callback: (data: number) => void) {\n this.awaitData(3, () => {\n const low = this.buffer.readUInt16LE(this.position);\n const high = this.buffer.readUInt8(this.position + 2);\n\n this.position += 3;\n\n callback(low | (high << 16));\n });\n }\n\n readUInt40LE(callback: (data: number) => void) {\n this.awaitData(5, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt8(this.position + 4);\n\n this.position += 5;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt32LE(this.position + 4);\n\n this.position += 8;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric96LE(callback: (data: number) => void) {\n this.awaitData(12, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n\n this.position += 12;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3));\n });\n }\n\n readUNumeric128LE(callback: (data: number) => void) {\n this.awaitData(16, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n const dword4 = this.buffer.readUInt32LE(this.position + 12);\n\n this.position += 16;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4));\n });\n }\n\n // Variable length data\n\n readBuffer(length: number, callback: (data: Buffer) => void) {\n this.awaitData(length, () => {\n const data = this.buffer.slice(this.position, this.position + length);\n this.position += length;\n callback(data);\n });\n }\n\n // Read a Unicode String (BVARCHAR)\n readBVarChar(callback: (data: string) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read a Unicode String (USVARCHAR)\n readUsVarChar(callback: (data: string) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read binary data (BVARBYTE)\n readBVarByte(callback: (data: Buffer) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length, callback);\n });\n }\n\n // Read binary data (USVARBYTE)\n readUsVarByte(callback: (data: Buffer) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length, callback);\n });\n }\n}\n\nexport default Parser;\nmodule.exports = Parser;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream-parser.js","names":["_token","require","_colmetadataTokenParser","_interopRequireDefault","_doneTokenParser","_envChangeTokenParser","_infoerrorTokenParser","_fedauthInfoParser","_featureExtAckParser","_loginackTokenParser","_orderTokenParser","_returnstatusTokenParser","_returnvalueTokenParser","_rowTokenParser","_nbcrowTokenParser","_sspiTokenParser","obj","__esModule","default","tokenParsers","TYPE","DONE","doneParser","DONEINPROC","doneInProcParser","DONEPROC","doneProcParser","ENVCHANGE","envChangeParser","ERROR","errorParser","FEDAUTHINFO","fedAuthInfoParser","FEATUREEXTACK","featureExtAckParser","INFO","infoParser","LOGINACK","loginAckParser","ORDER","orderParser","RETURNSTATUS","returnStatusParser","RETURNVALUE","returnValueParser","SSPI","sspiParser","StreamBuffer","constructor","iterable","iterator","Symbol","asyncIterator","call","buffer","Buffer","alloc","position","waitForChunk","result","next","done","Error","length","value","concat","slice","Parser","parseTokens","debug","options","colMetadata","token","onDoneParsing","t","streamBuffer","parser","err","suspended","ColMetadataToken","columns","type","readUInt8","COLMETADATA","colMetadataParser","ROW","rowParser","NBCROW","nbcRowParser","undefined","suspend","awaitData","callback","readInt8","data","readInt16LE","readInt16BE","readUInt16LE","readUInt16BE","readInt32LE","readInt32BE","readUInt32LE","readUInt32BE","readBigInt64LE","readInt64LE","Math","pow","readInt64BE","readBigUInt64LE","readUInt64LE","readUInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","readUInt24LE","low","high","readUInt40LE","readUNumeric64LE","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4","readBuffer","readBVarChar","toString","readUsVarChar","readBVarByte","readUsVarByte","_default","exports","module"],"sources":["../../src/token/stream-parser.ts"],"sourcesContent":["import Debug from '../debug';\nimport { type InternalConnectionOptions } from '../connection';\n\nimport { TYPE, Token, ColMetadataToken } from './token';\n\nimport colMetadataParser, { type ColumnMetadata } from './colmetadata-token-parser';\nimport { doneParser, doneInProcParser, doneProcParser } from './done-token-parser';\nimport envChangeParser from './env-change-token-parser';\nimport { errorParser, infoParser } from './infoerror-token-parser';\nimport fedAuthInfoParser from './fedauth-info-parser';\nimport featureExtAckParser from './feature-ext-ack-parser';\nimport loginAckParser from './loginack-token-parser';\nimport orderParser from './order-token-parser';\nimport returnStatusParser from './returnstatus-token-parser';\nimport returnValueParser from './returnvalue-token-parser';\nimport rowParser from './row-token-parser';\nimport nbcRowParser from './nbcrow-token-parser';\nimport sspiParser from './sspi-token-parser';\n\nconst tokenParsers = {\n [TYPE.DONE]: doneParser,\n [TYPE.DONEINPROC]: doneInProcParser,\n [TYPE.DONEPROC]: doneProcParser,\n [TYPE.ENVCHANGE]: envChangeParser,\n [TYPE.ERROR]: errorParser,\n [TYPE.FEDAUTHINFO]: fedAuthInfoParser,\n [TYPE.FEATUREEXTACK]: featureExtAckParser,\n [TYPE.INFO]: infoParser,\n [TYPE.LOGINACK]: loginAckParser,\n [TYPE.ORDER]: orderParser,\n [TYPE.RETURNSTATUS]: returnStatusParser,\n [TYPE.RETURNVALUE]: returnValueParser,\n [TYPE.SSPI]: sspiParser\n};\n\nexport type ParserOptions = Pick<InternalConnectionOptions, 'useUTC' | 'lowerCaseGuids' | 'tdsVersion' | 'useColumnNames' | 'columnNameReplacer' | 'camelCaseColumns'>;\n\nclass StreamBuffer {\n declare iterator: AsyncIterator<Buffer, any, undefined> | Iterator<Buffer, any, undefined>;\n declare buffer: Buffer;\n declare position: number;\n\n constructor(iterable: AsyncIterable<Buffer> | Iterable<Buffer>) {\n this.iterator = ((iterable as AsyncIterable<Buffer>)[Symbol.asyncIterator] || (iterable as Iterable<Buffer>)[Symbol.iterator]).call(iterable);\n\n this.buffer = Buffer.alloc(0);\n this.position = 0;\n }\n\n async waitForChunk() {\n const result = await this.iterator.next();\n if (result.done) {\n throw new Error('unexpected end of data');\n }\n\n if (this.position === this.buffer.length) {\n this.buffer = result.value;\n } else {\n this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n }\n this.position = 0;\n }\n}\n\nclass Parser {\n declare debug: Debug;\n declare colMetadata: ColumnMetadata[];\n declare options: ParserOptions;\n\n declare suspended: boolean;\n declare next: (() => void) | undefined;\n declare streamBuffer: StreamBuffer;\n\n static async *parseTokens(iterable: AsyncIterable<Buffer> | Iterable<Buffer>, debug: Debug, options: ParserOptions, colMetadata: ColumnMetadata[] = []) {\n let token: Token | undefined;\n const onDoneParsing = (t: Token | undefined) => { token = t; };\n\n const streamBuffer = new StreamBuffer(iterable);\n\n const parser = new Parser(streamBuffer, debug, options);\n parser.colMetadata = colMetadata;\n\n while (true) {\n try {\n await streamBuffer.waitForChunk();\n } catch (err: unknown) {\n if (streamBuffer.position === streamBuffer.buffer.length) {\n return;\n }\n\n throw err;\n }\n\n if (parser.suspended) {\n // Unsuspend and continue from where ever we left off.\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n\n yield token;\n }\n }\n\n while (!parser.suspended && parser.position + 1 <= parser.buffer.length) {\n const type = parser.buffer.readUInt8(parser.position);\n\n parser.position += 1;\n\n if (type === TYPE.COLMETADATA) {\n const token = await colMetadataParser(parser);\n parser.colMetadata = token.columns;\n yield token;\n } else if (type === TYPE.ROW) {\n yield rowParser(parser);\n } else if (type === TYPE.NBCROW) {\n yield nbcRowParser(parser);\n } else if (tokenParsers[type]) {\n tokenParsers[type](parser, parser.options, onDoneParsing);\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n yield token;\n }\n } else {\n throw new Error('Unknown type: ' + type);\n }\n }\n }\n }\n\n constructor(streamBuffer: StreamBuffer, debug: Debug, options: ParserOptions) {\n this.debug = debug;\n this.colMetadata = [];\n this.options = options;\n\n this.streamBuffer = streamBuffer;\n this.suspended = false;\n this.next = undefined;\n }\n\n get buffer() {\n return this.streamBuffer.buffer;\n }\n\n get position() {\n return this.streamBuffer.position;\n }\n\n set position(value) {\n this.streamBuffer.position = value;\n }\n\n suspend(next: () => void) {\n this.suspended = true;\n this.next = next;\n }\n\n awaitData(length: number, callback: () => void) {\n if (this.position + length <= this.buffer.length) {\n callback();\n } else {\n this.suspend(() => {\n this.awaitData(length, callback);\n });\n }\n }\n\n readInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readUInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readUInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readBigInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32LE(this.position + 4) + ((this.buffer[this.position + 4] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32BE(this.position) + ((this.buffer[this.position] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readBigUInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigUInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32LE(this.position + 4) + this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32BE(this.position) + this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readFloatLE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatLE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readFloatBE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatBE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readDoubleLE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleLE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readDoubleBE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleBE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt24LE(callback: (data: number) => void) {\n this.awaitData(3, () => {\n const low = this.buffer.readUInt16LE(this.position);\n const high = this.buffer.readUInt8(this.position + 2);\n\n this.position += 3;\n\n callback(low | (high << 16));\n });\n }\n\n readUInt40LE(callback: (data: number) => void) {\n this.awaitData(5, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt8(this.position + 4);\n\n this.position += 5;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt32LE(this.position + 4);\n\n this.position += 8;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric96LE(callback: (data: number) => void) {\n this.awaitData(12, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n\n this.position += 12;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3));\n });\n }\n\n readUNumeric128LE(callback: (data: number) => void) {\n this.awaitData(16, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n const dword4 = this.buffer.readUInt32LE(this.position + 12);\n\n this.position += 16;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4));\n });\n }\n\n // Variable length data\n\n readBuffer(length: number, callback: (data: Buffer) => void) {\n this.awaitData(length, () => {\n const data = this.buffer.slice(this.position, this.position + length);\n this.position += length;\n callback(data);\n });\n }\n\n // Read a Unicode String (BVARCHAR)\n readBVarChar(callback: (data: string) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read a Unicode String (USVARCHAR)\n readUsVarChar(callback: (data: string) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read binary data (BVARBYTE)\n readBVarByte(callback: (data: Buffer) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length, callback);\n });\n }\n\n // Read binary data (USVARBYTE)\n readUsVarByte(callback: (data: Buffer) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length, callback);\n });\n }\n}\n\nexport default Parser;\nmodule.exports = Parser;\n"],"mappings":"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"}
|
|
@@ -9,9 +9,6 @@ var _streamParser = _interopRequireDefault(require("./stream-parser"));
|
|
|
9
9
|
var _stream = require("stream");
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
class Parser extends _events.EventEmitter {
|
|
12
|
-
debug;
|
|
13
|
-
options;
|
|
14
|
-
parser;
|
|
15
12
|
constructor(message, debug, handler, options) {
|
|
16
13
|
super();
|
|
17
14
|
this.debug = debug;
|
|
@@ -35,4 +32,4 @@ class Parser extends _events.EventEmitter {
|
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
exports.Parser = Parser;
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9zdHJlYW1QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0cmVhbSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2VyIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwiZGVidWciLCJoYW5kbGVyIiwib3B0aW9ucyIsInBhcnNlciIsIlJlYWRhYmxlIiwiZnJvbSIsIlN0cmVhbVBhcnNlciIsInBhcnNlVG9rZW5zIiwib24iLCJ0b2tlbiIsImhhbmRsZXJOYW1lIiwiZW1pdCIsInBhdXNlIiwicmVzdW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi90b2tlbi1zdHJlYW0tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgU3RyZWFtUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4uL21lc3NhZ2UnO1xuaW1wb3J0IHsgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIFBhcnNlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuICBkZWNsYXJlIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG4gIGRlY2xhcmUgcGFyc2VyOiBSZWFkYWJsZTtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBNZXNzYWdlLCBkZWJ1ZzogRGVidWcsIGhhbmRsZXI6IFRva2VuSGFuZGxlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMucGFyc2VyID0gUmVhZGFibGUuZnJvbShTdHJlYW1QYXJzZXIucGFyc2VUb2tlbnMobWVzc2FnZSwgdGhpcy5kZWJ1ZywgdGhpcy5vcHRpb25zKSk7XG4gICAgdGhpcy5wYXJzZXIub24oJ2RhdGEnLCAodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICBoYW5kbGVyW3Rva2VuLmhhbmRsZXJOYW1lIGFzIGtleW9mIFRva2VuSGFuZGxlcl0odG9rZW4gYXMgYW55KTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdkcmFpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZHJhaW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVjbGFyZSBvbjogKFxuICAgICgoZXZlbnQ6ICdlbmQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4gdGhpcykgJlxuICAgICgoZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcylcbiAgKTtcblxuICBwYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGF1c2UoKTtcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucmVzdW1lKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQWtDLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSTNCLE1BQU1HLE1BQU0sU0FBU0Msb0JBQVksQ0FBQztFQUt2Q0MsV0FBV0EsQ0FBQ0MsT0FBZ0IsRUFBRUMsS0FBWSxFQUFFQyxPQUFxQixFQUFFQyxPQUFzQixFQUFFO0lBQ3pGLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRixLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDRSxPQUFPLEdBQUdBLE9BQU87SUFFdEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdDLGdCQUFRLENBQUNDLElBQUksQ0FBQ0MscUJBQVksQ0FBQ0MsV0FBVyxDQUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDQyxLQUFLLEVBQUUsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUNDLE1BQU0sQ0FBQ0ssRUFBRSxDQUFDLE1BQU0sRUFBR0MsS0FBWSxJQUFLO01BQ3ZDUixPQUFPLENBQUNRLEtBQUssQ0FBQ0MsV0FBVyxDQUF1QixDQUFDRCxLQUFZLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDTixNQUFNLENBQUNLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUM1QixJQUFJLENBQUNHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDUixNQUFNLENBQUNLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtNQUMxQixJQUFJLENBQUNHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ0o7RUFPQUMsS0FBS0EsQ0FBQSxFQUFHO0lBQ04sT0FBTyxJQUFJLENBQUNULE1BQU0sQ0FBQ1MsS0FBSyxDQUFDLENBQUM7RUFDNUI7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNWLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDLENBQUM7RUFDN0I7QUFDRjtBQUFDQyxPQUFBLENBQUFsQixNQUFBLEdBQUFBLE1BQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-stream-parser.js","names":["_events","require","_streamParser","_interopRequireDefault","_stream","obj","__esModule","default","Parser","EventEmitter","
|
|
1
|
+
{"version":3,"file":"token-stream-parser.js","names":["_events","require","_streamParser","_interopRequireDefault","_stream","obj","__esModule","default","Parser","EventEmitter","constructor","message","debug","handler","options","parser","Readable","from","StreamParser","parseTokens","on","token","handlerName","emit","pause","resume","exports"],"sources":["../../src/token/token-stream-parser.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport StreamParser, { type ParserOptions } from './stream-parser';\nimport Debug from '../debug';\nimport { Token } from './token';\nimport { Readable } from 'stream';\nimport Message from '../message';\nimport { TokenHandler } from './handler';\n\nexport class Parser extends EventEmitter {\n declare debug: Debug;\n declare options: ParserOptions;\n declare parser: Readable;\n\n constructor(message: Message, debug: Debug, handler: TokenHandler, options: ParserOptions) {\n super();\n\n this.debug = debug;\n this.options = options;\n\n this.parser = Readable.from(StreamParser.parseTokens(message, this.debug, this.options));\n this.parser.on('data', (token: Token) => {\n handler[token.handlerName as keyof TokenHandler](token as any);\n });\n\n this.parser.on('drain', () => {\n this.emit('drain');\n });\n\n this.parser.on('end', () => {\n this.emit('end');\n });\n }\n\n declare on: (\n ((event: 'end', listener: () => void) => this) &\n ((event: string | symbol, listener: (...args: any[]) => void) => this)\n );\n\n pause() {\n return this.parser.pause();\n }\n\n resume() {\n return this.parser.resume();\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAAkC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAI3B,MAAMG,MAAM,SAASC,oBAAY,CAAC;EAKvCC,WAAWA,CAACC,OAAgB,EAAEC,KAAY,EAAEC,OAAqB,EAAEC,OAAsB,EAAE;IACzF,KAAK,CAAC,CAAC;IAEP,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACC,MAAM,GAAGC,gBAAQ,CAACC,IAAI,CAACC,qBAAY,CAACC,WAAW,CAACR,OAAO,EAAE,IAAI,CAACC,KAAK,EAAE,IAAI,CAACE,OAAO,CAAC,CAAC;IACxF,IAAI,CAACC,MAAM,CAACK,EAAE,CAAC,MAAM,EAAGC,KAAY,IAAK;MACvCR,OAAO,CAACQ,KAAK,CAACC,WAAW,CAAuB,CAACD,KAAY,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,CAACN,MAAM,CAACK,EAAE,CAAC,OAAO,EAAE,MAAM;MAC5B,IAAI,CAACG,IAAI,CAAC,OAAO,CAAC;IACpB,CAAC,CAAC;IAEF,IAAI,CAACR,MAAM,CAACK,EAAE,CAAC,KAAK,EAAE,MAAM;MAC1B,IAAI,CAACG,IAAI,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC;EACJ;EAOAC,KAAKA,CAAA,EAAG;IACN,OAAO,IAAI,CAACT,MAAM,CAACS,KAAK,CAAC,CAAC;EAC5B;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACV,MAAM,CAACU,MAAM,CAAC,CAAC;EAC7B;AACF;AAACC,OAAA,CAAAlB,MAAA,GAAAA,MAAA"}
|