tedious 16.2.0 → 16.4.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/lib/all-headers.js +1 -2
- package/lib/all-headers.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
- package/lib/always-encrypted/cek-entry.js +8 -12
- package/lib/always-encrypted/cek-entry.js.map +1 -0
- package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
- package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
- package/lib/always-encrypted/key-crypto.js +5 -30
- package/lib/always-encrypted/key-crypto.js.map +1 -0
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
- package/lib/always-encrypted/symmetric-key-cache.js +2 -13
- package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
- package/lib/always-encrypted/symmetric-key.js +3 -8
- package/lib/always-encrypted/symmetric-key.js.map +1 -0
- package/lib/always-encrypted/types.js +19 -27
- package/lib/always-encrypted/types.js.map +1 -0
- package/lib/always-encrypted/utils.js +2 -6
- package/lib/always-encrypted/utils.js.map +1 -0
- package/lib/bulk-load-payload.js +7 -15
- package/lib/bulk-load-payload.js.map +1 -0
- package/lib/bulk-load.js +58 -131
- package/lib/bulk-load.js.map +1 -0
- package/lib/collation.js +7 -15
- package/lib/collation.js.map +1 -0
- package/lib/connection.js +307 -534
- package/lib/connection.js.map +1 -0
- package/lib/connector.js +6 -37
- package/lib/connector.js.map +1 -0
- package/lib/data-type.js +2 -43
- package/lib/data-type.js.map +1 -0
- package/lib/data-types/bigint.js +1 -15
- package/lib/data-types/bigint.js.map +1 -0
- package/lib/data-types/binary.js +1 -12
- package/lib/data-types/binary.js.map +1 -0
- package/lib/data-types/bit.js +1 -11
- package/lib/data-types/bit.js.map +1 -0
- package/lib/data-types/bitn.js +1 -7
- package/lib/data-types/bitn.js.map +1 -0
- package/lib/data-types/char.js +1 -20
- package/lib/data-types/char.js.map +1 -0
- package/lib/data-types/date.js +1 -15
- package/lib/data-types/date.js.map +1 -0
- package/lib/data-types/datetime.js +3 -20
- package/lib/data-types/datetime.js.map +1 -0
- package/lib/data-types/datetime2.js +1 -26
- package/lib/data-types/datetime2.js.map +1 -0
- package/lib/data-types/datetimen.js +1 -7
- package/lib/data-types/datetimen.js.map +1 -0
- package/lib/data-types/datetimeoffset.js +1 -23
- package/lib/data-types/datetimeoffset.js.map +1 -0
- package/lib/data-types/decimal.js +1 -18
- package/lib/data-types/decimal.js.map +1 -0
- package/lib/data-types/decimaln.js +1 -7
- package/lib/data-types/decimaln.js.map +1 -0
- package/lib/data-types/float.js +1 -13
- package/lib/data-types/float.js.map +1 -0
- package/lib/data-types/floatn.js +1 -7
- package/lib/data-types/floatn.js.map +1 -0
- package/lib/data-types/image.js +1 -10
- package/lib/data-types/image.js.map +1 -0
- package/lib/data-types/int.js +1 -14
- package/lib/data-types/int.js.map +1 -0
- package/lib/data-types/intn.js +1 -7
- package/lib/data-types/intn.js.map +1 -0
- package/lib/data-types/money.js +1 -12
- package/lib/data-types/money.js.map +1 -0
- package/lib/data-types/moneyn.js +1 -7
- package/lib/data-types/moneyn.js.map +1 -0
- package/lib/data-types/nchar.js +1 -14
- package/lib/data-types/nchar.js.map +1 -0
- package/lib/data-types/ntext.js +1 -10
- package/lib/data-types/ntext.js.map +1 -0
- package/lib/data-types/null.js +1 -7
- package/lib/data-types/null.js.map +1 -0
- package/lib/data-types/numeric.js +1 -18
- package/lib/data-types/numeric.js.map +1 -0
- package/lib/data-types/numericn.js +1 -7
- package/lib/data-types/numericn.js.map +1 -0
- package/lib/data-types/nvarchar.js +1 -22
- package/lib/data-types/nvarchar.js.map +1 -0
- package/lib/data-types/real.js +1 -13
- package/lib/data-types/real.js.map +1 -0
- package/lib/data-types/smalldatetime.js +1 -14
- package/lib/data-types/smalldatetime.js.map +1 -0
- package/lib/data-types/smallint.js +1 -14
- package/lib/data-types/smallint.js.map +1 -0
- package/lib/data-types/smallmoney.js +1 -13
- package/lib/data-types/smallmoney.js.map +1 -0
- package/lib/data-types/sql-variant.js +1 -6
- package/lib/data-types/sql-variant.js.map +1 -0
- package/lib/data-types/text.js +1 -18
- package/lib/data-types/text.js.map +1 -0
- package/lib/data-types/time.js +1 -22
- package/lib/data-types/time.js.map +1 -0
- package/lib/data-types/tinyint.js +1 -14
- package/lib/data-types/tinyint.js.map +1 -0
- package/lib/data-types/tvp.js +11 -27
- package/lib/data-types/tvp.js.map +1 -0
- package/lib/data-types/udt.js +1 -7
- package/lib/data-types/udt.js.map +1 -0
- package/lib/data-types/uniqueidentifier.js +1 -11
- package/lib/data-types/uniqueidentifier.js.map +1 -0
- package/lib/data-types/varbinary.js +1 -22
- package/lib/data-types/varbinary.js.map +1 -0
- package/lib/data-types/varchar.js +1 -23
- package/lib/data-types/varchar.js.map +1 -0
- package/lib/data-types/xml.js +1 -7
- package/lib/data-types/xml.js.map +1 -0
- package/lib/debug.js +4 -16
- package/lib/debug.js.map +1 -0
- package/lib/errors/abort-error.js +2 -5
- package/lib/errors/abort-error.js.map +1 -0
- package/lib/errors/timeout-error.js +2 -5
- package/lib/errors/timeout-error.js.map +1 -0
- package/lib/errors.js +10 -16
- package/lib/errors.js.map +1 -0
- package/lib/guid-parser.js +1 -7
- package/lib/guid-parser.js.map +1 -0
- package/lib/incoming-message-stream.js +9 -29
- package/lib/incoming-message-stream.js.map +1 -0
- package/lib/instance-lookup.js +3 -34
- package/lib/instance-lookup.js.map +1 -0
- package/lib/library.js +1 -1
- package/lib/library.js.map +1 -0
- package/lib/login7-payload.js +99 -100
- package/lib/login7-payload.js.map +1 -0
- package/lib/message-io.js +17 -45
- package/lib/message-io.js.map +1 -0
- package/lib/message.js +4 -8
- package/lib/message.js.map +1 -0
- package/lib/metadata-parser.js +1 -22
- package/lib/metadata-parser.js.map +1 -0
- package/lib/ntlm-payload.js +2 -22
- package/lib/ntlm-payload.js.map +1 -0
- package/lib/ntlm.js +1 -4
- package/lib/ntlm.js.map +1 -0
- package/lib/outgoing-message-stream.js +12 -21
- package/lib/outgoing-message-stream.js.map +1 -0
- package/lib/packet.js +2 -47
- package/lib/packet.js.map +1 -0
- package/lib/prelogin-payload.js +11 -54
- package/lib/prelogin-payload.js.map +1 -0
- package/lib/request.js +88 -66
- package/lib/request.js.map +1 -0
- package/lib/rpcrequest-payload.js +8 -35
- package/lib/rpcrequest-payload.js.map +1 -0
- package/lib/sender.js +1 -24
- package/lib/sender.js.map +1 -0
- package/lib/special-stored-procedure.js +1 -1
- package/lib/special-stored-procedure.js.map +1 -0
- package/lib/sqlbatch-payload.js +5 -18
- package/lib/sqlbatch-payload.js.map +1 -0
- package/lib/tds-versions.js +3 -3
- package/lib/tds-versions.js.map +1 -0
- package/lib/tedious.js +1 -12
- package/lib/tedious.js.map +1 -0
- package/lib/token/colmetadata-token-parser.js +1 -17
- package/lib/token/colmetadata-token-parser.js.map +1 -0
- package/lib/token/done-token-parser.js +2 -8
- package/lib/token/done-token-parser.js.map +1 -0
- package/lib/token/env-change-token-parser.js +7 -28
- package/lib/token/env-change-token-parser.js.map +1 -0
- package/lib/token/feature-ext-ack-parser.js +1 -10
- package/lib/token/feature-ext-ack-parser.js.map +1 -0
- package/lib/token/fedauth-info-parser.js +2 -10
- package/lib/token/fedauth-info-parser.js.map +1 -0
- package/lib/token/handler.js +39 -149
- package/lib/token/handler.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +1 -5
- package/lib/token/infoerror-token-parser.js.map +1 -0
- package/lib/token/loginack-token-parser.js +1 -6
- package/lib/token/loginack-token-parser.js.map +1 -0
- package/lib/token/nbcrow-token-parser.js +2 -15
- package/lib/token/nbcrow-token-parser.js.map +1 -0
- package/lib/token/order-token-parser.js +2 -7
- package/lib/token/order-token-parser.js.map +1 -0
- package/lib/token/returnstatus-token-parser.js +2 -4
- package/lib/token/returnstatus-token-parser.js.map +1 -0
- package/lib/token/returnvalue-token-parser.js +4 -9
- package/lib/token/returnvalue-token-parser.js.map +1 -0
- package/lib/token/row-token-parser.js +2 -11
- package/lib/token/row-token-parser.js.map +1 -0
- package/lib/token/sspi-token-parser.js +1 -5
- package/lib/token/sspi-token-parser.js.map +1 -0
- package/lib/token/stream-parser.js +24 -86
- package/lib/token/stream-parser.js.map +1 -0
- package/lib/token/token-stream-parser.js +4 -13
- package/lib/token/token-stream-parser.js.map +1 -0
- package/lib/token/token.js +88 -168
- package/lib/token/token.js.map +1 -0
- package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
- package/lib/transaction.js +9 -33
- package/lib/transaction.js.map +1 -0
- package/lib/transient-error-lookup.js +1 -4
- package/lib/transient-error-lookup.js.map +1 -0
- package/lib/utils/with-timeout.js +1 -9
- package/lib/utils/with-timeout.js.map +1 -0
- package/lib/value-parser.js +1 -143
- package/lib/value-parser.js.map +1 -0
- package/package.json +27 -71
package/lib/prelogin-payload.js
CHANGED
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _sprintfJs = require("sprintf-js");
|
|
9
|
-
|
|
10
8
|
var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
const optionBufferSize = 20;
|
|
15
11
|
const TOKEN = {
|
|
16
12
|
VERSION: 0x00,
|
|
@@ -28,27 +24,33 @@ const ENCRYPT = {
|
|
|
28
24
|
REQ: 0x03
|
|
29
25
|
};
|
|
30
26
|
const encryptByValue = {};
|
|
31
|
-
|
|
32
27
|
for (const name in ENCRYPT) {
|
|
33
28
|
const value = ENCRYPT[name];
|
|
34
29
|
encryptByValue[value] = name;
|
|
35
30
|
}
|
|
36
|
-
|
|
37
31
|
const MARS = {
|
|
38
32
|
OFF: 0x00,
|
|
39
33
|
ON: 0x01
|
|
40
34
|
};
|
|
41
35
|
const marsByValue = {};
|
|
42
|
-
|
|
43
36
|
for (const name in MARS) {
|
|
44
37
|
const value = MARS[name];
|
|
45
38
|
marsByValue[value] = name;
|
|
46
39
|
}
|
|
47
|
-
|
|
48
40
|
/*
|
|
49
41
|
s2.2.6.4
|
|
50
42
|
*/
|
|
51
43
|
class PreloginPayload {
|
|
44
|
+
data;
|
|
45
|
+
options;
|
|
46
|
+
version;
|
|
47
|
+
encryption;
|
|
48
|
+
encryptionString;
|
|
49
|
+
instance;
|
|
50
|
+
threadId;
|
|
51
|
+
mars;
|
|
52
|
+
marsString;
|
|
53
|
+
fedAuthRequired;
|
|
52
54
|
constructor(bufferOrOptions = {
|
|
53
55
|
encrypt: false,
|
|
54
56
|
version: {
|
|
@@ -58,17 +60,6 @@ class PreloginPayload {
|
|
|
58
60
|
subbuild: 0
|
|
59
61
|
}
|
|
60
62
|
}) {
|
|
61
|
-
this.data = void 0;
|
|
62
|
-
this.options = void 0;
|
|
63
|
-
this.version = void 0;
|
|
64
|
-
this.encryption = void 0;
|
|
65
|
-
this.encryptionString = void 0;
|
|
66
|
-
this.instance = void 0;
|
|
67
|
-
this.threadId = void 0;
|
|
68
|
-
this.mars = void 0;
|
|
69
|
-
this.marsString = void 0;
|
|
70
|
-
this.fedAuthRequired = void 0;
|
|
71
|
-
|
|
72
63
|
if (bufferOrOptions instanceof Buffer) {
|
|
73
64
|
this.data = bufferOrOptions;
|
|
74
65
|
this.options = {
|
|
@@ -84,25 +75,19 @@ class PreloginPayload {
|
|
|
84
75
|
this.options = bufferOrOptions;
|
|
85
76
|
this.createOptions();
|
|
86
77
|
}
|
|
87
|
-
|
|
88
78
|
this.extractOptions();
|
|
89
79
|
}
|
|
90
|
-
|
|
91
80
|
createOptions() {
|
|
92
81
|
const options = [this.createVersionOption(), this.createEncryptionOption(), this.createInstanceOption(), this.createThreadIdOption(), this.createMarsOption(), this.createFedAuthOption()];
|
|
93
82
|
let length = 0;
|
|
94
|
-
|
|
95
83
|
for (let i = 0, len = options.length; i < len; i++) {
|
|
96
84
|
const option = options[i];
|
|
97
85
|
length += 5 + option.data.length;
|
|
98
86
|
}
|
|
99
|
-
|
|
100
87
|
length++; // terminator
|
|
101
|
-
|
|
102
88
|
this.data = Buffer.alloc(length, 0);
|
|
103
89
|
let optionOffset = 0;
|
|
104
90
|
let optionDataOffset = 5 * options.length + 1;
|
|
105
|
-
|
|
106
91
|
for (let j = 0, len = options.length; j < len; j++) {
|
|
107
92
|
const option = options[j];
|
|
108
93
|
this.data.writeUInt8(option.token, optionOffset + 0);
|
|
@@ -112,10 +97,8 @@ class PreloginPayload {
|
|
|
112
97
|
option.data.copy(this.data, optionDataOffset);
|
|
113
98
|
optionDataOffset += option.data.length;
|
|
114
99
|
}
|
|
115
|
-
|
|
116
100
|
this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);
|
|
117
101
|
}
|
|
118
|
-
|
|
119
102
|
createVersionOption() {
|
|
120
103
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
121
104
|
buffer.writeUInt8(this.options.version.major);
|
|
@@ -127,22 +110,18 @@ class PreloginPayload {
|
|
|
127
110
|
data: buffer.data
|
|
128
111
|
};
|
|
129
112
|
}
|
|
130
|
-
|
|
131
113
|
createEncryptionOption() {
|
|
132
114
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
133
|
-
|
|
134
115
|
if (this.options.encrypt) {
|
|
135
116
|
buffer.writeUInt8(ENCRYPT.ON);
|
|
136
117
|
} else {
|
|
137
118
|
buffer.writeUInt8(ENCRYPT.NOT_SUP);
|
|
138
119
|
}
|
|
139
|
-
|
|
140
120
|
return {
|
|
141
121
|
token: TOKEN.ENCRYPTION,
|
|
142
122
|
data: buffer.data
|
|
143
123
|
};
|
|
144
124
|
}
|
|
145
|
-
|
|
146
125
|
createInstanceOption() {
|
|
147
126
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
148
127
|
buffer.writeUInt8(0x00);
|
|
@@ -151,7 +130,6 @@ class PreloginPayload {
|
|
|
151
130
|
data: buffer.data
|
|
152
131
|
};
|
|
153
132
|
}
|
|
154
|
-
|
|
155
133
|
createThreadIdOption() {
|
|
156
134
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
157
135
|
buffer.writeUInt32BE(0x00);
|
|
@@ -160,7 +138,6 @@ class PreloginPayload {
|
|
|
160
138
|
data: buffer.data
|
|
161
139
|
};
|
|
162
140
|
}
|
|
163
|
-
|
|
164
141
|
createMarsOption() {
|
|
165
142
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
166
143
|
buffer.writeUInt8(MARS.OFF);
|
|
@@ -169,7 +146,6 @@ class PreloginPayload {
|
|
|
169
146
|
data: buffer.data
|
|
170
147
|
};
|
|
171
148
|
}
|
|
172
|
-
|
|
173
149
|
createFedAuthOption() {
|
|
174
150
|
const buffer = new _writableTrackingBuffer.default(optionBufferSize);
|
|
175
151
|
buffer.writeUInt8(0x01);
|
|
@@ -178,48 +154,37 @@ class PreloginPayload {
|
|
|
178
154
|
data: buffer.data
|
|
179
155
|
};
|
|
180
156
|
}
|
|
181
|
-
|
|
182
157
|
extractOptions() {
|
|
183
158
|
let offset = 0;
|
|
184
|
-
|
|
185
159
|
while (this.data[offset] !== TOKEN.TERMINATOR) {
|
|
186
160
|
let dataOffset = this.data.readUInt16BE(offset + 1);
|
|
187
161
|
const dataLength = this.data.readUInt16BE(offset + 3);
|
|
188
|
-
|
|
189
162
|
switch (this.data[offset]) {
|
|
190
163
|
case TOKEN.VERSION:
|
|
191
164
|
this.extractVersion(dataOffset);
|
|
192
165
|
break;
|
|
193
|
-
|
|
194
166
|
case TOKEN.ENCRYPTION:
|
|
195
167
|
this.extractEncryption(dataOffset);
|
|
196
168
|
break;
|
|
197
|
-
|
|
198
169
|
case TOKEN.INSTOPT:
|
|
199
170
|
this.extractInstance(dataOffset);
|
|
200
171
|
break;
|
|
201
|
-
|
|
202
172
|
case TOKEN.THREADID:
|
|
203
173
|
if (dataLength > 0) {
|
|
204
174
|
this.extractThreadId(dataOffset);
|
|
205
175
|
}
|
|
206
|
-
|
|
207
176
|
break;
|
|
208
|
-
|
|
209
177
|
case TOKEN.MARS:
|
|
210
178
|
this.extractMars(dataOffset);
|
|
211
179
|
break;
|
|
212
|
-
|
|
213
180
|
case TOKEN.FEDAUTHREQUIRED:
|
|
214
181
|
this.extractFedAuth(dataOffset);
|
|
215
182
|
break;
|
|
216
183
|
}
|
|
217
|
-
|
|
218
184
|
offset += 5;
|
|
219
185
|
dataOffset += dataLength;
|
|
220
186
|
}
|
|
221
187
|
}
|
|
222
|
-
|
|
223
188
|
extractVersion(offset) {
|
|
224
189
|
this.version = {
|
|
225
190
|
major: this.data.readUInt8(offset + 0),
|
|
@@ -228,36 +193,28 @@ class PreloginPayload {
|
|
|
228
193
|
subbuild: this.data.readUInt16BE(offset + 4)
|
|
229
194
|
};
|
|
230
195
|
}
|
|
231
|
-
|
|
232
196
|
extractEncryption(offset) {
|
|
233
197
|
this.encryption = this.data.readUInt8(offset);
|
|
234
198
|
this.encryptionString = encryptByValue[this.encryption];
|
|
235
199
|
}
|
|
236
|
-
|
|
237
200
|
extractInstance(offset) {
|
|
238
201
|
this.instance = this.data.readUInt8(offset);
|
|
239
202
|
}
|
|
240
|
-
|
|
241
203
|
extractThreadId(offset) {
|
|
242
204
|
this.threadId = this.data.readUInt32BE(offset);
|
|
243
205
|
}
|
|
244
|
-
|
|
245
206
|
extractMars(offset) {
|
|
246
207
|
this.mars = this.data.readUInt8(offset);
|
|
247
208
|
this.marsString = marsByValue[this.mars];
|
|
248
209
|
}
|
|
249
|
-
|
|
250
210
|
extractFedAuth(offset) {
|
|
251
211
|
this.fedAuthRequired = this.data.readUInt8(offset);
|
|
252
212
|
}
|
|
253
|
-
|
|
254
213
|
toString(indent = '') {
|
|
255
214
|
return indent + 'PreLogin - ' + (0, _sprintfJs.sprintf)('version:%d.%d.%d.%d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)', this.version.major, this.version.minor, this.version.build, this.version.subbuild, this.encryption ? this.encryption : 0, this.encryptionString ? this.encryptionString : '', this.instance ? this.instance : 0, this.threadId ? this.threadId : 0, this.mars ? this.mars : 0, this.marsString ? this.marsString : '');
|
|
256
215
|
}
|
|
257
|
-
|
|
258
216
|
}
|
|
259
|
-
|
|
260
217
|
var _default = PreloginPayload;
|
|
261
218
|
exports.default = _default;
|
|
262
219
|
module.exports = PreloginPayload;
|
|
263
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25CdWZmZXJTaXplIiwiVE9LRU4iLCJWRVJTSU9OIiwiRU5DUllQVElPTiIsIklOU1RPUFQiLCJUSFJFQURJRCIsIk1BUlMiLCJGRURBVVRIUkVRVUlSRUQiLCJURVJNSU5BVE9SIiwiRU5DUllQVCIsIk9GRiIsIk9OIiwiTk9UX1NVUCIsIlJFUSIsImVuY3J5cHRCeVZhbHVlIiwibmFtZSIsInZhbHVlIiwibWFyc0J5VmFsdWUiLCJQcmVsb2dpblBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImJ1ZmZlck9yT3B0aW9ucyIsImVuY3J5cHQiLCJ2ZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsImJ1aWxkIiwic3ViYnVpbGQiLCJkYXRhIiwib3B0aW9ucyIsImVuY3J5cHRpb24iLCJlbmNyeXB0aW9uU3RyaW5nIiwiaW5zdGFuY2UiLCJ0aHJlYWRJZCIsIm1hcnMiLCJtYXJzU3RyaW5nIiwiZmVkQXV0aFJlcXVpcmVkIiwiQnVmZmVyIiwiY3JlYXRlT3B0aW9ucyIsImV4dHJhY3RPcHRpb25zIiwiY3JlYXRlVmVyc2lvbk9wdGlvbiIsImNyZWF0ZUVuY3J5cHRpb25PcHRpb24iLCJjcmVhdGVJbnN0YW5jZU9wdGlvbiIsImNyZWF0ZVRocmVhZElkT3B0aW9uIiwiY3JlYXRlTWFyc09wdGlvbiIsImNyZWF0ZUZlZEF1dGhPcHRpb24iLCJsZW5ndGgiLCJpIiwibGVuIiwib3B0aW9uIiwiYWxsb2MiLCJvcHRpb25PZmZzZXQiLCJvcHRpb25EYXRhT2Zmc2V0IiwiaiIsIndyaXRlVUludDgiLCJ0b2tlbiIsIndyaXRlVUludDE2QkUiLCJjb3B5IiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIndyaXRlVUludDMyQkUiLCJvZmZzZXQiLCJkYXRhT2Zmc2V0IiwicmVhZFVJbnQxNkJFIiwiZGF0YUxlbmd0aCIsImV4dHJhY3RWZXJzaW9uIiwiZXh0cmFjdEVuY3J5cHRpb24iLCJleHRyYWN0SW5zdGFuY2UiLCJleHRyYWN0VGhyZWFkSWQiLCJleHRyYWN0TWFycyIsImV4dHJhY3RGZWRBdXRoIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQzMkJFIiwidG9TdHJpbmciLCJpbmRlbnQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3ByZWxvZ2luLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ByaW50ZiB9IGZyb20gJ3NwcmludGYtanMnO1xuXG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBvcHRpb25CdWZmZXJTaXplID0gMjA7XG5cbmNvbnN0IFRPS0VOID0ge1xuICBWRVJTSU9OOiAweDAwLFxuICBFTkNSWVBUSU9OOiAweDAxLFxuICBJTlNUT1BUOiAweDAyLFxuICBUSFJFQURJRDogMHgwMyxcbiAgTUFSUzogMHgwNCxcbiAgRkVEQVVUSFJFUVVJUkVEOiAweDA2LFxuICBURVJNSU5BVE9SOiAweEZGXG59O1xuXG5jb25zdCBFTkNSWVBUOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBPRkY6IDB4MDAsXG4gIE9OOiAweDAxLFxuICBOT1RfU1VQOiAweDAyLFxuICBSRVE6IDB4MDNcbn07XG5cbmNvbnN0IGVuY3J5cHRCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBFTkNSWVBUKSB7XG4gIGNvbnN0IHZhbHVlID0gRU5DUllQVFtuYW1lXTtcbiAgZW5jcnlwdEJ5VmFsdWVbdmFsdWVdID0gbmFtZTtcbn1cblxuY29uc3QgTUFSUzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgT0ZGOiAweDAwLFxuICBPTjogMHgwMVxufTtcblxuY29uc3QgbWFyc0J5VmFsdWU6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7fTtcblxuZm9yIChjb25zdCBuYW1lIGluIE1BUlMpIHtcbiAgY29uc3QgdmFsdWUgPSBNQVJTW25hbWVdO1xuICBtYXJzQnlWYWx1ZVt2YWx1ZV0gPSBuYW1lO1xufVxuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IGJvb2xlYW47XG4gIHZlcnNpb246IHtcbiAgICBtYWpvcjogbnVtYmVyO1xuICAgIG1pbm9yOiBudW1iZXI7XG4gICAgYnVpbGQ6IG51bWJlcjtcbiAgICBzdWJidWlsZDogbnVtYmVyO1xuICB9O1xufVxuXG4vKlxuICBzMi4yLjYuNFxuICovXG5jbGFzcyBQcmVsb2dpblBheWxvYWQge1xuICBkYXRhITogQnVmZmVyO1xuICBvcHRpb25zOiBPcHRpb25zO1xuXG4gIHZlcnNpb24hOiB7XG4gICAgbWFqb3I6IG51bWJlcjtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIGJ1aWxkOiBudW1iZXI7XG4gICAgc3ViYnVpbGQ6IG51bWJlcjtcbiAgfTtcblxuICBlbmNyeXB0aW9uITogbnVtYmVyO1xuICBlbmNyeXB0aW9uU3RyaW5nITogc3RyaW5nO1xuXG4gIGluc3RhbmNlITogbnVtYmVyO1xuXG4gIHRocmVhZElkITogbnVtYmVyO1xuXG4gIG1hcnMhOiBudW1iZXI7XG4gIG1hcnNTdHJpbmchOiBzdHJpbmc7XG4gIGZlZEF1dGhSZXF1aXJlZCE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihidWZmZXJPck9wdGlvbnM6IEJ1ZmZlciB8IE9wdGlvbnMgPSB7IGVuY3J5cHQ6IGZhbHNlLCB2ZXJzaW9uOiB7IG1ham9yOiAwLCBtaW5vcjogMCwgYnVpbGQ6IDAsIHN1YmJ1aWxkOiAwIH0gfSkge1xuICAgIGlmIChidWZmZXJPck9wdGlvbnMgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGJ1ZmZlck9yT3B0aW9ucztcbiAgICAgIHRoaXMub3B0aW9ucyA9IHsgZW5jcnlwdDogZmFsc2UsIHZlcnNpb246IHsgbWFqb3I6IDAsIG1pbm9yOiAwLCBidWlsZDogMCwgc3ViYnVpbGQ6IDAgfSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBidWZmZXJPck9wdGlvbnM7XG4gICAgICB0aGlzLmNyZWF0ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgdGhpcy5leHRyYWN0T3B0aW9ucygpO1xuICB9XG5cbiAgY3JlYXRlT3B0aW9ucygpIHtcbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgdGhpcy5jcmVhdGVWZXJzaW9uT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZUVuY3J5cHRpb25PcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2VPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlVGhyZWFkSWRPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlTWFyc09wdGlvbigpLFxuICAgICAgdGhpcy5jcmVhdGVGZWRBdXRoT3B0aW9uKClcbiAgICBdO1xuXG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9wdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICBsZW5ndGggKz0gNSArIG9wdGlvbi5kYXRhLmxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoKys7IC8vIHRlcm1pbmF0b3JcbiAgICB0aGlzLmRhdGEgPSBCdWZmZXIuYWxsb2MobGVuZ3RoLCAwKTtcbiAgICBsZXQgb3B0aW9uT2Zmc2V0ID0gMDtcbiAgICBsZXQgb3B0aW9uRGF0YU9mZnNldCA9IDUgKiBvcHRpb25zLmxlbmd0aCArIDE7XG5cbiAgICBmb3IgKGxldCBqID0gMCwgbGVuID0gb3B0aW9ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tqXTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KG9wdGlvbi50b2tlbiwgb3B0aW9uT2Zmc2V0ICsgMCk7XG4gICAgICB0aGlzLmRhdGEud3JpdGVVSW50MTZCRShvcHRpb25EYXRhT2Zmc2V0LCBvcHRpb25PZmZzZXQgKyAxKTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQxNkJFKG9wdGlvbi5kYXRhLmxlbmd0aCwgb3B0aW9uT2Zmc2V0ICsgMyk7XG4gICAgICBvcHRpb25PZmZzZXQgKz0gNTtcbiAgICAgIG9wdGlvbi5kYXRhLmNvcHkodGhpcy5kYXRhLCBvcHRpb25EYXRhT2Zmc2V0KTtcbiAgICAgIG9wdGlvbkRhdGFPZmZzZXQgKz0gb3B0aW9uLmRhdGEubGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KFRPS0VOLlRFUk1JTkFUT1IsIG9wdGlvbk9mZnNldCk7XG4gIH1cblxuICBjcmVhdGVWZXJzaW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMub3B0aW9ucy52ZXJzaW9uLm1ham9yKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm9wdGlvbnMudmVyc2lvbi5taW5vcik7XG4gICAgYnVmZmVyLndyaXRlVUludDE2QkUodGhpcy5vcHRpb25zLnZlcnNpb24uYnVpbGQpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKHRoaXMub3B0aW9ucy52ZXJzaW9uLnN1YmJ1aWxkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLlZFUlNJT04sXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVFbmNyeXB0aW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5jcnlwdCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoRU5DUllQVC5PTik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KEVOQ1JZUFQuTk9UX1NVUCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRU5DUllQVElPTixcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUluc3RhbmNlT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uSU5TVE9QVCxcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZVRocmVhZElkT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkJFKDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uVEhSRUFESUQsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVNYXJzT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KE1BUlMuT0ZGKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLk1BUlMsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVGZWRBdXRoT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRkVEQVVUSFJFUVVJUkVELFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgZXh0cmFjdE9wdGlvbnMoKSB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgd2hpbGUgKHRoaXMuZGF0YVtvZmZzZXRdICE9PSBUT0tFTi5URVJNSU5BVE9SKSB7XG4gICAgICBsZXQgZGF0YU9mZnNldCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMSk7XG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyAzKTtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRhW29mZnNldF0pIHtcbiAgICAgICAgY2FzZSBUT0tFTi5WRVJTSU9OOlxuICAgICAgICAgIHRoaXMuZXh0cmFjdFZlcnNpb24oZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uRU5DUllQVElPTjpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RFbmNyeXB0aW9uKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLklOU1RPUFQ6XG4gICAgICAgICAgdGhpcy5leHRyYWN0SW5zdGFuY2UoZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uVEhSRUFESUQ6XG4gICAgICAgICAgaWYgKGRhdGFMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RUaHJlYWRJZChkYXRhT2Zmc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uTUFSUzpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RNYXJzKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLkZFREFVVEhSRVFVSVJFRDpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RGZWRBdXRoKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IDU7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGRhdGFMZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZXh0cmFjdFZlcnNpb24ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLnZlcnNpb24gPSB7XG4gICAgICBtYWpvcjogdGhpcy5kYXRhLnJlYWRVSW50OChvZmZzZXQgKyAwKSxcbiAgICAgIG1pbm9yOiB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCArIDEpLFxuICAgICAgYnVpbGQ6IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMiksXG4gICAgICBzdWJidWlsZDogdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyA0KVxuICAgIH07XG4gIH1cblxuICBleHRyYWN0RW5jcnlwdGlvbihvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMuZW5jcnlwdGlvbiA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPSBlbmNyeXB0QnlWYWx1ZVt0aGlzLmVuY3J5cHRpb25dO1xuICB9XG5cbiAgZXh0cmFjdEluc3RhbmNlKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIGV4dHJhY3RUaHJlYWRJZChvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMudGhyZWFkSWQgPSB0aGlzLmRhdGEucmVhZFVJbnQzMkJFKG9mZnNldCk7XG4gIH1cblxuICBleHRyYWN0TWFycyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMubWFycyA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLm1hcnNTdHJpbmcgPSBtYXJzQnlWYWx1ZVt0aGlzLm1hcnNdO1xuICB9XG5cbiAgZXh0cmFjdEZlZEF1dGgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdQcmVMb2dpbiAtICcgKyBzcHJpbnRmKFxuICAgICAgJ3ZlcnNpb246JWQuJWQuJWQuJWQsIGVuY3J5cHRpb246MHglMDJYKCVzKSwgaW5zdG9wdDoweCUwMlgsIHRocmVhZElkOjB4JTA4WCwgbWFyczoweCUwMlgoJXMpJyxcbiAgICAgIHRoaXMudmVyc2lvbi5tYWpvciwgdGhpcy52ZXJzaW9uLm1pbm9yLCB0aGlzLnZlcnNpb24uYnVpbGQsIHRoaXMudmVyc2lvbi5zdWJidWlsZCxcbiAgICAgIHRoaXMuZW5jcnlwdGlvbiA/IHRoaXMuZW5jcnlwdGlvbiA6IDAsXG4gICAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPyB0aGlzLmVuY3J5cHRpb25TdHJpbmcgOiAnJyxcbiAgICAgIHRoaXMuaW5zdGFuY2UgPyB0aGlzLmluc3RhbmNlIDogMCxcbiAgICAgIHRoaXMudGhyZWFkSWQgPyB0aGlzLnRocmVhZElkIDogMCxcbiAgICAgIHRoaXMubWFycyA/IHRoaXMubWFycyA6IDAsXG4gICAgICB0aGlzLm1hcnNTdHJpbmcgPyB0aGlzLm1hcnNTdHJpbmcgOiAnJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJlbG9naW5QYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBQcmVsb2dpblBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7OztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLEVBQXpCO0FBRUEsTUFBTUMsS0FBSyxHQUFHO0VBQ1pDLE9BQU8sRUFBRSxJQURHO0VBRVpDLFVBQVUsRUFBRSxJQUZBO0VBR1pDLE9BQU8sRUFBRSxJQUhHO0VBSVpDLFFBQVEsRUFBRSxJQUpFO0VBS1pDLElBQUksRUFBRSxJQUxNO0VBTVpDLGVBQWUsRUFBRSxJQU5MO0VBT1pDLFVBQVUsRUFBRTtBQVBBLENBQWQ7QUFVQSxNQUFNQyxPQUFrQyxHQUFH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
|
|
220
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3B0aW9uQnVmZmVyU2l6ZSIsIlRPS0VOIiwiVkVSU0lPTiIsIkVOQ1JZUFRJT04iLCJJTlNUT1BUIiwiVEhSRUFESUQiLCJNQVJTIiwiRkVEQVVUSFJFUVVJUkVEIiwiVEVSTUlOQVRPUiIsIkVOQ1JZUFQiLCJPRkYiLCJPTiIsIk5PVF9TVVAiLCJSRVEiLCJlbmNyeXB0QnlWYWx1ZSIsIm5hbWUiLCJ2YWx1ZSIsIm1hcnNCeVZhbHVlIiwiUHJlbG9naW5QYXlsb2FkIiwiZGF0YSIsIm9wdGlvbnMiLCJ2ZXJzaW9uIiwiZW5jcnlwdGlvbiIsImVuY3J5cHRpb25TdHJpbmciLCJpbnN0YW5jZSIsInRocmVhZElkIiwibWFycyIsIm1hcnNTdHJpbmciLCJmZWRBdXRoUmVxdWlyZWQiLCJjb25zdHJ1Y3RvciIsImJ1ZmZlck9yT3B0aW9ucyIsImVuY3J5cHQiLCJtYWpvciIsIm1pbm9yIiwiYnVpbGQiLCJzdWJidWlsZCIsIkJ1ZmZlciIsImNyZWF0ZU9wdGlvbnMiLCJleHRyYWN0T3B0aW9ucyIsImNyZWF0ZVZlcnNpb25PcHRpb24iLCJjcmVhdGVFbmNyeXB0aW9uT3B0aW9uIiwiY3JlYXRlSW5zdGFuY2VPcHRpb24iLCJjcmVhdGVUaHJlYWRJZE9wdGlvbiIsImNyZWF0ZU1hcnNPcHRpb24iLCJjcmVhdGVGZWRBdXRoT3B0aW9uIiwibGVuZ3RoIiwiaSIsImxlbiIsIm9wdGlvbiIsImFsbG9jIiwib3B0aW9uT2Zmc2V0Iiwib3B0aW9uRGF0YU9mZnNldCIsImoiLCJ3cml0ZVVJbnQ4IiwidG9rZW4iLCJ3cml0ZVVJbnQxNkJFIiwiY29weSIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQzMkJFIiwib2Zmc2V0IiwiZGF0YU9mZnNldCIsInJlYWRVSW50MTZCRSIsImRhdGFMZW5ndGgiLCJleHRyYWN0VmVyc2lvbiIsImV4dHJhY3RFbmNyeXB0aW9uIiwiZXh0cmFjdEluc3RhbmNlIiwiZXh0cmFjdFRocmVhZElkIiwiZXh0cmFjdE1hcnMiLCJleHRyYWN0RmVkQXV0aCIsInJlYWRVSW50OCIsInJlYWRVSW50MzJCRSIsInRvU3RyaW5nIiwiaW5kZW50Iiwic3ByaW50ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVsb2dpbi1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3Qgb3B0aW9uQnVmZmVyU2l6ZSA9IDIwO1xuXG5jb25zdCBUT0tFTiA9IHtcbiAgVkVSU0lPTjogMHgwMCxcbiAgRU5DUllQVElPTjogMHgwMSxcbiAgSU5TVE9QVDogMHgwMixcbiAgVEhSRUFESUQ6IDB4MDMsXG4gIE1BUlM6IDB4MDQsXG4gIEZFREFVVEhSRVFVSVJFRDogMHgwNixcbiAgVEVSTUlOQVRPUjogMHhGRlxufTtcblxuY29uc3QgRU5DUllQVDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgT0ZGOiAweDAwLFxuICBPTjogMHgwMSxcbiAgTk9UX1NVUDogMHgwMixcbiAgUkVROiAweDAzXG59O1xuXG5jb25zdCBlbmNyeXB0QnlWYWx1ZTogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHt9O1xuXG5mb3IgKGNvbnN0IG5hbWUgaW4gRU5DUllQVCkge1xuICBjb25zdCB2YWx1ZSA9IEVOQ1JZUFRbbmFtZV07XG4gIGVuY3J5cHRCeVZhbHVlW3ZhbHVlXSA9IG5hbWU7XG59XG5cbmNvbnN0IE1BUlM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIE9GRjogMHgwMCxcbiAgT046IDB4MDFcbn07XG5cbmNvbnN0IG1hcnNCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBNQVJTKSB7XG4gIGNvbnN0IHZhbHVlID0gTUFSU1tuYW1lXTtcbiAgbWFyc0J5VmFsdWVbdmFsdWVdID0gbmFtZTtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBlbmNyeXB0OiBib29sZWFuO1xuICB2ZXJzaW9uOiB7XG4gICAgbWFqb3I6IG51bWJlcjtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIGJ1aWxkOiBudW1iZXI7XG4gICAgc3ViYnVpbGQ6IG51bWJlcjtcbiAgfTtcbn1cblxuLypcbiAgczIuMi42LjRcbiAqL1xuY2xhc3MgUHJlbG9naW5QYXlsb2FkIHtcbiAgZGF0YSE6IEJ1ZmZlcjtcbiAgb3B0aW9uczogT3B0aW9ucztcblxuICB2ZXJzaW9uIToge1xuICAgIG1ham9yOiBudW1iZXI7XG4gICAgbWlub3I6IG51bWJlcjtcbiAgICBidWlsZDogbnVtYmVyO1xuICAgIHN1YmJ1aWxkOiBudW1iZXI7XG4gIH07XG5cbiAgZW5jcnlwdGlvbiE6IG51bWJlcjtcbiAgZW5jcnlwdGlvblN0cmluZyE6IHN0cmluZztcblxuICBpbnN0YW5jZSE6IG51bWJlcjtcblxuICB0aHJlYWRJZCE6IG51bWJlcjtcblxuICBtYXJzITogbnVtYmVyO1xuICBtYXJzU3RyaW5nITogc3RyaW5nO1xuICBmZWRBdXRoUmVxdWlyZWQhOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoYnVmZmVyT3JPcHRpb25zOiBCdWZmZXIgfCBPcHRpb25zID0geyBlbmNyeXB0OiBmYWxzZSwgdmVyc2lvbjogeyBtYWpvcjogMCwgbWlub3I6IDAsIGJ1aWxkOiAwLCBzdWJidWlsZDogMCB9IH0pIHtcbiAgICBpZiAoYnVmZmVyT3JPcHRpb25zIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmRhdGEgPSBidWZmZXJPck9wdGlvbnM7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB7IGVuY3J5cHQ6IGZhbHNlLCB2ZXJzaW9uOiB7IG1ham9yOiAwLCBtaW5vcjogMCwgYnVpbGQ6IDAsIHN1YmJ1aWxkOiAwIH0gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zID0gYnVmZmVyT3JPcHRpb25zO1xuICAgICAgdGhpcy5jcmVhdGVPcHRpb25zKCk7XG4gICAgfVxuICAgIHRoaXMuZXh0cmFjdE9wdGlvbnMoKTtcbiAgfVxuXG4gIGNyZWF0ZU9wdGlvbnMoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtcbiAgICAgIHRoaXMuY3JlYXRlVmVyc2lvbk9wdGlvbigpLFxuICAgICAgdGhpcy5jcmVhdGVFbmNyeXB0aW9uT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZUluc3RhbmNlT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZVRocmVhZElkT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZU1hcnNPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlRmVkQXV0aE9wdGlvbigpXG4gICAgXTtcblxuICAgIGxldCBsZW5ndGggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBvcHRpb25zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuICAgICAgbGVuZ3RoICs9IDUgKyBvcHRpb24uZGF0YS5sZW5ndGg7XG4gICAgfVxuICAgIGxlbmd0aCsrOyAvLyB0ZXJtaW5hdG9yXG4gICAgdGhpcy5kYXRhID0gQnVmZmVyLmFsbG9jKGxlbmd0aCwgMCk7XG4gICAgbGV0IG9wdGlvbk9mZnNldCA9IDA7XG4gICAgbGV0IG9wdGlvbkRhdGFPZmZzZXQgPSA1ICogb3B0aW9ucy5sZW5ndGggKyAxO1xuXG4gICAgZm9yIChsZXQgaiA9IDAsIGxlbiA9IG9wdGlvbnMubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbal07XG4gICAgICB0aGlzLmRhdGEud3JpdGVVSW50OChvcHRpb24udG9rZW4sIG9wdGlvbk9mZnNldCArIDApO1xuICAgICAgdGhpcy5kYXRhLndyaXRlVUludDE2QkUob3B0aW9uRGF0YU9mZnNldCwgb3B0aW9uT2Zmc2V0ICsgMSk7XG4gICAgICB0aGlzLmRhdGEud3JpdGVVSW50MTZCRShvcHRpb24uZGF0YS5sZW5ndGgsIG9wdGlvbk9mZnNldCArIDMpO1xuICAgICAgb3B0aW9uT2Zmc2V0ICs9IDU7XG4gICAgICBvcHRpb24uZGF0YS5jb3B5KHRoaXMuZGF0YSwgb3B0aW9uRGF0YU9mZnNldCk7XG4gICAgICBvcHRpb25EYXRhT2Zmc2V0ICs9IG9wdGlvbi5kYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEud3JpdGVVSW50OChUT0tFTi5URVJNSU5BVE9SLCBvcHRpb25PZmZzZXQpO1xuICB9XG5cbiAgY3JlYXRlVmVyc2lvbk9wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm9wdGlvbnMudmVyc2lvbi5tYWpvcik7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5vcHRpb25zLnZlcnNpb24ubWlub3IpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKHRoaXMub3B0aW9ucy52ZXJzaW9uLmJ1aWxkKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLm9wdGlvbnMudmVyc2lvbi5zdWJidWlsZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuOiBUT0tFTi5WRVJTSU9OLFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlRW5jcnlwdGlvbk9wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmVuY3J5cHQpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KEVOQ1JZUFQuT04pO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50OChFTkNSWVBULk5PVF9TVVApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLkVOQ1JZUFRJT04sXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVJbnN0YW5jZU9wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCgweDAwKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLklOU1RPUFQsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVUaHJlYWRJZE9wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBidWZmZXIud3JpdGVVSW50MzJCRSgweDAwKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLlRIUkVBRElELFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlTWFyc09wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBidWZmZXIud3JpdGVVSW50OChNQVJTLk9GRik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuOiBUT0tFTi5NQVJTLFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlRmVkQXV0aE9wdGlvbigpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihvcHRpb25CdWZmZXJTaXplKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCgweDAxKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLkZFREFVVEhSRVFVSVJFRCxcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGV4dHJhY3RPcHRpb25zKCkge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHdoaWxlICh0aGlzLmRhdGFbb2Zmc2V0XSAhPT0gVE9LRU4uVEVSTUlOQVRPUikge1xuICAgICAgbGV0IGRhdGFPZmZzZXQgPSB0aGlzLmRhdGEucmVhZFVJbnQxNkJFKG9mZnNldCArIDEpO1xuICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMyk7XG4gICAgICBzd2l0Y2ggKHRoaXMuZGF0YVtvZmZzZXRdKSB7XG4gICAgICAgIGNhc2UgVE9LRU4uVkVSU0lPTjpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RWZXJzaW9uKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLkVOQ1JZUFRJT046XG4gICAgICAgICAgdGhpcy5leHRyYWN0RW5jcnlwdGlvbihkYXRhT2Zmc2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUT0tFTi5JTlNUT1BUOlxuICAgICAgICAgIHRoaXMuZXh0cmFjdEluc3RhbmNlKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLlRIUkVBRElEOlxuICAgICAgICAgIGlmIChkYXRhTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5leHRyYWN0VGhyZWFkSWQoZGF0YU9mZnNldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLk1BUlM6XG4gICAgICAgICAgdGhpcy5leHRyYWN0TWFycyhkYXRhT2Zmc2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUT0tFTi5GRURBVVRIUkVRVUlSRUQ6XG4gICAgICAgICAgdGhpcy5leHRyYWN0RmVkQXV0aChkYXRhT2Zmc2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9mZnNldCArPSA1O1xuICAgICAgZGF0YU9mZnNldCArPSBkYXRhTGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIGV4dHJhY3RWZXJzaW9uKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy52ZXJzaW9uID0ge1xuICAgICAgbWFqb3I6IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0ICsgMCksXG4gICAgICBtaW5vcjogdGhpcy5kYXRhLnJlYWRVSW50OChvZmZzZXQgKyAxKSxcbiAgICAgIGJ1aWxkOiB0aGlzLmRhdGEucmVhZFVJbnQxNkJFKG9mZnNldCArIDIpLFxuICAgICAgc3ViYnVpbGQ6IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgNClcbiAgICB9O1xuICB9XG5cbiAgZXh0cmFjdEVuY3J5cHRpb24ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLmVuY3J5cHRpb24gPSB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU3RyaW5nID0gZW5jcnlwdEJ5VmFsdWVbdGhpcy5lbmNyeXB0aW9uXTtcbiAgfVxuXG4gIGV4dHJhY3RJbnN0YW5jZShvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCk7XG4gIH1cblxuICBleHRyYWN0VGhyZWFkSWQob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRocmVhZElkID0gdGhpcy5kYXRhLnJlYWRVSW50MzJCRShvZmZzZXQpO1xuICB9XG5cbiAgZXh0cmFjdE1hcnMob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLm1hcnMgPSB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCk7XG4gICAgdGhpcy5tYXJzU3RyaW5nID0gbWFyc0J5VmFsdWVbdGhpcy5tYXJzXTtcbiAgfVxuXG4gIGV4dHJhY3RGZWRBdXRoKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy5mZWRBdXRoUmVxdWlyZWQgPSB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCk7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiBpbmRlbnQgKyAnUHJlTG9naW4gLSAnICsgc3ByaW50ZihcbiAgICAgICd2ZXJzaW9uOiVkLiVkLiVkLiVkLCBlbmNyeXB0aW9uOjB4JTAyWCglcyksIGluc3RvcHQ6MHglMDJYLCB0aHJlYWRJZDoweCUwOFgsIG1hcnM6MHglMDJYKCVzKScsXG4gICAgICB0aGlzLnZlcnNpb24ubWFqb3IsIHRoaXMudmVyc2lvbi5taW5vciwgdGhpcy52ZXJzaW9uLmJ1aWxkLCB0aGlzLnZlcnNpb24uc3ViYnVpbGQsXG4gICAgICB0aGlzLmVuY3J5cHRpb24gPyB0aGlzLmVuY3J5cHRpb24gOiAwLFxuICAgICAgdGhpcy5lbmNyeXB0aW9uU3RyaW5nID8gdGhpcy5lbmNyeXB0aW9uU3RyaW5nIDogJycsXG4gICAgICB0aGlzLmluc3RhbmNlID8gdGhpcy5pbnN0YW5jZSA6IDAsXG4gICAgICB0aGlzLnRocmVhZElkID8gdGhpcy50aHJlYWRJZCA6IDAsXG4gICAgICB0aGlzLm1hcnMgPyB0aGlzLm1hcnMgOiAwLFxuICAgICAgdGhpcy5tYXJzU3RyaW5nID8gdGhpcy5tYXJzU3RyaW5nIDogJydcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZWxvZ2luUGF5bG9hZDtcbm1vZHVsZS5leHBvcnRzID0gUHJlbG9naW5QYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWdGLFNBQUFFLHVCQUFBQyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prelogin-payload.js","names":["_sprintfJs","require","_writableTrackingBuffer","_interopRequireDefault","obj","__esModule","default","optionBufferSize","TOKEN","VERSION","ENCRYPTION","INSTOPT","THREADID","MARS","FEDAUTHREQUIRED","TERMINATOR","ENCRYPT","OFF","ON","NOT_SUP","REQ","encryptByValue","name","value","marsByValue","PreloginPayload","data","options","version","encryption","encryptionString","instance","threadId","mars","marsString","fedAuthRequired","constructor","bufferOrOptions","encrypt","major","minor","build","subbuild","Buffer","createOptions","extractOptions","createVersionOption","createEncryptionOption","createInstanceOption","createThreadIdOption","createMarsOption","createFedAuthOption","length","i","len","option","alloc","optionOffset","optionDataOffset","j","writeUInt8","token","writeUInt16BE","copy","buffer","WritableTrackingBuffer","writeUInt32BE","offset","dataOffset","readUInt16BE","dataLength","extractVersion","extractEncryption","extractInstance","extractThreadId","extractMars","extractFedAuth","readUInt8","readUInt32BE","toString","indent","sprintf","_default","exports","module"],"sources":["../src/prelogin-payload.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\n\nconst optionBufferSize = 20;\n\nconst TOKEN = {\n VERSION: 0x00,\n ENCRYPTION: 0x01,\n INSTOPT: 0x02,\n THREADID: 0x03,\n MARS: 0x04,\n FEDAUTHREQUIRED: 0x06,\n TERMINATOR: 0xFF\n};\n\nconst ENCRYPT: { [key: string]: number } = {\n OFF: 0x00,\n ON: 0x01,\n NOT_SUP: 0x02,\n REQ: 0x03\n};\n\nconst encryptByValue: { [key: number]: string } = {};\n\nfor (const name in ENCRYPT) {\n const value = ENCRYPT[name];\n encryptByValue[value] = name;\n}\n\nconst MARS: { [key: string]: number } = {\n OFF: 0x00,\n ON: 0x01\n};\n\nconst marsByValue: { [key: number]: string } = {};\n\nfor (const name in MARS) {\n const value = MARS[name];\n marsByValue[value] = name;\n}\n\ninterface Options {\n encrypt: boolean;\n version: {\n major: number;\n minor: number;\n build: number;\n subbuild: number;\n };\n}\n\n/*\n s2.2.6.4\n */\nclass PreloginPayload {\n data!: Buffer;\n options: Options;\n\n version!: {\n major: number;\n minor: number;\n build: number;\n subbuild: number;\n };\n\n encryption!: number;\n encryptionString!: string;\n\n instance!: number;\n\n threadId!: number;\n\n mars!: number;\n marsString!: string;\n fedAuthRequired!: number;\n\n constructor(bufferOrOptions: Buffer | Options = { encrypt: false, version: { major: 0, minor: 0, build: 0, subbuild: 0 } }) {\n if (bufferOrOptions instanceof Buffer) {\n this.data = bufferOrOptions;\n this.options = { encrypt: false, version: { major: 0, minor: 0, build: 0, subbuild: 0 } };\n } else {\n this.options = bufferOrOptions;\n this.createOptions();\n }\n this.extractOptions();\n }\n\n createOptions() {\n const options = [\n this.createVersionOption(),\n this.createEncryptionOption(),\n this.createInstanceOption(),\n this.createThreadIdOption(),\n this.createMarsOption(),\n this.createFedAuthOption()\n ];\n\n let length = 0;\n for (let i = 0, len = options.length; i < len; i++) {\n const option = options[i];\n length += 5 + option.data.length;\n }\n length++; // terminator\n this.data = Buffer.alloc(length, 0);\n let optionOffset = 0;\n let optionDataOffset = 5 * options.length + 1;\n\n for (let j = 0, len = options.length; j < len; j++) {\n const option = options[j];\n this.data.writeUInt8(option.token, optionOffset + 0);\n this.data.writeUInt16BE(optionDataOffset, optionOffset + 1);\n this.data.writeUInt16BE(option.data.length, optionOffset + 3);\n optionOffset += 5;\n option.data.copy(this.data, optionDataOffset);\n optionDataOffset += option.data.length;\n }\n\n this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);\n }\n\n createVersionOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(this.options.version.major);\n buffer.writeUInt8(this.options.version.minor);\n buffer.writeUInt16BE(this.options.version.build);\n buffer.writeUInt16BE(this.options.version.subbuild);\n return {\n token: TOKEN.VERSION,\n data: buffer.data\n };\n }\n\n createEncryptionOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n if (this.options.encrypt) {\n buffer.writeUInt8(ENCRYPT.ON);\n } else {\n buffer.writeUInt8(ENCRYPT.NOT_SUP);\n }\n return {\n token: TOKEN.ENCRYPTION,\n data: buffer.data\n };\n }\n\n createInstanceOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(0x00);\n return {\n token: TOKEN.INSTOPT,\n data: buffer.data\n };\n }\n\n createThreadIdOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt32BE(0x00);\n return {\n token: TOKEN.THREADID,\n data: buffer.data\n };\n }\n\n createMarsOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(MARS.OFF);\n return {\n token: TOKEN.MARS,\n data: buffer.data\n };\n }\n\n createFedAuthOption() {\n const buffer = new WritableTrackingBuffer(optionBufferSize);\n buffer.writeUInt8(0x01);\n return {\n token: TOKEN.FEDAUTHREQUIRED,\n data: buffer.data\n };\n }\n\n extractOptions() {\n let offset = 0;\n while (this.data[offset] !== TOKEN.TERMINATOR) {\n let dataOffset = this.data.readUInt16BE(offset + 1);\n const dataLength = this.data.readUInt16BE(offset + 3);\n switch (this.data[offset]) {\n case TOKEN.VERSION:\n this.extractVersion(dataOffset);\n break;\n case TOKEN.ENCRYPTION:\n this.extractEncryption(dataOffset);\n break;\n case TOKEN.INSTOPT:\n this.extractInstance(dataOffset);\n break;\n case TOKEN.THREADID:\n if (dataLength > 0) {\n this.extractThreadId(dataOffset);\n }\n break;\n case TOKEN.MARS:\n this.extractMars(dataOffset);\n break;\n case TOKEN.FEDAUTHREQUIRED:\n this.extractFedAuth(dataOffset);\n break;\n }\n offset += 5;\n dataOffset += dataLength;\n }\n }\n\n extractVersion(offset: number) {\n this.version = {\n major: this.data.readUInt8(offset + 0),\n minor: this.data.readUInt8(offset + 1),\n build: this.data.readUInt16BE(offset + 2),\n subbuild: this.data.readUInt16BE(offset + 4)\n };\n }\n\n extractEncryption(offset: number) {\n this.encryption = this.data.readUInt8(offset);\n this.encryptionString = encryptByValue[this.encryption];\n }\n\n extractInstance(offset: number) {\n this.instance = this.data.readUInt8(offset);\n }\n\n extractThreadId(offset: number) {\n this.threadId = this.data.readUInt32BE(offset);\n }\n\n extractMars(offset: number) {\n this.mars = this.data.readUInt8(offset);\n this.marsString = marsByValue[this.mars];\n }\n\n extractFedAuth(offset: number) {\n this.fedAuthRequired = this.data.readUInt8(offset);\n }\n\n toString(indent = '') {\n return indent + 'PreLogin - ' + sprintf(\n 'version:%d.%d.%d.%d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)',\n this.version.major, this.version.minor, this.version.build, this.version.subbuild,\n this.encryption ? this.encryption : 0,\n this.encryptionString ? this.encryptionString : '',\n this.instance ? this.instance : 0,\n this.threadId ? this.threadId : 0,\n this.mars ? this.mars : 0,\n this.marsString ? this.marsString : ''\n );\n }\n}\n\nexport default PreloginPayload;\nmodule.exports = PreloginPayload;\n"],"mappings":"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"}
|