node-opcua-chunkmanager 2.54.0 → 2.60.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/.mocharc.yml +1 -1
- package/LICENSE +20 -20
- package/package.json +11 -11
- package/source/SequenceHeader.ts +59 -59
- package/source/chunk_manager.ts +333 -333
- package/source/index.ts +6 -6
- package/source/read_message_header.ts +16 -16
- package/tsconfig.tsbuildinfo +1 -1
package/.mocharc.yml
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require: ../../node_modules/source-map-support/register
|
|
1
|
+
require: ../../node_modules/source-map-support/register
|
package/LICENSE
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2014-2021 Etienne Rossignon
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
|
-
this software and associated documentation files (the "Software"), to deal in
|
|
7
|
-
the Software without restriction, including without limitation the rights to
|
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
10
|
-
subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
17
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
18
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
19
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
20
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014-2021 Etienne Rossignon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
7
|
+
the Software without restriction, including without limitation the rights to
|
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
10
|
+
subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-chunkmanager",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.60.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module -chunkmanager",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"chalk": "4.1.2",
|
|
15
|
-
"node-opcua-assert": "2.
|
|
16
|
-
"node-opcua-basic-types": "2.
|
|
17
|
-
"node-opcua-binary-stream": "2.
|
|
18
|
-
"node-opcua-buffer-utils": "2.
|
|
19
|
-
"node-opcua-factory": "2.
|
|
20
|
-
"node-opcua-packet-assembler": "2.
|
|
15
|
+
"node-opcua-assert": "2.55.0",
|
|
16
|
+
"node-opcua-basic-types": "2.60.0",
|
|
17
|
+
"node-opcua-binary-stream": "2.55.0",
|
|
18
|
+
"node-opcua-buffer-utils": "2.55.0",
|
|
19
|
+
"node-opcua-factory": "2.60.0",
|
|
20
|
+
"node-opcua-packet-assembler": "2.55.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@types/node": "16.
|
|
24
|
-
"node-opcua-debug": "2.
|
|
23
|
+
"@types/node": "16.11.9",
|
|
24
|
+
"node-opcua-debug": "2.60.0",
|
|
25
25
|
"should": "^13.2.3",
|
|
26
|
-
"source-map-support": "^0.5.
|
|
26
|
+
"source-map-support": "^0.5.21"
|
|
27
27
|
},
|
|
28
28
|
"author": "Etienne Rossignon",
|
|
29
29
|
"license": "MIT",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"internet of things"
|
|
41
41
|
],
|
|
42
42
|
"homepage": "http://node-opcua.github.io/",
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "56dc8584b9118ee2f3bfb0b2e9d456b609ccbac8"
|
|
44
44
|
}
|
package/source/SequenceHeader.ts
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
/***
|
|
2
|
-
* @module node-opcua-chunkmanager
|
|
3
|
-
*/
|
|
4
|
-
import { decodeUInt32, encodeUInt32, UInt32 } from "node-opcua-basic-types";
|
|
5
|
-
import { BinaryStream, OutputBinaryStream } from "node-opcua-binary-stream";
|
|
6
|
-
import {
|
|
7
|
-
BaseUAObject,
|
|
8
|
-
buildStructuredType,
|
|
9
|
-
check_options_correctness_against_schema,
|
|
10
|
-
initialize_field,
|
|
11
|
-
parameters,
|
|
12
|
-
StructuredTypeSchema
|
|
13
|
-
} from "node-opcua-factory";
|
|
14
|
-
|
|
15
|
-
const schemaSequenceHeader: StructuredTypeSchema = buildStructuredType({
|
|
16
|
-
baseType: "BaseUAObject",
|
|
17
|
-
fields: [
|
|
18
|
-
// A monotonically increasing sequence number assigned by the sender to each
|
|
19
|
-
// MessageChunk sent over the ClientSecureChannelLayer.
|
|
20
|
-
{ name: "sequenceNumber", fieldType: "UInt32" },
|
|
21
|
-
// An identifier assigned by the client to OPC UA request Message. All MessageChunks for
|
|
22
|
-
// the request and the associated response use the same identifier.
|
|
23
|
-
{ name: "requestId", fieldType: "UInt32" }
|
|
24
|
-
],
|
|
25
|
-
name: "SequenceHeader"
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
export class SequenceHeader extends BaseUAObject {
|
|
29
|
-
public static possibleFields: string[] = ["sequenceNumber", "requestId"];
|
|
30
|
-
public static schema = schemaSequenceHeader;
|
|
31
|
-
public sequenceNumber: UInt32;
|
|
32
|
-
public requestId: UInt32;
|
|
33
|
-
|
|
34
|
-
constructor(options?: any) {
|
|
35
|
-
options = options || {};
|
|
36
|
-
super();
|
|
37
|
-
const schema = schemaSequenceHeader;
|
|
38
|
-
/* istanbul ignore next */
|
|
39
|
-
if (parameters.debugSchemaHelper) {
|
|
40
|
-
check_options_correctness_against_schema(this, schema, options);
|
|
41
|
-
}
|
|
42
|
-
this.sequenceNumber = initialize_field(schema.fields[0], options.sequenceNumber);
|
|
43
|
-
this.requestId = initialize_field(schema.fields[1], options.requestId);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public encode(stream: OutputBinaryStream): void {
|
|
47
|
-
super.encode(stream);
|
|
48
|
-
encodeUInt32(this.sequenceNumber, stream);
|
|
49
|
-
encodeUInt32(this.requestId, stream);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public decode(stream: BinaryStream): void {
|
|
53
|
-
super.decode(stream);
|
|
54
|
-
this.sequenceNumber = decodeUInt32(stream);
|
|
55
|
-
this.requestId = decodeUInt32(stream);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
SequenceHeader.prototype.schema = SequenceHeader.schema;
|
|
1
|
+
/***
|
|
2
|
+
* @module node-opcua-chunkmanager
|
|
3
|
+
*/
|
|
4
|
+
import { decodeUInt32, encodeUInt32, UInt32 } from "node-opcua-basic-types";
|
|
5
|
+
import { BinaryStream, OutputBinaryStream } from "node-opcua-binary-stream";
|
|
6
|
+
import {
|
|
7
|
+
BaseUAObject,
|
|
8
|
+
buildStructuredType,
|
|
9
|
+
check_options_correctness_against_schema,
|
|
10
|
+
initialize_field,
|
|
11
|
+
parameters,
|
|
12
|
+
StructuredTypeSchema
|
|
13
|
+
} from "node-opcua-factory";
|
|
14
|
+
|
|
15
|
+
const schemaSequenceHeader: StructuredTypeSchema = buildStructuredType({
|
|
16
|
+
baseType: "BaseUAObject",
|
|
17
|
+
fields: [
|
|
18
|
+
// A monotonically increasing sequence number assigned by the sender to each
|
|
19
|
+
// MessageChunk sent over the ClientSecureChannelLayer.
|
|
20
|
+
{ name: "sequenceNumber", fieldType: "UInt32" },
|
|
21
|
+
// An identifier assigned by the client to OPC UA request Message. All MessageChunks for
|
|
22
|
+
// the request and the associated response use the same identifier.
|
|
23
|
+
{ name: "requestId", fieldType: "UInt32" }
|
|
24
|
+
],
|
|
25
|
+
name: "SequenceHeader"
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export class SequenceHeader extends BaseUAObject {
|
|
29
|
+
public static possibleFields: string[] = ["sequenceNumber", "requestId"];
|
|
30
|
+
public static schema = schemaSequenceHeader;
|
|
31
|
+
public sequenceNumber: UInt32;
|
|
32
|
+
public requestId: UInt32;
|
|
33
|
+
|
|
34
|
+
constructor(options?: any) {
|
|
35
|
+
options = options || {};
|
|
36
|
+
super();
|
|
37
|
+
const schema = schemaSequenceHeader;
|
|
38
|
+
/* istanbul ignore next */
|
|
39
|
+
if (parameters.debugSchemaHelper) {
|
|
40
|
+
check_options_correctness_against_schema(this, schema, options);
|
|
41
|
+
}
|
|
42
|
+
this.sequenceNumber = initialize_field(schema.fields[0], options.sequenceNumber);
|
|
43
|
+
this.requestId = initialize_field(schema.fields[1], options.requestId);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public encode(stream: OutputBinaryStream): void {
|
|
47
|
+
super.encode(stream);
|
|
48
|
+
encodeUInt32(this.sequenceNumber, stream);
|
|
49
|
+
encodeUInt32(this.requestId, stream);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public decode(stream: BinaryStream): void {
|
|
53
|
+
super.decode(stream);
|
|
54
|
+
this.sequenceNumber = decodeUInt32(stream);
|
|
55
|
+
this.requestId = decodeUInt32(stream);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
SequenceHeader.prototype.schema = SequenceHeader.schema;
|
package/source/chunk_manager.ts
CHANGED
|
@@ -1,333 +1,333 @@
|
|
|
1
|
-
/***
|
|
2
|
-
* @module node-opcua-chunkmanager
|
|
3
|
-
*/
|
|
4
|
-
import { EventEmitter } from "events";
|
|
5
|
-
|
|
6
|
-
import { assert } from "node-opcua-assert";
|
|
7
|
-
import { BinaryStream } from "node-opcua-binary-stream";
|
|
8
|
-
import { createFastUninitializedBuffer } from "node-opcua-buffer-utils";
|
|
9
|
-
|
|
10
|
-
import { readMessageHeader } from "./read_message_header";
|
|
11
|
-
|
|
12
|
-
export function verify_message_chunk(messageChunk: Buffer): void {
|
|
13
|
-
assert(messageChunk);
|
|
14
|
-
assert(messageChunk instanceof Buffer);
|
|
15
|
-
const header = readMessageHeader(new BinaryStream(messageChunk));
|
|
16
|
-
if (messageChunk.length !== header.length) {
|
|
17
|
-
throw new Error(" chunk length = " + messageChunk.length + " message length " + header.length);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// see https://github.com/substack/_buffer-handbook
|
|
22
|
-
// http://blog.nodejs.org/2012/12/20/streams2/
|
|
23
|
-
// http://codewinds.com/blog/2013-08-20-nodejs-transform-streams.html
|
|
24
|
-
|
|
25
|
-
// +----------------+----
|
|
26
|
-
// | message header | ^
|
|
27
|
-
// +----------------+ |<- data to sign
|
|
28
|
-
// | security header| |
|
|
29
|
-
// +----------------+ | ---
|
|
30
|
-
// | Sequence header| | ^
|
|
31
|
-
// +----------------+ | |<- data to encrypt
|
|
32
|
-
// | BODY | | |
|
|
33
|
-
// +----------------+ | |
|
|
34
|
-
// | padding | v |
|
|
35
|
-
// +----------------+--- |
|
|
36
|
-
// | Signature | v
|
|
37
|
-
// +----------------+------
|
|
38
|
-
//
|
|
39
|
-
// chunkSize = 8192
|
|
40
|
-
// plainBlockSize = 256-11
|
|
41
|
-
// cipherBlockSize = 256
|
|
42
|
-
// headerSize = messageHeaderSize + securityHeaderSize
|
|
43
|
-
// maxBodySize = plainBlockSize*floor((chunkSize–headerSize–signatureLength-1)/cipherBlockSize)-sequenceHeaderSize;
|
|
44
|
-
// length(data to encrypt) = n *
|
|
45
|
-
|
|
46
|
-
// Rules:
|
|
47
|
-
// - The SequenceHeaderSize is always 8 bytes
|
|
48
|
-
// - The HeaderSize includes the MessageHeader and the SecurityHeader.
|
|
49
|
-
// - The PaddingSize and Padding fields are not present if the MessageChunk is not encrypted.
|
|
50
|
-
// - The Signature field is not present if the MessageChunk is not signed.
|
|
51
|
-
|
|
52
|
-
export type WriteHeaderFunc = (chunk: Buffer, isLast: boolean, expectedLength: number) => void;
|
|
53
|
-
export type WriteSequenceHeaderFunc = (chunk: Buffer) => void;
|
|
54
|
-
export type SignBufferFunc = (buffer: Buffer) => Buffer;
|
|
55
|
-
export type EncryptBufferFunc = (buffer: Buffer) => Buffer;
|
|
56
|
-
|
|
57
|
-
export interface IChunkManagerOptions {
|
|
58
|
-
chunkSize: number;
|
|
59
|
-
signatureLength: number;
|
|
60
|
-
sequenceHeaderSize: number;
|
|
61
|
-
cipherBlockSize: number;
|
|
62
|
-
plainBlockSize: number;
|
|
63
|
-
|
|
64
|
-
signBufferFunc?: SignBufferFunc;
|
|
65
|
-
encryptBufferFunc?: EncryptBufferFunc;
|
|
66
|
-
writeSequenceHeaderFunc?: WriteSequenceHeaderFunc;
|
|
67
|
-
|
|
68
|
-
headerSize: number;
|
|
69
|
-
writeHeaderFunc?: WriteHeaderFunc; // write header must be specified if headerSize !=0
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export class ChunkManager extends EventEmitter {
|
|
73
|
-
public signBufferFunc?: SignBufferFunc;
|
|
74
|
-
public encryptBufferFunc?: EncryptBufferFunc;
|
|
75
|
-
public writeSequenceHeaderFunc?: WriteSequenceHeaderFunc;
|
|
76
|
-
public writeHeaderFunc?: WriteHeaderFunc;
|
|
77
|
-
|
|
78
|
-
private readonly chunkSize: number;
|
|
79
|
-
private readonly headerSize: number;
|
|
80
|
-
private readonly signatureLength: number;
|
|
81
|
-
private readonly sequenceHeaderSize: number;
|
|
82
|
-
private readonly cipherBlockSize: number;
|
|
83
|
-
private readonly plainBlockSize: number;
|
|
84
|
-
|
|
85
|
-
// --------------
|
|
86
|
-
private readonly maxBodySize: number;
|
|
87
|
-
private readonly maxBlock?: number;
|
|
88
|
-
private readonly dataOffset: number;
|
|
89
|
-
private chunk: Buffer | null;
|
|
90
|
-
private cursor: number;
|
|
91
|
-
private pendingChunk: Buffer | null;
|
|
92
|
-
private dataEnd: number;
|
|
93
|
-
|
|
94
|
-
constructor(options: IChunkManagerOptions) {
|
|
95
|
-
super();
|
|
96
|
-
|
|
97
|
-
// { chunkSize : 32, headerSize : 10 ,signatureLength: 32 }
|
|
98
|
-
this.chunkSize = options.chunkSize;
|
|
99
|
-
|
|
100
|
-
this.headerSize = options.headerSize || 0;
|
|
101
|
-
if (this.headerSize) {
|
|
102
|
-
this.writeHeaderFunc = options.writeHeaderFunc;
|
|
103
|
-
assert(typeof this.writeHeaderFunc === "function");
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
this.sequenceHeaderSize = options.sequenceHeaderSize === undefined ? 8 : options.sequenceHeaderSize;
|
|
107
|
-
if (this.sequenceHeaderSize > 0) {
|
|
108
|
-
this.writeSequenceHeaderFunc = options.writeSequenceHeaderFunc;
|
|
109
|
-
assert(typeof this.writeSequenceHeaderFunc === "function");
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
this.signatureLength = options.signatureLength || 0;
|
|
113
|
-
this.signBufferFunc = options.signBufferFunc;
|
|
114
|
-
|
|
115
|
-
this.plainBlockSize = options.plainBlockSize || 0; // 256-14;
|
|
116
|
-
this.cipherBlockSize = options.cipherBlockSize || 0; // 256;
|
|
117
|
-
this.dataEnd = 0;
|
|
118
|
-
|
|
119
|
-
if (this.cipherBlockSize === 0) {
|
|
120
|
-
assert(this.plainBlockSize === 0);
|
|
121
|
-
// unencrypted block
|
|
122
|
-
this.maxBodySize = this.chunkSize - this.headerSize - this.signatureLength - this.sequenceHeaderSize;
|
|
123
|
-
this.encryptBufferFunc = undefined;
|
|
124
|
-
} else {
|
|
125
|
-
assert(this.plainBlockSize !== 0);
|
|
126
|
-
// During encryption a block with a size equal to PlainTextBlockSize is processed to produce a block
|
|
127
|
-
// with size equal to CipherTextBlockSize. These values depend on the encryption algorithm and may
|
|
128
|
-
// be the same.
|
|
129
|
-
|
|
130
|
-
this.encryptBufferFunc = options.encryptBufferFunc;
|
|
131
|
-
assert(typeof this.encryptBufferFunc === "function", "an encryptBufferFunc is required");
|
|
132
|
-
|
|
133
|
-
// this is the formula proposed by OPCUA
|
|
134
|
-
this.maxBodySize =
|
|
135
|
-
this.plainBlockSize *
|
|
136
|
-
Math.floor((this.chunkSize - this.headerSize - this.signatureLength - 1) / this.cipherBlockSize) -
|
|
137
|
-
this.sequenceHeaderSize;
|
|
138
|
-
|
|
139
|
-
// this is the formula proposed by ERN
|
|
140
|
-
this.maxBlock = Math.floor((this.chunkSize - this.headerSize) / this.cipherBlockSize);
|
|
141
|
-
this.maxBodySize = this.plainBlockSize * this.maxBlock - this.sequenceHeaderSize - this.signatureLength - 1;
|
|
142
|
-
|
|
143
|
-
if (this.plainBlockSize > 256) {
|
|
144
|
-
this.maxBodySize -= 1;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
assert(this.maxBodySize > 0); // no space left to write data
|
|
148
|
-
|
|
149
|
-
// where the data starts in the block
|
|
150
|
-
this.dataOffset = this.headerSize + this.sequenceHeaderSize;
|
|
151
|
-
|
|
152
|
-
this.chunk = null;
|
|
153
|
-
this.cursor = 0;
|
|
154
|
-
this.pendingChunk = null;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
public write(buffer: Buffer, length?: number) {
|
|
158
|
-
length = length || buffer.length;
|
|
159
|
-
assert(buffer instanceof Buffer || buffer === null);
|
|
160
|
-
assert(length > 0);
|
|
161
|
-
|
|
162
|
-
let l = length;
|
|
163
|
-
let inputCursor = 0;
|
|
164
|
-
|
|
165
|
-
while (l > 0) {
|
|
166
|
-
assert(length - inputCursor !== 0);
|
|
167
|
-
|
|
168
|
-
if (this.cursor === 0) {
|
|
169
|
-
this._push_pending_chunk(false);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// space left in current chunk
|
|
173
|
-
const spaceLeft = this.maxBodySize - this.cursor;
|
|
174
|
-
|
|
175
|
-
const nbToWrite = Math.min(length - inputCursor, spaceLeft);
|
|
176
|
-
|
|
177
|
-
this.chunk = this.chunk || createFastUninitializedBuffer(this.chunkSize);
|
|
178
|
-
|
|
179
|
-
if (buffer) {
|
|
180
|
-
buffer.copy(this.chunk!, this.cursor + this.dataOffset, inputCursor, inputCursor + nbToWrite);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
inputCursor += nbToWrite;
|
|
184
|
-
this.cursor += nbToWrite;
|
|
185
|
-
|
|
186
|
-
if (this.cursor >= this.maxBodySize) {
|
|
187
|
-
this._post_process_current_chunk();
|
|
188
|
-
}
|
|
189
|
-
l -= nbToWrite;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
public end() {
|
|
194
|
-
if (this.cursor > 0) {
|
|
195
|
-
this._post_process_current_chunk();
|
|
196
|
-
}
|
|
197
|
-
this._push_pending_chunk(true);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* compute the signature of the chunk and append it at the end
|
|
202
|
-
* of the data block.
|
|
203
|
-
*
|
|
204
|
-
* @method _write_signature
|
|
205
|
-
* @private
|
|
206
|
-
*/
|
|
207
|
-
private _write_signature(chunk: Buffer) {
|
|
208
|
-
if (this.signBufferFunc) {
|
|
209
|
-
assert(typeof this.signBufferFunc === "function");
|
|
210
|
-
assert(this.signatureLength !== 0);
|
|
211
|
-
|
|
212
|
-
const signatureStart = this.dataEnd;
|
|
213
|
-
const sectionToSign = chunk.slice(0, signatureStart);
|
|
214
|
-
|
|
215
|
-
const signature = this.signBufferFunc(sectionToSign);
|
|
216
|
-
assert(signature.length === this.signatureLength);
|
|
217
|
-
|
|
218
|
-
signature.copy(chunk, signatureStart);
|
|
219
|
-
} else {
|
|
220
|
-
assert(this.signatureLength === 0, "expecting NO SIGN");
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
private _encrypt(chunk: Buffer) {
|
|
225
|
-
if (this.plainBlockSize > 0) {
|
|
226
|
-
assert(this.dataEnd !== undefined);
|
|
227
|
-
const startEncryptionPos = this.headerSize;
|
|
228
|
-
const endEncryptionPos = this.dataEnd + this.signatureLength;
|
|
229
|
-
|
|
230
|
-
const areaToEncrypt = chunk.slice(startEncryptionPos, endEncryptionPos);
|
|
231
|
-
|
|
232
|
-
assert(areaToEncrypt.length % this.plainBlockSize === 0); // padding should have been applied
|
|
233
|
-
const nbBlock = areaToEncrypt.length / this.plainBlockSize;
|
|
234
|
-
|
|
235
|
-
const encryptedBuffer = this.encryptBufferFunc!(areaToEncrypt);
|
|
236
|
-
assert(encryptedBuffer.length % this.cipherBlockSize === 0);
|
|
237
|
-
assert(encryptedBuffer.length === nbBlock * this.cipherBlockSize);
|
|
238
|
-
|
|
239
|
-
encryptedBuffer.copy(chunk, this.headerSize, 0);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
private _push_pending_chunk(isLast: boolean) {
|
|
244
|
-
if (this.pendingChunk) {
|
|
245
|
-
const expectedLength = this.pendingChunk.length;
|
|
246
|
-
|
|
247
|
-
if (this.headerSize > 0) {
|
|
248
|
-
// Release 1.02 39 OPC Unified Architecture, Part 6:
|
|
249
|
-
// The sequence header ensures that the first encrypted block of every Message sent over
|
|
250
|
-
// a channel will start with different data.
|
|
251
|
-
this.writeHeaderFunc!(this.pendingChunk.slice(0, this.headerSize), isLast, expectedLength);
|
|
252
|
-
}
|
|
253
|
-
if (this.sequenceHeaderSize > 0) {
|
|
254
|
-
this.writeSequenceHeaderFunc!(this.pendingChunk.slice(this.headerSize, this.headerSize + this.sequenceHeaderSize));
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
this._write_signature(this.pendingChunk);
|
|
258
|
-
|
|
259
|
-
this._encrypt(this.pendingChunk);
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* @event chunk
|
|
263
|
-
* @param chunk {Buffer}
|
|
264
|
-
* @param isLast {Boolean} , true if final chunk
|
|
265
|
-
*/
|
|
266
|
-
this.emit("chunk", this.pendingChunk, isLast);
|
|
267
|
-
this.pendingChunk = null;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
private _write_padding_bytes(nbPaddingByteTotal: number) {
|
|
272
|
-
const nbPaddingByte = nbPaddingByteTotal % 256;
|
|
273
|
-
const extraNbPaddingByte = Math.floor(nbPaddingByteTotal / 256);
|
|
274
|
-
|
|
275
|
-
assert(extraNbPaddingByte === 0 || this.plainBlockSize > 256, "extraNbPaddingByte only requested when key size > 2048");
|
|
276
|
-
|
|
277
|
-
// write the padding byte
|
|
278
|
-
this.chunk!.writeUInt8(nbPaddingByte, this.cursor + this.dataOffset);
|
|
279
|
-
this.cursor += 1;
|
|
280
|
-
|
|
281
|
-
for (let i = 0; i < nbPaddingByteTotal; i++) {
|
|
282
|
-
this.chunk!.writeUInt8(nbPaddingByte, this.cursor + this.dataOffset + i);
|
|
283
|
-
}
|
|
284
|
-
this.cursor += nbPaddingByteTotal;
|
|
285
|
-
|
|
286
|
-
if (this.plainBlockSize > 256) {
|
|
287
|
-
this.chunk!.writeUInt8(extraNbPaddingByte, this.cursor + this.dataOffset);
|
|
288
|
-
this.cursor += 1;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
private _post_process_current_chunk() {
|
|
293
|
-
let extraEncryptionBytes = 0;
|
|
294
|
-
// add padding bytes if needed
|
|
295
|
-
if (this.plainBlockSize > 0) {
|
|
296
|
-
// write padding ( if encryption )
|
|
297
|
-
|
|
298
|
-
// let's calculate curLength = the length of the block to encrypt without padding yet
|
|
299
|
-
// +---------------+---------------+-------------+---------+--------------+------------+
|
|
300
|
-
// |SequenceHeader | data | paddingByte | padding | extraPadding | signature |
|
|
301
|
-
// +---------------+---------------+-------------+---------+--------------+------------+
|
|
302
|
-
let curLength = this.sequenceHeaderSize + this.cursor + this.signatureLength;
|
|
303
|
-
if (this.plainBlockSize > 256) {
|
|
304
|
-
curLength += 2; // account for extraPadding Byte Number;
|
|
305
|
-
} else {
|
|
306
|
-
curLength += 1;
|
|
307
|
-
}
|
|
308
|
-
// let's calculate the required number of padding bytes
|
|
309
|
-
const n = curLength % this.plainBlockSize;
|
|
310
|
-
const nbPaddingByteTotal = (this.plainBlockSize - n) % this.plainBlockSize;
|
|
311
|
-
|
|
312
|
-
this._write_padding_bytes(nbPaddingByteTotal);
|
|
313
|
-
const adjustedLength = this.sequenceHeaderSize + this.cursor + this.signatureLength;
|
|
314
|
-
|
|
315
|
-
assert(adjustedLength % this.plainBlockSize === 0);
|
|
316
|
-
const nbBlock = adjustedLength / this.plainBlockSize;
|
|
317
|
-
extraEncryptionBytes = nbBlock * (this.cipherBlockSize - this.plainBlockSize);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
this.dataEnd = this.dataOffset + this.cursor;
|
|
321
|
-
|
|
322
|
-
// calculate the expected length of the chunk, once encrypted if encryption apply
|
|
323
|
-
const expectedLength = this.dataEnd + this.signatureLength + extraEncryptionBytes;
|
|
324
|
-
|
|
325
|
-
this.pendingChunk = this.chunk!.slice(0, expectedLength);
|
|
326
|
-
// note :
|
|
327
|
-
// - this.pending_chunk has the correct size but is not signed nor encrypted yet
|
|
328
|
-
// as we don't know what to write in the header yet
|
|
329
|
-
// - as a result,
|
|
330
|
-
this.chunk = null;
|
|
331
|
-
this.cursor = 0;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
1
|
+
/***
|
|
2
|
+
* @module node-opcua-chunkmanager
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
|
|
6
|
+
import { assert } from "node-opcua-assert";
|
|
7
|
+
import { BinaryStream } from "node-opcua-binary-stream";
|
|
8
|
+
import { createFastUninitializedBuffer } from "node-opcua-buffer-utils";
|
|
9
|
+
|
|
10
|
+
import { readMessageHeader } from "./read_message_header";
|
|
11
|
+
|
|
12
|
+
export function verify_message_chunk(messageChunk: Buffer): void {
|
|
13
|
+
assert(messageChunk);
|
|
14
|
+
assert(messageChunk instanceof Buffer);
|
|
15
|
+
const header = readMessageHeader(new BinaryStream(messageChunk));
|
|
16
|
+
if (messageChunk.length !== header.length) {
|
|
17
|
+
throw new Error(" chunk length = " + messageChunk.length + " message length " + header.length);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// see https://github.com/substack/_buffer-handbook
|
|
22
|
+
// http://blog.nodejs.org/2012/12/20/streams2/
|
|
23
|
+
// http://codewinds.com/blog/2013-08-20-nodejs-transform-streams.html
|
|
24
|
+
|
|
25
|
+
// +----------------+----
|
|
26
|
+
// | message header | ^
|
|
27
|
+
// +----------------+ |<- data to sign
|
|
28
|
+
// | security header| |
|
|
29
|
+
// +----------------+ | ---
|
|
30
|
+
// | Sequence header| | ^
|
|
31
|
+
// +----------------+ | |<- data to encrypt
|
|
32
|
+
// | BODY | | |
|
|
33
|
+
// +----------------+ | |
|
|
34
|
+
// | padding | v |
|
|
35
|
+
// +----------------+--- |
|
|
36
|
+
// | Signature | v
|
|
37
|
+
// +----------------+------
|
|
38
|
+
//
|
|
39
|
+
// chunkSize = 8192
|
|
40
|
+
// plainBlockSize = 256-11
|
|
41
|
+
// cipherBlockSize = 256
|
|
42
|
+
// headerSize = messageHeaderSize + securityHeaderSize
|
|
43
|
+
// maxBodySize = plainBlockSize*floor((chunkSize–headerSize–signatureLength-1)/cipherBlockSize)-sequenceHeaderSize;
|
|
44
|
+
// length(data to encrypt) = n *
|
|
45
|
+
|
|
46
|
+
// Rules:
|
|
47
|
+
// - The SequenceHeaderSize is always 8 bytes
|
|
48
|
+
// - The HeaderSize includes the MessageHeader and the SecurityHeader.
|
|
49
|
+
// - The PaddingSize and Padding fields are not present if the MessageChunk is not encrypted.
|
|
50
|
+
// - The Signature field is not present if the MessageChunk is not signed.
|
|
51
|
+
|
|
52
|
+
export type WriteHeaderFunc = (chunk: Buffer, isLast: boolean, expectedLength: number) => void;
|
|
53
|
+
export type WriteSequenceHeaderFunc = (chunk: Buffer) => void;
|
|
54
|
+
export type SignBufferFunc = (buffer: Buffer) => Buffer;
|
|
55
|
+
export type EncryptBufferFunc = (buffer: Buffer) => Buffer;
|
|
56
|
+
|
|
57
|
+
export interface IChunkManagerOptions {
|
|
58
|
+
chunkSize: number;
|
|
59
|
+
signatureLength: number;
|
|
60
|
+
sequenceHeaderSize: number;
|
|
61
|
+
cipherBlockSize: number;
|
|
62
|
+
plainBlockSize: number;
|
|
63
|
+
|
|
64
|
+
signBufferFunc?: SignBufferFunc;
|
|
65
|
+
encryptBufferFunc?: EncryptBufferFunc;
|
|
66
|
+
writeSequenceHeaderFunc?: WriteSequenceHeaderFunc;
|
|
67
|
+
|
|
68
|
+
headerSize: number;
|
|
69
|
+
writeHeaderFunc?: WriteHeaderFunc; // write header must be specified if headerSize !=0
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class ChunkManager extends EventEmitter {
|
|
73
|
+
public signBufferFunc?: SignBufferFunc;
|
|
74
|
+
public encryptBufferFunc?: EncryptBufferFunc;
|
|
75
|
+
public writeSequenceHeaderFunc?: WriteSequenceHeaderFunc;
|
|
76
|
+
public writeHeaderFunc?: WriteHeaderFunc;
|
|
77
|
+
|
|
78
|
+
private readonly chunkSize: number;
|
|
79
|
+
private readonly headerSize: number;
|
|
80
|
+
private readonly signatureLength: number;
|
|
81
|
+
private readonly sequenceHeaderSize: number;
|
|
82
|
+
private readonly cipherBlockSize: number;
|
|
83
|
+
private readonly plainBlockSize: number;
|
|
84
|
+
|
|
85
|
+
// --------------
|
|
86
|
+
private readonly maxBodySize: number;
|
|
87
|
+
private readonly maxBlock?: number;
|
|
88
|
+
private readonly dataOffset: number;
|
|
89
|
+
private chunk: Buffer | null;
|
|
90
|
+
private cursor: number;
|
|
91
|
+
private pendingChunk: Buffer | null;
|
|
92
|
+
private dataEnd: number;
|
|
93
|
+
|
|
94
|
+
constructor(options: IChunkManagerOptions) {
|
|
95
|
+
super();
|
|
96
|
+
|
|
97
|
+
// { chunkSize : 32, headerSize : 10 ,signatureLength: 32 }
|
|
98
|
+
this.chunkSize = options.chunkSize;
|
|
99
|
+
|
|
100
|
+
this.headerSize = options.headerSize || 0;
|
|
101
|
+
if (this.headerSize) {
|
|
102
|
+
this.writeHeaderFunc = options.writeHeaderFunc;
|
|
103
|
+
assert(typeof this.writeHeaderFunc === "function");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
this.sequenceHeaderSize = options.sequenceHeaderSize === undefined ? 8 : options.sequenceHeaderSize;
|
|
107
|
+
if (this.sequenceHeaderSize > 0) {
|
|
108
|
+
this.writeSequenceHeaderFunc = options.writeSequenceHeaderFunc;
|
|
109
|
+
assert(typeof this.writeSequenceHeaderFunc === "function");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
this.signatureLength = options.signatureLength || 0;
|
|
113
|
+
this.signBufferFunc = options.signBufferFunc;
|
|
114
|
+
|
|
115
|
+
this.plainBlockSize = options.plainBlockSize || 0; // 256-14;
|
|
116
|
+
this.cipherBlockSize = options.cipherBlockSize || 0; // 256;
|
|
117
|
+
this.dataEnd = 0;
|
|
118
|
+
|
|
119
|
+
if (this.cipherBlockSize === 0) {
|
|
120
|
+
assert(this.plainBlockSize === 0);
|
|
121
|
+
// unencrypted block
|
|
122
|
+
this.maxBodySize = this.chunkSize - this.headerSize - this.signatureLength - this.sequenceHeaderSize;
|
|
123
|
+
this.encryptBufferFunc = undefined;
|
|
124
|
+
} else {
|
|
125
|
+
assert(this.plainBlockSize !== 0);
|
|
126
|
+
// During encryption a block with a size equal to PlainTextBlockSize is processed to produce a block
|
|
127
|
+
// with size equal to CipherTextBlockSize. These values depend on the encryption algorithm and may
|
|
128
|
+
// be the same.
|
|
129
|
+
|
|
130
|
+
this.encryptBufferFunc = options.encryptBufferFunc;
|
|
131
|
+
assert(typeof this.encryptBufferFunc === "function", "an encryptBufferFunc is required");
|
|
132
|
+
|
|
133
|
+
// this is the formula proposed by OPCUA
|
|
134
|
+
this.maxBodySize =
|
|
135
|
+
this.plainBlockSize *
|
|
136
|
+
Math.floor((this.chunkSize - this.headerSize - this.signatureLength - 1) / this.cipherBlockSize) -
|
|
137
|
+
this.sequenceHeaderSize;
|
|
138
|
+
|
|
139
|
+
// this is the formula proposed by ERN
|
|
140
|
+
this.maxBlock = Math.floor((this.chunkSize - this.headerSize) / this.cipherBlockSize);
|
|
141
|
+
this.maxBodySize = this.plainBlockSize * this.maxBlock - this.sequenceHeaderSize - this.signatureLength - 1;
|
|
142
|
+
|
|
143
|
+
if (this.plainBlockSize > 256) {
|
|
144
|
+
this.maxBodySize -= 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
assert(this.maxBodySize > 0); // no space left to write data
|
|
148
|
+
|
|
149
|
+
// where the data starts in the block
|
|
150
|
+
this.dataOffset = this.headerSize + this.sequenceHeaderSize;
|
|
151
|
+
|
|
152
|
+
this.chunk = null;
|
|
153
|
+
this.cursor = 0;
|
|
154
|
+
this.pendingChunk = null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public write(buffer: Buffer, length?: number) {
|
|
158
|
+
length = length || buffer.length;
|
|
159
|
+
assert(buffer instanceof Buffer || buffer === null);
|
|
160
|
+
assert(length > 0);
|
|
161
|
+
|
|
162
|
+
let l = length;
|
|
163
|
+
let inputCursor = 0;
|
|
164
|
+
|
|
165
|
+
while (l > 0) {
|
|
166
|
+
assert(length - inputCursor !== 0);
|
|
167
|
+
|
|
168
|
+
if (this.cursor === 0) {
|
|
169
|
+
this._push_pending_chunk(false);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// space left in current chunk
|
|
173
|
+
const spaceLeft = this.maxBodySize - this.cursor;
|
|
174
|
+
|
|
175
|
+
const nbToWrite = Math.min(length - inputCursor, spaceLeft);
|
|
176
|
+
|
|
177
|
+
this.chunk = this.chunk || createFastUninitializedBuffer(this.chunkSize);
|
|
178
|
+
|
|
179
|
+
if (buffer) {
|
|
180
|
+
buffer.copy(this.chunk!, this.cursor + this.dataOffset, inputCursor, inputCursor + nbToWrite);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
inputCursor += nbToWrite;
|
|
184
|
+
this.cursor += nbToWrite;
|
|
185
|
+
|
|
186
|
+
if (this.cursor >= this.maxBodySize) {
|
|
187
|
+
this._post_process_current_chunk();
|
|
188
|
+
}
|
|
189
|
+
l -= nbToWrite;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public end() {
|
|
194
|
+
if (this.cursor > 0) {
|
|
195
|
+
this._post_process_current_chunk();
|
|
196
|
+
}
|
|
197
|
+
this._push_pending_chunk(true);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* compute the signature of the chunk and append it at the end
|
|
202
|
+
* of the data block.
|
|
203
|
+
*
|
|
204
|
+
* @method _write_signature
|
|
205
|
+
* @private
|
|
206
|
+
*/
|
|
207
|
+
private _write_signature(chunk: Buffer) {
|
|
208
|
+
if (this.signBufferFunc) {
|
|
209
|
+
assert(typeof this.signBufferFunc === "function");
|
|
210
|
+
assert(this.signatureLength !== 0);
|
|
211
|
+
|
|
212
|
+
const signatureStart = this.dataEnd;
|
|
213
|
+
const sectionToSign = chunk.slice(0, signatureStart);
|
|
214
|
+
|
|
215
|
+
const signature = this.signBufferFunc(sectionToSign);
|
|
216
|
+
assert(signature.length === this.signatureLength);
|
|
217
|
+
|
|
218
|
+
signature.copy(chunk, signatureStart);
|
|
219
|
+
} else {
|
|
220
|
+
assert(this.signatureLength === 0, "expecting NO SIGN");
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
private _encrypt(chunk: Buffer) {
|
|
225
|
+
if (this.plainBlockSize > 0) {
|
|
226
|
+
assert(this.dataEnd !== undefined);
|
|
227
|
+
const startEncryptionPos = this.headerSize;
|
|
228
|
+
const endEncryptionPos = this.dataEnd + this.signatureLength;
|
|
229
|
+
|
|
230
|
+
const areaToEncrypt = chunk.slice(startEncryptionPos, endEncryptionPos);
|
|
231
|
+
|
|
232
|
+
assert(areaToEncrypt.length % this.plainBlockSize === 0); // padding should have been applied
|
|
233
|
+
const nbBlock = areaToEncrypt.length / this.plainBlockSize;
|
|
234
|
+
|
|
235
|
+
const encryptedBuffer = this.encryptBufferFunc!(areaToEncrypt);
|
|
236
|
+
assert(encryptedBuffer.length % this.cipherBlockSize === 0);
|
|
237
|
+
assert(encryptedBuffer.length === nbBlock * this.cipherBlockSize);
|
|
238
|
+
|
|
239
|
+
encryptedBuffer.copy(chunk, this.headerSize, 0);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
private _push_pending_chunk(isLast: boolean) {
|
|
244
|
+
if (this.pendingChunk) {
|
|
245
|
+
const expectedLength = this.pendingChunk.length;
|
|
246
|
+
|
|
247
|
+
if (this.headerSize > 0) {
|
|
248
|
+
// Release 1.02 39 OPC Unified Architecture, Part 6:
|
|
249
|
+
// The sequence header ensures that the first encrypted block of every Message sent over
|
|
250
|
+
// a channel will start with different data.
|
|
251
|
+
this.writeHeaderFunc!(this.pendingChunk.slice(0, this.headerSize), isLast, expectedLength);
|
|
252
|
+
}
|
|
253
|
+
if (this.sequenceHeaderSize > 0) {
|
|
254
|
+
this.writeSequenceHeaderFunc!(this.pendingChunk.slice(this.headerSize, this.headerSize + this.sequenceHeaderSize));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
this._write_signature(this.pendingChunk);
|
|
258
|
+
|
|
259
|
+
this._encrypt(this.pendingChunk);
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @event chunk
|
|
263
|
+
* @param chunk {Buffer}
|
|
264
|
+
* @param isLast {Boolean} , true if final chunk
|
|
265
|
+
*/
|
|
266
|
+
this.emit("chunk", this.pendingChunk, isLast);
|
|
267
|
+
this.pendingChunk = null;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
private _write_padding_bytes(nbPaddingByteTotal: number) {
|
|
272
|
+
const nbPaddingByte = nbPaddingByteTotal % 256;
|
|
273
|
+
const extraNbPaddingByte = Math.floor(nbPaddingByteTotal / 256);
|
|
274
|
+
|
|
275
|
+
assert(extraNbPaddingByte === 0 || this.plainBlockSize > 256, "extraNbPaddingByte only requested when key size > 2048");
|
|
276
|
+
|
|
277
|
+
// write the padding byte
|
|
278
|
+
this.chunk!.writeUInt8(nbPaddingByte, this.cursor + this.dataOffset);
|
|
279
|
+
this.cursor += 1;
|
|
280
|
+
|
|
281
|
+
for (let i = 0; i < nbPaddingByteTotal; i++) {
|
|
282
|
+
this.chunk!.writeUInt8(nbPaddingByte, this.cursor + this.dataOffset + i);
|
|
283
|
+
}
|
|
284
|
+
this.cursor += nbPaddingByteTotal;
|
|
285
|
+
|
|
286
|
+
if (this.plainBlockSize > 256) {
|
|
287
|
+
this.chunk!.writeUInt8(extraNbPaddingByte, this.cursor + this.dataOffset);
|
|
288
|
+
this.cursor += 1;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private _post_process_current_chunk() {
|
|
293
|
+
let extraEncryptionBytes = 0;
|
|
294
|
+
// add padding bytes if needed
|
|
295
|
+
if (this.plainBlockSize > 0) {
|
|
296
|
+
// write padding ( if encryption )
|
|
297
|
+
|
|
298
|
+
// let's calculate curLength = the length of the block to encrypt without padding yet
|
|
299
|
+
// +---------------+---------------+-------------+---------+--------------+------------+
|
|
300
|
+
// |SequenceHeader | data | paddingByte | padding | extraPadding | signature |
|
|
301
|
+
// +---------------+---------------+-------------+---------+--------------+------------+
|
|
302
|
+
let curLength = this.sequenceHeaderSize + this.cursor + this.signatureLength;
|
|
303
|
+
if (this.plainBlockSize > 256) {
|
|
304
|
+
curLength += 2; // account for extraPadding Byte Number;
|
|
305
|
+
} else {
|
|
306
|
+
curLength += 1;
|
|
307
|
+
}
|
|
308
|
+
// let's calculate the required number of padding bytes
|
|
309
|
+
const n = curLength % this.plainBlockSize;
|
|
310
|
+
const nbPaddingByteTotal = (this.plainBlockSize - n) % this.plainBlockSize;
|
|
311
|
+
|
|
312
|
+
this._write_padding_bytes(nbPaddingByteTotal);
|
|
313
|
+
const adjustedLength = this.sequenceHeaderSize + this.cursor + this.signatureLength;
|
|
314
|
+
|
|
315
|
+
assert(adjustedLength % this.plainBlockSize === 0);
|
|
316
|
+
const nbBlock = adjustedLength / this.plainBlockSize;
|
|
317
|
+
extraEncryptionBytes = nbBlock * (this.cipherBlockSize - this.plainBlockSize);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
this.dataEnd = this.dataOffset + this.cursor;
|
|
321
|
+
|
|
322
|
+
// calculate the expected length of the chunk, once encrypted if encryption apply
|
|
323
|
+
const expectedLength = this.dataEnd + this.signatureLength + extraEncryptionBytes;
|
|
324
|
+
|
|
325
|
+
this.pendingChunk = this.chunk!.slice(0, expectedLength);
|
|
326
|
+
// note :
|
|
327
|
+
// - this.pending_chunk has the correct size but is not signed nor encrypted yet
|
|
328
|
+
// as we don't know what to write in the header yet
|
|
329
|
+
// - as a result,
|
|
330
|
+
this.chunk = null;
|
|
331
|
+
this.cursor = 0;
|
|
332
|
+
}
|
|
333
|
+
}
|
package/source/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/***
|
|
2
|
-
* @module node-opcua-chunkmanager
|
|
3
|
-
*/
|
|
4
|
-
export * from "./chunk_manager";
|
|
5
|
-
export * from "./read_message_header";
|
|
6
|
-
export * from "./SequenceHeader";
|
|
1
|
+
/***
|
|
2
|
+
* @module node-opcua-chunkmanager
|
|
3
|
+
*/
|
|
4
|
+
export * from "./chunk_manager";
|
|
5
|
+
export * from "./read_message_header";
|
|
6
|
+
export * from "./SequenceHeader";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/***
|
|
2
|
-
* @module node-opcua-chunkmanager
|
|
3
|
-
*/
|
|
4
|
-
import { BinaryStream } from "node-opcua-binary-stream";
|
|
5
|
-
import { MessageHeader } from "node-opcua-packet-assembler";
|
|
6
|
-
|
|
7
|
-
export function readMessageHeader(stream: BinaryStream): MessageHeader {
|
|
8
|
-
|
|
9
|
-
const msgType = String.fromCharCode(stream.readUInt8()) +
|
|
10
|
-
String.fromCharCode(stream.readUInt8()) +
|
|
11
|
-
String.fromCharCode(stream.readUInt8());
|
|
12
|
-
|
|
13
|
-
const isFinal = String.fromCharCode(stream.readUInt8());
|
|
14
|
-
const length = stream.readUInt32();
|
|
15
|
-
return {msgType, isFinal, length};
|
|
16
|
-
}
|
|
1
|
+
/***
|
|
2
|
+
* @module node-opcua-chunkmanager
|
|
3
|
+
*/
|
|
4
|
+
import { BinaryStream } from "node-opcua-binary-stream";
|
|
5
|
+
import { MessageHeader } from "node-opcua-packet-assembler";
|
|
6
|
+
|
|
7
|
+
export function readMessageHeader(stream: BinaryStream): MessageHeader {
|
|
8
|
+
|
|
9
|
+
const msgType = String.fromCharCode(stream.readUInt8()) +
|
|
10
|
+
String.fromCharCode(stream.readUInt8()) +
|
|
11
|
+
String.fromCharCode(stream.readUInt8());
|
|
12
|
+
|
|
13
|
+
const isFinal = String.fromCharCode(stream.readUInt8());
|
|
14
|
+
const length = stream.readUInt32();
|
|
15
|
+
return {msgType, isFinal, length};
|
|
16
|
+
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es6.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@4.4.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/assert.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/assert/strict.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/globals.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/async_hooks.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/buffer.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/child_process.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/cluster.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/console.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/constants.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/crypto.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/dgram.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/diagnostics_channel.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/dns.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/dns/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/domain.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/events.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/fs.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/fs/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/http.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/http2.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/https.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/inspector.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/module.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/net.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/os.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/path.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/perf_hooks.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/process.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/punycode.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/querystring.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/readline.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/repl.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/stream.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/stream/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/stream/consumers.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/stream/web.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/string_decoder.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/timers.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/timers/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/tls.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/trace_events.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/tty.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/url.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/util.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/v8.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/vm.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/wasi.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/worker_threads.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/zlib.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/globals.global.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/index.d.ts","../node-opcua-binary-stream/dist/binarystream.d.ts","../node-opcua-binary-stream/dist/binarystreamsizecalculator.d.ts","../node-opcua-binary-stream/dist/index.d.ts","../node-opcua-basic-types/dist/boolean.d.ts","../node-opcua-basic-types/dist/integers.d.ts","../node-opcua-basic-types/dist/floats.d.ts","../node-opcua-basic-types/dist/string.d.ts","../node-opcua-date-time/dist/date_time.d.ts","../node-opcua-date-time/dist/encode_decode.d.ts","../node-opcua-date-time/dist/index.d.ts","../node-opcua-basic-types/dist/date_time.d.ts","../node-opcua-basic-types/dist/byte_string.d.ts","../node-opcua-guid/dist/guid.d.ts","../node-opcua-guid/dist/index.d.ts","../node-opcua-nodeid/dist/nodeid.d.ts","../node-opcua-nodeid/dist/expanded_nodeid.d.ts","../node-opcua-nodeid/dist/index.d.ts","../node-opcua-basic-types/dist/node_id.d.ts","../node-opcua-status-code/dist/_generated_status_codes.d.ts","../node-opcua-status-code/dist/opcua_status_code.d.ts","../node-opcua-status-code/dist/callbacks.d.ts","../node-opcua-status-code/dist/index.d.ts","../node-opcua-basic-types/dist/status_code.d.ts","../node-opcua-basic-types/dist/guid.d.ts","../node-opcua-basic-types/dist/array.d.ts","../node-opcua-basic-types/dist/locale_id.d.ts","../node-opcua-basic-types/dist/attributeids.d.ts","../node-opcua-basic-types/dist/round_to_float.d.ts","../node-opcua-basic-types/dist/index.d.ts","../node-opcua-enum/dist/enum.d.ts","../node-opcua-enum/dist/index.d.ts","../node-opcua-factory/dist/types.d.ts","../node-opcua-factory/dist/factories_enumerations.d.ts","../node-opcua-factory/dist/datatype_factory.d.ts","../node-opcua-factory/dist/factories_structuredtypeschema.d.ts","../node-opcua-factory/dist/factories_baseobject.d.ts","../node-opcua-factory/dist/constructor_type.d.ts","../node-opcua-factory/dist/factories_id_generator.d.ts","../node-opcua-factory/dist/factories_basic_type.d.ts","../node-opcua-factory/dist/factories_builtin_types.d.ts","../node-opcua-factory/dist/factories_builtin_types_special.d.ts","../node-opcua-factory/dist/factories_schema_helpers.d.ts","../node-opcua-factory/dist/factories_factories.d.ts","../node-opcua-factory/dist/index.d.ts","./source/sequenceheader.ts","../node-opcua-assert/dist/index.d.ts","../node-opcua-buffer-utils/dist/buffer_utils.d.ts","../node-opcua-buffer-utils/dist/index.d.ts","../node-opcua-packet-assembler/dist/packet_assembler.d.ts","../node-opcua-packet-assembler/dist/index.d.ts","./source/read_message_header.ts","./source/chunk_manager.ts","./source/index.ts","../../node_modules/.pnpm/@types+async@3.2.8/node_modules/@types/async/index.d.ts","../../node_modules/.pnpm/@types+babel-types@7.0.9/node_modules/@types/babel-types/ts3.6/index.d.ts","../../node_modules/.pnpm/@types+babel-types@7.0.9/node_modules/@types/babel-types/index.d.ts","../../node_modules/.pnpm/@types+babylon@6.16.5/node_modules/@types/babylon/index.d.ts","../../node_modules/.pnpm/@types+bonjour@3.5.9/node_modules/@types/bonjour/index.d.ts","../../node_modules/.pnpm/@types+minimatch@3.0.3/node_modules/@types/minimatch/index.d.ts","../../node_modules/.pnpm/@types+glob@7.1.3/node_modules/@types/glob/index.d.ts","../../node_modules/.pnpm/@types+json-schema@7.0.9/node_modules/@types/json-schema/index.d.ts","../../node_modules/.pnpm/@types+json5@0.0.29/node_modules/@types/json5/index.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/common.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/array.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/collection.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/date.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/function.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/lang.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/math.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/number.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/object.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/seq.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/string.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/common/util.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.174/node_modules/@types/lodash/index.d.ts","../../node_modules/.pnpm/@types+long@4.0.1/node_modules/@types/long/index.d.ts","../../node_modules/.pnpm/@types+minimist@1.2.1/node_modules/@types/minimist/index.d.ts","../../node_modules/.pnpm/@types+mkdirp@1.0.1/node_modules/@types/mkdirp/index.d.ts","../../node_modules/.pnpm/@types+mocha@9.0.0/node_modules/@types/mocha/index.d.ts","../../node_modules/.pnpm/@types+normalize-package-data@2.4.0/node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/.pnpm/@types+once@1.4.0/node_modules/@types/once/index.d.ts","../../node_modules/.pnpm/@types+parse-json@4.0.0/node_modules/@types/parse-json/index.d.ts","../../node_modules/.pnpm/@types+prettier@2.4.0/node_modules/@types/prettier/index.d.ts","../../node_modules/.pnpm/@types+rimraf@3.0.2/node_modules/@types/rimraf/index.d.ts","../../node_modules/.pnpm/@sinonjs+fake-timers@7.1.2/node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts","../../node_modules/.pnpm/@types+sinon@10.0.4/node_modules/@types/sinon/index.d.ts","../../node_modules/.pnpm/@types+underscore@1.11.3/node_modules/@types/underscore/index.d.ts","../../node_modules/.pnpm/@types+uuid@8.3.0/node_modules/@types/uuid/index.d.ts","../../node_modules/.pnpm/@types+wordwrap@1.0.1/node_modules/@types/wordwrap/index.d.ts","../../node_modules/.pnpm/@types+yargs-parser@20.2.0/node_modules/@types/yargs-parser/index.d.ts","../../node_modules/.pnpm/@types+yargs@17.0.3/node_modules/@types/yargs/index.d.ts","../../node_modules/.pnpm/@types+node@16.10.1/node_modules/@types/node/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"e34eb9339171ec45da2801c1967e4d378bd61a1dceaa1b1b4e1b6d28cb9ca962","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"658a70ff0b4d8298739566835c4b324a9ecef1676a2cd1fabfb5660a821d38ef","affectsGlobalScope":true},"43978f18d1165eea81040bc9bfac1a551717f5cc9bd0f13b31bf490c5fcdc75f","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"c3ad91d23259b68e10a9bef08c5f9fa1d19f27ef740ac9af98ed226b030c09c6","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","384e598ab8e7faaa286828b2911f470aa1eb21b509d3128608cdbffa174b1e5a","260aad3a6bd3fc510b7f97cfb05859bfc045ce185f8c2b4d73ddb9c43b0eb3c0","cb428529763c6c8e38e42db2a39f333ffcc6d3aab396b24ac84b22da752c1de0","ad4b60488fb1e562bf375dac9299815f7028bf667d9b5887b2d01d501b7d1ddd","246341c3a7a2638cf830d690e69de1e6085a102c6a30596435b050e6ac86c11a","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"fd5d2f531376b1e84df315df0fe724445353a0ae2e2c4de7bae01e24c6c2047a","84214d474bed6e36b7608ba8a39d463ff90061b8af47cbd1a8f7ecb775e21fac","944660c079e97f62f513c33ec64cebc44154374053d3a9adb04bf02f67ee1066","b287b810b5035d5685f1df6e1e418f1ca452a3ed4f59fd5cc081dbf2045f0d9b","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","62a00c9cc0c78d9f282dcd7b0a7776aefe220106c3bc327e259e5f6484c6f556",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"f3e8bcce378a26bc672fce0ec05affabbbbfa18493b76f24c39136dea87100d0","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","cd4854d38f4eb5592afd98ab95ca17389a7dfe38013d9079e802d739bdbcc939","94eed4cc2f5f658d5e229ff1ccd38860bddf4233e347bf78edd2154dee1f2b99",{"version":"e51bee3200733b1f58818b5a9ea90fcd61c5b8afa3a0378391991f3696826a65","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","e70339a3d63f806c43f24250c42aa0000093923457b0ed7dfc10e0ac910ebca9","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a279435e7813d1f061c0cab6ab77b1b9377e8d96851e5ed4a76a1ce6eb6e628f","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","b810390059fc34122556c644f586e7a2b4598ded8afe5ba70bb82fc2e50577b1","ba9de5c5823e06ee3314f959c138cdaf4477d3a1a0769f0d24e62911020e8088","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"893f4b8552c248f6542174b53d1519f739b20428c970dda89cd90485dab059d0","e7474fb01bc85a10f80130566d6b1e22aa87c37db39659606c61b0598388f1d8","e398128f221ed527816828427410371dd3627c0ee040e16bcf5f2c870dc1dc33","949d10355f5bba71444b493fc81ea0766ece120d77bf7273ffa4d1d84049993a","67d8196adadf5aa3427710b0473627245f6e3e83c906245dc51f1c8fa92bd330","64bf3a03846d412c49124d760bab91fd58b2063d2e5d344db7b8d3371ddc1b5c","519ec49f2ed924fc49f5b63a83f8db0a2b33117d668176aef101a97f38ce97d7","d263f6380ba1de15681ac17ab2423787fdc95a15e4904394cd86f0a710d0274b","ba1297f1d2576426d18c8844798d80ef26921df774001e6ac1adc725a095e278","76c16c5c168f37762b09b4332526ee60846fdcbf8f8226ff1596130c82df4a31","59d0994c1dea48094f69f5f2d87050da788b402043ff467902753d24cdfde2cd","973c2a0a0b5f8ec9bf9a9505e6d99b93cc6d9090db6b75e6077d66752d86be5a","02a5400d36c57dffab228f362720e36fc2c3575e92e5208bd59159117605ae7a","66eb76887cdcd09f4d21365483459a312f38e5541a5a9b0d9c0b3a81542c8bd5","4b4ce96fc0ac4dbc4902e6da1b6fa0512334d2eb1c9c430fd3cd91974378e625","2949b1b6c0416cb02d09f70aa81748fb43224d0b9b1d945f0905d0d77bee598a","3ddd5679cb7a308053f5bd070622260380f77117bbc458558a506413bb478021","e8742a114fcc216e381c9ce413718c6cd337a0adad8fe68c6c03a32716f80c8e","4c75b3f68616055b5f26a92d9fddaa2fb5bc0584c1ead518ad2a78d069d6505f","c1bf8200ad08dcacde854030117c80812e02035474749413fed54094995f96a4","c06085257ce6fdd90bd12f52086ed94b185dd6d3a099a81754f3c08107cd9b54","f2899642cbb0c94363d2f2b714bdf61b8ec1766ff533101158ff2c7e3dcbff4a","4a5a7fa06e6ac148aa96c505d0d92bd6aa687355b5123ac5962ae4e13266d922","c816491e84338375748d3ec8d64fb2d1fead86ad55e170d7af4218ea4c644630","c57e7f12a5eba452ef7fc80f30ea018be14d75e16dd9bcec96768c790298cf6f","1a5d1e5311488da8ec8176cd7116dba9ef3a483902f89bad0eadd9c1e7dc1559","1484bf6fbe3d3b5c7004e1162e40f3485f1a35b0bb15779788026be098984054","096fa88517d9fa3747d470de69e6d558e0f2803163a8bcd223ef84f2f2e6a7bd","7c2ddd75e2d3f6947b5a7b1855fe5730a8697e917217a920d487e2ad68103a64","b765ed6bd1991a359093ef58b9f5f3cb412b23035592fd9aded0f9102bf8dd18","b5c2e1fead474a7a47026214a0a40bc68b5c6a64bccb7963dc76cf319cbe3e2b","dfe3e1ea7f302cb82eeae5d63f140c89e3be91ef23862af47692ee6a7a9ad0ad","15c9a0b8441ebcf605eaf4a565c665df5ba04e32705e8998b7896fd44ab44b09","e06c7ee9f7548f1ba9bb087c639d6eec0a53ee69ebbd68421f1d4ca7d554bb75","3e3a7a2edd4f10772b044ceebde7cde6346204dc453bc3dbf75384d527a48d1f","eb28748ed9f0acdba41c12dcab82b19de24beda58116ab363038414ac2e6a823","4bbebe354880fda663a618b3bc8dc5e9fd190aa153f62a28fae2e679d76151b9","05b855a42e1907f7e86535842127a20e0ca24a1f91532f7f416f9d3da3264ffe","037ea2147ce4483c3be44cee9e22b812e770d5031b7fdc76b820e9a2d90d14e7","12e5abaf1187346048aa02e828522f3fd476c4c296438957f007431ceeef779e","243057d75a3a16c081d14699d89eb8877066185574a571c86975d182bafa47ac","d126921c58d1961eb095a5bff7586121a71c29ff3ed2010a371992af92ccfd6c","c5e2b7892c49f45e1e8157b0c74608fe9073f8777e950f0dbdbafa5ee0327910","1b437c82bf0322b1e81718c98f0a99e9e73b008d90ac05bbd7a6b0c4647bf2c8","17334afea2ff94f187565e5dc8c17c0c9acb0b859b0b1ed44add97161081d172","6628984109745bd1bd36541005929a6c6d4c1ec31c08664c46c80190f6adc91b","101930d76eb0a0d0c5f13dc0bd5502845d1d2acd7635ec1a58082f51e071426f","bb4132a85613fe1c41748b2fed5eb3006a6892b6ea9195efb8ed1e06642d7376","97ac2b13a8c501b693c7781914a90325e83f513bdf838218eb56e09d1d59c652","93c435b3a5cd9d7429a38a0917f380d63a39a598460da2d4287c7b4329c5cd58","5e0248fb99372ca937f4b9092794908c8b3246a566b73790ca87b103a1f0e808","120ce219d11e6830175b9e1e2430c705515f1e0cfbcd0540137a916bd76e3217","7e815188c54768a20b2dfd70c66f00ce41c8db4fc9480b4a22dbdc260bf36379","f0018b2a9f9322021cd58e6d53b9c28a0136c7620bd616dc258d0111a6acb07e","21d0d028eee8b7e0f7ff96cb44e9e7f0a0fe719191c49f43ac7c9252216c28d6","b5151c566c80e1f636333b9cc7d8004b6152449768179fc73055692e1d9cbe52","226ee2a7ffe7fab4ea074872cd48460460d2d8d4cdcdb742e2469f1445ef48b6","e7ef01fb3213b1be13321648ac2612d60e9e2742e28fc2fcf68d27fb965a8d5c","713cb5c36e9452e3573d87fd4a911bfd4339aa21a7293f764689ae2dce4f198b","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","c535422967fe3cf8adfee4e1a543870aede1fa77fd055a382e6f6582a2d866eb",{"version":"e8bf92aabac2b11e1bf60a0161039cd6f5f0cd9713863ca2289dd7b10eddece8","affectsGlobalScope":true},"c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",{"version":"0946506310901fb245af3438f1dd2bdb6f89f08faf8dacac63e035d78c2bf482","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","92ae0192291b388db0aa580fee55d9977740e568d69b1ea2951955084936aed0","f4cf5f0ad1cfb0ceebbe4fbe8aaf0aa728e899c99cc36ec6c0c4b8f6e8a84c83","6b40029289530423f407a22755c85b81740f9acfd88d2b53564f8c1657c26660","86a04d7ce86bcb5814079939ddc37dc76a82f8b6170a79518ef6dfc2c6f8c00c",{"version":"0609dda5350cd6d8c42daef710dffe3b51521ffbd00109e234f7bfb7533194e7","affectsGlobalScope":true},"96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292","8d007c8fe1a38e90fd50410e3c690a54f9bbfef7a88964c4870ca2af9656bb64","3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","f5eeb7afb84f4e74ed655e5bf5455b7b192ee3d79cc8e869ce854fd5f554d2b5"],"options":{"composite":true,"declaration":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noStrictGenericChecks":false,"outDir":"./dist","removeComments":false,"rootDir":"./source","skipLibCheck":false,"sourceMap":true,"strict":true,"target":2},"fileIdsList":[[87],[87,149],[87,150],[54,87,186],[59,87,153,186],[87,157,159,160,161,162,163,164,165,166,167,168,169],[87,157,158,160,161,162,163,164,165,166,167,168,169],[87,158,159,160,161,162,163,164,165,166,167,168,169],[87,157,158,159,161,162,163,164,165,166,167,168,169],[87,157,158,159,160,162,163,164,165,166,167,168,169],[87,157,158,159,160,161,163,164,165,166,167,168,169],[87,157,158,159,160,161,162,164,165,166,167,168,169],[87,157,158,159,160,161,162,163,165,166,167,168,169],[87,157,158,159,160,161,162,163,164,166,167,168,169],[87,157,158,159,160,161,162,163,164,165,167,168,169],[87,157,158,159,160,161,162,163,164,165,166,168,169],[87,157,158,159,160,161,162,163,164,165,166,167,169],[87,157,158,159,160,161,162,163,164,165,166,167,168],[60,87,186],[60,87,154,186],[87,179],[87,184],[87,97],[87,94,97],[87,104],[87,97,108],[87,94,98,99,100,101,105,106,112,117,118,119,120,121,122],[87,97,101],[87,97,111],[87,116],[44,87],[47,87],[48,53,87],[49,59,60,67,76,86,87],[49,50,59,67,87],[51,87],[52,53,60,68,87],[53,76,83,87],[54,56,59,67,87],[55,87],[56,57,87],[58,59,87],[59,87],[59,60,61,76,86,87],[59,60,61,76,87],[62,67,76,86,87],[59,60,62,63,67,76,83,86,87],[62,64,76,83,86,87],[44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],[59,65,87],[66,86,87],[56,59,67,76,87],[68,87],[69,87],[47,70,87],[71,85,87,91],[72,87],[73,87],[59,74,87],[74,75,87,89],[59,76,77,78,87],[76,78,87],[76,77,87],[79,87],[80,87],[59,81,82,87],[81,82,87],[53,67,83,87],[84,87],[67,85,87],[48,62,73,86,87],[53,87],[76,87,88],[87,89],[87,90],[48,53,59,61,70,76,86,87,89,91],[76,87,92],[87,186],[87,95,96],[87,141],[59,87,97,140,142,145],[87,139,145,146],[87,97,144],[87,97,123,138],[87,97,102],[87,102,103],[87,124],[87,111,129,130],[87,111,126,127,129,130,131],[87,97,129],[87,97,126],[87,131],[87,97,125,126],[87,111,128,129,130,131],[87,126],[87,97,111,126,128],[87,126,127,128,129,130,131,132,133,134,135,136,137],[87,97,111,125,131],[87,107],[87,108,109,186],[87,109,110],[87,108,186],[87,143],[59,87,186],[87,114],[87,114,186],[87,114,115],[87,97,113]],"referencedMap":[[179,1],[148,1],[150,2],[149,1],[151,3],[152,4],[154,5],[155,1],[156,1],[158,6],[159,7],[157,8],[160,9],[161,10],[162,11],[163,12],[164,13],[165,14],[166,15],[167,16],[168,17],[169,18],[170,1],[153,1],[171,1],[172,19],[173,1],[174,1],[175,1],[176,1],[177,1],[178,20],[180,21],[181,1],[182,1],[183,1],[184,1],[185,22],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[42,1],[38,1],[39,1],[40,1],[41,1],[2,1],[1,1],[43,1],[12,1],[11,1],[140,1],[119,23],[121,1],[98,23],[106,24],[105,25],[100,23],[118,26],[123,27],[99,23],[120,28],[112,29],[122,1],[117,30],[101,23],[44,31],[45,31],[47,32],[48,33],[49,34],[50,35],[51,36],[52,37],[53,38],[54,39],[55,40],[56,41],[57,41],[58,42],[59,43],[60,44],[61,45],[46,1],[93,1],[62,46],[63,47],[64,48],[94,49],[65,50],[66,51],[67,52],[68,53],[69,54],[70,55],[71,56],[72,57],[73,58],[74,59],[75,60],[76,61],[78,62],[77,63],[79,64],[80,65],[81,66],[82,67],[83,68],[84,69],[85,70],[86,71],[87,72],[88,73],[89,74],[90,75],[91,76],[92,77],[95,78],[96,78],[97,79],[141,78],[142,80],[146,81],[147,82],[145,83],[139,84],[102,1],[103,85],[104,86],[124,1],[125,87],[131,88],[128,89],[130,90],[133,23],[134,91],[135,92],[127,93],[137,94],[132,1],[136,95],[129,96],[138,97],[126,98],[107,1],[108,99],[110,100],[111,101],[109,102],[144,103],[143,104],[113,105],[115,106],[116,107],[114,108]],"exportedModulesMap":[[179,1],[148,1],[150,2],[149,1],[151,3],[152,4],[154,5],[155,1],[156,1],[158,6],[159,7],[157,8],[160,9],[161,10],[162,11],[163,12],[164,13],[165,14],[166,15],[167,16],[168,17],[169,18],[170,1],[153,1],[171,1],[172,19],[173,1],[174,1],[175,1],[176,1],[177,1],[178,20],[180,21],[181,1],[182,1],[183,1],[184,1],[185,22],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[42,1],[38,1],[39,1],[40,1],[41,1],[2,1],[1,1],[43,1],[12,1],[11,1],[140,1],[119,23],[121,1],[98,23],[106,24],[105,25],[100,23],[118,26],[123,27],[99,23],[120,28],[112,29],[122,1],[117,30],[101,23],[44,31],[45,31],[47,32],[48,33],[49,34],[50,35],[51,36],[52,37],[53,38],[54,39],[55,40],[56,41],[57,41],[58,42],[59,43],[60,44],[61,45],[46,1],[93,1],[62,46],[63,47],[64,48],[94,49],[65,50],[66,51],[67,52],[68,53],[69,54],[70,55],[71,56],[72,57],[73,58],[74,59],[75,60],[76,61],[78,62],[77,63],[79,64],[80,65],[81,66],[82,67],[83,68],[84,69],[85,70],[86,71],[87,72],[88,73],[89,74],[90,75],[91,76],[92,77],[95,78],[96,78],[97,79],[141,78],[142,80],[146,81],[147,82],[145,83],[139,84],[102,1],[103,85],[104,86],[124,1],[125,87],[131,88],[128,89],[130,90],[133,23],[134,91],[135,92],[127,93],[137,94],[132,1],[136,95],[129,96],[138,97],[126,98],[107,1],[108,99],[110,100],[111,101],[109,102],[144,103],[143,104],[113,105],[115,106],[116,107],[114,108]],"semanticDiagnosticsPerFile":[179,148,150,149,151,152,154,155,156,158,159,157,160,161,162,163,164,165,166,167,168,169,170,153,171,172,173,174,175,176,177,178,180,181,182,183,184,185,9,10,14,13,3,15,16,17,18,19,20,21,22,4,5,26,23,24,25,27,28,29,6,30,31,32,33,7,34,35,36,37,8,42,38,39,40,41,2,1,43,12,11,140,119,121,98,106,105,100,118,123,99,120,112,122,117,101,44,45,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,46,93,62,63,64,94,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,95,96,97,141,142,146,147,145,139,102,103,104,124,125,131,128,130,133,134,135,127,137,132,136,129,138,126,107,108,110,111,109,144,143,113,115,116,114]},"version":"4.4.3"}
|
|
1
|
+
{"program":{"fileNames":["../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es6.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es5.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.dom.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.scripthost.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../users/etien/appdata/roaming/npm/pnpm-global/5/node_modules/.pnpm/typescript@4.4.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/assert.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/assert/strict.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/globals.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/async_hooks.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/buffer.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/child_process.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/cluster.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/console.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/constants.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/crypto.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/dgram.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/diagnostics_channel.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/dns.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/dns/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/domain.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/events.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/fs.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/fs/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/http.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/http2.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/https.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/inspector.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/module.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/net.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/os.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/path.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/perf_hooks.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/process.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/punycode.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/querystring.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/readline.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/repl.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/stream.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/stream/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/stream/consumers.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/stream/web.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/string_decoder.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/timers.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/timers/promises.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/tls.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/trace_events.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/tty.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/url.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/util.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/v8.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/vm.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/wasi.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/worker_threads.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/zlib.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/globals.global.d.ts","../node-opcua-basic-types/node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/index.d.ts","../node-opcua-binary-stream/dist/binarystream.d.ts","../node-opcua-binary-stream/dist/binarystreamsizecalculator.d.ts","../node-opcua-binary-stream/dist/index.d.ts","../node-opcua-basic-types/dist/boolean.d.ts","../node-opcua-basic-types/dist/integers.d.ts","../node-opcua-basic-types/dist/floats.d.ts","../node-opcua-basic-types/dist/string.d.ts","../node-opcua-date-time/dist/date_time.d.ts","../node-opcua-date-time/dist/encode_decode.d.ts","../node-opcua-date-time/dist/index.d.ts","../node-opcua-basic-types/dist/date_time.d.ts","../node-opcua-basic-types/dist/byte_string.d.ts","../node-opcua-guid/dist/guid.d.ts","../node-opcua-guid/dist/index.d.ts","../node-opcua-nodeid/dist/nodeid.d.ts","../node-opcua-nodeid/dist/expanded_nodeid.d.ts","../node-opcua-nodeid/dist/index.d.ts","../node-opcua-basic-types/dist/node_id.d.ts","../node-opcua-status-code/dist/_generated_status_codes.d.ts","../node-opcua-status-code/dist/opcua_status_code.d.ts","../node-opcua-status-code/dist/callbacks.d.ts","../node-opcua-status-code/dist/index.d.ts","../node-opcua-basic-types/dist/status_code.d.ts","../node-opcua-basic-types/dist/guid.d.ts","../node-opcua-basic-types/dist/array.d.ts","../node-opcua-basic-types/dist/locale_id.d.ts","../node-opcua-basic-types/dist/attributeids.d.ts","../node-opcua-basic-types/dist/round_to_float.d.ts","../node-opcua-basic-types/dist/index.d.ts","../node-opcua-enum/dist/enum.d.ts","../node-opcua-enum/dist/index.d.ts","../node-opcua-factory/dist/types.d.ts","../node-opcua-factory/dist/factories_enumerations.d.ts","../node-opcua-factory/dist/datatype_factory.d.ts","../node-opcua-factory/dist/factories_structuredtypeschema.d.ts","../node-opcua-factory/dist/factories_baseobject.d.ts","../node-opcua-factory/dist/constructor_type.d.ts","../node-opcua-factory/dist/factories_id_generator.d.ts","../node-opcua-factory/dist/factories_basic_type.d.ts","../node-opcua-factory/dist/factories_builtin_types.d.ts","../node-opcua-factory/dist/factories_builtin_types_special.d.ts","../node-opcua-factory/dist/factories_schema_helpers.d.ts","../node-opcua-factory/dist/factories_factories.d.ts","../node-opcua-factory/dist/index.d.ts","./source/sequenceheader.ts","../node-opcua-assert/dist/index.d.ts","../node-opcua-buffer-utils/dist/buffer_utils.d.ts","../node-opcua-buffer-utils/dist/index.d.ts","../node-opcua-packet-assembler/dist/packet_assembler.d.ts","../node-opcua-packet-assembler/dist/index.d.ts","./source/read_message_header.ts","./source/chunk_manager.ts","./source/index.ts","../../node_modules/.pnpm/@types+async@3.2.10/node_modules/@types/async/index.d.ts","../../node_modules/.pnpm/@types+babel-types@7.0.9/node_modules/@types/babel-types/ts3.6/index.d.ts","../../node_modules/.pnpm/@types+babel-types@7.0.9/node_modules/@types/babel-types/index.d.ts","../../node_modules/.pnpm/@types+babylon@6.16.5/node_modules/@types/babylon/index.d.ts","../../node_modules/.pnpm/@types+bonjour@3.5.9/node_modules/@types/bonjour/index.d.ts","../../node_modules/.pnpm/@types+minimatch@3.0.3/node_modules/@types/minimatch/index.d.ts","../../node_modules/.pnpm/@types+glob@7.1.3/node_modules/@types/glob/index.d.ts","../../node_modules/.pnpm/@types+json-schema@7.0.9/node_modules/@types/json-schema/index.d.ts","../../node_modules/.pnpm/@types+json5@0.0.29/node_modules/@types/json5/index.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/common.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/array.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/collection.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/date.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/function.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/lang.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/math.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/number.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/object.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/seq.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/string.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/common/util.d.ts","../../node_modules/.pnpm/@types+lodash@4.14.177/node_modules/@types/lodash/index.d.ts","../../node_modules/.pnpm/@types+long@4.0.1/node_modules/@types/long/index.d.ts","../../node_modules/.pnpm/@types+minimist@1.2.1/node_modules/@types/minimist/index.d.ts","../../node_modules/.pnpm/@types+mkdirp@1.0.1/node_modules/@types/mkdirp/index.d.ts","../../node_modules/.pnpm/@types+mocha@9.0.0/node_modules/@types/mocha/index.d.ts","../../node_modules/.pnpm/@types+normalize-package-data@2.4.0/node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/.pnpm/@types+once@1.4.0/node_modules/@types/once/index.d.ts","../../node_modules/.pnpm/@types+parse-json@4.0.0/node_modules/@types/parse-json/index.d.ts","../../node_modules/.pnpm/@types+prettier@2.4.2/node_modules/@types/prettier/index.d.ts","../../node_modules/.pnpm/@types+rimraf@3.0.2/node_modules/@types/rimraf/index.d.ts","../../node_modules/.pnpm/@sinonjs+fake-timers@7.1.2/node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts","../../node_modules/.pnpm/@types+sinon@10.0.6/node_modules/@types/sinon/index.d.ts","../../node_modules/.pnpm/@types+underscore@1.11.3/node_modules/@types/underscore/index.d.ts","../../node_modules/.pnpm/@types+uuid@8.3.0/node_modules/@types/uuid/index.d.ts","../../node_modules/.pnpm/@types+wordwrap@1.0.1/node_modules/@types/wordwrap/index.d.ts","../../node_modules/.pnpm/@types+yargs-parser@20.2.0/node_modules/@types/yargs-parser/index.d.ts","../../node_modules/.pnpm/@types+yargs@17.0.7/node_modules/@types/yargs/index.d.ts","../../node_modules/.pnpm/@types+node@16.11.9/node_modules/@types/node/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"e34eb9339171ec45da2801c1967e4d378bd61a1dceaa1b1b4e1b6d28cb9ca962","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"6dfd135b38ab97c536d9c966fc5a5a879a19c6ed75c2c9633902be1ef0945ff7","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","5533392c50c51b1a5c32b89f13145db929c574ef1c5949cf67a074a05ea107d9","b287b810b5035d5685f1df6e1e418f1ca452a3ed4f59fd5cc081dbf2045f0d9b","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"902cd98bf46e95caf4118a0733fb801e9e90eec3edaed6abdad77124afec9ca2","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","cd4854d38f4eb5592afd98ab95ca17389a7dfe38013d9079e802d739bdbcc939","94eed4cc2f5f658d5e229ff1ccd38860bddf4233e347bf78edd2154dee1f2b99",{"version":"bd1a08e30569b0fb2f0b21035eb9b039871f68faa9b98accf847e9c878c5e0a9","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a279435e7813d1f061c0cab6ab77b1b9377e8d96851e5ed4a76a1ce6eb6e628f","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","d88ecca73348e7c337541c4b8b60a50aca5e87384f6b8a422fc6603c637e4c21","badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1cdb8f094b969dcc183745dc88404e2d8fcf2a858c6e7cc2441011476573238e","e7474fb01bc85a10f80130566d6b1e22aa87c37db39659606c61b0598388f1d8","e398128f221ed527816828427410371dd3627c0ee040e16bcf5f2c870dc1dc33","949d10355f5bba71444b493fc81ea0766ece120d77bf7273ffa4d1d84049993a","67d8196adadf5aa3427710b0473627245f6e3e83c906245dc51f1c8fa92bd330","64bf3a03846d412c49124d760bab91fd58b2063d2e5d344db7b8d3371ddc1b5c","519ec49f2ed924fc49f5b63a83f8db0a2b33117d668176aef101a97f38ce97d7","d263f6380ba1de15681ac17ab2423787fdc95a15e4904394cd86f0a710d0274b","ba1297f1d2576426d18c8844798d80ef26921df774001e6ac1adc725a095e278","76c16c5c168f37762b09b4332526ee60846fdcbf8f8226ff1596130c82df4a31","59d0994c1dea48094f69f5f2d87050da788b402043ff467902753d24cdfde2cd","973c2a0a0b5f8ec9bf9a9505e6d99b93cc6d9090db6b75e6077d66752d86be5a","02a5400d36c57dffab228f362720e36fc2c3575e92e5208bd59159117605ae7a","66eb76887cdcd09f4d21365483459a312f38e5541a5a9b0d9c0b3a81542c8bd5","4b4ce96fc0ac4dbc4902e6da1b6fa0512334d2eb1c9c430fd3cd91974378e625","2949b1b6c0416cb02d09f70aa81748fb43224d0b9b1d945f0905d0d77bee598a","3ddd5679cb7a308053f5bd070622260380f77117bbc458558a506413bb478021","e8742a114fcc216e381c9ce413718c6cd337a0adad8fe68c6c03a32716f80c8e","4c75b3f68616055b5f26a92d9fddaa2fb5bc0584c1ead518ad2a78d069d6505f","c1bf8200ad08dcacde854030117c80812e02035474749413fed54094995f96a4","d95116a13e95ee45527242ca70b2e38c6fbe2b678eec0b794d17630d01499281","f2899642cbb0c94363d2f2b714bdf61b8ec1766ff533101158ff2c7e3dcbff4a","4a5a7fa06e6ac148aa96c505d0d92bd6aa687355b5123ac5962ae4e13266d922","c816491e84338375748d3ec8d64fb2d1fead86ad55e170d7af4218ea4c644630","c57e7f12a5eba452ef7fc80f30ea018be14d75e16dd9bcec96768c790298cf6f","1a5d1e5311488da8ec8176cd7116dba9ef3a483902f89bad0eadd9c1e7dc1559","1484bf6fbe3d3b5c7004e1162e40f3485f1a35b0bb15779788026be098984054","096fa88517d9fa3747d470de69e6d558e0f2803163a8bcd223ef84f2f2e6a7bd","7c2ddd75e2d3f6947b5a7b1855fe5730a8697e917217a920d487e2ad68103a64","b765ed6bd1991a359093ef58b9f5f3cb412b23035592fd9aded0f9102bf8dd18","b5c2e1fead474a7a47026214a0a40bc68b5c6a64bccb7963dc76cf319cbe3e2b","dfe3e1ea7f302cb82eeae5d63f140c89e3be91ef23862af47692ee6a7a9ad0ad","15c9a0b8441ebcf605eaf4a565c665df5ba04e32705e8998b7896fd44ab44b09","e06c7ee9f7548f1ba9bb087c639d6eec0a53ee69ebbd68421f1d4ca7d554bb75","3e3a7a2edd4f10772b044ceebde7cde6346204dc453bc3dbf75384d527a48d1f","eb28748ed9f0acdba41c12dcab82b19de24beda58116ab363038414ac2e6a823","4bbebe354880fda663a618b3bc8dc5e9fd190aa153f62a28fae2e679d76151b9","05b855a42e1907f7e86535842127a20e0ca24a1f91532f7f416f9d3da3264ffe","037ea2147ce4483c3be44cee9e22b812e770d5031b7fdc76b820e9a2d90d14e7","12e5abaf1187346048aa02e828522f3fd476c4c296438957f007431ceeef779e","243057d75a3a16c081d14699d89eb8877066185574a571c86975d182bafa47ac","d126921c58d1961eb095a5bff7586121a71c29ff3ed2010a371992af92ccfd6c","eeff7765d3fc6fb6f8eb1c6738416645f0ead167499a92561cf23879b66927ec","1b437c82bf0322b1e81718c98f0a99e9e73b008d90ac05bbd7a6b0c4647bf2c8","17334afea2ff94f187565e5dc8c17c0c9acb0b859b0b1ed44add97161081d172","ca81ba6bf4657f8f7817cfd3e31e03ebf9087914e5e020dc6cab9831d8a6b8f7","b6a06edf4211b8f4ccc7cef2ec4f94125e2fde2c6f3e1756349ab2956da93438","bb4132a85613fe1c41748b2fed5eb3006a6892b6ea9195efb8ed1e06642d7376","97ac2b13a8c501b693c7781914a90325e83f513bdf838218eb56e09d1d59c652","93c435b3a5cd9d7429a38a0917f380d63a39a598460da2d4287c7b4329c5cd58","5e0248fb99372ca937f4b9092794908c8b3246a566b73790ca87b103a1f0e808","8ddee35f786b6fd3d86ef081ba5e6c2cfd146a09e1419ca7aaf5321cc0fe7e31","83cb7e33b658fa585ae57251caf32b6c0a66c23cfae790e87a67bfca86f7c7eb","b19a286fa5187cff1f5ee5861ba69b7906a95509213353b6777a28cd899af57d","1bcc82c24244fb221f5d43c8a879733929e739041a39f03bde05b6d0214612b6","b5151c566c80e1f636333b9cc7d8004b6152449768179fc73055692e1d9cbe52","226ee2a7ffe7fab4ea074872cd48460460d2d8d4cdcdb742e2469f1445ef48b6","e7ef01fb3213b1be13321648ac2612d60e9e2742e28fc2fcf68d27fb965a8d5c","713cb5c36e9452e3573d87fd4a911bfd4339aa21a7293f764689ae2dce4f198b","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"e8465811693dfe4e96ef2b3dffda539d6edfe896961b7af37b44db2c0e48532b","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","c535422967fe3cf8adfee4e1a543870aede1fa77fd055a382e6f6582a2d866eb",{"version":"e8bf92aabac2b11e1bf60a0161039cd6f5f0cd9713863ca2289dd7b10eddece8","affectsGlobalScope":true},"c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",{"version":"0946506310901fb245af3438f1dd2bdb6f89f08faf8dacac63e035d78c2bf482","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","9d9e658d1d5b805562749ce383ef8c67ccb796394d8734d9c138788d7dab6ee3","f4cf5f0ad1cfb0ceebbe4fbe8aaf0aa728e899c99cc36ec6c0c4b8f6e8a84c83","6b40029289530423f407a22755c85b81740f9acfd88d2b53564f8c1657c26660","50a5b297e6c91df4f6068d98467a5e7ba4eeb888b9376757734dd4b1dfcdacd4",{"version":"0609dda5350cd6d8c42daef710dffe3b51521ffbd00109e234f7bfb7533194e7","affectsGlobalScope":true},"96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292","8d007c8fe1a38e90fd50410e3c690a54f9bbfef7a88964c4870ca2af9656bb64","3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","e8b8083042a5ae1536d815455fabd3873a8731a760b139723d7fc452bc9a954f"],"options":{"composite":true,"declaration":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noStrictGenericChecks":false,"outDir":"./dist","removeComments":false,"rootDir":"./source","skipLibCheck":false,"sourceMap":true,"strict":true,"target":2},"fileIdsList":[[87],[87,149],[87,150],[54,87,186],[59,87,153,186],[87,157,159,160,161,162,163,164,165,166,167,168,169],[87,157,158,160,161,162,163,164,165,166,167,168,169],[87,158,159,160,161,162,163,164,165,166,167,168,169],[87,157,158,159,161,162,163,164,165,166,167,168,169],[87,157,158,159,160,162,163,164,165,166,167,168,169],[87,157,158,159,160,161,163,164,165,166,167,168,169],[87,157,158,159,160,161,162,164,165,166,167,168,169],[87,157,158,159,160,161,162,163,165,166,167,168,169],[87,157,158,159,160,161,162,163,164,166,167,168,169],[87,157,158,159,160,161,162,163,164,165,167,168,169],[87,157,158,159,160,161,162,163,164,165,166,168,169],[87,157,158,159,160,161,162,163,164,165,166,167,169],[87,157,158,159,160,161,162,163,164,165,166,167,168],[60,87,186],[60,87,154,186],[87,179],[87,184],[87,97],[87,94,97],[87,104],[87,97,108],[87,94,98,99,100,101,105,106,112,117,118,119,120,121,122],[87,97,101],[87,97,111],[87,116],[44,87],[47,87],[48,53,87],[49,59,60,67,76,86,87],[49,50,59,67,87],[51,87],[52,53,60,68,87],[53,76,83,87],[54,56,59,67,87],[55,87],[56,57,87],[58,59,87],[59,87],[59,60,61,76,86,87],[59,60,61,76,87],[62,67,76,86,87],[59,60,62,63,67,76,83,86,87],[62,64,76,83,86,87],[44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],[59,65,87],[66,86,87],[56,59,67,76,87],[68,87],[69,87],[47,70,87],[71,85,87,91],[72,87],[73,87],[59,74,87],[74,75,87,89],[59,76,77,78,87],[76,78,87],[76,77,87],[79,87],[80,87],[59,81,82,87],[81,82,87],[53,67,83,87],[84,87],[67,85,87],[48,62,73,86,87],[53,87],[76,87,88],[87,89],[87,90],[48,53,59,61,70,76,86,87,89,91],[76,87,92],[87,186],[87,95,96],[87,141],[59,87,97,140,142,145],[87,139,145,146],[87,97,144],[87,97,123,138],[87,97,102],[87,102,103],[87,124],[87,111,129,130],[87,111,126,127,129,130,131],[87,97,129],[87,97,126],[87,131],[87,97,125,126],[87,111,128,129,130,131],[87,126,129],[87,97,111,126,128],[87,126,127,128,129,130,131,132,133,134,135,136,137],[87,97,111,125,131],[87,107],[87,108,109,186],[87,109,110],[87,108,186],[87,143],[59,87,186],[87,114],[87,114,186],[87,114,115],[87,97,113]],"referencedMap":[[179,1],[148,1],[150,2],[149,1],[151,3],[152,4],[154,5],[155,1],[156,1],[158,6],[159,7],[157,8],[160,9],[161,10],[162,11],[163,12],[164,13],[165,14],[166,15],[167,16],[168,17],[169,18],[170,1],[153,1],[171,1],[172,19],[173,1],[174,1],[175,1],[176,1],[177,1],[178,20],[180,21],[181,1],[182,1],[183,1],[184,1],[185,22],[140,1],[119,23],[121,1],[98,23],[106,24],[105,25],[100,23],[118,26],[123,27],[99,23],[120,28],[112,29],[122,1],[117,30],[101,23],[44,31],[45,31],[47,32],[48,33],[49,34],[50,35],[51,36],[52,37],[53,38],[54,39],[55,40],[56,41],[57,41],[58,42],[59,43],[60,44],[61,45],[46,1],[93,1],[62,46],[63,47],[64,48],[94,49],[65,50],[66,51],[67,52],[68,53],[69,54],[70,55],[71,56],[72,57],[73,58],[74,59],[75,60],[76,61],[78,62],[77,63],[79,64],[80,65],[81,66],[82,67],[83,68],[84,69],[85,70],[86,71],[87,72],[88,73],[89,74],[90,75],[91,76],[92,77],[95,78],[96,78],[97,79],[141,78],[142,80],[146,81],[147,82],[145,83],[139,84],[102,1],[103,85],[104,86],[124,1],[125,87],[131,88],[128,89],[130,90],[133,23],[134,91],[135,92],[127,93],[137,94],[132,1],[136,95],[129,96],[138,97],[126,98],[107,1],[108,99],[110,100],[111,101],[109,102],[144,103],[143,104],[113,105],[115,106],[116,107],[114,108],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[42,1],[38,1],[39,1],[40,1],[41,1],[2,1],[1,1],[43,1],[12,1],[11,1]],"exportedModulesMap":[[179,1],[148,1],[150,2],[149,1],[151,3],[152,4],[154,5],[155,1],[156,1],[158,6],[159,7],[157,8],[160,9],[161,10],[162,11],[163,12],[164,13],[165,14],[166,15],[167,16],[168,17],[169,18],[170,1],[153,1],[171,1],[172,19],[173,1],[174,1],[175,1],[176,1],[177,1],[178,20],[180,21],[181,1],[182,1],[183,1],[184,1],[185,22],[140,1],[119,23],[121,1],[98,23],[106,24],[105,25],[100,23],[118,26],[123,27],[99,23],[120,28],[112,29],[122,1],[117,30],[101,23],[44,31],[45,31],[47,32],[48,33],[49,34],[50,35],[51,36],[52,37],[53,38],[54,39],[55,40],[56,41],[57,41],[58,42],[59,43],[60,44],[61,45],[46,1],[93,1],[62,46],[63,47],[64,48],[94,49],[65,50],[66,51],[67,52],[68,53],[69,54],[70,55],[71,56],[72,57],[73,58],[74,59],[75,60],[76,61],[78,62],[77,63],[79,64],[80,65],[81,66],[82,67],[83,68],[84,69],[85,70],[86,71],[87,72],[88,73],[89,74],[90,75],[91,76],[92,77],[95,78],[96,78],[97,79],[141,78],[142,80],[146,81],[147,82],[145,83],[139,84],[102,1],[103,85],[104,86],[124,1],[125,87],[131,88],[128,89],[130,90],[133,23],[134,91],[135,92],[127,93],[137,94],[132,1],[136,95],[129,96],[138,97],[126,98],[107,1],[108,99],[110,100],[111,101],[109,102],[144,103],[143,104],[113,105],[115,106],[116,107],[114,108],[9,1],[10,1],[14,1],[13,1],[3,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[4,1],[5,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[6,1],[30,1],[31,1],[32,1],[33,1],[7,1],[34,1],[35,1],[36,1],[37,1],[8,1],[42,1],[38,1],[39,1],[40,1],[41,1],[2,1],[1,1],[43,1],[12,1],[11,1]],"semanticDiagnosticsPerFile":[179,148,150,149,151,152,154,155,156,158,159,157,160,161,162,163,164,165,166,167,168,169,170,153,171,172,173,174,175,176,177,178,180,181,182,183,184,185,140,119,121,98,106,105,100,118,123,99,120,112,122,117,101,44,45,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,46,93,62,63,64,94,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,95,96,97,141,142,146,147,145,139,102,103,104,124,125,131,128,130,133,134,135,127,137,132,136,129,138,126,107,108,110,111,109,144,143,113,115,116,114,9,10,14,13,3,15,16,17,18,19,20,21,22,4,5,26,23,24,25,27,28,29,6,30,31,32,33,7,34,35,36,37,8,42,38,39,40,41,2,1,43,12,11]},"version":"4.4.2"}
|