tedious 16.4.1 → 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/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.js +1 -2
- package/lib/always-encrypted/symmetric-key.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 +22 -28
- package/lib/connection.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/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/token/handler.js +3 -13
- package/lib/token/handler.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/package.json +1 -1
- package/benchmarks/bulk-load/stream.js +0 -62
- package/benchmarks/bulk-load/sync.js +0 -59
package/lib/bulk-load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-load.js","names":["_events","require","_writableTrackingBuffer","_interopRequireDefault","_stream","_token","obj","__esModule","default","FLAGS","nullable","caseSen","updateableReadWrite","updateableUnknown","identity","computed","fixedLenCLRType","sparseColumnSet","hidden","key","nullableUnknown","DONE_STATUS","FINAL","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","rowTokenBuffer","Buffer","from","TOKEN_TYPE","ROW","textPointerAndTimestampBuffer","textPointerNullBuffer","RowTransform","Transform","columnMetadataWritten","bulkLoad","mainOptions","columns","constructor","writableObjectMode","options","_transform","row","_encoding","callback","push","getColMetaData","i","length","c","value","Array","isArray","objName","firstRowWritten","type","validate","collation","error","parameter","scale","precision","name","generateParameterLength","chunk","generateParameterData","process","nextTick","_flush","createDoneToken","BulkLoad","EventEmitter","canceled","executionStarted","streamingMode","table","timeout","columnsByName","rowToPacketTransform","bulkOptions","connection","rows","rst","rowCount","connectionOptions","checkConstraints","fireTriggers","keepNulls","lockTable","order","TypeError","column","direction","Object","entries","undefined","addColumn","output","Error","id","resolveLength","resolvePrecision","resolveScale","getOptionsSql","addOptions","orderColumns","join","getBulkInsertSql","sql","len","declaration","getTableCreationSql","tBuf","WritableTrackingBuffer","writeUInt8","COLMETADATA","writeUInt16LE","j","tdsVersion","writeUInt32LE","flags","writeBuffer","generateTypeInfo","hasTableName","writeUsVarchar","writeBVarchar","data","setTimeout","DONE","status","cancel","emit","_default","exports","module"],"sources":["../src/bulk-load.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport Connection, { type InternalConnectionOptions } from './connection';\n\nimport { Transform } from 'stream';\nimport { TYPE as TOKEN_TYPE } from './token/token';\n\nimport { type DataType, type Parameter } from './data-type';\nimport { Collation } from './collation';\n\n/**\n * @private\n */\nconst FLAGS = {\n nullable: 1 << 0,\n caseSen: 1 << 1,\n updateableReadWrite: 1 << 2,\n updateableUnknown: 1 << 3,\n identity: 1 << 4,\n computed: 1 << 5, // introduced in TDS 7.2\n fixedLenCLRType: 1 << 8, // introduced in TDS 7.2\n sparseColumnSet: 1 << 10, // introduced in TDS 7.3.B\n hidden: 1 << 13, // introduced in TDS 7.2\n key: 1 << 14, // introduced in TDS 7.2\n nullableUnknown: 1 << 15 // introduced in TDS 7.2\n};\n\n/**\n * @private\n */\nconst DONE_STATUS = {\n FINAL: 0x00,\n MORE: 0x1,\n ERROR: 0x2,\n INXACT: 0x4,\n COUNT: 0x10,\n ATTN: 0x20,\n SRVERROR: 0x100\n};\n\n/**\n * @private\n */\ninterface InternalOptions {\n checkConstraints: boolean;\n fireTriggers: boolean;\n keepNulls: boolean;\n lockTable: boolean;\n order: { [columnName: string]: 'ASC' | 'DESC' };\n}\n\nexport interface Options {\n /**\n * Honors constraints during bulk load, using T-SQL\n * [CHECK_CONSTRAINTS](https://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx).\n * (default: `false`)\n */\n checkConstraints?: InternalOptions['checkConstraints'] | undefined;\n\n /**\n * Honors insert triggers during bulk load, using the T-SQL [FIRE_TRIGGERS](https://technet.microsoft.com/en-us/library/ms187640(v=sql.105).aspx). (default: `false`)\n */\n fireTriggers?: InternalOptions['fireTriggers'] | undefined;\n\n /**\n * Honors null value passed, ignores the default values set on table, using T-SQL [KEEP_NULLS](https://msdn.microsoft.com/en-us/library/ms187887(v=sql.120).aspx). (default: `false`)\n */\n keepNulls?: InternalOptions['keepNulls'] | undefined;\n\n /**\n * Places a bulk update(BU) lock on table while performing bulk load, using T-SQL [TABLOCK](https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx). (default: `false`)\n */\n lockTable?: InternalOptions['lockTable'] | undefined;\n\n /**\n * Specifies the ordering of the data to possibly increase bulk insert performance, using T-SQL [ORDER](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177468(v=sql.105)). (default: `{}`)\n */\n order?: InternalOptions['order'] | undefined;\n}\n\n\nexport type Callback =\n /**\n * A function which will be called after the [[BulkLoad]] finishes executing.\n *\n * @param rowCount the number of rows inserted\n */\n (err: Error | undefined | null, rowCount?: number) => void;\n\ninterface Column extends Parameter {\n objName: string;\n collation: Collation | undefined;\n}\n\ninterface ColumnOptions {\n output?: boolean;\n\n /**\n * For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n */\n length?: number;\n\n /**\n * For Numeric, Decimal.\n */\n precision?: number;\n\n /**\n * For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n scale?: number;\n\n /**\n * If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]], then you can use this option to specify the property name.\n */\n objName?: string;\n\n /**\n * Indicates whether the column accepts NULL values.\n */\n nullable?: boolean;\n}\n\nconst rowTokenBuffer = Buffer.from([ TOKEN_TYPE.ROW ]);\nconst textPointerAndTimestampBuffer = Buffer.from([\n // TextPointer length\n 0x10,\n\n // TextPointer\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\n // Timestamp\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n]);\nconst textPointerNullBuffer = Buffer.from([0x00]);\n\n// A transform that converts rows to packets.\nclass RowTransform extends Transform {\n /**\n * @private\n */\n columnMetadataWritten: boolean;\n /**\n * @private\n */\n bulkLoad: BulkLoad;\n /**\n * @private\n */\n mainOptions: BulkLoad['options'];\n /**\n * @private\n */\n columns: BulkLoad['columns'];\n\n /**\n * @private\n */\n constructor(bulkLoad: BulkLoad) {\n super({ writableObjectMode: true });\n\n this.bulkLoad = bulkLoad;\n this.mainOptions = bulkLoad.options;\n this.columns = bulkLoad.columns;\n\n this.columnMetadataWritten = false;\n }\n\n /**\n * @private\n */\n _transform(row: Array<unknown> | { [colName: string]: unknown }, _encoding: string, callback: (error?: Error) => void) {\n if (!this.columnMetadataWritten) {\n this.push(this.bulkLoad.getColMetaData());\n this.columnMetadataWritten = true;\n }\n\n this.push(rowTokenBuffer);\n\n for (let i = 0; i < this.columns.length; i++) {\n const c = this.columns[i];\n let value = Array.isArray(row) ? row[i] : row[c.objName];\n\n if (!this.bulkLoad.firstRowWritten) {\n try {\n value = c.type.validate(value, c.collation);\n } catch (error: any) {\n return callback(error);\n }\n }\n\n const parameter = {\n length: c.length,\n scale: c.scale,\n precision: c.precision,\n value: value\n };\n\n if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') {\n if (value == null) {\n this.push(textPointerNullBuffer);\n continue;\n }\n\n this.push(textPointerAndTimestampBuffer);\n }\n\n this.push(c.type.generateParameterLength(parameter, this.mainOptions));\n for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) {\n this.push(chunk);\n }\n }\n\n process.nextTick(callback);\n }\n\n /**\n * @private\n */\n _flush(callback: () => void) {\n this.push(this.bulkLoad.createDoneToken());\n\n process.nextTick(callback);\n }\n}\n\n/**\n * A BulkLoad instance is used to perform a bulk insert.\n *\n * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.\n *\n * Example of BulkLoad Usages:\n *\n * ```js\n * // optional BulkLoad options\n * const options = { keepNulls: true };\n *\n * // instantiate - provide the table where you'll be inserting to, options and a callback\n * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {\n * console.log('inserted %d rows', rowCount);\n * });\n *\n * // setup your columns - always indicate whether the column is nullable\n * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });\n * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });\n *\n * // execute\n * connection.execBulkLoad(bulkLoad, [\n * { myInt: 7, myString: 'hello' },\n * { myInt: 23, myString: 'world' }\n * ]);\n * ```\n */\nclass BulkLoad extends EventEmitter {\n /**\n * @private\n */\n error: Error | undefined;\n /**\n * @private\n */\n canceled: boolean;\n /**\n * @private\n */\n executionStarted: boolean;\n /**\n * @private\n */\n streamingMode: boolean;\n /**\n * @private\n */\n table: string;\n /**\n * @private\n */\n timeout: number | undefined;\n\n /**\n * @private\n */\n options: InternalConnectionOptions;\n /**\n * @private\n */\n callback: Callback;\n\n /**\n * @private\n */\n columns: Array<Column>;\n /**\n * @private\n */\n columnsByName: { [name: string]: Column };\n\n /**\n * @private\n */\n firstRowWritten: boolean;\n /**\n * @private\n */\n rowToPacketTransform: RowTransform;\n\n /**\n * @private\n */\n bulkOptions: InternalOptions;\n\n /**\n * @private\n */\n connection: Connection | undefined;\n /**\n * @private\n */\n rows: Array<any> | undefined;\n /**\n * @private\n */\n rst: Array<any> | undefined;\n /**\n * @private\n */\n rowCount: number | undefined;\n\n collation: Collation | undefined;\n\n /**\n * @private\n */\n constructor(table: string, collation: Collation | undefined, connectionOptions: InternalConnectionOptions, {\n checkConstraints = false,\n fireTriggers = false,\n keepNulls = false,\n lockTable = false,\n order = {},\n }: Options, callback: Callback) {\n if (typeof checkConstraints !== 'boolean') {\n throw new TypeError('The \"options.checkConstraints\" property must be of type boolean.');\n }\n\n if (typeof fireTriggers !== 'boolean') {\n throw new TypeError('The \"options.fireTriggers\" property must be of type boolean.');\n }\n\n if (typeof keepNulls !== 'boolean') {\n throw new TypeError('The \"options.keepNulls\" property must be of type boolean.');\n }\n\n if (typeof lockTable !== 'boolean') {\n throw new TypeError('The \"options.lockTable\" property must be of type boolean.');\n }\n\n if (typeof order !== 'object' || order === null) {\n throw new TypeError('The \"options.order\" property must be of type object.');\n }\n\n for (const [column, direction] of Object.entries(order)) {\n if (direction !== 'ASC' && direction !== 'DESC') {\n throw new TypeError('The value of the \"' + column + '\" key in the \"options.order\" object must be either \"ASC\" or \"DESC\".');\n }\n }\n\n super();\n\n this.error = undefined;\n this.canceled = false;\n this.executionStarted = false;\n\n this.collation = collation;\n\n this.table = table;\n this.options = connectionOptions;\n this.callback = callback;\n this.columns = [];\n this.columnsByName = {};\n this.firstRowWritten = false;\n this.streamingMode = false;\n\n this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define\n\n this.bulkOptions = { checkConstraints, fireTriggers, keepNulls, lockTable, order };\n }\n\n /**\n * Adds a column to the bulk load.\n *\n * The column definitions should match the table you are trying to insert into.\n * Attempting to call addColumn after the first row has been added will throw an exception.\n *\n * ```js\n * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });\n * ```\n *\n * @param name The name of the column.\n * @param type One of the supported `data types`.\n * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false.\n * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n * @param nullable Indicates whether the column accepts NULL values.\n * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.\n * @param precision For Numeric, Decimal.\n * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n addColumn(name: string, type: DataType, { output = false, length, precision, scale, objName = name, nullable = true }: ColumnOptions) {\n if (this.firstRowWritten) {\n throw new Error('Columns cannot be added to bulk insert after the first row has been written.');\n }\n if (this.executionStarted) {\n throw new Error('Columns cannot be added to bulk insert after execution has started.');\n }\n\n const column: Column = {\n type: type,\n name: name,\n value: null,\n output: output,\n length: length,\n precision: precision,\n scale: scale,\n objName: objName,\n nullable: nullable,\n collation: this.collation\n };\n\n if ((type.id & 0x30) === 0x20) {\n if (column.length == null && type.resolveLength) {\n column.length = type.resolveLength(column);\n }\n }\n\n if (type.resolvePrecision && column.precision == null) {\n column.precision = type.resolvePrecision(column);\n }\n\n if (type.resolveScale && column.scale == null) {\n column.scale = type.resolveScale(column);\n }\n\n this.columns.push(column);\n\n this.columnsByName[name] = column;\n }\n\n /**\n * @private\n */\n getOptionsSql() {\n const addOptions = [];\n\n if (this.bulkOptions.checkConstraints) {\n addOptions.push('CHECK_CONSTRAINTS');\n }\n\n if (this.bulkOptions.fireTriggers) {\n addOptions.push('FIRE_TRIGGERS');\n }\n\n if (this.bulkOptions.keepNulls) {\n addOptions.push('KEEP_NULLS');\n }\n\n if (this.bulkOptions.lockTable) {\n addOptions.push('TABLOCK');\n }\n\n if (this.bulkOptions.order) {\n const orderColumns = [];\n\n for (const [column, direction] of Object.entries(this.bulkOptions.order)) {\n orderColumns.push(`${column} ${direction}`);\n }\n\n if (orderColumns.length) {\n addOptions.push(`ORDER (${orderColumns.join(', ')})`);\n }\n }\n\n if (addOptions.length > 0) {\n return ` WITH (${addOptions.join(',')})`;\n } else {\n return '';\n }\n }\n\n /**\n * @private\n */\n getBulkInsertSql() {\n let sql = 'insert bulk ' + this.table + '(';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ', ';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n }\n sql += ')';\n\n sql += this.getOptionsSql();\n return sql;\n }\n\n /**\n * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object.\n * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`).\n *\n * ```js\n * var sql = bulkLoad.getTableCreationSql();\n * ```\n *\n * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load,\n * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]\n */\n getTableCreationSql() {\n let sql = 'CREATE TABLE ' + this.table + '(\\n';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ',\\n';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n if (c.nullable !== undefined) {\n sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');\n }\n }\n sql += '\\n)';\n return sql;\n }\n\n /**\n * @private\n */\n getColMetaData() {\n const tBuf = new WritableTrackingBuffer(100, null, true);\n // TokenType\n tBuf.writeUInt8(TOKEN_TYPE.COLMETADATA);\n // Count\n tBuf.writeUInt16LE(this.columns.length);\n\n for (let j = 0, len = this.columns.length; j < len; j++) {\n const c = this.columns[j];\n // UserType\n if (this.options.tdsVersion < '7_2') {\n tBuf.writeUInt16LE(0);\n } else {\n tBuf.writeUInt32LE(0);\n }\n\n // Flags\n let flags = FLAGS.updateableReadWrite;\n if (c.nullable) {\n flags |= FLAGS.nullable;\n } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') {\n flags |= FLAGS.nullableUnknown;\n }\n tBuf.writeUInt16LE(flags);\n\n // TYPE_INFO\n tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options));\n\n // TableName\n if (c.type.hasTableName) {\n tBuf.writeUsVarchar(this.table, 'ucs2');\n }\n\n // ColName\n tBuf.writeBVarchar(c.name, 'ucs2');\n }\n return tBuf.data;\n }\n\n /**\n * Sets a timeout for this bulk load.\n *\n * ```js\n * bulkLoad.setTimeout(timeout);\n * ```\n *\n * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout.\n * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.\n */\n setTimeout(timeout?: number) {\n this.timeout = timeout;\n }\n\n /**\n * @private\n */\n createDoneToken() {\n // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here\n const tBuf = new WritableTrackingBuffer(this.options.tdsVersion < '7_2' ? 9 : 13);\n tBuf.writeUInt8(TOKEN_TYPE.DONE);\n const status = DONE_STATUS.FINAL;\n tBuf.writeUInt16LE(status);\n tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)\n tBuf.writeUInt32LE(0); // row count - doesn't really matter\n if (this.options.tdsVersion >= '7_2') {\n tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2\n }\n return tBuf.data;\n }\n\n /**\n * @private\n */\n cancel() {\n if (this.canceled) {\n return;\n }\n\n this.canceled = true;\n this.emit('cancel');\n }\n}\n\nexport default BulkLoad;\nmodule.exports = BulkLoad;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bulk-load.js","names":["_events","require","_writableTrackingBuffer","_interopRequireDefault","_stream","_token","obj","__esModule","default","FLAGS","nullable","caseSen","updateableReadWrite","updateableUnknown","identity","computed","fixedLenCLRType","sparseColumnSet","hidden","key","nullableUnknown","DONE_STATUS","FINAL","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","rowTokenBuffer","Buffer","from","TOKEN_TYPE","ROW","textPointerAndTimestampBuffer","textPointerNullBuffer","RowTransform","Transform","constructor","bulkLoad","writableObjectMode","mainOptions","options","columns","columnMetadataWritten","_transform","row","_encoding","callback","push","getColMetaData","i","length","c","value","Array","isArray","objName","firstRowWritten","type","validate","collation","error","parameter","scale","precision","name","generateParameterLength","chunk","generateParameterData","process","nextTick","_flush","createDoneToken","BulkLoad","EventEmitter","table","connectionOptions","checkConstraints","fireTriggers","keepNulls","lockTable","order","TypeError","column","direction","Object","entries","undefined","canceled","executionStarted","columnsByName","streamingMode","rowToPacketTransform","bulkOptions","addColumn","output","Error","id","resolveLength","resolvePrecision","resolveScale","getOptionsSql","addOptions","orderColumns","join","getBulkInsertSql","sql","len","declaration","getTableCreationSql","tBuf","WritableTrackingBuffer","writeUInt8","COLMETADATA","writeUInt16LE","j","tdsVersion","writeUInt32LE","flags","writeBuffer","generateTypeInfo","hasTableName","writeUsVarchar","writeBVarchar","data","setTimeout","timeout","DONE","status","cancel","emit","_default","exports","module"],"sources":["../src/bulk-load.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport Connection, { type InternalConnectionOptions } from './connection';\n\nimport { Transform } from 'stream';\nimport { TYPE as TOKEN_TYPE } from './token/token';\n\nimport { type DataType, type Parameter } from './data-type';\nimport { Collation } from './collation';\n\n/**\n * @private\n */\nconst FLAGS = {\n nullable: 1 << 0,\n caseSen: 1 << 1,\n updateableReadWrite: 1 << 2,\n updateableUnknown: 1 << 3,\n identity: 1 << 4,\n computed: 1 << 5, // introduced in TDS 7.2\n fixedLenCLRType: 1 << 8, // introduced in TDS 7.2\n sparseColumnSet: 1 << 10, // introduced in TDS 7.3.B\n hidden: 1 << 13, // introduced in TDS 7.2\n key: 1 << 14, // introduced in TDS 7.2\n nullableUnknown: 1 << 15 // introduced in TDS 7.2\n};\n\n/**\n * @private\n */\nconst DONE_STATUS = {\n FINAL: 0x00,\n MORE: 0x1,\n ERROR: 0x2,\n INXACT: 0x4,\n COUNT: 0x10,\n ATTN: 0x20,\n SRVERROR: 0x100\n};\n\n/**\n * @private\n */\ninterface InternalOptions {\n checkConstraints: boolean;\n fireTriggers: boolean;\n keepNulls: boolean;\n lockTable: boolean;\n order: { [columnName: string]: 'ASC' | 'DESC' };\n}\n\nexport interface Options {\n /**\n * Honors constraints during bulk load, using T-SQL\n * [CHECK_CONSTRAINTS](https://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx).\n * (default: `false`)\n */\n checkConstraints?: InternalOptions['checkConstraints'] | undefined;\n\n /**\n * Honors insert triggers during bulk load, using the T-SQL [FIRE_TRIGGERS](https://technet.microsoft.com/en-us/library/ms187640(v=sql.105).aspx). (default: `false`)\n */\n fireTriggers?: InternalOptions['fireTriggers'] | undefined;\n\n /**\n * Honors null value passed, ignores the default values set on table, using T-SQL [KEEP_NULLS](https://msdn.microsoft.com/en-us/library/ms187887(v=sql.120).aspx). (default: `false`)\n */\n keepNulls?: InternalOptions['keepNulls'] | undefined;\n\n /**\n * Places a bulk update(BU) lock on table while performing bulk load, using T-SQL [TABLOCK](https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx). (default: `false`)\n */\n lockTable?: InternalOptions['lockTable'] | undefined;\n\n /**\n * Specifies the ordering of the data to possibly increase bulk insert performance, using T-SQL [ORDER](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177468(v=sql.105)). (default: `{}`)\n */\n order?: InternalOptions['order'] | undefined;\n}\n\n\nexport type Callback =\n /**\n * A function which will be called after the [[BulkLoad]] finishes executing.\n *\n * @param rowCount the number of rows inserted\n */\n (err: Error | undefined | null, rowCount?: number) => void;\n\ninterface Column extends Parameter {\n objName: string;\n collation: Collation | undefined;\n}\n\ninterface ColumnOptions {\n output?: boolean;\n\n /**\n * For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n */\n length?: number;\n\n /**\n * For Numeric, Decimal.\n */\n precision?: number;\n\n /**\n * For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n scale?: number;\n\n /**\n * If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]], then you can use this option to specify the property name.\n */\n objName?: string;\n\n /**\n * Indicates whether the column accepts NULL values.\n */\n nullable?: boolean;\n}\n\nconst rowTokenBuffer = Buffer.from([ TOKEN_TYPE.ROW ]);\nconst textPointerAndTimestampBuffer = Buffer.from([\n // TextPointer length\n 0x10,\n\n // TextPointer\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\n // Timestamp\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n]);\nconst textPointerNullBuffer = Buffer.from([0x00]);\n\n// A transform that converts rows to packets.\nclass RowTransform extends Transform {\n /**\n * @private\n */\n declare columnMetadataWritten: boolean;\n /**\n * @private\n */\n declare bulkLoad: BulkLoad;\n /**\n * @private\n */\n declare mainOptions: BulkLoad['options'];\n /**\n * @private\n */\n declare columns: BulkLoad['columns'];\n\n /**\n * @private\n */\n constructor(bulkLoad: BulkLoad) {\n super({ writableObjectMode: true });\n\n this.bulkLoad = bulkLoad;\n this.mainOptions = bulkLoad.options;\n this.columns = bulkLoad.columns;\n\n this.columnMetadataWritten = false;\n }\n\n /**\n * @private\n */\n _transform(row: Array<unknown> | { [colName: string]: unknown }, _encoding: string, callback: (error?: Error) => void) {\n if (!this.columnMetadataWritten) {\n this.push(this.bulkLoad.getColMetaData());\n this.columnMetadataWritten = true;\n }\n\n this.push(rowTokenBuffer);\n\n for (let i = 0; i < this.columns.length; i++) {\n const c = this.columns[i];\n let value = Array.isArray(row) ? row[i] : row[c.objName];\n\n if (!this.bulkLoad.firstRowWritten) {\n try {\n value = c.type.validate(value, c.collation);\n } catch (error: any) {\n return callback(error);\n }\n }\n\n const parameter = {\n length: c.length,\n scale: c.scale,\n precision: c.precision,\n value: value\n };\n\n if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') {\n if (value == null) {\n this.push(textPointerNullBuffer);\n continue;\n }\n\n this.push(textPointerAndTimestampBuffer);\n }\n\n this.push(c.type.generateParameterLength(parameter, this.mainOptions));\n for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) {\n this.push(chunk);\n }\n }\n\n process.nextTick(callback);\n }\n\n /**\n * @private\n */\n _flush(callback: () => void) {\n this.push(this.bulkLoad.createDoneToken());\n\n process.nextTick(callback);\n }\n}\n\n/**\n * A BulkLoad instance is used to perform a bulk insert.\n *\n * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.\n *\n * Example of BulkLoad Usages:\n *\n * ```js\n * // optional BulkLoad options\n * const options = { keepNulls: true };\n *\n * // instantiate - provide the table where you'll be inserting to, options and a callback\n * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {\n * console.log('inserted %d rows', rowCount);\n * });\n *\n * // setup your columns - always indicate whether the column is nullable\n * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });\n * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });\n *\n * // execute\n * connection.execBulkLoad(bulkLoad, [\n * { myInt: 7, myString: 'hello' },\n * { myInt: 23, myString: 'world' }\n * ]);\n * ```\n */\nclass BulkLoad extends EventEmitter {\n /**\n * @private\n */\n declare error: Error | undefined;\n /**\n * @private\n */\n declare canceled: boolean;\n /**\n * @private\n */\n declare executionStarted: boolean;\n /**\n * @private\n */\n declare streamingMode: boolean;\n /**\n * @private\n */\n declare table: string;\n /**\n * @private\n */\n declare timeout: number | undefined;\n\n /**\n * @private\n */\n declare options: InternalConnectionOptions;\n /**\n * @private\n */\n declare callback: Callback;\n\n /**\n * @private\n */\n declare columns: Array<Column>;\n /**\n * @private\n */\n declare columnsByName: { [name: string]: Column };\n\n /**\n * @private\n */\n declare firstRowWritten: boolean;\n /**\n * @private\n */\n declare rowToPacketTransform: RowTransform;\n\n /**\n * @private\n */\n declare bulkOptions: InternalOptions;\n\n /**\n * @private\n */\n declare connection: Connection | undefined;\n /**\n * @private\n */\n declare rows: Array<any> | undefined;\n /**\n * @private\n */\n declare rst: Array<any> | undefined;\n /**\n * @private\n */\n declare rowCount: number | undefined;\n\n declare collation: Collation | undefined;\n\n /**\n * @private\n */\n constructor(table: string, collation: Collation | undefined, connectionOptions: InternalConnectionOptions, {\n checkConstraints = false,\n fireTriggers = false,\n keepNulls = false,\n lockTable = false,\n order = {},\n }: Options, callback: Callback) {\n if (typeof checkConstraints !== 'boolean') {\n throw new TypeError('The \"options.checkConstraints\" property must be of type boolean.');\n }\n\n if (typeof fireTriggers !== 'boolean') {\n throw new TypeError('The \"options.fireTriggers\" property must be of type boolean.');\n }\n\n if (typeof keepNulls !== 'boolean') {\n throw new TypeError('The \"options.keepNulls\" property must be of type boolean.');\n }\n\n if (typeof lockTable !== 'boolean') {\n throw new TypeError('The \"options.lockTable\" property must be of type boolean.');\n }\n\n if (typeof order !== 'object' || order === null) {\n throw new TypeError('The \"options.order\" property must be of type object.');\n }\n\n for (const [column, direction] of Object.entries(order)) {\n if (direction !== 'ASC' && direction !== 'DESC') {\n throw new TypeError('The value of the \"' + column + '\" key in the \"options.order\" object must be either \"ASC\" or \"DESC\".');\n }\n }\n\n super();\n\n this.error = undefined;\n this.canceled = false;\n this.executionStarted = false;\n\n this.collation = collation;\n\n this.table = table;\n this.options = connectionOptions;\n this.callback = callback;\n this.columns = [];\n this.columnsByName = {};\n this.firstRowWritten = false;\n this.streamingMode = false;\n\n this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define\n\n this.bulkOptions = { checkConstraints, fireTriggers, keepNulls, lockTable, order };\n }\n\n /**\n * Adds a column to the bulk load.\n *\n * The column definitions should match the table you are trying to insert into.\n * Attempting to call addColumn after the first row has been added will throw an exception.\n *\n * ```js\n * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });\n * ```\n *\n * @param name The name of the column.\n * @param type One of the supported `data types`.\n * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false.\n * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n * @param nullable Indicates whether the column accepts NULL values.\n * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.\n * @param precision For Numeric, Decimal.\n * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n addColumn(name: string, type: DataType, { output = false, length, precision, scale, objName = name, nullable = true }: ColumnOptions) {\n if (this.firstRowWritten) {\n throw new Error('Columns cannot be added to bulk insert after the first row has been written.');\n }\n if (this.executionStarted) {\n throw new Error('Columns cannot be added to bulk insert after execution has started.');\n }\n\n const column: Column = {\n type: type,\n name: name,\n value: null,\n output: output,\n length: length,\n precision: precision,\n scale: scale,\n objName: objName,\n nullable: nullable,\n collation: this.collation\n };\n\n if ((type.id & 0x30) === 0x20) {\n if (column.length == null && type.resolveLength) {\n column.length = type.resolveLength(column);\n }\n }\n\n if (type.resolvePrecision && column.precision == null) {\n column.precision = type.resolvePrecision(column);\n }\n\n if (type.resolveScale && column.scale == null) {\n column.scale = type.resolveScale(column);\n }\n\n this.columns.push(column);\n\n this.columnsByName[name] = column;\n }\n\n /**\n * @private\n */\n getOptionsSql() {\n const addOptions = [];\n\n if (this.bulkOptions.checkConstraints) {\n addOptions.push('CHECK_CONSTRAINTS');\n }\n\n if (this.bulkOptions.fireTriggers) {\n addOptions.push('FIRE_TRIGGERS');\n }\n\n if (this.bulkOptions.keepNulls) {\n addOptions.push('KEEP_NULLS');\n }\n\n if (this.bulkOptions.lockTable) {\n addOptions.push('TABLOCK');\n }\n\n if (this.bulkOptions.order) {\n const orderColumns = [];\n\n for (const [column, direction] of Object.entries(this.bulkOptions.order)) {\n orderColumns.push(`${column} ${direction}`);\n }\n\n if (orderColumns.length) {\n addOptions.push(`ORDER (${orderColumns.join(', ')})`);\n }\n }\n\n if (addOptions.length > 0) {\n return ` WITH (${addOptions.join(',')})`;\n } else {\n return '';\n }\n }\n\n /**\n * @private\n */\n getBulkInsertSql() {\n let sql = 'insert bulk ' + this.table + '(';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ', ';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n }\n sql += ')';\n\n sql += this.getOptionsSql();\n return sql;\n }\n\n /**\n * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object.\n * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`).\n *\n * ```js\n * var sql = bulkLoad.getTableCreationSql();\n * ```\n *\n * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load,\n * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]\n */\n getTableCreationSql() {\n let sql = 'CREATE TABLE ' + this.table + '(\\n';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ',\\n';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n if (c.nullable !== undefined) {\n sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');\n }\n }\n sql += '\\n)';\n return sql;\n }\n\n /**\n * @private\n */\n getColMetaData() {\n const tBuf = new WritableTrackingBuffer(100, null, true);\n // TokenType\n tBuf.writeUInt8(TOKEN_TYPE.COLMETADATA);\n // Count\n tBuf.writeUInt16LE(this.columns.length);\n\n for (let j = 0, len = this.columns.length; j < len; j++) {\n const c = this.columns[j];\n // UserType\n if (this.options.tdsVersion < '7_2') {\n tBuf.writeUInt16LE(0);\n } else {\n tBuf.writeUInt32LE(0);\n }\n\n // Flags\n let flags = FLAGS.updateableReadWrite;\n if (c.nullable) {\n flags |= FLAGS.nullable;\n } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') {\n flags |= FLAGS.nullableUnknown;\n }\n tBuf.writeUInt16LE(flags);\n\n // TYPE_INFO\n tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options));\n\n // TableName\n if (c.type.hasTableName) {\n tBuf.writeUsVarchar(this.table, 'ucs2');\n }\n\n // ColName\n tBuf.writeBVarchar(c.name, 'ucs2');\n }\n return tBuf.data;\n }\n\n /**\n * Sets a timeout for this bulk load.\n *\n * ```js\n * bulkLoad.setTimeout(timeout);\n * ```\n *\n * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout.\n * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.\n */\n setTimeout(timeout?: number) {\n this.timeout = timeout;\n }\n\n /**\n * @private\n */\n createDoneToken() {\n // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here\n const tBuf = new WritableTrackingBuffer(this.options.tdsVersion < '7_2' ? 9 : 13);\n tBuf.writeUInt8(TOKEN_TYPE.DONE);\n const status = DONE_STATUS.FINAL;\n tBuf.writeUInt16LE(status);\n tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)\n tBuf.writeUInt32LE(0); // row count - doesn't really matter\n if (this.options.tdsVersion >= '7_2') {\n tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2\n }\n return tBuf.data;\n }\n\n /**\n * @private\n */\n cancel() {\n if (this.canceled) {\n return;\n }\n\n this.canceled = true;\n this.emit('cancel');\n }\n}\n\nexport default BulkLoad;\nmodule.exports = BulkLoad;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAmD,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKnD;AACA;AACA;AACA,MAAMG,KAAK,GAAG;EACZC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAChBC,OAAO,EAAE,CAAC,IAAI,CAAC;EACfC,mBAAmB,EAAE,CAAC,IAAI,CAAC;EAC3BC,iBAAiB,EAAE,CAAC,IAAI,CAAC;EACzBC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAChBC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAAE;EAClBC,eAAe,EAAE,CAAC,IAAI,CAAC;EAAE;EACzBC,eAAe,EAAE,CAAC,IAAI,EAAE;EAAE;EAC1BC,MAAM,EAAE,CAAC,IAAI,EAAE;EAAE;EACjBC,GAAG,EAAE,CAAC,IAAI,EAAE;EAAE;EACdC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;;AAED;AACA;AACA;AACA,MAAMC,WAAW,GAAG;EAClBC,KAAK,EAAE,IAAI;EACXC,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE,IAAI;EACXC,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;;AAiFA,MAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAEC,WAAU,CAACC,GAAG,CAAE,CAAC;AACtD,MAAMC,6BAA6B,GAAGJ,MAAM,CAACC,IAAI,CAAC;AAChD;AACA,IAAI;AAEJ;AACA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAE9F;AACA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAC/C,CAAC;AACF,MAAMI,qBAAqB,GAAGL,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAEjD;AACA,MAAMK,YAAY,SAASC,iBAAS,CAAC;EACnC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;EACEC,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC;MAAEC,kBAAkB,EAAE;IAAK,CAAC,CAAC;IAEnC,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,WAAW,GAAGF,QAAQ,CAACG,OAAO;IACnC,IAAI,CAACC,OAAO,GAAGJ,QAAQ,CAACI,OAAO;IAE/B,IAAI,CAACC,qBAAqB,GAAG,KAAK;EACpC;;EAEA;AACF;AACA;EACEC,UAAUA,CAACC,GAAoD,EAAEC,SAAiB,EAAEC,QAAiC,EAAE;IACrH,IAAI,CAAC,IAAI,CAACJ,qBAAqB,EAAE;MAC/B,IAAI,CAACK,IAAI,CAAC,IAAI,CAACV,QAAQ,CAACW,cAAc,CAAC,CAAC,CAAC;MACzC,IAAI,CAACN,qBAAqB,GAAG,IAAI;IACnC;IAEA,IAAI,CAACK,IAAI,CAACpB,cAAc,CAAC;IAEzB,KAAK,IAAIsB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACR,OAAO,CAACS,MAAM,EAAED,CAAC,EAAE,EAAE;MAC5C,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIG,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACV,GAAG,CAAC,GAAGA,GAAG,CAACK,CAAC,CAAC,GAAGL,GAAG,CAACO,CAAC,CAACI,OAAO,CAAC;MAExD,IAAI,CAAC,IAAI,CAAClB,QAAQ,CAACmB,eAAe,EAAE;QAClC,IAAI;UACFJ,KAAK,GAAGD,CAAC,CAACM,IAAI,CAACC,QAAQ,CAACN,KAAK,EAAED,CAAC,CAACQ,SAAS,CAAC;QAC7C,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,OAAOd,QAAQ,CAACc,KAAK,CAAC;QACxB;MACF;MAEA,MAAMC,SAAS,GAAG;QAChBX,MAAM,EAAEC,CAAC,CAACD,MAAM;QAChBY,KAAK,EAAEX,CAAC,CAACW,KAAK;QACdC,SAAS,EAAEZ,CAAC,CAACY,SAAS;QACtBX,KAAK,EAAEA;MACT,CAAC;MAED,IAAID,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,MAAM,IAAIb,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,OAAO,IAAIb,CAAC,CAACM,IAAI,CAACO,IAAI,KAAK,OAAO,EAAE;QAChF,IAAIZ,KAAK,IAAI,IAAI,EAAE;UACjB,IAAI,CAACL,IAAI,CAACd,qBAAqB,CAAC;UAChC;QACF;QAEA,IAAI,CAACc,IAAI,CAACf,6BAA6B,CAAC;MAC1C;MAEA,IAAI,CAACe,IAAI,CAACI,CAAC,CAACM,IAAI,CAACQ,uBAAuB,CAACJ,SAAS,EAAE,IAAI,CAACtB,WAAW,CAAC,CAAC;MACtE,KAAK,MAAM2B,KAAK,IAAIf,CAAC,CAACM,IAAI,CAACU,qBAAqB,CAACN,SAAS,EAAE,IAAI,CAACtB,WAAW,CAAC,EAAE;QAC7E,IAAI,CAACQ,IAAI,CAACmB,KAAK,CAAC;MAClB;IACF;IAEAE,OAAO,CAACC,QAAQ,CAACvB,QAAQ,CAAC;EAC5B;;EAEA;AACF;AACA;EACEwB,MAAMA,CAACxB,QAAoB,EAAE;IAC3B,IAAI,CAACC,IAAI,CAAC,IAAI,CAACV,QAAQ,CAACkC,eAAe,CAAC,CAAC,CAAC;IAE1CH,OAAO,CAACC,QAAQ,CAACvB,QAAQ,CAAC;EAC5B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,QAAQ,SAASC,oBAAY,CAAC;EAClC;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAGE;AACF;AACA;;EAGE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAEE;AACF;AACA;;EAKE;AACF;AACA;EACErC,WAAWA,CAACsC,KAAa,EAAEf,SAAgC,EAAEgB,iBAA4C,EAAE;IACzGC,gBAAgB,GAAG,KAAK;IACxBC,YAAY,GAAG,KAAK;IACpBC,SAAS,GAAG,KAAK;IACjBC,SAAS,GAAG,KAAK;IACjBC,KAAK,GAAG,CAAC;EACF,CAAC,EAAElC,QAAkB,EAAE;IAC9B,IAAI,OAAO8B,gBAAgB,KAAK,SAAS,EAAE;MACzC,MAAM,IAAIK,SAAS,CAAC,kEAAkE,CAAC;IACzF;IAEA,IAAI,OAAOJ,YAAY,KAAK,SAAS,EAAE;MACrC,MAAM,IAAII,SAAS,CAAC,8DAA8D,CAAC;IACrF;IAEA,IAAI,OAAOH,SAAS,KAAK,SAAS,EAAE;MAClC,MAAM,IAAIG,SAAS,CAAC,2DAA2D,CAAC;IAClF;IAEA,IAAI,OAAOF,SAAS,KAAK,SAAS,EAAE;MAClC,MAAM,IAAIE,SAAS,CAAC,2DAA2D,CAAC;IAClF;IAEA,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;MAC/C,MAAM,IAAIC,SAAS,CAAC,sDAAsD,CAAC;IAC7E;IAEA,KAAK,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;MACvD,IAAIG,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,MAAM,EAAE;QAC/C,MAAM,IAAIF,SAAS,CAAC,oBAAoB,GAAGC,MAAM,GAAG,qEAAqE,CAAC;MAC5H;IACF;IAEA,KAAK,CAAC,CAAC;IAEP,IAAI,CAACtB,KAAK,GAAG0B,SAAS;IACtB,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAE7B,IAAI,CAAC7B,SAAS,GAAGA,SAAS;IAE1B,IAAI,CAACe,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAClC,OAAO,GAAGmC,iBAAiB;IAChC,IAAI,CAAC7B,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACL,OAAO,GAAG,EAAE;IACjB,IAAI,CAACgD,aAAa,GAAG,CAAC,CAAC;IACvB,IAAI,CAACjC,eAAe,GAAG,KAAK;IAC5B,IAAI,CAACkC,aAAa,GAAG,KAAK;IAE1B,IAAI,CAACC,oBAAoB,GAAG,IAAIzD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;;IAEpD,IAAI,CAAC0D,WAAW,GAAG;MAAEhB,gBAAgB;MAAEC,YAAY;MAAEC,SAAS;MAAEC,SAAS;MAAEC;IAAM,CAAC;EACpF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEa,SAASA,CAAC7B,IAAY,EAAEP,IAAc,EAAE;IAAEqC,MAAM,GAAG,KAAK;IAAE5C,MAAM;IAAEa,SAAS;IAAED,KAAK;IAAEP,OAAO,GAAGS,IAAI;IAAExD,QAAQ,GAAG;EAAoB,CAAC,EAAE;IACpI,IAAI,IAAI,CAACgD,eAAe,EAAE;MACxB,MAAM,IAAIuC,KAAK,CAAC,8EAA8E,CAAC;IACjG;IACA,IAAI,IAAI,CAACP,gBAAgB,EAAE;MACzB,MAAM,IAAIO,KAAK,CAAC,qEAAqE,CAAC;IACxF;IAEA,MAAMb,MAAc,GAAG;MACrBzB,IAAI,EAAEA,IAAI;MACVO,IAAI,EAAEA,IAAI;MACVZ,KAAK,EAAE,IAAI;MACX0C,MAAM,EAAEA,MAAM;MACd5C,MAAM,EAAEA,MAAM;MACda,SAAS,EAAEA,SAAS;MACpBD,KAAK,EAAEA,KAAK;MACZP,OAAO,EAAEA,OAAO;MAChB/C,QAAQ,EAAEA,QAAQ;MAClBmD,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC;IAED,IAAI,CAACF,IAAI,CAACuC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;MAC7B,IAAId,MAAM,CAAChC,MAAM,IAAI,IAAI,IAAIO,IAAI,CAACwC,aAAa,EAAE;QAC/Cf,MAAM,CAAChC,MAAM,GAAGO,IAAI,CAACwC,aAAa,CAACf,MAAM,CAAC;MAC5C;IACF;IAEA,IAAIzB,IAAI,CAACyC,gBAAgB,IAAIhB,MAAM,CAACnB,SAAS,IAAI,IAAI,EAAE;MACrDmB,MAAM,CAACnB,SAAS,GAAGN,IAAI,CAACyC,gBAAgB,CAAChB,MAAM,CAAC;IAClD;IAEA,IAAIzB,IAAI,CAAC0C,YAAY,IAAIjB,MAAM,CAACpB,KAAK,IAAI,IAAI,EAAE;MAC7CoB,MAAM,CAACpB,KAAK,GAAGL,IAAI,CAAC0C,YAAY,CAACjB,MAAM,CAAC;IAC1C;IAEA,IAAI,CAACzC,OAAO,CAACM,IAAI,CAACmC,MAAM,CAAC;IAEzB,IAAI,CAACO,aAAa,CAACzB,IAAI,CAAC,GAAGkB,MAAM;EACnC;;EAEA;AACF;AACA;EACEkB,aAAaA,CAAA,EAAG;IACd,MAAMC,UAAU,GAAG,EAAE;IAErB,IAAI,IAAI,CAACT,WAAW,CAAChB,gBAAgB,EAAE;MACrCyB,UAAU,CAACtD,IAAI,CAAC,mBAAmB,CAAC;IACtC;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACf,YAAY,EAAE;MACjCwB,UAAU,CAACtD,IAAI,CAAC,eAAe,CAAC;IAClC;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACd,SAAS,EAAE;MAC9BuB,UAAU,CAACtD,IAAI,CAAC,YAAY,CAAC;IAC/B;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACb,SAAS,EAAE;MAC9BsB,UAAU,CAACtD,IAAI,CAAC,SAAS,CAAC;IAC5B;IAEA,IAAI,IAAI,CAAC6C,WAAW,CAACZ,KAAK,EAAE;MAC1B,MAAMsB,YAAY,GAAG,EAAE;MAEvB,KAAK,MAAM,CAACpB,MAAM,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAC,IAAI,CAACO,WAAW,CAACZ,KAAK,CAAC,EAAE;QACxEsB,YAAY,CAACvD,IAAI,CAAE,GAAEmC,MAAO,IAAGC,SAAU,EAAC,CAAC;MAC7C;MAEA,IAAImB,YAAY,CAACpD,MAAM,EAAE;QACvBmD,UAAU,CAACtD,IAAI,CAAE,UAASuD,YAAY,CAACC,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;MACvD;IACF;IAEA,IAAIF,UAAU,CAACnD,MAAM,GAAG,CAAC,EAAE;MACzB,OAAQ,UAASmD,UAAU,CAACE,IAAI,CAAC,GAAG,CAAE,GAAE;IAC1C,CAAC,MAAM;MACL,OAAO,EAAE;IACX;EACF;;EAEA;AACF;AACA;EACEC,gBAAgBA,CAAA,EAAG;IACjB,IAAIC,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC/B,KAAK,GAAG,GAAG;IAC3C,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEyD,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAED,CAAC,GAAGyD,GAAG,EAAEzD,CAAC,EAAE,EAAE;MACvD,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIA,CAAC,KAAK,CAAC,EAAE;QACXwD,GAAG,IAAI,IAAI;MACb;MACAA,GAAG,IAAI,GAAG,GAAGtD,CAAC,CAACa,IAAI,GAAG,IAAI,GAAIb,CAAC,CAACM,IAAI,CAACkD,WAAW,CAACxD,CAAC,CAAE;IACtD;IACAsD,GAAG,IAAI,GAAG;IAEVA,GAAG,IAAI,IAAI,CAACL,aAAa,CAAC,CAAC;IAC3B,OAAOK,GAAG;EACZ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,mBAAmBA,CAAA,EAAG;IACpB,IAAIH,GAAG,GAAG,eAAe,GAAG,IAAI,CAAC/B,KAAK,GAAG,KAAK;IAC9C,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEyD,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAED,CAAC,GAAGyD,GAAG,EAAEzD,CAAC,EAAE,EAAE;MACvD,MAAME,CAAC,GAAG,IAAI,CAACV,OAAO,CAACQ,CAAC,CAAC;MACzB,IAAIA,CAAC,KAAK,CAAC,EAAE;QACXwD,GAAG,IAAI,KAAK;MACd;MACAA,GAAG,IAAI,GAAG,GAAGtD,CAAC,CAACa,IAAI,GAAG,IAAI,GAAIb,CAAC,CAACM,IAAI,CAACkD,WAAW,CAACxD,CAAC,CAAE;MACpD,IAAIA,CAAC,CAAC3C,QAAQ,KAAK8E,SAAS,EAAE;QAC5BmB,GAAG,IAAI,GAAG,IAAItD,CAAC,CAAC3C,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;MACjD;IACF;IACAiG,GAAG,IAAI,KAAK;IACZ,OAAOA,GAAG;EACZ;;EAEA;AACF;AACA;EACEzD,cAAcA,CAAA,EAAG;IACf,MAAM6D,IAAI,GAAG,IAAIC,+BAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IACxD;IACAD,IAAI,CAACE,UAAU,CAACjF,WAAU,CAACkF,WAAW,CAAC;IACvC;IACAH,IAAI,CAACI,aAAa,CAAC,IAAI,CAACxE,OAAO,CAACS,MAAM,CAAC;IAEvC,KAAK,IAAIgE,CAAC,GAAG,CAAC,EAAER,GAAG,GAAG,IAAI,CAACjE,OAAO,CAACS,MAAM,EAAEgE,CAAC,GAAGR,GAAG,EAAEQ,CAAC,EAAE,EAAE;MACvD,MAAM/D,CAAC,GAAG,IAAI,CAACV,OAAO,CAACyE,CAAC,CAAC;MACzB;MACA,IAAI,IAAI,CAAC1E,OAAO,CAAC2E,UAAU,GAAG,KAAK,EAAE;QACnCN,IAAI,CAACI,aAAa,CAAC,CAAC,CAAC;MACvB,CAAC,MAAM;QACLJ,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC;MACvB;;MAEA;MACA,IAAIC,KAAK,GAAG9G,KAAK,CAACG,mBAAmB;MACrC,IAAIyC,CAAC,CAAC3C,QAAQ,EAAE;QACd6G,KAAK,IAAI9G,KAAK,CAACC,QAAQ;MACzB,CAAC,MAAM,IAAI2C,CAAC,CAAC3C,QAAQ,KAAK8E,SAAS,IAAI,IAAI,CAAC9C,OAAO,CAAC2E,UAAU,IAAI,KAAK,EAAE;QACvEE,KAAK,IAAI9G,KAAK,CAACW,eAAe;MAChC;MACA2F,IAAI,CAACI,aAAa,CAACI,KAAK,CAAC;;MAEzB;MACAR,IAAI,CAACS,WAAW,CAACnE,CAAC,CAACM,IAAI,CAAC8D,gBAAgB,CAACpE,CAAC,EAAE,IAAI,CAACX,OAAO,CAAC,CAAC;;MAE1D;MACA,IAAIW,CAAC,CAACM,IAAI,CAAC+D,YAAY,EAAE;QACvBX,IAAI,CAACY,cAAc,CAAC,IAAI,CAAC/C,KAAK,EAAE,MAAM,CAAC;MACzC;;MAEA;MACAmC,IAAI,CAACa,aAAa,CAACvE,CAAC,CAACa,IAAI,EAAE,MAAM,CAAC;IACpC;IACA,OAAO6C,IAAI,CAACc,IAAI;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAUA,CAACC,OAAgB,EAAE;IAC3B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;EACEtD,eAAeA,CAAA,EAAG;IAChB;IACA,MAAMsC,IAAI,GAAG,IAAIC,+BAAsB,CAAC,IAAI,CAACtE,OAAO,CAAC2E,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;IACjFN,IAAI,CAACE,UAAU,CAACjF,WAAU,CAACgG,IAAI,CAAC;IAChC,MAAMC,MAAM,GAAG5G,WAAW,CAACC,KAAK;IAChCyF,IAAI,CAACI,aAAa,CAACc,MAAM,CAAC;IAC1BlB,IAAI,CAACI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACvBJ,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC5E,OAAO,CAAC2E,UAAU,IAAI,KAAK,EAAE;MACpCN,IAAI,CAACO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB;;IACA,OAAOP,IAAI,CAACc,IAAI;EAClB;;EAEA;AACF;AACA;EACEK,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACzC,QAAQ,EAAE;MACjB;IACF;IAEA,IAAI,CAACA,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC0C,IAAI,CAAC,QAAQ,CAAC;EACrB;AACF;AAAC,IAAAC,QAAA,GAEc1D,QAAQ;AAAA2D,OAAA,CAAA7H,OAAA,GAAA4H,QAAA;AACvBE,MAAM,CAACD,OAAO,GAAG3D,QAAQ"}
|
package/lib/collation.js
CHANGED
|
@@ -307,12 +307,6 @@ const Flags = {
|
|
|
307
307
|
};
|
|
308
308
|
exports.Flags = Flags;
|
|
309
309
|
class Collation {
|
|
310
|
-
lcid;
|
|
311
|
-
flags;
|
|
312
|
-
version;
|
|
313
|
-
sortId;
|
|
314
|
-
codepage;
|
|
315
|
-
buffer;
|
|
316
310
|
static fromBuffer(buffer, offset = 0) {
|
|
317
311
|
let lcid = (buffer[offset + 2] & 0x0F) << 16;
|
|
318
312
|
lcid |= buffer[offset + 1] << 8;
|
|
@@ -354,4 +348,4 @@ class Collation {
|
|
|
354
348
|
}
|
|
355
349
|
}
|
|
356
350
|
exports.Collation = Collation;
|
|
357
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImV4cG9ydHMiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwibGNpZCIsImZsYWdzIiwidmVyc2lvbiIsInNvcnRJZCIsImNvZGVwYWdlIiwiYnVmZmVyIiwiZnJvbUJ1ZmZlciIsIm9mZnNldCIsImNvbnN0cnVjdG9yIiwidW5kZWZpbmVkIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgcmVhZG9ubHkgbGNpZDogbnVtYmVyO1xuICByZWFkb25seSBmbGFnczogbnVtYmVyO1xuICByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNvcnRJZDogbnVtYmVyO1xuICByZWFkb25seSBjb2RlcGFnZTogRW5jb2RpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxvQkFBaUQsR0FBRztFQUMvRDtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsT0FBTztFQUVqQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHO0FBQ1osQ0FBQztBQUFDQyxPQUFBLENBQUFELG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssTUFBTUUsZ0JBQTZDLEdBQUc7RUFDM0QsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcs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
|
|
351
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImV4cG9ydHMiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsImJ1ZmZlciIsIm9mZnNldCIsImxjaWQiLCJmbGFncyIsInZlcnNpb24iLCJzb3J0SWQiLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsImNvZGVwYWdlIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgZGVjbGFyZSByZWFkb25seSBsY2lkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZmxhZ3M6IG51bWJlcjtcbiAgZGVjbGFyZSByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgc29ydElkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29kZXBhZ2U6IEVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxvQkFBaUQsR0FBRztFQUMvRDtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsT0FBTztFQUVqQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHO0FBQ1osQ0FBQztBQUFDQyxPQUFBLENBQUFELG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssTUFBTUUsZ0JBQTZDLEdBQUc7RUFDM0QsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFBQ0QsT0FBQSxDQUFBQyxnQkFBQSxHQUFBQSxnQkFBQTtBQUVLLE1BQU1DLEtBQUssR0FBRztFQUNuQkMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ25CQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDckJDLFdBQVcsRUFBRSxDQUFDLElB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
|
package/lib/collation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collation.js","names":["codepageByLanguageId","exports","codepageBySortId","Flags","IGNORE_CASE","IGNORE_ACCENT","IGNORE_KANA","IGNORE_WIDTH","BINARY","BINARY2","UTF8","Collation","lcid","flags","version","sortId","codepage","buffer","fromBuffer","offset","constructor","undefined","languageId","toBuffer","Buffer","alloc"],"sources":["../src/collation.ts"],"sourcesContent":["type Encoding = 'utf-8' | 'CP437' | 'CP850' | 'CP874' | 'CP932' | 'CP936' | 'CP949' | 'CP950' | 'CP1250' | 'CP1251' | 'CP1252' | 'CP1253' | 'CP1254' | 'CP1255' | 'CP1256' | 'CP1257' | 'CP1258';\n\n// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx\nexport const codepageByLanguageId: { [key: number]: Encoding } = {\n // Arabic_*\n [0x0401]: 'CP1256',\n\n // Chinese_Taiwan_Stroke_*\n // Chinese_Traditional_Stroke_Count_*\n // Chinese_Taiwan_Bopomofo_*\n // Chinese_Traditional_Bopomofo_*\n [0x0404]: 'CP950',\n\n // Czech_*\n [0x0405]: 'CP1250',\n\n // Danish_Greenlandic_*\n // Danish_Norwegian_*\n [0x0406]: 'CP1252',\n\n // Greek_*\n [0x0408]: 'CP1253',\n\n // Latin1_General_*\n [0x0409]: 'CP1252',\n\n // Traditional_Spanish_*\n [0x040A]: 'CP1252',\n\n // Finnish_Swedish_*\n [0x040B]: 'CP1252',\n\n // French_*\n [0x040C]: 'CP1252',\n\n // Hebrew_*\n [0x040D]: 'CP1255',\n\n // Hungarian_*\n // Hungarian_Technical_*\n [0x040E]: 'CP1250',\n\n // Icelandic_*\n [0x040F]: 'CP1252',\n\n // Japanese_*\n // Japanese_XJIS_*\n // Japanese_Unicode_*\n // Japanese_Bushu_Kakusu_*\n [0x0411]: 'CP932',\n\n // Korean_*\n // Korean_Wansung_*\n [0x0412]: 'CP949',\n\n // Norwegian_*\n [0x0414]: 'CP1252',\n\n // Polish_*\n [0x0415]: 'CP1250',\n\n // Romansh_*\n [0x0417]: 'CP1252',\n\n // Romanian_*\n [0x0418]: 'CP1250',\n\n // Cyrillic_*\n [0x0419]: 'CP1251',\n\n // Croatian_*\n [0x041A]: 'CP1250',\n\n // Slovak_*\n [0x041B]: 'CP1250',\n\n // Albanian_*\n [0x041C]: 'CP1250',\n\n // Thai_*\n [0x041E]: 'CP874',\n\n // Turkish_*\n [0x041F]: 'CP1254',\n\n // Urdu_*\n [0x0420]: 'CP1256',\n\n // Ukrainian_*\n [0x0422]: 'CP1251',\n\n // Slovenian_*\n [0x0424]: 'CP1250',\n\n // Estonian_*\n [0x0425]: 'CP1257',\n\n // Latvian_*\n [0x0426]: 'CP1257',\n\n // Lithuanian_*\n [0x0427]: 'CP1257',\n\n // Persian_*\n [0x0429]: 'CP1256',\n\n // Vietnamese_*\n [0x042A]: 'CP1258',\n\n // Azeri_Latin_*\n [0x042C]: 'CP1254',\n\n // Upper_Sorbian_*\n [0x042E]: 'CP1252',\n\n // Macedonian_FYROM_*\n [0x042F]: 'CP1251',\n\n // Sami_Norway_*\n [0x043B]: 'CP1252',\n\n // Kazakh_*\n [0x043F]: 'CP1251',\n\n // Turkmen_*\n [0x0442]: 'CP1250',\n\n // Uzbek_Latin_*\n [0x0443]: 'CP1254',\n\n // Tatar_*\n [0x0444]: 'CP1251',\n\n // Welsh_*\n [0x0452]: 'CP1252',\n\n // Frisian_*\n [0x0462]: 'CP1252',\n\n // Bashkir_*\n [0x046D]: 'CP1251',\n\n // Mapudungan_*\n [0x047A]: 'CP1252',\n\n // Mohawk_*\n [0x047C]: 'CP1252',\n\n // Breton_*\n [0x047E]: 'CP1252',\n\n // Uighur_*\n [0x0480]: 'CP1256',\n\n // Corsican_*\n [0x0483]: 'CP1252',\n\n // Yakut_*\n [0x0485]: 'CP1251',\n\n // Dari_*\n [0x048C]: 'CP1256',\n\n // Chinese_PRC_*\n // Chinese_Simplified_Pinyin_*\n // Chinese_PRC_Stroke_*\n // Chinese_Simplified_Stroke_Order_*\n [0x0804]: 'CP936',\n\n // Serbian_Latin_*\n [0x081A]: 'CP1250',\n\n // Azeri_Cyrillic_*\n [0x082C]: 'CP1251',\n\n // Sami_Sweden_Finland_*\n [0x083B]: 'CP1252',\n\n // Tamazight_*\n [0x085F]: 'CP1252',\n\n // Chinese_Hong_Kong_Stroke_*\n [0x0C04]: 'CP950',\n\n // Modern_Spanish_*\n [0x0C0A]: 'CP1252',\n\n // Serbian_Cyrillic_*\n [0x0C1A]: 'CP1251',\n\n // Chinese_Traditional_Pinyin_*\n // Chinese_Traditional_Stroke_Order_*\n [0x1404]: 'CP950',\n\n // Bosnian_Latin_*\n [0x141A]: 'CP1250',\n\n // Bosnian_Cyrillic_*\n [0x201A]: 'CP1251',\n\n // German\n // German_PhoneBook_*\n [0x0407]: 'CP1252',\n\n // Georgian_Modern_Sort_*\n [0x0437]: 'CP1252'\n};\n\nexport const codepageBySortId: { [key: number]: Encoding } = {\n [30]: 'CP437', // SQL_Latin1_General_CP437_BIN\n [31]: 'CP437', // SQL_Latin1_General_CP437_CS_AS\n [32]: 'CP437', // SQL_Latin1_General_CP437_CI_AS\n [33]: 'CP437', // SQL_Latin1_General_Pref_CP437_CI_AS\n [34]: 'CP437', // SQL_Latin1_General_CP437_CI_AI\n [40]: 'CP850', // SQL_Latin1_General_CP850_BIN\n [41]: 'CP850', // SQL_Latin1_General_CP850_CS_AS\n [42]: 'CP850', // SQL_Latin1_General_CP850_CI_AS\n [43]: 'CP850', // SQL_Latin1_General_Pref_CP850_CI_AS\n [44]: 'CP850', // SQL_Latin1_General_CP850_CI_AI\n [49]: 'CP850', // SQL_1xCompat_CP850_CI_AS\n [51]: 'CP1252', // SQL_Latin1_General_Cp1_CS_AS_KI_WI\n [52]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AS_KI_WI\n [53]: 'CP1252', // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI\n [54]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AI_KI_WI\n [55]: 'CP850', // SQL_AltDiction_CP850_CS_AS\n [56]: 'CP850', // SQL_AltDiction_Pref_CP850_CI_AS\n [57]: 'CP850', // SQL_AltDiction_CP850_CI_AI\n [58]: 'CP850', // SQL_Scandinavian_Pref_CP850_CI_AS\n [59]: 'CP850', // SQL_Scandinavian_CP850_CS_AS\n [60]: 'CP850', // SQL_Scandinavian_CP850_CI_AS\n [61]: 'CP850', // SQL_AltDiction_CP850_CI_AS\n [80]: 'CP1250', // SQL_Latin1_General_1250_BIN\n [81]: 'CP1250', // SQL_Latin1_General_CP1250_CS_AS\n [82]: 'CP1250', // SQL_Latin1_General_Cp1250_CI_AS_KI_WI\n [83]: 'CP1250', // SQL_Czech_Cp1250_CS_AS_KI_WI\n [84]: 'CP1250', // SQL_Czech_Cp1250_CI_AS_KI_WI\n [85]: 'CP1250', // SQL_Hungarian_Cp1250_CS_AS_KI_WI\n [86]: 'CP1250', // SQL_Hungarian_Cp1250_CI_AS_KI_WI\n [87]: 'CP1250', // SQL_Polish_Cp1250_CS_AS_KI_WI\n [88]: 'CP1250', // SQL_Polish_Cp1250_CI_AS_KI_WI\n [89]: 'CP1250', // SQL_Romanian_Cp1250_CS_AS_KI_WI\n [90]: 'CP1250', // SQL_Romanian_Cp1250_CI_AS_KI_WI\n [91]: 'CP1250', // SQL_Croatian_Cp1250_CS_AS_KI_WI\n [92]: 'CP1250', // SQL_Croatian_Cp1250_CI_AS_KI_WI\n [93]: 'CP1250', // SQL_Slovak_Cp1250_CS_AS_KI_WI\n [94]: 'CP1250', // SQL_Slovak_Cp1250_CI_AS_KI_WI\n [95]: 'CP1250', // SQL_Slovenian_Cp1250_CS_AS_KI_WI\n [96]: 'CP1250', // SQL_Slovenian_Cp1250_CI_AS_KI_WI\n [104]: 'CP1251', // SQL_Latin1_General_1251_BIN\n [105]: 'CP1251', // SQL_Latin1_General_CP1251_CS_AS\n [106]: 'CP1251', // SQL_Latin1_General_CP1251_CI_AS\n [107]: 'CP1251', // SQL_Ukrainian_Cp1251_CS_AS_KI_WI\n [108]: 'CP1251', // SQL_Ukrainian_Cp1251_CI_AS_KI_WI\n [112]: 'CP1253', // SQL_Latin1_General_1253_BIN\n [113]: 'CP1253', // SQL_Latin1_General_CP1253_CS_AS\n [114]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AS\n [120]: 'CP1253', // SQL_MixDiction_CP1253_CS_AS\n [121]: 'CP1253', // SQL_AltDiction_CP1253_CS_AS\n [122]: 'CP1253', // SQL_AltDiction2_CP1253_CS_AS\n [124]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AI\n [128]: 'CP1254', // SQL_Latin1_General_1254_BIN\n [129]: 'CP1254', // SQL_Latin1_General_Cp1254_CS_AS_KI_WI\n [130]: 'CP1254', // SQL_Latin1_General_Cp1254_CI_AS_KI_WI\n [136]: 'CP1255', // SQL_Latin1_General_1255_BIN\n [137]: 'CP1255', // SQL_Latin1_General_CP1255_CS_AS\n [138]: 'CP1255', // SQL_Latin1_General_CP1255_CI_AS\n [144]: 'CP1256', // SQL_Latin1_General_1256_BIN\n [145]: 'CP1256', // SQL_Latin1_General_CP1256_CS_AS\n [146]: 'CP1256', // SQL_Latin1_General_CP1256_CI_AS\n [152]: 'CP1257', // SQL_Latin1_General_1257_BIN\n [153]: 'CP1257', // SQL_Latin1_General_CP1257_CS_AS\n [154]: 'CP1257', // SQL_Latin1_General_CP1257_CI_AS\n [155]: 'CP1257', // SQL_Estonian_Cp1257_CS_AS_KI_WI\n [156]: 'CP1257', // SQL_Estonian_Cp1257_CI_AS_KI_WI\n [157]: 'CP1257', // SQL_Latvian_Cp1257_CS_AS_KI_WI\n [158]: 'CP1257', // SQL_Latvian_Cp1257_CI_AS_KI_WI\n [159]: 'CP1257', // SQL_Lithuanian_Cp1257_CS_AS_KI_WI\n [160]: 'CP1257', // SQL_Lithuanian_Cp1257_CI_AS_KI_WI\n [183]: 'CP1252', // SQL_Danish_Pref_Cp1_CI_AS_KI_WI\n [184]: 'CP1252', // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI\n [185]: 'CP1252', // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI\n [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI\n};\n\nexport const Flags = {\n IGNORE_CASE: 1 << 0,\n IGNORE_ACCENT: 1 << 1,\n IGNORE_KANA: 1 << 2,\n IGNORE_WIDTH: 1 << 3,\n BINARY: 1 << 4,\n BINARY2: 1 << 5,\n UTF8: 1 << 6,\n};\n\nexport class Collation {\n readonly lcid: number;\n readonly flags: number;\n readonly version: number;\n readonly sortId: number;\n readonly codepage: Encoding | undefined;\n\n private buffer: Buffer | undefined;\n\n static fromBuffer(buffer: Buffer, offset = 0) {\n let lcid = (buffer[offset + 2] & 0x0F) << 16;\n lcid |= buffer[offset + 1] << 8;\n lcid |= buffer[offset + 0];\n\n let flags = (buffer[offset + 3] & 0x0F) << 4;\n flags |= (buffer[offset + 2] & 0xF0) >>> 4;\n\n const version = (buffer[offset + 3] & 0xF0) >>> 4;\n\n const sortId = buffer[offset + 4];\n\n return new this(lcid, flags, version, sortId);\n }\n\n constructor(lcid: number, flags: number, version: number, sortId: number) {\n this.buffer = undefined;\n\n this.lcid = lcid;\n this.flags = flags;\n this.version = version;\n this.sortId = sortId;\n\n if (this.flags & Flags.UTF8) {\n this.codepage = 'utf-8';\n } else if (this.sortId) {\n this.codepage = codepageBySortId[this.sortId];\n } else {\n // The last 16 bits of the LCID are the language id.\n // The first 4 bits define additional sort orders.\n const languageId = this.lcid & 0xFFFF;\n this.codepage = codepageByLanguageId[languageId];\n }\n }\n\n toBuffer(): Buffer {\n if (this.buffer) {\n return this.buffer;\n }\n\n this.buffer = Buffer.alloc(5);\n\n this.buffer[0] = this.lcid & 0xFF;\n this.buffer[1] = (this.lcid >>> 8) & 0xFF;\n this.buffer[2] = ((this.lcid >>> 16) & 0x0F) | ((this.flags & 0x0F) << 4);\n this.buffer[3] = ((this.flags & 0xF0) >>> 4) | ((this.version & 0x0F) << 4);\n this.buffer[4] = this.sortId & 0xFF;\n\n return this.buffer;\n }\n}\n"],"mappings":";;;;;;AAEA;AACO,MAAMA,oBAAiD,GAAG;EAC/D;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA;EACA;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA;EACA;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA;EACA;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA,CAAC,MAAM,GAAG,OAAO;EAEjB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA;EACA,CAAC,MAAM,GAAG,QAAQ;EAElB;EACA,CAAC,MAAM,GAAG;AACZ,CAAC;AAACC,OAAA,CAAAD,oBAAA,GAAAA,oBAAA;AAEK,MAAME,gBAA6C,GAAG;EAC3D,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC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"}
|
|
1
|
+
{"version":3,"file":"collation.js","names":["codepageByLanguageId","exports","codepageBySortId","Flags","IGNORE_CASE","IGNORE_ACCENT","IGNORE_KANA","IGNORE_WIDTH","BINARY","BINARY2","UTF8","Collation","fromBuffer","buffer","offset","lcid","flags","version","sortId","constructor","undefined","codepage","languageId","toBuffer","Buffer","alloc"],"sources":["../src/collation.ts"],"sourcesContent":["type Encoding = 'utf-8' | 'CP437' | 'CP850' | 'CP874' | 'CP932' | 'CP936' | 'CP949' | 'CP950' | 'CP1250' | 'CP1251' | 'CP1252' | 'CP1253' | 'CP1254' | 'CP1255' | 'CP1256' | 'CP1257' | 'CP1258';\n\n// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx\nexport const codepageByLanguageId: { [key: number]: Encoding } = {\n // Arabic_*\n [0x0401]: 'CP1256',\n\n // Chinese_Taiwan_Stroke_*\n // Chinese_Traditional_Stroke_Count_*\n // Chinese_Taiwan_Bopomofo_*\n // Chinese_Traditional_Bopomofo_*\n [0x0404]: 'CP950',\n\n // Czech_*\n [0x0405]: 'CP1250',\n\n // Danish_Greenlandic_*\n // Danish_Norwegian_*\n [0x0406]: 'CP1252',\n\n // Greek_*\n [0x0408]: 'CP1253',\n\n // Latin1_General_*\n [0x0409]: 'CP1252',\n\n // Traditional_Spanish_*\n [0x040A]: 'CP1252',\n\n // Finnish_Swedish_*\n [0x040B]: 'CP1252',\n\n // French_*\n [0x040C]: 'CP1252',\n\n // Hebrew_*\n [0x040D]: 'CP1255',\n\n // Hungarian_*\n // Hungarian_Technical_*\n [0x040E]: 'CP1250',\n\n // Icelandic_*\n [0x040F]: 'CP1252',\n\n // Japanese_*\n // Japanese_XJIS_*\n // Japanese_Unicode_*\n // Japanese_Bushu_Kakusu_*\n [0x0411]: 'CP932',\n\n // Korean_*\n // Korean_Wansung_*\n [0x0412]: 'CP949',\n\n // Norwegian_*\n [0x0414]: 'CP1252',\n\n // Polish_*\n [0x0415]: 'CP1250',\n\n // Romansh_*\n [0x0417]: 'CP1252',\n\n // Romanian_*\n [0x0418]: 'CP1250',\n\n // Cyrillic_*\n [0x0419]: 'CP1251',\n\n // Croatian_*\n [0x041A]: 'CP1250',\n\n // Slovak_*\n [0x041B]: 'CP1250',\n\n // Albanian_*\n [0x041C]: 'CP1250',\n\n // Thai_*\n [0x041E]: 'CP874',\n\n // Turkish_*\n [0x041F]: 'CP1254',\n\n // Urdu_*\n [0x0420]: 'CP1256',\n\n // Ukrainian_*\n [0x0422]: 'CP1251',\n\n // Slovenian_*\n [0x0424]: 'CP1250',\n\n // Estonian_*\n [0x0425]: 'CP1257',\n\n // Latvian_*\n [0x0426]: 'CP1257',\n\n // Lithuanian_*\n [0x0427]: 'CP1257',\n\n // Persian_*\n [0x0429]: 'CP1256',\n\n // Vietnamese_*\n [0x042A]: 'CP1258',\n\n // Azeri_Latin_*\n [0x042C]: 'CP1254',\n\n // Upper_Sorbian_*\n [0x042E]: 'CP1252',\n\n // Macedonian_FYROM_*\n [0x042F]: 'CP1251',\n\n // Sami_Norway_*\n [0x043B]: 'CP1252',\n\n // Kazakh_*\n [0x043F]: 'CP1251',\n\n // Turkmen_*\n [0x0442]: 'CP1250',\n\n // Uzbek_Latin_*\n [0x0443]: 'CP1254',\n\n // Tatar_*\n [0x0444]: 'CP1251',\n\n // Welsh_*\n [0x0452]: 'CP1252',\n\n // Frisian_*\n [0x0462]: 'CP1252',\n\n // Bashkir_*\n [0x046D]: 'CP1251',\n\n // Mapudungan_*\n [0x047A]: 'CP1252',\n\n // Mohawk_*\n [0x047C]: 'CP1252',\n\n // Breton_*\n [0x047E]: 'CP1252',\n\n // Uighur_*\n [0x0480]: 'CP1256',\n\n // Corsican_*\n [0x0483]: 'CP1252',\n\n // Yakut_*\n [0x0485]: 'CP1251',\n\n // Dari_*\n [0x048C]: 'CP1256',\n\n // Chinese_PRC_*\n // Chinese_Simplified_Pinyin_*\n // Chinese_PRC_Stroke_*\n // Chinese_Simplified_Stroke_Order_*\n [0x0804]: 'CP936',\n\n // Serbian_Latin_*\n [0x081A]: 'CP1250',\n\n // Azeri_Cyrillic_*\n [0x082C]: 'CP1251',\n\n // Sami_Sweden_Finland_*\n [0x083B]: 'CP1252',\n\n // Tamazight_*\n [0x085F]: 'CP1252',\n\n // Chinese_Hong_Kong_Stroke_*\n [0x0C04]: 'CP950',\n\n // Modern_Spanish_*\n [0x0C0A]: 'CP1252',\n\n // Serbian_Cyrillic_*\n [0x0C1A]: 'CP1251',\n\n // Chinese_Traditional_Pinyin_*\n // Chinese_Traditional_Stroke_Order_*\n [0x1404]: 'CP950',\n\n // Bosnian_Latin_*\n [0x141A]: 'CP1250',\n\n // Bosnian_Cyrillic_*\n [0x201A]: 'CP1251',\n\n // German\n // German_PhoneBook_*\n [0x0407]: 'CP1252',\n\n // Georgian_Modern_Sort_*\n [0x0437]: 'CP1252'\n};\n\nexport const codepageBySortId: { [key: number]: Encoding } = {\n [30]: 'CP437', // SQL_Latin1_General_CP437_BIN\n [31]: 'CP437', // SQL_Latin1_General_CP437_CS_AS\n [32]: 'CP437', // SQL_Latin1_General_CP437_CI_AS\n [33]: 'CP437', // SQL_Latin1_General_Pref_CP437_CI_AS\n [34]: 'CP437', // SQL_Latin1_General_CP437_CI_AI\n [40]: 'CP850', // SQL_Latin1_General_CP850_BIN\n [41]: 'CP850', // SQL_Latin1_General_CP850_CS_AS\n [42]: 'CP850', // SQL_Latin1_General_CP850_CI_AS\n [43]: 'CP850', // SQL_Latin1_General_Pref_CP850_CI_AS\n [44]: 'CP850', // SQL_Latin1_General_CP850_CI_AI\n [49]: 'CP850', // SQL_1xCompat_CP850_CI_AS\n [51]: 'CP1252', // SQL_Latin1_General_Cp1_CS_AS_KI_WI\n [52]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AS_KI_WI\n [53]: 'CP1252', // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI\n [54]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AI_KI_WI\n [55]: 'CP850', // SQL_AltDiction_CP850_CS_AS\n [56]: 'CP850', // SQL_AltDiction_Pref_CP850_CI_AS\n [57]: 'CP850', // SQL_AltDiction_CP850_CI_AI\n [58]: 'CP850', // SQL_Scandinavian_Pref_CP850_CI_AS\n [59]: 'CP850', // SQL_Scandinavian_CP850_CS_AS\n [60]: 'CP850', // SQL_Scandinavian_CP850_CI_AS\n [61]: 'CP850', // SQL_AltDiction_CP850_CI_AS\n [80]: 'CP1250', // SQL_Latin1_General_1250_BIN\n [81]: 'CP1250', // SQL_Latin1_General_CP1250_CS_AS\n [82]: 'CP1250', // SQL_Latin1_General_Cp1250_CI_AS_KI_WI\n [83]: 'CP1250', // SQL_Czech_Cp1250_CS_AS_KI_WI\n [84]: 'CP1250', // SQL_Czech_Cp1250_CI_AS_KI_WI\n [85]: 'CP1250', // SQL_Hungarian_Cp1250_CS_AS_KI_WI\n [86]: 'CP1250', // SQL_Hungarian_Cp1250_CI_AS_KI_WI\n [87]: 'CP1250', // SQL_Polish_Cp1250_CS_AS_KI_WI\n [88]: 'CP1250', // SQL_Polish_Cp1250_CI_AS_KI_WI\n [89]: 'CP1250', // SQL_Romanian_Cp1250_CS_AS_KI_WI\n [90]: 'CP1250', // SQL_Romanian_Cp1250_CI_AS_KI_WI\n [91]: 'CP1250', // SQL_Croatian_Cp1250_CS_AS_KI_WI\n [92]: 'CP1250', // SQL_Croatian_Cp1250_CI_AS_KI_WI\n [93]: 'CP1250', // SQL_Slovak_Cp1250_CS_AS_KI_WI\n [94]: 'CP1250', // SQL_Slovak_Cp1250_CI_AS_KI_WI\n [95]: 'CP1250', // SQL_Slovenian_Cp1250_CS_AS_KI_WI\n [96]: 'CP1250', // SQL_Slovenian_Cp1250_CI_AS_KI_WI\n [104]: 'CP1251', // SQL_Latin1_General_1251_BIN\n [105]: 'CP1251', // SQL_Latin1_General_CP1251_CS_AS\n [106]: 'CP1251', // SQL_Latin1_General_CP1251_CI_AS\n [107]: 'CP1251', // SQL_Ukrainian_Cp1251_CS_AS_KI_WI\n [108]: 'CP1251', // SQL_Ukrainian_Cp1251_CI_AS_KI_WI\n [112]: 'CP1253', // SQL_Latin1_General_1253_BIN\n [113]: 'CP1253', // SQL_Latin1_General_CP1253_CS_AS\n [114]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AS\n [120]: 'CP1253', // SQL_MixDiction_CP1253_CS_AS\n [121]: 'CP1253', // SQL_AltDiction_CP1253_CS_AS\n [122]: 'CP1253', // SQL_AltDiction2_CP1253_CS_AS\n [124]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AI\n [128]: 'CP1254', // SQL_Latin1_General_1254_BIN\n [129]: 'CP1254', // SQL_Latin1_General_Cp1254_CS_AS_KI_WI\n [130]: 'CP1254', // SQL_Latin1_General_Cp1254_CI_AS_KI_WI\n [136]: 'CP1255', // SQL_Latin1_General_1255_BIN\n [137]: 'CP1255', // SQL_Latin1_General_CP1255_CS_AS\n [138]: 'CP1255', // SQL_Latin1_General_CP1255_CI_AS\n [144]: 'CP1256', // SQL_Latin1_General_1256_BIN\n [145]: 'CP1256', // SQL_Latin1_General_CP1256_CS_AS\n [146]: 'CP1256', // SQL_Latin1_General_CP1256_CI_AS\n [152]: 'CP1257', // SQL_Latin1_General_1257_BIN\n [153]: 'CP1257', // SQL_Latin1_General_CP1257_CS_AS\n [154]: 'CP1257', // SQL_Latin1_General_CP1257_CI_AS\n [155]: 'CP1257', // SQL_Estonian_Cp1257_CS_AS_KI_WI\n [156]: 'CP1257', // SQL_Estonian_Cp1257_CI_AS_KI_WI\n [157]: 'CP1257', // SQL_Latvian_Cp1257_CS_AS_KI_WI\n [158]: 'CP1257', // SQL_Latvian_Cp1257_CI_AS_KI_WI\n [159]: 'CP1257', // SQL_Lithuanian_Cp1257_CS_AS_KI_WI\n [160]: 'CP1257', // SQL_Lithuanian_Cp1257_CI_AS_KI_WI\n [183]: 'CP1252', // SQL_Danish_Pref_Cp1_CI_AS_KI_WI\n [184]: 'CP1252', // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI\n [185]: 'CP1252', // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI\n [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI\n};\n\nexport const Flags = {\n IGNORE_CASE: 1 << 0,\n IGNORE_ACCENT: 1 << 1,\n IGNORE_KANA: 1 << 2,\n IGNORE_WIDTH: 1 << 3,\n BINARY: 1 << 4,\n BINARY2: 1 << 5,\n UTF8: 1 << 6,\n};\n\nexport class Collation {\n declare readonly lcid: number;\n declare readonly flags: number;\n declare readonly version: number;\n declare readonly sortId: number;\n declare readonly codepage: Encoding | undefined;\n\n declare private buffer: Buffer | undefined;\n\n static fromBuffer(buffer: Buffer, offset = 0) {\n let lcid = (buffer[offset + 2] & 0x0F) << 16;\n lcid |= buffer[offset + 1] << 8;\n lcid |= buffer[offset + 0];\n\n let flags = (buffer[offset + 3] & 0x0F) << 4;\n flags |= (buffer[offset + 2] & 0xF0) >>> 4;\n\n const version = (buffer[offset + 3] & 0xF0) >>> 4;\n\n const sortId = buffer[offset + 4];\n\n return new this(lcid, flags, version, sortId);\n }\n\n constructor(lcid: number, flags: number, version: number, sortId: number) {\n this.buffer = undefined;\n\n this.lcid = lcid;\n this.flags = flags;\n this.version = version;\n this.sortId = sortId;\n\n if (this.flags & Flags.UTF8) {\n this.codepage = 'utf-8';\n } else if (this.sortId) {\n this.codepage = codepageBySortId[this.sortId];\n } else {\n // The last 16 bits of the LCID are the language id.\n // The first 4 bits define additional sort orders.\n const languageId = this.lcid & 0xFFFF;\n this.codepage = codepageByLanguageId[languageId];\n }\n }\n\n toBuffer(): Buffer {\n if (this.buffer) {\n return this.buffer;\n }\n\n this.buffer = Buffer.alloc(5);\n\n this.buffer[0] = this.lcid & 0xFF;\n this.buffer[1] = (this.lcid >>> 8) & 0xFF;\n this.buffer[2] = ((this.lcid >>> 16) & 0x0F) | ((this.flags & 0x0F) << 4);\n this.buffer[3] = ((this.flags & 0xF0) >>> 4) | ((this.version & 0x0F) << 4);\n this.buffer[4] = this.sortId & 0xFF;\n\n return this.buffer;\n }\n}\n"],"mappings":"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,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC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"}
|