@push.rocks/smartproxy 3.31.1 → 3.32.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.portproxy.d.ts +18 -2
- package/dist_ts/classes.portproxy.js +688 -141
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.portproxy.ts +852 -178
|
@@ -1,45 +1,217 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
import { NetworkProxy } from './classes.networkproxy.js';
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
// Default configuration for session cache
|
|
4
|
+
const DEFAULT_SESSION_CACHE_CONFIG = {
|
|
5
|
+
maxEntries: 10000, // Default max 10,000 entries
|
|
6
|
+
expiryTime: 24 * 60 * 60 * 1000, // 24 hours default
|
|
7
|
+
cleanupInterval: 10 * 60 * 1000, // Clean up every 10 minutes
|
|
8
|
+
enabled: true // Enabled by default
|
|
9
|
+
};
|
|
10
|
+
// Enhanced TLS session cache with size limits and better performance
|
|
11
|
+
class TlsSessionCache {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.cache = new Map();
|
|
14
|
+
this.cleanupTimer = null;
|
|
15
|
+
this.lastCleanupTime = 0;
|
|
16
|
+
this.cacheStats = {
|
|
17
|
+
hits: 0,
|
|
18
|
+
misses: 0,
|
|
19
|
+
expirations: 0,
|
|
20
|
+
evictions: 0,
|
|
21
|
+
total: 0
|
|
22
|
+
};
|
|
23
|
+
this.config = { ...DEFAULT_SESSION_CACHE_CONFIG, ...config };
|
|
24
|
+
this.startCleanupTimer();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get a session from the cache
|
|
28
|
+
*/
|
|
29
|
+
get(key) {
|
|
30
|
+
// Skip if cache is disabled
|
|
31
|
+
if (!this.config.enabled)
|
|
32
|
+
return undefined;
|
|
33
|
+
const entry = this.cache.get(key);
|
|
34
|
+
if (entry) {
|
|
35
|
+
// Update access information
|
|
36
|
+
entry.lastAccessed = Date.now();
|
|
37
|
+
entry.accessCount = (entry.accessCount || 0) + 1;
|
|
38
|
+
this.cache.set(key, entry);
|
|
39
|
+
this.cacheStats.hits++;
|
|
40
|
+
return entry;
|
|
41
|
+
}
|
|
42
|
+
this.cacheStats.misses++;
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if the cache has a key
|
|
47
|
+
*/
|
|
48
|
+
has(key) {
|
|
49
|
+
// Skip if cache is disabled
|
|
50
|
+
if (!this.config.enabled)
|
|
51
|
+
return false;
|
|
52
|
+
const exists = this.cache.has(key);
|
|
53
|
+
if (exists) {
|
|
54
|
+
const entry = this.cache.get(key);
|
|
55
|
+
// Check if entry has expired
|
|
56
|
+
if (Date.now() - entry.ticketTimestamp > this.config.expiryTime) {
|
|
57
|
+
this.cache.delete(key);
|
|
58
|
+
this.cacheStats.expirations++;
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Update last accessed time
|
|
62
|
+
entry.lastAccessed = Date.now();
|
|
63
|
+
this.cache.set(key, entry);
|
|
64
|
+
}
|
|
65
|
+
return exists;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set a session in the cache
|
|
69
|
+
*/
|
|
70
|
+
set(key, value) {
|
|
71
|
+
// Skip if cache is disabled
|
|
72
|
+
if (!this.config.enabled)
|
|
73
|
+
return;
|
|
74
|
+
// Ensure timestamps are set
|
|
75
|
+
const entry = {
|
|
76
|
+
...value,
|
|
77
|
+
lastAccessed: Date.now(),
|
|
78
|
+
accessCount: 0
|
|
79
|
+
};
|
|
80
|
+
// Check if we need to evict entries
|
|
81
|
+
if (!this.cache.has(key) && this.cache.size >= this.config.maxEntries) {
|
|
82
|
+
this.evictOldest();
|
|
83
|
+
}
|
|
84
|
+
this.cache.set(key, entry);
|
|
85
|
+
this.cacheStats.total = this.cache.size;
|
|
86
|
+
// Run cleanup if it's been a while
|
|
87
|
+
const timeSinceCleanup = Date.now() - this.lastCleanupTime;
|
|
88
|
+
if (timeSinceCleanup > this.config.cleanupInterval * 2) {
|
|
89
|
+
this.cleanup();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Delete a session from the cache
|
|
94
|
+
*/
|
|
95
|
+
delete(key) {
|
|
96
|
+
return this.cache.delete(key);
|
|
13
97
|
}
|
|
14
|
-
|
|
15
|
-
|
|
98
|
+
/**
|
|
99
|
+
* Clear the entire cache
|
|
100
|
+
*/
|
|
101
|
+
clear() {
|
|
102
|
+
this.cache.clear();
|
|
103
|
+
this.cacheStats.total = 0;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get cache statistics
|
|
107
|
+
*/
|
|
108
|
+
getStats() {
|
|
109
|
+
return {
|
|
110
|
+
...this.cacheStats,
|
|
111
|
+
size: this.cache.size,
|
|
112
|
+
enabled: this.config.enabled,
|
|
113
|
+
maxEntries: this.config.maxEntries,
|
|
114
|
+
expiryTimeHours: this.config.expiryTime / (60 * 60 * 1000)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Update cache configuration
|
|
119
|
+
*/
|
|
120
|
+
updateConfig(config) {
|
|
121
|
+
this.config = { ...this.config, ...config };
|
|
122
|
+
// Restart the cleanup timer with new interval
|
|
123
|
+
this.startCleanupTimer();
|
|
124
|
+
// Run immediate cleanup if max entries was reduced
|
|
125
|
+
if (config.maxEntries && this.cache.size > config.maxEntries) {
|
|
126
|
+
while (this.cache.size > config.maxEntries) {
|
|
127
|
+
this.evictOldest();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Start the cleanup timer
|
|
133
|
+
*/
|
|
134
|
+
startCleanupTimer() {
|
|
135
|
+
if (this.cleanupTimer) {
|
|
136
|
+
clearInterval(this.cleanupTimer);
|
|
137
|
+
this.cleanupTimer = null;
|
|
138
|
+
}
|
|
139
|
+
if (!this.config.enabled)
|
|
140
|
+
return;
|
|
141
|
+
this.cleanupTimer = setInterval(() => {
|
|
142
|
+
this.cleanup();
|
|
143
|
+
}, this.config.cleanupInterval);
|
|
144
|
+
// Make sure the interval doesn't keep the process alive
|
|
145
|
+
if (this.cleanupTimer.unref) {
|
|
146
|
+
this.cleanupTimer.unref();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Clean up expired entries
|
|
151
|
+
*/
|
|
152
|
+
cleanup() {
|
|
153
|
+
this.lastCleanupTime = Date.now();
|
|
16
154
|
const now = Date.now();
|
|
17
|
-
|
|
18
|
-
for (const [
|
|
19
|
-
if (now - info.ticketTimestamp > expiryTime) {
|
|
20
|
-
|
|
155
|
+
let expiredCount = 0;
|
|
156
|
+
for (const [key, info] of this.cache.entries()) {
|
|
157
|
+
if (now - info.ticketTimestamp > this.config.expiryTime) {
|
|
158
|
+
this.cache.delete(key);
|
|
159
|
+
expiredCount++;
|
|
21
160
|
}
|
|
22
161
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
162
|
+
if (expiredCount > 0) {
|
|
163
|
+
this.cacheStats.expirations += expiredCount;
|
|
164
|
+
this.cacheStats.total = this.cache.size;
|
|
165
|
+
console.log(`TLS Session Cache: Cleaned up ${expiredCount} expired entries. ${this.cache.size} entries remaining.`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Evict the oldest entries when cache is full
|
|
170
|
+
*/
|
|
171
|
+
evictOldest() {
|
|
172
|
+
if (this.cache.size === 0)
|
|
173
|
+
return;
|
|
174
|
+
let oldestKey = null;
|
|
175
|
+
let oldestTime = Date.now();
|
|
176
|
+
// Strategy: Find least recently accessed entry
|
|
177
|
+
for (const [key, info] of this.cache.entries()) {
|
|
178
|
+
const lastAccess = info.lastAccessed || info.ticketTimestamp;
|
|
179
|
+
if (lastAccess < oldestTime) {
|
|
180
|
+
oldestTime = lastAccess;
|
|
181
|
+
oldestKey = key;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (oldestKey) {
|
|
185
|
+
this.cache.delete(oldestKey);
|
|
186
|
+
this.cacheStats.evictions++;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Stop cleanup timer (used during shutdown)
|
|
191
|
+
*/
|
|
192
|
+
stop() {
|
|
193
|
+
if (this.cleanupTimer) {
|
|
194
|
+
clearInterval(this.cleanupTimer);
|
|
195
|
+
this.cleanupTimer = null;
|
|
196
|
+
}
|
|
27
197
|
}
|
|
28
198
|
}
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
//
|
|
199
|
+
// Create the global session cache
|
|
200
|
+
const tlsSessionCache = new TlsSessionCache();
|
|
201
|
+
// Legacy function for backward compatibility
|
|
32
202
|
function stopSessionCleanupTimer() {
|
|
33
|
-
|
|
34
|
-
clearInterval(tlsSessionCleanupTimer);
|
|
35
|
-
tlsSessionCleanupTimer = null;
|
|
36
|
-
}
|
|
203
|
+
tlsSessionCache.stop();
|
|
37
204
|
}
|
|
38
205
|
/**
|
|
39
206
|
* Extracts the SNI (Server Name Indication) from a TLS ClientHello packet.
|
|
40
207
|
* Enhanced for robustness and detailed logging.
|
|
41
208
|
* Also extracts and tracks TLS Session IDs for session resumption handling.
|
|
42
209
|
*
|
|
210
|
+
* Improved to handle:
|
|
211
|
+
* - Multiple TLS records in a single buffer
|
|
212
|
+
* - Fragmented TLS handshakes across multiple records
|
|
213
|
+
* - Partial TLS records that may continue in future chunks
|
|
214
|
+
*
|
|
43
215
|
* @param buffer - Buffer containing the TLS ClientHello.
|
|
44
216
|
* @param enableLogging - Whether to enable detailed logging.
|
|
45
217
|
* @returns An object containing SNI and session information, or undefined if parsing fails.
|
|
@@ -50,43 +222,139 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
50
222
|
if (buffer.length < 5) {
|
|
51
223
|
if (enableLogging)
|
|
52
224
|
console.log('Buffer too small for TLS header');
|
|
53
|
-
return
|
|
225
|
+
return {
|
|
226
|
+
isResumption: false,
|
|
227
|
+
partialExtract: true // Indicating we need more data
|
|
228
|
+
};
|
|
54
229
|
}
|
|
55
|
-
// Check record type (has to be handshake - 22)
|
|
230
|
+
// Check first record type (has to be handshake - 22)
|
|
56
231
|
const recordType = buffer.readUInt8(0);
|
|
57
232
|
if (recordType !== 22) {
|
|
58
233
|
if (enableLogging)
|
|
59
234
|
console.log(`Not a TLS handshake. Record type: ${recordType}`);
|
|
60
235
|
return undefined;
|
|
61
236
|
}
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
237
|
+
// Track multiple records and total records examined
|
|
238
|
+
let recordsExamined = 0;
|
|
239
|
+
let multipleRecords = false;
|
|
240
|
+
let currentPosition = 0;
|
|
241
|
+
let result;
|
|
242
|
+
// Process potentially multiple TLS records in the buffer
|
|
243
|
+
while (currentPosition + 5 <= buffer.length) {
|
|
244
|
+
recordsExamined++;
|
|
245
|
+
// Read record header
|
|
246
|
+
const currentRecordType = buffer.readUInt8(currentPosition);
|
|
247
|
+
// Only process handshake records (type 22)
|
|
248
|
+
if (currentRecordType !== 22) {
|
|
249
|
+
if (enableLogging)
|
|
250
|
+
console.log(`Skipping non-handshake record at position ${currentPosition}, type: ${currentRecordType}`);
|
|
251
|
+
// Move to next potential record
|
|
252
|
+
if (currentPosition + 5 <= buffer.length) {
|
|
253
|
+
// Need at least 5 bytes to determine next record length
|
|
254
|
+
const nextRecordLength = buffer.readUInt16BE(currentPosition + 3);
|
|
255
|
+
currentPosition += 5 + nextRecordLength;
|
|
256
|
+
multipleRecords = true;
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
// Not enough data to determine next record
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Check TLS version
|
|
265
|
+
const majorVersion = buffer.readUInt8(currentPosition + 1);
|
|
266
|
+
const minorVersion = buffer.readUInt8(currentPosition + 2);
|
|
70
267
|
if (enableLogging)
|
|
71
|
-
console.log(`
|
|
72
|
-
|
|
268
|
+
console.log(`TLS Version: ${majorVersion}.${minorVersion} at position ${currentPosition}`);
|
|
269
|
+
// Get record length
|
|
270
|
+
const recordLength = buffer.readUInt16BE(currentPosition + 3);
|
|
271
|
+
// Check if we have the complete record
|
|
272
|
+
if (currentPosition + 5 + recordLength > buffer.length) {
|
|
273
|
+
if (enableLogging) {
|
|
274
|
+
console.log(`Incomplete TLS record at position ${currentPosition}. Expected: ${currentPosition + 5 + recordLength}, Got: ${buffer.length}`);
|
|
275
|
+
}
|
|
276
|
+
// Return partial info and signal that more data is needed
|
|
277
|
+
return {
|
|
278
|
+
isResumption: false,
|
|
279
|
+
partialExtract: true,
|
|
280
|
+
recordsExamined,
|
|
281
|
+
multipleRecords
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
// Process this record - extract handshake information
|
|
285
|
+
const recordResult = extractSNIFromRecord(buffer.slice(currentPosition, currentPosition + 5 + recordLength), enableLogging);
|
|
286
|
+
// If we found SNI or session info in this record, store it
|
|
287
|
+
if (recordResult && (recordResult.serverName || recordResult.isResumption)) {
|
|
288
|
+
result = recordResult;
|
|
289
|
+
result.recordsExamined = recordsExamined;
|
|
290
|
+
result.multipleRecords = multipleRecords;
|
|
291
|
+
// Once we've found SNI or session resumption info, we can stop processing
|
|
292
|
+
// But we'll still set the multipleRecords flag to indicate more records exist
|
|
293
|
+
if (currentPosition + 5 + recordLength < buffer.length) {
|
|
294
|
+
result.multipleRecords = true;
|
|
295
|
+
}
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
// Move to the next record
|
|
299
|
+
currentPosition += 5 + recordLength;
|
|
300
|
+
// Set the flag if we've processed multiple records
|
|
301
|
+
if (currentPosition < buffer.length) {
|
|
302
|
+
multipleRecords = true;
|
|
303
|
+
}
|
|
73
304
|
}
|
|
305
|
+
// If we processed records but didn't find SNI or session info
|
|
306
|
+
if (recordsExamined > 0 && !result) {
|
|
307
|
+
return {
|
|
308
|
+
isResumption: false,
|
|
309
|
+
recordsExamined,
|
|
310
|
+
multipleRecords
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
console.log(`Error extracting SNI: ${err}`);
|
|
317
|
+
return undefined;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Extracts SNI information from a single TLS record
|
|
322
|
+
* This helper function processes a single complete TLS record
|
|
323
|
+
*/
|
|
324
|
+
function extractSNIFromRecord(recordBuffer, enableLogging = false) {
|
|
325
|
+
try {
|
|
326
|
+
// Skip the 5-byte TLS record header
|
|
74
327
|
let offset = 5;
|
|
75
|
-
|
|
76
|
-
|
|
328
|
+
// Verify this is a handshake message
|
|
329
|
+
const handshakeType = recordBuffer.readUInt8(offset);
|
|
330
|
+
if (handshakeType !== 1) { // 1 = ClientHello
|
|
77
331
|
if (enableLogging)
|
|
78
332
|
console.log(`Not a ClientHello. Handshake type: ${handshakeType}`);
|
|
79
333
|
return undefined;
|
|
80
334
|
}
|
|
81
|
-
|
|
335
|
+
// Skip the 4-byte handshake header (type + 3 bytes length)
|
|
336
|
+
offset += 4;
|
|
337
|
+
// Check if we have at least 38 more bytes for protocol version and random
|
|
338
|
+
if (offset + 38 > recordBuffer.length) {
|
|
339
|
+
if (enableLogging)
|
|
340
|
+
console.log('Buffer too small for handshake header');
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
82
343
|
// Client version
|
|
83
|
-
const clientMajorVersion =
|
|
84
|
-
const clientMinorVersion =
|
|
344
|
+
const clientMajorVersion = recordBuffer.readUInt8(offset);
|
|
345
|
+
const clientMinorVersion = recordBuffer.readUInt8(offset + 1);
|
|
85
346
|
if (enableLogging)
|
|
86
347
|
console.log(`Client Version: ${clientMajorVersion}.${clientMinorVersion}`);
|
|
87
|
-
|
|
348
|
+
// Skip version and random (2 + 32 bytes)
|
|
349
|
+
offset += 2 + 32;
|
|
350
|
+
// Session ID
|
|
351
|
+
if (offset + 1 > recordBuffer.length) {
|
|
352
|
+
if (enableLogging)
|
|
353
|
+
console.log('Buffer too small for session ID length');
|
|
354
|
+
return undefined;
|
|
355
|
+
}
|
|
88
356
|
// Extract Session ID for session resumption tracking
|
|
89
|
-
const sessionIDLength =
|
|
357
|
+
const sessionIDLength = recordBuffer.readUInt8(offset);
|
|
90
358
|
if (enableLogging)
|
|
91
359
|
console.log(`Session ID Length: ${sessionIDLength}`);
|
|
92
360
|
// If there's a session ID, extract it
|
|
@@ -95,7 +363,12 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
95
363
|
let isResumption = false;
|
|
96
364
|
let resumedDomain;
|
|
97
365
|
if (sessionIDLength > 0) {
|
|
98
|
-
|
|
366
|
+
if (offset + 1 + sessionIDLength > recordBuffer.length) {
|
|
367
|
+
if (enableLogging)
|
|
368
|
+
console.log('Buffer too small for session ID data');
|
|
369
|
+
return undefined;
|
|
370
|
+
}
|
|
371
|
+
sessionId = Buffer.from(recordBuffer.slice(offset + 1, offset + 1 + sessionIDLength));
|
|
99
372
|
// Convert sessionId to a string key for our cache
|
|
100
373
|
sessionIdKey = sessionId.toString('hex');
|
|
101
374
|
if (enableLogging) {
|
|
@@ -111,59 +384,115 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
111
384
|
}
|
|
112
385
|
}
|
|
113
386
|
}
|
|
114
|
-
offset += 1 + sessionIDLength; // Skip session ID
|
|
387
|
+
offset += 1 + sessionIDLength; // Skip session ID length and data
|
|
115
388
|
// Cipher suites
|
|
116
|
-
if (offset + 2 >
|
|
389
|
+
if (offset + 2 > recordBuffer.length) {
|
|
117
390
|
if (enableLogging)
|
|
118
391
|
console.log('Buffer too small for cipher suites length');
|
|
119
392
|
return undefined;
|
|
120
393
|
}
|
|
121
|
-
const cipherSuitesLength =
|
|
394
|
+
const cipherSuitesLength = recordBuffer.readUInt16BE(offset);
|
|
122
395
|
if (enableLogging)
|
|
123
396
|
console.log(`Cipher Suites Length: ${cipherSuitesLength}`);
|
|
124
|
-
offset
|
|
397
|
+
if (offset + 2 + cipherSuitesLength > recordBuffer.length) {
|
|
398
|
+
if (enableLogging)
|
|
399
|
+
console.log('Buffer too small for cipher suites data');
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
offset += 2 + cipherSuitesLength; // Skip cipher suites length and data
|
|
125
403
|
// Compression methods
|
|
126
|
-
if (offset + 1 >
|
|
404
|
+
if (offset + 1 > recordBuffer.length) {
|
|
127
405
|
if (enableLogging)
|
|
128
406
|
console.log('Buffer too small for compression methods length');
|
|
129
407
|
return undefined;
|
|
130
408
|
}
|
|
131
|
-
const compressionMethodsLength =
|
|
409
|
+
const compressionMethodsLength = recordBuffer.readUInt8(offset);
|
|
132
410
|
if (enableLogging)
|
|
133
411
|
console.log(`Compression Methods Length: ${compressionMethodsLength}`);
|
|
134
|
-
offset
|
|
135
|
-
// Extensions
|
|
136
|
-
if (offset + 2 > buffer.length) {
|
|
412
|
+
if (offset + 1 + compressionMethodsLength > recordBuffer.length) {
|
|
137
413
|
if (enableLogging)
|
|
138
|
-
console.log('Buffer too small for
|
|
414
|
+
console.log('Buffer too small for compression methods data');
|
|
139
415
|
return undefined;
|
|
140
416
|
}
|
|
141
|
-
|
|
417
|
+
offset += 1 + compressionMethodsLength; // Skip compression methods length and data
|
|
418
|
+
// Check if we have extensions data
|
|
419
|
+
if (offset + 2 > recordBuffer.length) {
|
|
420
|
+
if (enableLogging)
|
|
421
|
+
console.log('No extensions data found - end of ClientHello');
|
|
422
|
+
// Even without SNI, we might be dealing with a session resumption
|
|
423
|
+
if (isResumption && resumedDomain) {
|
|
424
|
+
return {
|
|
425
|
+
serverName: resumedDomain, // Use the domain from previous session
|
|
426
|
+
sessionId,
|
|
427
|
+
sessionIdKey,
|
|
428
|
+
hasSessionTicket: false,
|
|
429
|
+
isResumption: true,
|
|
430
|
+
resumedDomain
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
return {
|
|
434
|
+
isResumption,
|
|
435
|
+
sessionId,
|
|
436
|
+
sessionIdKey
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
// Extensions
|
|
440
|
+
const extensionsLength = recordBuffer.readUInt16BE(offset);
|
|
142
441
|
if (enableLogging)
|
|
143
442
|
console.log(`Extensions Length: ${extensionsLength}`);
|
|
144
443
|
offset += 2;
|
|
145
444
|
const extensionsEnd = offset + extensionsLength;
|
|
146
|
-
if (extensionsEnd >
|
|
147
|
-
if (enableLogging)
|
|
148
|
-
console.log(`Buffer too small for extensions. Expected end: ${extensionsEnd}, Buffer length: ${
|
|
149
|
-
|
|
445
|
+
if (extensionsEnd > recordBuffer.length) {
|
|
446
|
+
if (enableLogging) {
|
|
447
|
+
console.log(`Buffer too small for extensions. Expected end: ${extensionsEnd}, Buffer length: ${recordBuffer.length}`);
|
|
448
|
+
}
|
|
449
|
+
// Even without complete extensions, we might be dealing with a session resumption
|
|
450
|
+
if (isResumption && resumedDomain) {
|
|
451
|
+
return {
|
|
452
|
+
serverName: resumedDomain, // Use the domain from previous session
|
|
453
|
+
sessionId,
|
|
454
|
+
sessionIdKey,
|
|
455
|
+
hasSessionTicket: false,
|
|
456
|
+
isResumption: true,
|
|
457
|
+
resumedDomain
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
return {
|
|
461
|
+
isResumption,
|
|
462
|
+
sessionId,
|
|
463
|
+
sessionIdKey,
|
|
464
|
+
partialExtract: true // Indicating we have incomplete extensions data
|
|
465
|
+
};
|
|
150
466
|
}
|
|
151
467
|
// Variables to track session tickets
|
|
152
468
|
let hasSessionTicket = false;
|
|
153
469
|
let sessionTicketId;
|
|
154
470
|
// Parse extensions
|
|
155
471
|
while (offset + 4 <= extensionsEnd) {
|
|
156
|
-
const extensionType =
|
|
157
|
-
const extensionLength =
|
|
158
|
-
if (enableLogging)
|
|
472
|
+
const extensionType = recordBuffer.readUInt16BE(offset);
|
|
473
|
+
const extensionLength = recordBuffer.readUInt16BE(offset + 2);
|
|
474
|
+
if (enableLogging) {
|
|
159
475
|
console.log(`Extension Type: 0x${extensionType.toString(16)}, Length: ${extensionLength}`);
|
|
476
|
+
}
|
|
477
|
+
if (offset + 4 + extensionLength > recordBuffer.length) {
|
|
478
|
+
if (enableLogging) {
|
|
479
|
+
console.log(`Extension data incomplete. Expected: ${offset + 4 + extensionLength}, Got: ${recordBuffer.length}`);
|
|
480
|
+
}
|
|
481
|
+
return {
|
|
482
|
+
isResumption,
|
|
483
|
+
sessionId,
|
|
484
|
+
sessionIdKey,
|
|
485
|
+
hasSessionTicket,
|
|
486
|
+
partialExtract: true
|
|
487
|
+
};
|
|
488
|
+
}
|
|
160
489
|
offset += 4;
|
|
161
490
|
// Check for Session Ticket extension (type 0x0023)
|
|
162
491
|
if (extensionType === 0x0023 && extensionLength > 0) {
|
|
163
492
|
hasSessionTicket = true;
|
|
164
493
|
// Extract a hash of the ticket for tracking
|
|
165
494
|
if (extensionLength > 16) { // Ensure we have enough bytes to create a meaningful ID
|
|
166
|
-
const ticketBytes =
|
|
495
|
+
const ticketBytes = recordBuffer.slice(offset, offset + Math.min(16, extensionLength));
|
|
167
496
|
sessionTicketId = ticketBytes.toString('hex');
|
|
168
497
|
if (enableLogging) {
|
|
169
498
|
console.log(`Session Ticket found, ID: ${sessionTicketId}`);
|
|
@@ -180,37 +509,68 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
180
509
|
}
|
|
181
510
|
}
|
|
182
511
|
}
|
|
512
|
+
// Server Name Indication extension (type 0x0000)
|
|
183
513
|
if (extensionType === 0x0000) {
|
|
184
|
-
|
|
185
|
-
if (offset + 2 > buffer.length) {
|
|
514
|
+
if (offset + 2 > recordBuffer.length) {
|
|
186
515
|
if (enableLogging)
|
|
187
516
|
console.log('Buffer too small for SNI list length');
|
|
188
|
-
return
|
|
517
|
+
return {
|
|
518
|
+
isResumption,
|
|
519
|
+
sessionId,
|
|
520
|
+
sessionIdKey,
|
|
521
|
+
hasSessionTicket,
|
|
522
|
+
partialExtract: true
|
|
523
|
+
};
|
|
189
524
|
}
|
|
190
|
-
const sniListLength =
|
|
525
|
+
const sniListLength = recordBuffer.readUInt16BE(offset);
|
|
191
526
|
if (enableLogging)
|
|
192
527
|
console.log(`SNI List Length: ${sniListLength}`);
|
|
193
528
|
offset += 2;
|
|
194
529
|
const sniListEnd = offset + sniListLength;
|
|
195
|
-
if (sniListEnd >
|
|
196
|
-
if (enableLogging)
|
|
197
|
-
console.log(`Buffer too small for SNI list. Expected end: ${sniListEnd}, Buffer length: ${
|
|
198
|
-
|
|
530
|
+
if (sniListEnd > recordBuffer.length) {
|
|
531
|
+
if (enableLogging) {
|
|
532
|
+
console.log(`Buffer too small for SNI list. Expected end: ${sniListEnd}, Buffer length: ${recordBuffer.length}`);
|
|
533
|
+
}
|
|
534
|
+
return {
|
|
535
|
+
isResumption,
|
|
536
|
+
sessionId,
|
|
537
|
+
sessionIdKey,
|
|
538
|
+
hasSessionTicket,
|
|
539
|
+
partialExtract: true
|
|
540
|
+
};
|
|
199
541
|
}
|
|
200
542
|
while (offset + 3 < sniListEnd) {
|
|
201
|
-
const nameType =
|
|
202
|
-
|
|
543
|
+
const nameType = recordBuffer.readUInt8(offset++);
|
|
544
|
+
if (offset + 2 > recordBuffer.length) {
|
|
545
|
+
if (enableLogging)
|
|
546
|
+
console.log('Buffer too small for SNI name length');
|
|
547
|
+
return {
|
|
548
|
+
isResumption,
|
|
549
|
+
sessionId,
|
|
550
|
+
sessionIdKey,
|
|
551
|
+
hasSessionTicket,
|
|
552
|
+
partialExtract: true
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
const nameLen = recordBuffer.readUInt16BE(offset);
|
|
203
556
|
offset += 2;
|
|
204
557
|
if (enableLogging)
|
|
205
558
|
console.log(`Name Type: ${nameType}, Name Length: ${nameLen}`);
|
|
559
|
+
// Only process hostname entries (type 0)
|
|
206
560
|
if (nameType === 0) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
return
|
|
561
|
+
if (offset + nameLen > recordBuffer.length) {
|
|
562
|
+
if (enableLogging) {
|
|
563
|
+
console.log(`Buffer too small for hostname. Expected: ${offset + nameLen}, Got: ${recordBuffer.length}`);
|
|
564
|
+
}
|
|
565
|
+
return {
|
|
566
|
+
isResumption,
|
|
567
|
+
sessionId,
|
|
568
|
+
sessionIdKey,
|
|
569
|
+
hasSessionTicket,
|
|
570
|
+
partialExtract: true
|
|
571
|
+
};
|
|
212
572
|
}
|
|
213
|
-
const serverName =
|
|
573
|
+
const serverName = recordBuffer.toString('utf8', offset, offset + nameLen);
|
|
214
574
|
if (enableLogging)
|
|
215
575
|
console.log(`Extracted SNI: ${serverName}`);
|
|
216
576
|
// Store the session ID to domain mapping for future resumptions
|
|
@@ -246,14 +606,18 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
246
606
|
hasSessionTicket
|
|
247
607
|
};
|
|
248
608
|
}
|
|
609
|
+
// Skip this name entry
|
|
249
610
|
offset += nameLen;
|
|
250
611
|
}
|
|
612
|
+
// Finished processing the SNI extension without finding a hostname
|
|
251
613
|
break;
|
|
252
614
|
}
|
|
253
615
|
else {
|
|
616
|
+
// Skip other extensions
|
|
254
617
|
offset += extensionLength;
|
|
255
618
|
}
|
|
256
619
|
}
|
|
620
|
+
// We finished processing all extensions without finding SNI
|
|
257
621
|
if (enableLogging)
|
|
258
622
|
console.log('No SNI extension found');
|
|
259
623
|
// Even without SNI, we might be dealing with a session resumption
|
|
@@ -279,7 +643,7 @@ function extractSNIInfo(buffer, enableLogging = false) {
|
|
|
279
643
|
};
|
|
280
644
|
}
|
|
281
645
|
catch (err) {
|
|
282
|
-
console.log(`Error
|
|
646
|
+
console.log(`Error in extractSNIFromRecord: ${err}`);
|
|
283
647
|
return undefined;
|
|
284
648
|
}
|
|
285
649
|
}
|
|
@@ -364,16 +728,61 @@ export class PortProxy {
|
|
|
364
728
|
this.connectionRateByIP = new Map();
|
|
365
729
|
// New property to store NetworkProxy instances
|
|
366
730
|
this.networkProxies = [];
|
|
367
|
-
//
|
|
731
|
+
// Auto-detect if this is a chained proxy based on targetIP
|
|
732
|
+
const targetIP = settingsArg.targetIP || 'localhost';
|
|
733
|
+
const isChainedProxy = settingsArg.isChainedProxy !== undefined
|
|
734
|
+
? settingsArg.isChainedProxy
|
|
735
|
+
: (targetIP === 'localhost' || targetIP === '127.0.0.1');
|
|
736
|
+
// Use more aggressive timeouts for chained proxies
|
|
737
|
+
const aggressiveTlsRefresh = settingsArg.aggressiveTlsRefresh !== undefined
|
|
738
|
+
? settingsArg.aggressiveTlsRefresh
|
|
739
|
+
: isChainedProxy;
|
|
740
|
+
// Configure TLS session cache if specified
|
|
741
|
+
if (settingsArg.tlsSessionCache) {
|
|
742
|
+
tlsSessionCache.updateConfig({
|
|
743
|
+
enabled: settingsArg.tlsSessionCache.enabled,
|
|
744
|
+
maxEntries: settingsArg.tlsSessionCache.maxEntries,
|
|
745
|
+
expiryTime: settingsArg.tlsSessionCache.expiryTime,
|
|
746
|
+
cleanupInterval: settingsArg.tlsSessionCache.cleanupInterval
|
|
747
|
+
});
|
|
748
|
+
console.log(`Configured TLS session cache with custom settings. Current stats: ${JSON.stringify(tlsSessionCache.getStats())}`);
|
|
749
|
+
}
|
|
750
|
+
// Determine appropriate timeouts based on proxy chain position
|
|
751
|
+
let socketTimeout = 1800000; // 30 minutes default
|
|
752
|
+
if (isChainedProxy) {
|
|
753
|
+
// Use shorter timeouts for chained proxies to prevent certificate issues
|
|
754
|
+
const chainPosition = settingsArg.chainPosition || 'middle';
|
|
755
|
+
// Adjust timeouts based on position in chain
|
|
756
|
+
switch (chainPosition) {
|
|
757
|
+
case 'first':
|
|
758
|
+
// First proxy can be a bit more lenient as it handles browser connections
|
|
759
|
+
socketTimeout = 1500000; // 25 minutes
|
|
760
|
+
break;
|
|
761
|
+
case 'middle':
|
|
762
|
+
// Middle proxies need shorter timeouts
|
|
763
|
+
socketTimeout = 1200000; // 20 minutes
|
|
764
|
+
break;
|
|
765
|
+
case 'last':
|
|
766
|
+
// Last proxy directly connects to backend
|
|
767
|
+
socketTimeout = 1800000; // 30 minutes
|
|
768
|
+
break;
|
|
769
|
+
}
|
|
770
|
+
console.log(`Configured as ${chainPosition} proxy in chain. Using adjusted timeouts for optimal TLS handling.`);
|
|
771
|
+
}
|
|
772
|
+
// Set hardcoded sensible defaults for all settings with chain-aware adjustments
|
|
368
773
|
this.settings = {
|
|
369
774
|
...settingsArg,
|
|
370
|
-
targetIP:
|
|
775
|
+
targetIP: targetIP,
|
|
776
|
+
// Record the chained proxy status for use in other methods
|
|
777
|
+
isChainedProxy: isChainedProxy,
|
|
778
|
+
chainPosition: settingsArg.chainPosition || (isChainedProxy ? 'middle' : 'last'),
|
|
779
|
+
aggressiveTlsRefresh: aggressiveTlsRefresh,
|
|
371
780
|
// Hardcoded timeout settings optimized for TLS safety in all deployment scenarios
|
|
372
781
|
initialDataTimeout: 60000, // 60 seconds for initial handshake
|
|
373
|
-
socketTimeout:
|
|
374
|
-
inactivityCheckInterval: 60000, //
|
|
375
|
-
maxConnectionLifetime: 3600000, //
|
|
376
|
-
inactivityTimeout: 1800000, //
|
|
782
|
+
socketTimeout: socketTimeout, // Adjusted based on chain position
|
|
783
|
+
inactivityCheckInterval: isChainedProxy ? 30000 : 60000, // More frequent checks for chains
|
|
784
|
+
maxConnectionLifetime: isChainedProxy ? 2700000 : 3600000, // 45min or 1hr lifetime
|
|
785
|
+
inactivityTimeout: isChainedProxy ? 1200000 : 1800000, // 20min or 30min inactivity timeout
|
|
377
786
|
gracefulShutdownTimeout: settingsArg.gracefulShutdownTimeout || 30000, // 30 seconds
|
|
378
787
|
// Socket optimization settings
|
|
379
788
|
noDelay: settingsArg.noDelay !== undefined ? settingsArg.noDelay : true,
|
|
@@ -392,10 +801,20 @@ export class PortProxy {
|
|
|
392
801
|
// Keep-alive settings with sensible defaults that ensure certificate safety
|
|
393
802
|
keepAliveTreatment: 'standard', // Always use standard treatment for certificate safety
|
|
394
803
|
keepAliveInactivityMultiplier: 2, // 2x normal inactivity timeout for minimal extension
|
|
395
|
-
|
|
804
|
+
// Use shorter lifetime for chained proxies
|
|
805
|
+
extendedKeepAliveLifetime: isChainedProxy
|
|
806
|
+
? 2 * 60 * 60 * 1000 // 2 hours for chained proxies
|
|
807
|
+
: 3 * 60 * 60 * 1000, // 3 hours for standalone proxies
|
|
396
808
|
};
|
|
397
809
|
// Store NetworkProxy instances if provided
|
|
398
810
|
this.networkProxies = settingsArg.networkProxies || [];
|
|
811
|
+
// Log proxy configuration details
|
|
812
|
+
console.log(`PortProxy initialized with ${isChainedProxy ? 'chained proxy' : 'standalone'} configuration.`);
|
|
813
|
+
if (isChainedProxy) {
|
|
814
|
+
console.log(`TLS certificate refresh: ${aggressiveTlsRefresh ? 'Aggressive' : 'Standard'}`);
|
|
815
|
+
console.log(`Connection lifetime: ${plugins.prettyMs(this.settings.maxConnectionLifetime)}`);
|
|
816
|
+
console.log(`Inactivity timeout: ${plugins.prettyMs(this.settings.inactivityTimeout)}`);
|
|
817
|
+
}
|
|
399
818
|
}
|
|
400
819
|
/**
|
|
401
820
|
* Forwards a TLS connection to a NetworkProxy for handling
|
|
@@ -826,11 +1245,32 @@ export class PortProxy {
|
|
|
826
1245
|
console.log(`[${connectionId}] Rehandshake with different SNI: ${newSNI} vs original ${serverName}`);
|
|
827
1246
|
// Allow if the new SNI matches existing domain config or find a new matching config
|
|
828
1247
|
let allowed = false;
|
|
1248
|
+
// First check if the new SNI is allowed under the existing domain config
|
|
1249
|
+
// This is the preferred approach as it maintains the existing connection context
|
|
829
1250
|
if (record.domainConfig) {
|
|
830
1251
|
allowed = record.domainConfig.domains.some(d => plugins.minimatch(newSNI, d));
|
|
1252
|
+
if (allowed) {
|
|
1253
|
+
console.log(`[${connectionId}] Rehandshake SNI ${newSNI} allowed by existing domain config`);
|
|
1254
|
+
}
|
|
831
1255
|
}
|
|
1256
|
+
// If not allowed by existing config, try to find an alternative domain config
|
|
832
1257
|
if (!allowed) {
|
|
833
|
-
|
|
1258
|
+
// First try exact match
|
|
1259
|
+
let newDomainConfig = this.settings.domainConfigs.find((config) => config.domains.some((d) => plugins.minimatch(newSNI, d)));
|
|
1260
|
+
// If no exact match, try flexible matching with domain parts (for wildcard domains)
|
|
1261
|
+
if (!newDomainConfig) {
|
|
1262
|
+
console.log(`[${connectionId}] No exact domain config match for rehandshake SNI: ${newSNI}, trying flexible matching`);
|
|
1263
|
+
const domainParts = newSNI.split('.');
|
|
1264
|
+
// Try matching with parent domains or wildcard patterns
|
|
1265
|
+
if (domainParts.length > 2) {
|
|
1266
|
+
const parentDomain = domainParts.slice(1).join('.');
|
|
1267
|
+
const wildcardDomain = '*.' + parentDomain;
|
|
1268
|
+
console.log(`[${connectionId}] Trying alternative patterns: ${parentDomain} or ${wildcardDomain}`);
|
|
1269
|
+
newDomainConfig = this.settings.domainConfigs.find((config) => config.domains.some((d) => d === parentDomain ||
|
|
1270
|
+
d === wildcardDomain ||
|
|
1271
|
+
plugins.minimatch(parentDomain, d)));
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
834
1274
|
if (newDomainConfig) {
|
|
835
1275
|
const effectiveAllowedIPs = [
|
|
836
1276
|
...newDomainConfig.allowedIPs,
|
|
@@ -1012,7 +1452,8 @@ export class PortProxy {
|
|
|
1012
1452
|
this.terminationStats[side][reason] = (this.terminationStats[side][reason] || 0) + 1;
|
|
1013
1453
|
}
|
|
1014
1454
|
/**
|
|
1015
|
-
* Update connection activity timestamp with sleep detection
|
|
1455
|
+
* Update connection activity timestamp with enhanced sleep detection
|
|
1456
|
+
* Improved for chained proxy scenarios and more aggressive handling of stale connections
|
|
1016
1457
|
*/
|
|
1017
1458
|
updateActivity(record) {
|
|
1018
1459
|
// Get the current time
|
|
@@ -1020,52 +1461,83 @@ export class PortProxy {
|
|
|
1020
1461
|
// Check if there was a large time gap that suggests system sleep
|
|
1021
1462
|
if (record.lastActivity > 0) {
|
|
1022
1463
|
const timeDiff = now - record.lastActivity;
|
|
1023
|
-
//
|
|
1024
|
-
//
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1464
|
+
// Enhanced sleep detection with graduated thresholds
|
|
1465
|
+
// For chained proxies, we need to be more aggressive about refreshing connections
|
|
1466
|
+
const isChainedProxy = this.settings.targetIP === 'localhost' || this.settings.targetIP === '127.0.0.1';
|
|
1467
|
+
const minuteInMs = 60 * 1000;
|
|
1468
|
+
// Different thresholds based on connection type and configuration
|
|
1469
|
+
const shortInactivityThreshold = isChainedProxy ? 10 * minuteInMs : 15 * minuteInMs;
|
|
1470
|
+
const mediumInactivityThreshold = isChainedProxy ? 20 * minuteInMs : 30 * minuteInMs;
|
|
1471
|
+
const longInactivityThreshold = isChainedProxy ? 60 * minuteInMs : 120 * minuteInMs;
|
|
1472
|
+
// Short inactivity (10-15 mins) - Might be temporary network issue or short sleep
|
|
1473
|
+
if (timeDiff > shortInactivityThreshold) {
|
|
1474
|
+
if (record.isTLS && !record.possibleSystemSleep) {
|
|
1475
|
+
// Record first detection of possible sleep/inactivity
|
|
1476
|
+
record.possibleSystemSleep = true;
|
|
1477
|
+
record.lastSleepDetection = now;
|
|
1478
|
+
if (this.settings.enableDetailedLogging) {
|
|
1479
|
+
console.log(`[${record.id}] Detected possible short inactivity for ${plugins.prettyMs(timeDiff)}. ` +
|
|
1480
|
+
`Monitoring for TLS connection health.`);
|
|
1481
|
+
}
|
|
1482
|
+
// For TLS connections, send a minimal probe to check connection health
|
|
1483
|
+
if (!record.usingNetworkProxy && record.outgoing && !record.outgoing.destroyed) {
|
|
1484
|
+
try {
|
|
1485
|
+
record.outgoing.write(Buffer.alloc(0));
|
|
1486
|
+
}
|
|
1487
|
+
catch (err) {
|
|
1488
|
+
console.log(`[${record.id}] Error sending TLS probe: ${err}`);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1029
1491
|
}
|
|
1030
|
-
|
|
1031
|
-
|
|
1492
|
+
}
|
|
1493
|
+
// Medium inactivity (20-30 mins) - Likely a sleep event or network change
|
|
1494
|
+
if (timeDiff > mediumInactivityThreshold && record.hasKeepAlive) {
|
|
1495
|
+
console.log(`[${record.id}] Detected medium inactivity period for ${plugins.prettyMs(timeDiff)}. ` +
|
|
1496
|
+
`Taking proactive steps for connection health.`);
|
|
1497
|
+
// For TLS connections, we need more aggressive handling
|
|
1032
1498
|
if (record.isTLS && record.tlsHandshakeComplete) {
|
|
1033
|
-
//
|
|
1034
|
-
if (
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
return this.initiateCleanupOnce(record, 'certificate_refresh_needed');
|
|
1499
|
+
// If in a chained proxy, we should be even more aggressive about refreshing
|
|
1500
|
+
if (isChainedProxy) {
|
|
1501
|
+
console.log(`[${record.id}] TLS connection in chained proxy inactive for ${plugins.prettyMs(timeDiff)}. ` +
|
|
1502
|
+
`Closing to prevent certificate inconsistencies across chain.`);
|
|
1503
|
+
return this.initiateCleanupOnce(record, 'chained_proxy_inactivity');
|
|
1039
1504
|
}
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1505
|
+
// For TLS in single proxy, try refresh first
|
|
1506
|
+
console.log(`[${record.id}] TLS connection inactive for ${plugins.prettyMs(timeDiff)}. ` +
|
|
1507
|
+
`Attempting active refresh of TLS state.`);
|
|
1508
|
+
// Attempt deep TLS state refresh with buffer flush
|
|
1509
|
+
this.performDeepTlsRefresh(record);
|
|
1510
|
+
// Schedule verification check with tighter timing for chained setups
|
|
1511
|
+
const verificationTimeout = isChainedProxy ? 5 * minuteInMs : 10 * minuteInMs;
|
|
1512
|
+
const refreshCheckId = record.id;
|
|
1513
|
+
const refreshCheck = setTimeout(() => {
|
|
1514
|
+
const currentRecord = this.connectionRecords.get(refreshCheckId);
|
|
1515
|
+
if (currentRecord) {
|
|
1516
|
+
const verificationTimeDiff = Date.now() - currentRecord.lastActivity;
|
|
1517
|
+
if (verificationTimeDiff > verificationTimeout / 2) {
|
|
1518
|
+
console.log(`[${refreshCheckId}] No activity detected after TLS refresh (${plugins.prettyMs(verificationTimeDiff)}). ` +
|
|
1519
|
+
`Closing connection to ensure proper browser reconnection.`);
|
|
1052
1520
|
this.initiateCleanupOnce(currentRecord, 'tls_refresh_verification_failed');
|
|
1053
1521
|
}
|
|
1054
|
-
}, 15 * 60 * 1000);
|
|
1055
|
-
// Make sure timeout doesn't keep the process alive
|
|
1056
|
-
if (refreshCheck.unref) {
|
|
1057
|
-
refreshCheck.unref();
|
|
1058
1522
|
}
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1523
|
+
}, verificationTimeout);
|
|
1524
|
+
// Make sure timeout doesn't keep the process alive
|
|
1525
|
+
if (refreshCheck.unref) {
|
|
1526
|
+
refreshCheck.unref();
|
|
1063
1527
|
}
|
|
1064
1528
|
}
|
|
1065
|
-
//
|
|
1529
|
+
// Update sleep detection markers
|
|
1066
1530
|
record.possibleSystemSleep = true;
|
|
1067
1531
|
record.lastSleepDetection = now;
|
|
1068
1532
|
}
|
|
1533
|
+
// Long inactivity (60-120 mins) - Definite sleep/suspend or major network change
|
|
1534
|
+
if (timeDiff > longInactivityThreshold) {
|
|
1535
|
+
console.log(`[${record.id}] Detected long inactivity period of ${plugins.prettyMs(timeDiff)}. ` +
|
|
1536
|
+
`Closing connection to ensure fresh certificate context.`);
|
|
1537
|
+
// For long periods, we always want to force close and let browser reconnect
|
|
1538
|
+
// This ensures fresh certificates and proper TLS context across the chain
|
|
1539
|
+
return this.initiateCleanupOnce(record, 'extended_inactivity_refresh');
|
|
1540
|
+
}
|
|
1069
1541
|
}
|
|
1070
1542
|
// Update the activity timestamp
|
|
1071
1543
|
record.lastActivity = now;
|
|
@@ -1075,9 +1547,11 @@ export class PortProxy {
|
|
|
1075
1547
|
}
|
|
1076
1548
|
}
|
|
1077
1549
|
/**
|
|
1078
|
-
*
|
|
1550
|
+
* Perform deep TLS state refresh after sleep detection
|
|
1551
|
+
* More aggressive than the standard refresh, specifically designed for
|
|
1552
|
+
* recovering connections after system sleep in chained proxy setups
|
|
1079
1553
|
*/
|
|
1080
|
-
|
|
1554
|
+
performDeepTlsRefresh(record) {
|
|
1081
1555
|
// Skip if we're using a NetworkProxy as it handles its own TLS state
|
|
1082
1556
|
if (record.usingNetworkProxy) {
|
|
1083
1557
|
return;
|
|
@@ -1088,27 +1562,66 @@ export class PortProxy {
|
|
|
1088
1562
|
// Check how long this connection has been established
|
|
1089
1563
|
const connectionAge = Date.now() - record.incomingStartTime;
|
|
1090
1564
|
const hourInMs = 60 * 60 * 1000;
|
|
1091
|
-
// For
|
|
1092
|
-
//
|
|
1093
|
-
if (record.isTLS && record.hasKeepAlive && connectionAge > 8 * hourInMs) { // 8 hours instead of 45 minutes
|
|
1565
|
+
// For very long-lived connections, just close them
|
|
1566
|
+
if (connectionAge > 4 * hourInMs) { // Reduced from 8 hours to 4 hours for chained proxies
|
|
1094
1567
|
console.log(`[${record.id}] Long-lived TLS connection (${plugins.prettyMs(connectionAge)}). ` +
|
|
1095
|
-
`Closing to ensure proper certificate handling
|
|
1096
|
-
return this.initiateCleanupOnce(record, '
|
|
1568
|
+
`Closing to ensure proper certificate handling across proxy chain.`);
|
|
1569
|
+
return this.initiateCleanupOnce(record, 'certificate_age_refresh');
|
|
1097
1570
|
}
|
|
1098
|
-
//
|
|
1571
|
+
// Perform a series of actions to try to refresh the TLS state
|
|
1572
|
+
// 1. Send a zero-length buffer to trigger any pending errors
|
|
1099
1573
|
record.outgoing.write(Buffer.alloc(0));
|
|
1574
|
+
// 2. Check socket state
|
|
1575
|
+
if (record.outgoing.writableEnded || !record.outgoing.writable) {
|
|
1576
|
+
console.log(`[${record.id}] Socket no longer writable during refresh`);
|
|
1577
|
+
return this.initiateCleanupOnce(record, 'socket_state_error');
|
|
1578
|
+
}
|
|
1579
|
+
// 3. For TLS connections, try to force background renegotiation
|
|
1580
|
+
// by manipulating socket timeouts
|
|
1581
|
+
const originalTimeout = record.outgoing.timeout;
|
|
1582
|
+
record.outgoing.setTimeout(100); // Set very short timeout
|
|
1583
|
+
// 4. Create a small delay to allow timeout to process
|
|
1584
|
+
setTimeout(() => {
|
|
1585
|
+
try {
|
|
1586
|
+
if (record.outgoing && !record.outgoing.destroyed) {
|
|
1587
|
+
// Reset timeout to original value
|
|
1588
|
+
record.outgoing.setTimeout(originalTimeout || 0);
|
|
1589
|
+
// Send another probe with random data (16 bytes) that will be ignored by TLS layer
|
|
1590
|
+
// but might trigger internal state updates in the TLS implementation
|
|
1591
|
+
const probeBuffer = Buffer.alloc(16);
|
|
1592
|
+
// Fill with random data
|
|
1593
|
+
for (let i = 0; i < 16; i++) {
|
|
1594
|
+
probeBuffer[i] = Math.floor(Math.random() * 256);
|
|
1595
|
+
}
|
|
1596
|
+
record.outgoing.write(Buffer.alloc(0));
|
|
1597
|
+
if (this.settings.enableDetailedLogging) {
|
|
1598
|
+
console.log(`[${record.id}] Completed deep TLS refresh sequence`);
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
catch (innerErr) {
|
|
1603
|
+
console.log(`[${record.id}] Error during deep TLS refresh: ${innerErr}`);
|
|
1604
|
+
this.initiateCleanupOnce(record, 'deep_refresh_error');
|
|
1605
|
+
}
|
|
1606
|
+
}, 150);
|
|
1100
1607
|
if (this.settings.enableDetailedLogging) {
|
|
1101
|
-
console.log(`[${record.id}]
|
|
1608
|
+
console.log(`[${record.id}] Initiated deep TLS refresh sequence`);
|
|
1102
1609
|
}
|
|
1103
1610
|
}
|
|
1104
1611
|
}
|
|
1105
1612
|
catch (err) {
|
|
1106
|
-
console.log(`[${record.id}] Error
|
|
1613
|
+
console.log(`[${record.id}] Error starting TLS state refresh: ${err}`);
|
|
1107
1614
|
// If we hit an error, it's likely the connection is already broken
|
|
1108
1615
|
// Force cleanup to ensure browser reconnects cleanly
|
|
1109
1616
|
return this.initiateCleanupOnce(record, 'tls_refresh_error');
|
|
1110
1617
|
}
|
|
1111
1618
|
}
|
|
1619
|
+
/**
|
|
1620
|
+
* Legacy refresh method for backward compatibility
|
|
1621
|
+
*/
|
|
1622
|
+
refreshTlsStateAfterSleep(record) {
|
|
1623
|
+
return this.performDeepTlsRefresh(record);
|
|
1624
|
+
}
|
|
1112
1625
|
/**
|
|
1113
1626
|
* Cleans up a connection record.
|
|
1114
1627
|
* Destroys both incoming and outgoing sockets, clears timers, and removes the record.
|
|
@@ -1472,13 +1985,47 @@ export class PortProxy {
|
|
|
1472
1985
|
// The resumed domain will be in serverName if this is a session resumption
|
|
1473
1986
|
if (serverName && connectionRecord.lockedDomain === serverName && serverName !== '') {
|
|
1474
1987
|
// Override domain config lookup for session resumption - crucial for certificate selection
|
|
1475
|
-
|
|
1988
|
+
// First try an exact match
|
|
1989
|
+
let resumedDomainConfig = this.settings.domainConfigs.find((config) => config.domains.some((d) => plugins.minimatch(serverName, d)));
|
|
1990
|
+
// If no exact match found, try a more flexible approach using domain parts
|
|
1991
|
+
if (!resumedDomainConfig) {
|
|
1992
|
+
console.log(`[${connectionId}] No exact domain config match for resumed domain: ${serverName}, trying flexible matching`);
|
|
1993
|
+
// Extract domain parts (e.g., for "sub.example.com" try matching with "*.example.com")
|
|
1994
|
+
const domainParts = serverName.split('.');
|
|
1995
|
+
// Try matching with parent domains or wildcard patterns
|
|
1996
|
+
if (domainParts.length > 2) {
|
|
1997
|
+
const parentDomain = domainParts.slice(1).join('.');
|
|
1998
|
+
const wildcardDomain = '*.' + parentDomain;
|
|
1999
|
+
console.log(`[${connectionId}] Trying alternative patterns: ${parentDomain} or ${wildcardDomain}`);
|
|
2000
|
+
resumedDomainConfig = this.settings.domainConfigs.find((config) => config.domains.some((d) => d === parentDomain ||
|
|
2001
|
+
d === wildcardDomain ||
|
|
2002
|
+
plugins.minimatch(parentDomain, d)));
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
1476
2005
|
if (resumedDomainConfig) {
|
|
1477
2006
|
domainConfig = resumedDomainConfig;
|
|
1478
|
-
console.log(`[${connectionId}]
|
|
2007
|
+
console.log(`[${connectionId}] Found domain config for resumed session: ${serverName} -> ${resumedDomainConfig.domains.join(',')}`);
|
|
1479
2008
|
}
|
|
1480
2009
|
else {
|
|
1481
|
-
|
|
2010
|
+
// As a fallback, use the first domain config with the same target IP if possible
|
|
2011
|
+
if (domainConfig && domainConfig.targetIPs && domainConfig.targetIPs.length > 0) {
|
|
2012
|
+
const targetIP = domainConfig.targetIPs[0];
|
|
2013
|
+
const similarConfig = this.settings.domainConfigs.find((config) => config.targetIPs && config.targetIPs.includes(targetIP));
|
|
2014
|
+
if (similarConfig && similarConfig !== domainConfig) {
|
|
2015
|
+
console.log(`[${connectionId}] Using similar domain config with matching target IP for resumed domain: ${serverName}`);
|
|
2016
|
+
domainConfig = similarConfig;
|
|
2017
|
+
}
|
|
2018
|
+
else {
|
|
2019
|
+
console.log(`[${connectionId}] WARNING: Cannot find domain config for resumed domain: ${serverName}`);
|
|
2020
|
+
// Log available domains to help diagnose the issue
|
|
2021
|
+
console.log(`[${connectionId}] Available domains:`, this.settings.domainConfigs.map(config => config.domains.join(',')).join(' | '));
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
else {
|
|
2025
|
+
console.log(`[${connectionId}] WARNING: Cannot find domain config for resumed domain: ${serverName}`);
|
|
2026
|
+
// Log available domains to help diagnose the issue
|
|
2027
|
+
console.log(`[${connectionId}] Available domains:`, this.settings.domainConfigs.map(config => config.domains.join(',')).join(' | '));
|
|
2028
|
+
}
|
|
1482
2029
|
}
|
|
1483
2030
|
}
|
|
1484
2031
|
// Save domain config in connection record
|
|
@@ -1941,4 +2488,4 @@ export class PortProxy {
|
|
|
1941
2488
|
console.log('PortProxy shutdown complete.');
|
|
1942
2489
|
}
|
|
1943
2490
|
}
|
|
1944
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wb3J0cHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnBvcnRwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUErR3pELGlEQUFpRDtBQUNqRCwyREFBMkQ7QUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7QUFFM0Qsd0RBQXdEO0FBQ3hELElBQUksc0JBQXNCLEdBQTBCLElBQUksQ0FBQztBQUV6RCw0Q0FBNEM7QUFDNUMsU0FBUyx3QkFBd0I7SUFDL0IsaUNBQWlDO0lBQ2pDLElBQUksc0JBQXNCLEVBQUUsQ0FBQztRQUMzQixhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLHNCQUFzQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFdBQVc7UUFFbkQsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzFELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQzVDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUU3Qyx3REFBd0Q7SUFDeEQsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVB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
|
|
2491
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wb3J0cHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnBvcnRwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUF3SXpELDBDQUEwQztBQUMxQyxNQUFNLDRCQUE0QixHQUEyQjtJQUMzRCxVQUFVLEVBQUUsS0FBSyxFQUFXLDZCQUE2QjtJQUN6RCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLG1CQUFtQjtJQUNwRCxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsNEJBQTRCO0lBQzdELE9BQU8sRUFBRSxJQUFJLENBQWUscUJBQXFCO0NBQ2xELENBQUM7QUFFRixxRUFBcUU7QUFDckUsTUFBTSxlQUFlO0lBYW5CLFlBQVksTUFBd0M7UUFaNUMsVUFBSyxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBRTNDLGlCQUFZLEdBQTBCLElBQUksQ0FBQztRQUMzQyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUc7WUFDbkIsSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxDQUFDO1lBQ2QsU0FBUyxFQUFFLENBQUM7WUFDWixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFHQSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyw0QkFBNEIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxHQUFXO1FBQ3BCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLDRCQUE0QjtZQUM1QixLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBVztRQUNwQiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztZQUVuQyw2QkFBNkI7WUFDN0IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsNEJBQTRCO1lBQzVCLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFzQjtRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU87UUFFakMsNEJBQTRCO1FBQzVCLE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxLQUFLO1lBQ1IsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDO1FBRUYsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXhDLG1DQUFtQztRQUNuQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzNELElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbEMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7U0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxNQUF1QztRQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFNUMsOENBQThDO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLG1EQUFtRDtRQUNuRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU87UUFFakMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVoQyx3REFBd0Q7UUFDeEQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU87UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDL0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsWUFBWSxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUM7WUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsWUFBWSxxQkFBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUM7UUFDdEgsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVsQyxJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ3BDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU1QiwrQ0FBK0M7UUFDL0MsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDN0QsSUFBSSxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQzVCLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQ3hCLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELGtDQUFrQztBQUNsQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBRTlDLDZDQUE2QztBQUM3QyxTQUFTLHVCQUF1QjtJQUM5QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekIsQ0FBQztBQWtCRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsU0FBUyxjQUFjLENBQUMsTUFBYyxFQUFFLGdCQUF5QixLQUFLO0lBQ3BFLElBQUksQ0FBQztRQUNILHVDQUF1QztRQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxhQUFhO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNsRSxPQUFPO2dCQUNMLFlBQVksRUFBRSxLQUFLO2dCQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFFLCtCQUErQjthQUN0RCxDQUFDO1FBQ0osQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksYUFBYTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxNQUFxQyxDQUFDO1FBRTFDLHlEQUF5RDtRQUN6RCxPQUFPLGVBQWUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVDLGVBQWUsRUFBRSxDQUFDO1lBRWxCLHFCQUFxQjtZQUNyQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFNUQsMkNBQTJDO1lBQzNDLElBQUksaUJBQWlCLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzdCLElBQUksYUFBYTtvQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxlQUFlLFdBQVcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2dCQUUzSCxnQ0FBZ0M7Z0JBQ2hDLElBQUksZUFBZSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3pDLHdEQUF3RDtvQkFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDbEUsZUFBZSxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztvQkFDeEMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDdkIsU0FBUztnQkFDWCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkNBQTJDO29CQUMzQyxNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1lBRUQsb0JBQW9CO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksYUFBYTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixZQUFZLElBQUksWUFBWSxnQkFBZ0IsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUU5RyxvQkFBb0I7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFOUQsdUNBQXVDO1lBQ3ZDLElBQUksZUFBZSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2RCxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxlQUFlLGVBQWUsZUFBZSxHQUFHLENBQUMsR0FBRyxZQUFZLFVBQVUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzlJLENBQUM7Z0JBRUQsMERBQTBEO2dCQUMxRCxPQUFPO29CQUNMLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUUsSUFBSTtvQkFDcEIsZUFBZTtvQkFDZixlQUFlO2lCQUNoQixDQUFDO1lBQ0osQ0FBQztZQUVELHNEQUFzRDtZQUN0RCxNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsZUFBZSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsRUFDakUsYUFBYSxDQUNkLENBQUM7WUFFRiwyREFBMkQ7WUFDM0QsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUMzRSxNQUFNLEdBQUcsWUFBWSxDQUFDO2dCQUN0QixNQUFNLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztnQkFDekMsTUFBTSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7Z0JBRXpDLDBFQUEwRTtnQkFDMUUsOEVBQThFO2dCQUM5RSxJQUFJLGVBQWUsR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDdkQsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ2hDLENBQUM7Z0JBRUQsTUFBTTtZQUNSLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsZUFBZSxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7WUFFcEMsbURBQW1EO1lBQ25ELElBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztRQUVELDhEQUE4RDtRQUM5RCxJQUFJLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPO2dCQUNMLFlBQVksRUFBRSxLQUFLO2dCQUNuQixlQUFlO2dCQUNmLGVBQWU7YUFDaEIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFlBQW9CLEVBQUUsZ0JBQXlCLEtBQUs7SUFDaEYsSUFBSSxDQUFDO1FBQ0gsb0NBQW9DO1FBQ3BDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmLHFDQUFxQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksYUFBYSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUUsa0JBQWtCO1lBQzVDLElBQUksYUFBYTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCwyREFBMkQ7UUFDM0QsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVaLDBFQUEwRTtRQUMxRSxJQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLElBQUksYUFBYTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDeEUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELGlCQUFpQjtRQUNqQixNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLGFBQWE7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixrQkFBa0IsSUFBSSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFOUYseUNBQXlDO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGFBQWE7UUFDYixJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLElBQUksYUFBYTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDekUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksYUFBYTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFeEUsc0NBQXNDO1FBQ3RDLElBQUksU0FBNkIsQ0FBQztRQUNsQyxJQUFJLFlBQWdDLENBQUM7UUFDckMsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksYUFBaUMsQ0FBQztRQUV0QyxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxhQUFhO29CQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztnQkFDdkUsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUVELFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFFdEYsa0RBQWtEO1lBQ2xELFlBQVksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpDLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxnREFBZ0Q7WUFDaEQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFFLENBQUM7Z0JBQ3RELGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUVwQixJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLGtDQUFrQztRQUVqRSxnQkFBZ0I7UUFDaEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxJQUFJLGFBQWE7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxhQUFhO1lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRTlFLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxrQkFBa0IsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUQsSUFBSSxhQUFhO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUMxRSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLHFDQUFxQztRQUV2RSxzQkFBc0I7UUFDdEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxJQUFJLGFBQWE7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxhQUFhO1lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0Isd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBRTFGLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyx3QkFBd0IsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEUsSUFBSSxhQUFhO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUNoRixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDLDJDQUEyQztRQUVuRixtQ0FBbUM7UUFDbkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxJQUFJLGFBQWE7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBRWhGLGtFQUFrRTtZQUNsRSxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztvQkFDTCxVQUFVLEVBQUUsYUFBYSxFQUFFLHVDQUF1QztvQkFDbEUsU0FBUztvQkFDVCxZQUFZO29CQUNaLGdCQUFnQixFQUFFLEtBQUs7b0JBQ3ZCLFlBQVksRUFBRSxJQUFJO29CQUNsQixhQUFhO2lCQUNkLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxZQUFZO2dCQUNaLFNBQVM7Z0JBQ1QsWUFBWTthQUNiLENBQUM7UUFDSixDQUFDO1FBRUQsYUFBYTtRQUNiLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLGFBQWE7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFekUsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNaLE1BQU0sYUFBYSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztRQUVoRCxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsYUFBYSxvQkFBb0IsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDeEgsQ0FBQztZQUVELGtGQUFrRjtZQUNsRixJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztvQkFDTCxVQUFVLEVBQUUsYUFBYSxFQUFFLHVDQUF1QztvQkFDbEUsU0FBUztvQkFDVCxZQUFZO29CQUNaLGdCQUFnQixFQUFFLEtBQUs7b0JBQ3ZCLFlBQVksRUFBRSxJQUFJO29CQUNsQixhQUFhO2lCQUNkLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxZQUFZO2dCQUNaLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixjQUFjLEVBQUUsSUFBSSxDQUFDLGdEQUFnRDthQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLGVBQW1DLENBQUM7UUFFeEMsbUJBQW1CO1FBQ25CLE9BQU8sTUFBTSxHQUFHLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTlELElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGFBQWEsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUM3RixDQUFDO1lBRUQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksYUFBYSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxVQUFVLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNuSCxDQUFDO2dCQUNELE9BQU87b0JBQ0wsWUFBWTtvQkFDWixTQUFTO29CQUNULFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixjQUFjLEVBQUUsSUFBSTtpQkFDckIsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLElBQUksQ0FBQyxDQUFDO1lBRVosbURBQW1EO1lBQ25ELElBQUksYUFBYSxLQUFLLE1BQU0sSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFFeEIsNENBQTRDO2dCQUM1QyxJQUFJLGVBQWUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHdEQUF3RDtvQkFDbEYsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZGLGVBQWUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUU5QyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixlQUFlLEVBQUUsQ0FBQyxDQUFDO3dCQUU1RCwwQ0FBMEM7d0JBQzFDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDckQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLGVBQWUsRUFBRSxDQUFDLENBQUM7NEJBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0RBQXNELFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDOzRCQUV4Rix3REFBd0Q7NEJBQ3hELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDcEMsWUFBWSxHQUFHLElBQUksQ0FBQztnQ0FDcEIsYUFBYSxHQUFHLFVBQVUsRUFBRSxNQUFNLENBQUM7NEJBQ3JDLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsaURBQWlEO1lBQ2pELElBQUksYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQyxJQUFJLGFBQWE7d0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO29CQUN2RSxPQUFPO3dCQUNMLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsY0FBYyxFQUFFLElBQUk7cUJBQ3JCLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLGFBQWE7b0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsYUFBYSxFQUFFLENBQUMsQ0FBQztnQkFFcEUsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDWixNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsYUFBYSxDQUFDO2dCQUUxQyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLElBQUksYUFBYSxFQUFFLENBQUM7d0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0RBQWdELFVBQVUsb0JBQW9CLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNuSCxDQUFDO29CQUNELE9BQU87d0JBQ0wsWUFBWTt3QkFDWixTQUFTO3dCQUNULFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixjQUFjLEVBQUUsSUFBSTtxQkFDckIsQ0FBQztnQkFDSixDQUFDO2dCQUVELE9BQU8sTUFBTSxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUVsRCxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNyQyxJQUFJLGFBQWE7NEJBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3dCQUN2RSxPQUFPOzRCQUNMLFlBQVk7NEJBQ1osU0FBUzs0QkFDVCxZQUFZOzRCQUNaLGdCQUFnQjs0QkFDaEIsY0FBYyxFQUFFLElBQUk7eUJBQ3JCLENBQUM7b0JBQ0osQ0FBQztvQkFFRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNsRCxNQUFNLElBQUksQ0FBQyxDQUFDO29CQUVaLElBQUksYUFBYTt3QkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsUUFBUSxrQkFBa0IsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFFbEYseUNBQXlDO29CQUN6QyxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkIsSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDM0MsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQ0FDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsTUFBTSxHQUFHLE9BQU8sVUFBVSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQzs0QkFDM0csQ0FBQzs0QkFDRCxPQUFPO2dDQUNMLFlBQVk7Z0NBQ1osU0FBUztnQ0FDVCxZQUFZO2dDQUNaLGdCQUFnQjtnQ0FDaEIsY0FBYyxFQUFFLElBQUk7NkJBQ3JCLENBQUM7d0JBQ0osQ0FBQzt3QkFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO3dCQUMzRSxJQUFJLGFBQWE7NEJBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsVUFBVSxFQUFFLENBQUMsQ0FBQzt3QkFFL0QsZ0VBQWdFO3dCQUNoRSxJQUFJLFlBQVksSUFBSSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7NEJBQzVDLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO2dDQUNoQyxNQUFNLEVBQUUsVUFBVTtnQ0FDbEIsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFOzZCQUM1QixDQUFDLENBQUM7NEJBRUgsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQ0FDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsWUFBWSxlQUFlLFVBQVUsRUFBRSxDQUFDLENBQUM7NEJBQ3pFLENBQUM7d0JBQ0gsQ0FBQzt3QkFFRCxtREFBbUQ7d0JBQ25ELElBQUksZUFBZSxJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUNsQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsZUFBZSxFQUFFLEVBQUU7Z0NBQy9DLE1BQU0sRUFBRSxVQUFVO2dDQUNsQixRQUFRLEVBQUUsZUFBZTtnQ0FDekIsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7NkJBQzVCLENBQUMsQ0FBQzs0QkFFSCxJQUFJLGFBQWEsRUFBRSxDQUFDO2dDQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixlQUFlLGVBQWUsVUFBVSxFQUFFLENBQUMsQ0FBQzs0QkFDbkYsQ0FBQzt3QkFDSCxDQUFDO3dCQUVELHdDQUF3Qzt3QkFDeEMsT0FBTzs0QkFDTCxVQUFVOzRCQUNWLFNBQVM7NEJBQ1QsWUFBWTs0QkFDWixlQUFlOzRCQUNmLFlBQVk7NEJBQ1osYUFBYTs0QkFDYixnQkFBZ0I7eUJBQ2pCLENBQUM7b0JBQ0osQ0FBQztvQkFFRCx1QkFBdUI7b0JBQ3ZCLE1BQU0sSUFBSSxPQUFPLENBQUM7Z0JBQ3BCLENBQUM7Z0JBRUQsbUVBQW1FO2dCQUNuRSxNQUFNO1lBQ1IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHdCQUF3QjtnQkFDeEIsTUFBTSxJQUFJLGVBQWUsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxJQUFJLGFBQWE7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFekQsa0VBQWtFO1FBQ2xFLElBQUksWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLGFBQWEsRUFBRSx1Q0FBdUM7Z0JBQ2xFLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixlQUFlO2dCQUNmLGdCQUFnQjtnQkFDaEIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLGFBQWE7YUFDZCxDQUFDO1FBQ0osQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxPQUFPO1lBQ0wsWUFBWTtZQUNaLFNBQVM7WUFDVCxZQUFZO1lBQ1osZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixhQUFhO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNyRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxVQUFVLENBQUMsTUFBYyxFQUFFLGdCQUF5QixLQUFLO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDckQsT0FBTyxNQUFNLEVBQUUsVUFBVSxDQUFDO0FBQzVCLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBMkMsRUFBVyxFQUFFO0lBQzVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRiwrREFBK0Q7QUFDL0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFVLEVBQUUsUUFBa0IsRUFBVyxFQUFFO0lBQzVELElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFNUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFVLEVBQVksRUFBRTtRQUMzQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ25CLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXBELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzdDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGtGQUFrRjtBQUNsRixNQUFNLGVBQWUsR0FBRyxDQUFDLEVBQVUsRUFBRSxPQUFpQixFQUFFLFVBQW9CLEVBQUUsRUFBVyxFQUFFO0lBQ3pGLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdEIsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQy9ELE9BQU8sU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFFRiwwQ0FBMEM7QUFDMUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFXLEVBQUU7SUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLENBQUMsQ0FBQztBQUVGLHFEQUFxRDtBQUNyRCxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQWMsRUFBVyxFQUFFO0lBQ2pELE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtBQUN4RSxDQUFDLENBQUM7QUFFRixzRUFBc0U7QUFDdEUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFO0lBQ3BELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLENBQUMsZ0NBQWdDO0lBQ3JFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFtQixFQUFFLG1CQUEyQixDQUFDLEVBQVUsRUFBRTtJQUNyRixNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM3RCxPQUFPLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDcEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFNBQVM7SUF5Q3BCLFlBQVksV0FBK0I7UUF4Q25DLGVBQVUsR0FBeUIsRUFBRSxDQUFDO1FBaUJ0QyxzQkFBaUIsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBMEIsSUFBSSxDQUFDO1FBQy9DLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRXhDLDBEQUEwRDtRQUNsRCx3QkFBbUIsR0FBK0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVwRSwwQkFBMEI7UUFDbEIscUJBQWdCLEdBR3BCO1lBQ0YsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFFRiw4Q0FBOEM7UUFDdEMsb0JBQWUsR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0RCx1QkFBa0IsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU5RCwrQ0FBK0M7UUFDdkMsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRzFDLDJEQUEyRDtRQUMzRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQztRQUNyRCxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxLQUFLLFNBQVM7WUFDN0QsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjO1lBQzVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBRTNELG1EQUFtRDtRQUNuRCxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTO1lBQ3pFLENBQUMsQ0FBQyxXQUFXLENBQUMsb0JBQW9CO1lBQ2xDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFFbkIsMkNBQTJDO1FBQzNDLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLGVBQWUsQ0FBQyxZQUFZLENBQUM7Z0JBQzNCLE9BQU8sRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQzVDLFVBQVUsRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVU7Z0JBQ2xELFVBQVUsRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVU7Z0JBQ2xELGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLGVBQWU7YUFDN0QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxRUFBcUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakksQ0FBQztRQUVELCtEQUErRDtRQUMvRCxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxxQkFBcUI7UUFFbEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQix5RUFBeUU7WUFDekUsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUM7WUFFNUQsNkNBQTZDO1lBQzdDLFFBQVEsYUFBYSxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssT0FBTztvQkFDViwwRUFBMEU7b0JBQzFFLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxjQUFjO29CQUN2QyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCx1Q0FBdUM7b0JBQ3ZDLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxhQUFhO29CQUN0QyxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCwwQ0FBMEM7b0JBQzFDLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxhQUFhO29CQUN0QyxNQUFNO1lBQ1YsQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLGFBQWEsb0VBQW9FLENBQUMsQ0FBQztRQUNsSCxDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLFdBQVc7WUFDZCxRQUFRLEVBQUUsUUFBUTtZQUVsQiwyREFBMkQ7WUFDM0QsY0FBYyxFQUFFLGNBQWM7WUFDOUIsYUFBYSxFQUFFLFdBQVcsQ0FBQyxhQUFhLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2hGLG9CQUFvQixFQUFFLG9CQUFvQjtZQUUxQyxrRkFBa0Y7WUFDbEYsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLG1DQUFtQztZQUM5RCxhQUFhLEVBQUUsYUFBYSxFQUFFLG1DQUFtQztZQUNqRSx1QkFBdUIsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGtDQUFrQztZQUMzRixxQkFBcUIsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLHdCQUF3QjtZQUNuRixpQkFBaUIsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLG9DQUFvQztZQUUzRix1QkFBdUIsRUFBRSxXQUFXLENBQUMsdUJBQXVCLElBQUksS0FBSyxFQUFFLGFBQWE7WUFFcEYsK0JBQStCO1lBQy9CLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUN2RSxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0UscUJBQXFCLEVBQUUsV0FBVyxDQUFDLHFCQUFxQixJQUFJLEtBQUssRUFBRSxhQUFhO1lBQ2hGLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxzQ0FBc0M7WUFFOUcsb0RBQW9EO1lBQ3BELHNCQUFzQixFQUFFLEtBQUssRUFBRSxpREFBaUQ7WUFDaEYscUJBQXFCLEVBQUUsSUFBSSxFQUFFLHdEQUF3RDtZQUNyRixxQkFBcUIsRUFBRSxXQUFXLENBQUMscUJBQXFCLElBQUksS0FBSztZQUNqRSxxQkFBcUIsRUFBRSxXQUFXLENBQUMscUJBQXFCLElBQUksS0FBSztZQUNqRSx3QkFBd0IsRUFBRSxXQUFXLENBQUMsd0JBQXdCLElBQUksS0FBSztZQUV2RSx5QkFBeUI7WUFDekIsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixJQUFJLEdBQUcsRUFBRSx5QkFBeUI7WUFDdEYsNEJBQTRCLEVBQUUsV0FBVyxDQUFDLDRCQUE0QixJQUFJLEdBQUcsRUFBRSxpQkFBaUI7WUFFaEcsNEVBQTRFO1lBQzVFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSx1REFBdUQ7WUFDdkYsNkJBQTZCLEVBQUUsQ0FBQyxFQUFFLHFEQUFxRDtZQUN2RiwyQ0FBMkM7WUFDM0MseUJBQXlCLEVBQUUsY0FBYztnQkFDdkMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBRSw4QkFBOEI7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsaUNBQWlDO1NBQzFELENBQUM7UUFFRiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUV2RCxrQ0FBa0M7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsY0FBYyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFlBQVksaUJBQWlCLENBQUMsQ0FBQztRQUM1RyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDNUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0sscUJBQXFCLENBQzNCLFlBQW9CLEVBQ3BCLE1BQTBCLEVBQzFCLE1BQXlCLEVBQ3pCLFlBQTJCLEVBQzNCLFdBQW1CLEVBQ25CLFVBQW1CO1FBRW5CLHNDQUFzQztRQUN0QyxNQUFNLFVBQVUsR0FDZCxZQUFZLENBQUMsaUJBQWlCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwRixrQ0FBa0M7UUFDbEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLGlDQUFpQyxVQUFVLHFDQUFxQyxDQUNqRyxDQUFDO1lBQ0YsaUNBQWlDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUMvQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsQ0FDWixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMscUNBQXFDO1FBRXBFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLCtDQUErQyxVQUFVLFFBQVEsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUMxRyxDQUFDO1FBQ0osQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILDBDQUEwQztRQUMxQyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztRQUM5QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUV0Qyx3QkFBd0I7UUFDeEIsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSx1Q0FBdUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0NBQW9DO1FBQ3BDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksa0NBQWtDLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLENBQUM7WUFFRCxnRUFBZ0U7WUFDaEUsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUvQixrRUFBa0U7WUFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXpCLHlCQUF5QjtZQUN6QixXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO2dCQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLDZEQUE2RCxDQUM5RSxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztZQUVILGdFQUFnRTtZQUNoRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUNsQywwREFBMEQ7Z0JBQzFELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSx5RUFBeUUsQ0FBQyxDQUFDO29CQUN2RyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCx5REFBeUQ7WUFDekQsV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRTFELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSwyREFBMkQsVUFBVSxHQUFHLENBQ3pGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sscUJBQXFCLENBQzNCLFlBQW9CLEVBQ3BCLE1BQTBCLEVBQzFCLE1BQXlCLEVBQ3pCLFlBQXVDLEVBQ3ZDLFVBQW1CLEVBQ25CLFlBQXFCLEVBQ3JCLFlBQXFCO1FBRXJCLDBEQUEwRDtRQUMxRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksOENBQThDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDMUYsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSwwQkFBMEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksMkRBQTJELENBQUMsQ0FBQztRQUMzRixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7UUFFOUQsa0NBQWtDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFTLENBQUM7UUFDM0YsTUFBTSxpQkFBaUIsR0FBK0I7WUFDcEQsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3RFLDhEQUE4RDtZQUM5RCxPQUFPLEVBQUUsS0FBSyxDQUFDLCtCQUErQjtTQUMvQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksNEJBQTRCLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBR2hHLHdEQUF3RDtRQUN4RCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFZiw0REFBNEQ7UUFDNUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN4Qyx1QkFBdUI7WUFDdkIsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBRXJDLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBRXBCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxnREFBZ0QsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUNyRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsMkRBQTJEO1lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUV0RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDbkYsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksK0NBQStDLE1BQU0sQ0FBQyxRQUFRLEtBQUssT0FBTyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLFFBQVEsQ0FDL0ksQ0FBQztnQkFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyw4QkFBOEI7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBRUYsNEVBQTRFO1FBQzVFLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRW5DLHFGQUFxRjtRQUNyRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLHFFQUFxRTtZQUNyRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFFaEQsdUNBQXVDO1lBQ3ZDLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxrQ0FBa0MsZUFBZSxDQUFDLE1BQU0sZ0JBQWdCLFVBQVUsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzlILENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsNEZBQTRGO1lBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDBEQUEwRCxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdEMsNkJBQTZCO1FBQzdCLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQywrREFBK0Q7UUFDL0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUVyRSxtREFBbUQ7WUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQztvQkFDSCxJQUFJLG9CQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO3dCQUN4QyxZQUFvQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxDQUFDO29CQUNELElBQUksc0JBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQzFDLFlBQW9CLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25ELENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLGtEQUFrRDtvQkFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLGdFQUFnRSxHQUFHLEVBQUUsQ0FDdEYsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELDBFQUEwRTtRQUMxRSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pDLGtFQUFrRTtZQUNsRSxNQUFNLElBQUksR0FBSSxHQUFXLENBQUMsSUFBSSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLCtCQUErQixVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEtBQUssSUFBSSxHQUFHLENBQ2hILENBQUM7WUFFRix3REFBd0Q7WUFDeEQsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRWhCLCtDQUErQztZQUMvQyxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksWUFBWSxVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxxQkFBcUIsQ0FDdEYsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLG1CQUFtQixVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxZQUFZLENBQ3BGLENBQUM7WUFDSixDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxtQkFBbUIsVUFBVSxJQUFJLGlCQUFpQixDQUFDLElBQUksWUFBWSxDQUNwRixDQUFDO1lBQ0osQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksVUFBVSxVQUFVLGlCQUFpQixDQUFDLENBQUM7WUFDckUsQ0FBQztZQUVELDZCQUE2QjtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSwrQkFBK0IsVUFBVSxJQUFJLE1BQU0sZUFBZSxDQUFDLENBQUMsWUFBWSxnQkFBZ0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXRLLDhEQUE4RDtZQUM5RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksb0RBQW9ELE1BQU0sQ0FBQyxLQUFLLGFBQWEsVUFBVSxJQUFJLGlCQUFpQixDQUFDLElBQUksb0JBQW9CLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzNNLENBQUM7WUFFRCwyRUFBMkU7WUFDM0UsMkVBQTJFO1lBQzNFLElBQUksSUFBSSxLQUFLLGNBQWMsSUFBSSxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDL0UsSUFBSSxDQUFDO29CQUNILGlEQUFpRDtvQkFDakQsK0RBQStEO29CQUMvRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLG9FQUFvRSxDQUFDLENBQUM7b0JBQ2xHLE9BQU8sQ0FBQyxzQkFBc0I7Z0JBQ2hDLENBQUM7Z0JBQUMsT0FBTyxVQUFVLEVBQUUsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksaURBQWlELFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzdGLENBQUM7WUFDSCxDQUFDO1lBRUQsMERBQTBEO1lBQzFELFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6Qyw4REFBOEQ7WUFDOUQsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUUvRCxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO2dCQUN2RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDakUsQ0FBQztZQUVELDBCQUEwQjtZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV6RCw0Q0FBNEM7UUFDNUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3hCLG9FQUFvRTtZQUNwRSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksMERBQ2QsTUFBTSxDQUFDLFFBQ1QsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQ3ZDLHlCQUF5QixDQUMzQixDQUFDO2dCQUNGLHdDQUF3QztnQkFDeEMsT0FBTztZQUNULENBQUM7WUFFRCw4REFBOEQ7WUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksbUNBQ2QsTUFBTSxDQUFDLFFBQ1QsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQ3JFLENBQUM7WUFDRixJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLHlCQUF5QixHQUFHLFNBQVMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsWUFBWSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQzlCLG9FQUFvRTtZQUNwRSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksMERBQ2QsTUFBTSxDQUFDLFFBQ1QsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQ3ZDLHlCQUF5QixDQUMzQixDQUFDO2dCQUNGLHdDQUF3QztnQkFDeEMsT0FBTztZQUNULENBQUM7WUFFRCw4REFBOEQ7WUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksbUNBQ2QsTUFBTSxDQUFDLFFBQ1QsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQ3JFLENBQUM7WUFDRixJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLHlCQUF5QixHQUFHLFNBQVMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsMkVBQTJFO1FBQzNFLElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzNFLHVEQUF1RDtZQUN2RCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLCtEQUErRCxDQUNoRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sNENBQTRDO1lBQzVDLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM3RSxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELHlDQUF5QztRQUN6QyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0VBQXdFO1FBQ3hFLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNoQyw2Q0FBNkM7WUFDN0MsWUFBWSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpDLDJEQUEyRDtZQUMzRCxZQUFZLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRS9ELGdDQUFnQztZQUNoQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUUvQyxtQ0FBbUM7WUFDbkMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXZELG1EQUFtRDtnQkFDbkQsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksb0NBQW9DLFlBQVksQ0FBQyxNQUFNLGdCQUFnQixVQUFVLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFFM0gsdUVBQXVFO29CQUN2RSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQjt3QkFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksMENBQTBDLENBQUMsQ0FBQztvQkFDMUUsQ0FBQztnQkFDSCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSwyQ0FBMkMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7d0JBQ3RGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDekQsQ0FBQztvQkFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDakIsZ0RBQWdEO3dCQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxzREFBc0QsQ0FBQyxDQUFDO29CQUN0RixDQUFDO29CQUVELHlGQUF5RjtvQkFDekYsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUMvQixvREFBb0Q7d0JBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7NEJBQy9CLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQ0FDNUQsNERBQTREO2dDQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUU1QixJQUFJLENBQUM7b0NBQ0gsZ0VBQWdFO29DQUNoRSxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQ0FDaEYsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztvQ0FFakMsZ0dBQWdHO29DQUNoRyxJQUFJLE9BQU8sRUFBRSxZQUFZLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dDQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxREFBcUQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7d0NBQzFHLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO29DQUNqQyxDQUFDO29DQUVELHFGQUFxRjtvQ0FDckYsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7d0NBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDBEQUEwRCxDQUFDLENBQUM7d0NBQ3hGLE9BQU87b0NBQ1QsQ0FBQztvQ0FFRCwrQkFBK0I7b0NBQy9CLElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO3dDQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxQ0FBcUMsTUFBTSxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsQ0FBQzt3Q0FFckcsb0ZBQW9GO3dDQUNwRixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7d0NBRXBCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDOzRDQUN4QixPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3Q0FDaEYsQ0FBQzt3Q0FFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7NENBQ2IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUM7NENBRUYsSUFBSSxlQUFlLEVBQUUsQ0FBQztnREFDcEIsTUFBTSxtQkFBbUIsR0FBRztvREFDMUIsR0FBRyxlQUFlLENBQUMsVUFBVTtvREFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO2lEQUMzQyxDQUFDO2dEQUNGLE1BQU0sbUJBQW1CLEdBQUc7b0RBQzFCLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztvREFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO2lEQUMzQyxDQUFDO2dEQUVGLE9BQU8sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dEQUVyRixJQUFJLE9BQU8sRUFBRSxDQUFDO29EQUNaLE1BQU0sQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDO2dEQUN4QyxDQUFDOzRDQUNILENBQUM7d0NBQ0gsQ0FBQzt3Q0FFRCxJQUFJLE9BQU8sRUFBRSxDQUFDOzRDQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLHdDQUF3QyxNQUFNLENBQUMsUUFBUSxRQUFRLE1BQU0sRUFBRSxDQUFDLENBQUM7NENBQ3JHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO3dDQUMvQixDQUFDOzZDQUFNLENBQUM7NENBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVkscUJBQXFCLE1BQU0sdUNBQXVDLENBQUMsQ0FBQzs0Q0FDaEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQzt3Q0FDbkQsQ0FBQztvQ0FDSCxDQUFDO3lDQUFNLENBQUM7d0NBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksZ0NBQWdDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0NBQ3hFLENBQUM7Z0NBQ0gsQ0FBQztnQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29DQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLHFDQUFxQyxHQUFHLHlCQUF5QixDQUFDLENBQUM7Z0NBQ2pHLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELDBEQUEwRDtvQkFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUIsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsZ0RBQWdEO29CQUVqRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksNkJBQTZCLE1BQU0sQ0FBQyxRQUFRLE9BQU8sVUFBVSxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRTs0QkFDdkcsR0FDRSxVQUFVO2dDQUNSLENBQUMsQ0FBQyxVQUFVLFVBQVUsR0FBRztnQ0FDekIsQ0FBQyxDQUFDLFlBQVk7b0NBQ2QsQ0FBQyxDQUFDLDRCQUE0QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztvQ0FDaEUsQ0FBQyxDQUFDLEVBQ04sRUFBRTs0QkFDRixTQUFTLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFDbEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUNoQyxFQUFFLENBQ0wsQ0FBQztvQkFDSixDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVCwyQkFBMkIsTUFBTSxDQUFDLFFBQVEsT0FBTyxVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFOzRCQUNyRixHQUNFLFVBQVU7Z0NBQ1IsQ0FBQyxDQUFDLFVBQVUsVUFBVSxHQUFHO2dDQUN6QixDQUFDLENBQUMsWUFBWTtvQ0FDZCxDQUFDLENBQUMsNEJBQTRCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO29DQUNoRSxDQUFDLENBQUMsRUFDTixFQUFFLENBQ0wsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHlGQUF5RjtnQkFDekYsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUMvQixvREFBb0Q7b0JBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7d0JBQy9CLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzs0QkFDNUQsNERBQTREOzRCQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUU1QixJQUFJLENBQUM7Z0NBQ0gsZ0VBQWdFO2dDQUNoRSxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQ0FDaEYsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztnQ0FFakMsZ0dBQWdHO2dDQUNoRyxJQUFJLE9BQU8sRUFBRSxZQUFZLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO29DQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxREFBcUQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7b0NBQzFHLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO2dDQUNqQyxDQUFDO2dDQUVELHFGQUFxRjtnQ0FDckYsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7b0NBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDBEQUEwRCxDQUFDLENBQUM7b0NBQ3hGLE9BQU87Z0NBQ1QsQ0FBQztnQ0FFRCwrQkFBK0I7Z0NBQy9CLElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO29DQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxQ0FBcUMsTUFBTSxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsQ0FBQztvQ0FFckcsb0ZBQW9GO29DQUNwRixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7b0NBRXBCLHlFQUF5RTtvQ0FDekUsaUZBQWlGO29DQUNqRixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3Q0FDeEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7d0NBRTlFLElBQUksT0FBTyxFQUFFLENBQUM7NENBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVkscUJBQXFCLE1BQU0sb0NBQW9DLENBQUMsQ0FBQzt3Q0FDL0YsQ0FBQztvQ0FDSCxDQUFDO29DQUVELDhFQUE4RTtvQ0FDOUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dDQUNiLHdCQUF3Qjt3Q0FDeEIsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDaEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUM7d0NBRUYsb0ZBQW9GO3dDQUNwRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7NENBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLHVEQUF1RCxNQUFNLDRCQUE0QixDQUFDLENBQUM7NENBRXZILE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7NENBRXRDLHdEQUF3RDs0Q0FDeEQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dEQUMzQixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnREFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQztnREFFM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksa0NBQWtDLFlBQVksT0FBTyxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dEQUVuRyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN4QixDQUFDLEtBQUssWUFBWTtvREFDbEIsQ0FBQyxLQUFLLGNBQWM7b0RBQ3BCLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUNuQyxDQUNGLENBQUM7NENBQ0osQ0FBQzt3Q0FDSCxDQUFDO3dDQUVELElBQUksZUFBZSxFQUFFLENBQUM7NENBQ3BCLE1BQU0sbUJBQW1CLEdBQUc7Z0RBQzFCLEdBQUcsZUFBZSxDQUFDLFVBQVU7Z0RBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQzs2Q0FDM0MsQ0FBQzs0Q0FDRixNQUFNLG1CQUFtQixHQUFHO2dEQUMxQixHQUFHLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0RBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQzs2Q0FDM0MsQ0FBQzs0Q0FFRixPQUFPLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsQ0FBQzs0Q0FFckYsSUFBSSxPQUFPLEVBQUUsQ0FBQztnREFDWixNQUFNLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQzs0Q0FDeEMsQ0FBQzt3Q0FDSCxDQUFDO29DQUNILENBQUM7b0NBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3Q0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSx3Q0FBd0MsTUFBTSxDQUFDLFFBQVEsUUFBUSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3dDQUNyRyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztvQ0FDL0IsQ0FBQzt5Q0FBTSxDQUFDO3dDQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLHFCQUFxQixNQUFNLHVDQUF1QyxDQUFDLENBQUM7d0NBQ2hHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7b0NBQ25ELENBQUM7Z0NBQ0gsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLGdDQUFnQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dDQUN4RSxDQUFDOzRCQUNILENBQUM7NEJBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQ0FDYixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxQ0FBcUMsR0FBRyx5QkFBeUIsQ0FBQyxDQUFDOzRCQUNqRyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxvQkFBb0I7Z0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGdEQUFnRDtnQkFFakUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLDZCQUE2QixNQUFNLENBQUMsUUFBUSxPQUFPLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7d0JBQ3ZHLEdBQ0UsVUFBVTs0QkFDUixDQUFDLENBQUMsVUFBVSxVQUFVLEdBQUc7NEJBQ3pCLENBQUMsQ0FBQyxZQUFZO2dDQUNkLENBQUMsQ0FBQyw0QkFBNEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0NBQ2hFLENBQUMsQ0FBQyxFQUNOLEVBQUU7d0JBQ0YsU0FBUyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQ2xDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFDaEMsRUFBRSxDQUNMLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQ1QsMkJBQTJCLE1BQU0sQ0FBQyxRQUFRLE9BQU8sVUFBVSxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRTt3QkFDckYsR0FDRSxVQUFVOzRCQUNSLENBQUMsQ0FBQyxVQUFVLFVBQVUsR0FBRzs0QkFDekIsQ0FBQyxDQUFDLFlBQVk7Z0NBQ2QsQ0FBQyxDQUFDLDRCQUE0QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztnQ0FDaEUsQ0FBQyxDQUFDLEVBQ04sRUFBRSxDQUNMLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFFM0Isc0VBQXNFO1lBQ3RFLCtEQUErRDtZQUUvRCw0Q0FBNEM7WUFDNUMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUVELHlFQUF5RTtZQUN6RSxJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0UsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLG1FQUFtRSxDQUNwRixDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsNENBQTRDO1lBQzlDLENBQUM7WUFDRCx1RUFBdUU7WUFDdkUscUZBQXFGO2lCQUNoRixJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxvRkFBb0Y7Z0JBQ3BGLG9GQUFvRjtnQkFDcEYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyx5REFBeUQ7Z0JBQ3pHLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBRTNELE1BQU0sQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksb0NBQ2QsTUFBTSxDQUFDLFFBQ1QsMkJBQTJCLE9BQU8sQ0FBQyxRQUFRLENBQ3pDLG1CQUFtQixDQUNwQixvREFBb0QsQ0FDdEQsQ0FBQztvQkFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7Z0JBQzlELENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFFaEIsbURBQW1EO2dCQUNuRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLHlGQUF5RixPQUFPLENBQUMsUUFBUSxDQUN2SCxtQkFBbUIsQ0FDcEIsRUFBRSxDQUNKLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFDRCw0REFBNEQ7aUJBQ3ZELElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNoRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxTQUFTO2dCQUNyRyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFdkQsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNwQyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxnQ0FDZCxNQUFNLENBQUMsUUFDVCxnQ0FBZ0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQ3ZGLENBQUM7b0JBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRWhCLG1EQUFtRDtnQkFDbkQsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM5QixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxxREFBcUQsT0FBTyxDQUFDLFFBQVEsQ0FDbkYsZUFBZSxDQUNoQixFQUFFLENBQ0osQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUNELCtDQUErQztpQkFDMUMsQ0FBQztnQkFDSixrRUFBa0U7Z0JBQ2xFLE1BQU0saUJBQWlCLEdBQ3JCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBc0IsQ0FBQztnQkFDakYsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFFekQsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNwQyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxxQkFDZCxNQUFNLENBQUMsUUFDVCwyQkFBMkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FDcEYsQ0FBQztvQkFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3pELENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFFaEIsbURBQW1EO2dCQUNuRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDO1lBRUQscURBQXFEO1lBQ3JELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQixNQUFNLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2dCQUVuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksZ0RBQWdELE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FDbEYsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsRUFBVTtRQUN2QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsRUFBVTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUV6QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDMUYsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1Qyw4QkFBOEI7UUFDOUIsT0FBTyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsNEJBQTZCLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsRUFBVSxFQUFFLFlBQW9CO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsWUFBb0I7UUFDM0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDO1lBQ2xELFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLHdCQUF3QixDQUFDLElBQTZCLEVBQUUsTUFBYztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsTUFBeUI7UUFDOUMsdUJBQXVCO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV2QixpRUFBaUU7UUFDakUsSUFBSSxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sUUFBUSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRTNDLHFEQUFxRDtZQUNyRCxrRkFBa0Y7WUFDbEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQztZQUN4RyxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBRTdCLGtFQUFrRTtZQUNsRSxNQUFNLHdCQUF3QixHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztZQUNwRixNQUFNLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztZQUNyRixNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQztZQUVwRixrRkFBa0Y7WUFDbEYsSUFBSSxRQUFRLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQ2hELHNEQUFzRDtvQkFDdEQsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztvQkFDbEMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztvQkFFaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSw0Q0FBNEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSTs0QkFDdkYsdUNBQXVDLENBQ3hDLENBQUM7b0JBQ0osQ0FBQztvQkFFRCx1RUFBdUU7b0JBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQy9FLElBQUksQ0FBQzs0QkFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3pDLENBQUM7d0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzs0QkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsOEJBQThCLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2hFLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELDBFQUEwRTtZQUMxRSxJQUFJLFFBQVEsR0FBRyx5QkFBeUIsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSwyQ0FBMkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDdEYsK0NBQStDLENBQ2hELENBQUM7Z0JBRUYsd0RBQXdEO2dCQUN4RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ2hELDRFQUE0RTtvQkFDNUUsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxFQUFFLGtEQUFrRCxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzRCQUM3Riw4REFBOEQsQ0FDL0QsQ0FBQzt3QkFDRixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztvQkFDdEUsQ0FBQztvQkFFRCw2Q0FBNkM7b0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSxpQ0FBaUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSTt3QkFDNUUseUNBQXlDLENBQzFDLENBQUM7b0JBRUYsbURBQW1EO29CQUNuRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRW5DLHFFQUFxRTtvQkFDckUsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUM7b0JBQzlFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQ2pFLElBQUksYUFBYSxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7NEJBQ3JFLElBQUksb0JBQW9CLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0NBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxjQUFjLDZDQUE2QyxPQUFPLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7b0NBQzFHLDJEQUEyRCxDQUM1RCxDQUFDO2dDQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsaUNBQWlDLENBQUMsQ0FBQzs0QkFDN0UsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO29CQUV4QixtREFBbUQ7b0JBQ25ELElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN2QixZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxpQ0FBaUM7Z0JBQ2pDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUM7WUFDbEMsQ0FBQztZQUVELGlGQUFpRjtZQUNqRixJQUFJLFFBQVEsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksTUFBTSxDQUFDLEVBQUUsd0NBQXdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUk7b0JBQ25GLHlEQUF5RCxDQUMxRCxDQUFDO2dCQUVGLDRFQUE0RTtnQkFDNUUsMEVBQTBFO2dCQUMxRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztZQUN6RSxDQUFDO1FBQ0gsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUUxQiwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHFCQUFxQixDQUFDLE1BQXlCO1FBQ3JELHFFQUFxRTtRQUNyRSxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsMkRBQTJEO1lBQzNELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xELHNEQUFzRDtnQkFDdEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDNUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBRWhDLG1EQUFtRDtnQkFDbkQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsc0RBQXNEO29CQUN4RixPQUFPLENBQUMsR0FBRyxDQUNULElBQUksTUFBTSxDQUFDLEVBQUUsZ0NBQWdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUs7d0JBQ2pGLG1FQUFtRSxDQUNwRSxDQUFDO29CQUNGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2dCQUNyRSxDQUFDO2dCQUVELDhEQUE4RDtnQkFFOUQsNkRBQTZEO2dCQUM3RCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXZDLHdCQUF3QjtnQkFDeEIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO29CQUN2RSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztnQkFFRCxnRUFBZ0U7Z0JBQ2hFLGtDQUFrQztnQkFDbEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMseUJBQXlCO2dCQUUxRCxzREFBc0Q7Z0JBQ3RELFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDO3dCQUNILElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQ2xELGtDQUFrQzs0QkFDbEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUVqRCxtRkFBbUY7NEJBQ25GLHFFQUFxRTs0QkFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDckMsd0JBQXdCOzRCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0NBQzVCLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQzs0QkFDbkQsQ0FBQzs0QkFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBRXZDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dDQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsdUNBQXVDLENBQUMsQ0FBQzs0QkFDcEUsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7b0JBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQzt3QkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLG9DQUFvQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7b0JBQ3pELENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUVSLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSx1Q0FBdUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUV2RSxtRUFBbUU7WUFDbkUscURBQXFEO1lBQ3JELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx5QkFBeUIsQ0FBQyxNQUF5QjtRQUN6RCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FBQyxNQUF5QixFQUFFLFNBQWlCLFFBQVE7UUFDNUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFFL0IsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0RCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDbEMsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDM0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUVuQyxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQy9CLHdFQUF3RTtvQkFDeEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDdEMsSUFBSSxDQUFDOzRCQUNILElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDNUIsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7NEJBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RSxDQUFDO29CQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFVCxxREFBcUQ7b0JBQ3JELElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUMxQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxvQ0FBb0MsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1QixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxVQUFVLEVBQUUsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLHVDQUF1QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQztnQkFDSCxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNsRCx3RUFBd0U7b0JBQ3hFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ3RDLElBQUksQ0FBQzs0QkFDSCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDNUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDNUIsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7NEJBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RSxDQUFDO29CQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFVCxxREFBcUQ7b0JBQ3JELElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUMxQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxvQ0FBb0MsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDO29CQUNILElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLFVBQVUsRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsdUNBQXVDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hGLENBQUM7WUFDSCxDQUFDO1lBRUQsMENBQTBDO1lBQzFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBRTNCLDBDQUEwQztZQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV6Qyx5QkFBeUI7WUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSxxQkFBcUIsTUFBTSxDQUFDLFFBQVEsWUFBWSxNQUFNLENBQUMsU0FBUyxnQkFBZ0IsTUFBTSxJQUFJO29CQUNyRyxjQUFjLE9BQU8sQ0FBQyxRQUFRLENBQzVCLFFBQVEsQ0FDVCxlQUFlLGFBQWEsVUFBVSxTQUFTLElBQUk7b0JBQ3BELFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUNqQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQ2hDLEVBQUU7b0JBQ0YsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3JGLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxFQUFFLHFCQUFxQixNQUFNLENBQUMsUUFBUSxnQkFBZ0IsTUFBTSwwQkFBMEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUMvSCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXLENBQUMsWUFBMkI7UUFDN0MsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFTLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsTUFBeUIsRUFBRSxTQUFpQixRQUFRO1FBQzlFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxzQ0FBc0MsTUFBTSxDQUFDLFFBQVEsS0FBSyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7UUFFRCxJQUNFLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJO1lBQ3pDLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxTQUFTLEVBQzlDLENBQUM7WUFDRCxNQUFNLENBQUMseUJBQXlCLEdBQUcsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLElBQTZCLEVBQUUsTUFBeUI7UUFDMUUsT0FBTyxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxHQUFJLEdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDL0IsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLGtCQUFrQixHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDMUQsTUFBTSxlQUFlLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFFbEQsSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sR0FBRyxZQUFZLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSxtQkFBbUIsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUFRLEtBQy9ELEdBQUcsQ0FBQyxPQUNOLGVBQWUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLFFBQVEsQ0FDckYsZUFBZSxDQUNoQixNQUFNLENBQ1IsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxXQUFXLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxNQUFNLENBQUMsRUFBRSxrQkFBa0IsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUFRLEtBQzlELEdBQUcsQ0FBQyxPQUNOLGVBQWUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLFFBQVEsQ0FDckYsZUFBZSxDQUNoQixNQUFNLENBQ1IsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUNULElBQUksTUFBTSxDQUFDLEVBQUUsY0FBYyxJQUFJLGNBQWMsTUFBTSxDQUFDLFFBQVEsS0FDMUQsR0FBRyxDQUFDLE9BQ04sZUFBZSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixPQUFPLENBQUMsUUFBUSxDQUNyRixlQUFlLENBQ2hCLE1BQU0sQ0FDUixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMseUJBQXlCLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3JFLE1BQU0sQ0FBQyx5QkFBeUIsR0FBRyxNQUFNLENBQUM7Z0JBQzFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDcEQsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLHlCQUF5QixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM1RSxNQUFNLENBQUMseUJBQXlCLEdBQUcsTUFBTSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxJQUE2QixFQUFFLE1BQXlCO1FBQzFFLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSwwQkFBMEIsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLENBQUM7WUFFRCxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLHlCQUF5QixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNyRSxNQUFNLENBQUMseUJBQXlCLEdBQUcsUUFBUSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RELENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDNUUsTUFBTSxDQUFDLHlCQUF5QixHQUFHLFFBQVEsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDcEQsK0NBQStDO2dCQUMvQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLENBQUM7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQix1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQy9ELE9BQU87UUFDVCxDQUFDO1FBRUQsK0RBQStEO1FBQy9ELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUU7WUFDdkQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxrREFBa0Q7WUFFM0Ysb0JBQW9CO1lBQ3BCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7Z0JBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUMxRSxDQUFDO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QsNEJBQTRCLFFBQVEsaUNBQWlDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLFlBQVksQ0FDbkgsQ0FBQztnQkFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN0RixPQUFPLENBQUMsR0FBRyxDQUNULDRCQUE0QixRQUFRLDRCQUE0QixJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixnQkFBZ0IsQ0FDM0gsQ0FBQztnQkFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixPQUFPO1lBQ1QsQ0FBQztZQUVELDZCQUE2QjtZQUM3QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekMsMkNBQTJDO1lBQzNDLE1BQU0sWUFBWSxHQUFHLG9CQUFvQixFQUFFLENBQUM7WUFDNUMsTUFBTSxnQkFBZ0IsR0FBc0I7Z0JBQzFDLEVBQUUsRUFBRSxZQUFZO2dCQUNoQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLFdBQVcsRUFBRSxFQUFFO2dCQUNmLGVBQWUsRUFBRSxDQUFDO2dCQUVsQixzQ0FBc0M7Z0JBQ3RDLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLEtBQUssRUFBRSxLQUFLO2dCQUNaLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLFlBQVksRUFBRSxLQUFLLEVBQUUsNENBQTRDO2dCQUNqRSx5QkFBeUIsRUFBRSxJQUFJO2dCQUMvQix5QkFBeUIsRUFBRSxJQUFJO2dCQUUvQiwwQ0FBMEM7Z0JBQzFDLGlCQUFpQixFQUFFLEtBQUs7Z0JBRXhCLG9DQUFvQztnQkFDcEMsbUJBQW1CLEVBQUUsS0FBSzthQUMzQixDQUFDO1lBRUYsdUNBQXVDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUMvRCxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsdUNBQXVDO2dCQUU3RSxtREFBbUQ7Z0JBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN4QyxJQUFJLENBQUM7d0JBQ0gsdURBQXVEO3dCQUN2RCxJQUFJLG9CQUFvQixJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUNsQyxNQUFjLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7d0JBQ3BFLENBQUM7d0JBQ0QsSUFBSSxzQkFBc0IsSUFBSSxNQUFNLEVBQUUsQ0FBQzs0QkFDcEMsTUFBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQW1DO3dCQUNqRixDQUFDO29CQUNILENBQUM7b0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzt3QkFDYixrREFBa0Q7d0JBQ2xELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOzRCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxxREFBcUQsR0FBRyxFQUFFLENBQzNFLENBQUM7d0JBQ0osQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQseUJBQXlCO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUUzRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVkseUJBQXlCLFFBQVEsWUFBWSxTQUFTLElBQUk7b0JBQ3hFLGVBQWUsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSTtvQkFDekUsdUJBQXVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FDdkQsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUNULHVCQUF1QixRQUFRLFlBQVksU0FBUyx5QkFBeUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUMzRyxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBRWhDLDJDQUEyQztZQUMzQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBYyxFQUFFLFVBQWtCLEVBQUUsRUFBRTtnQkFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxnQkFBZ0IsQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDeEQsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsTUFBTSxDQUFDO29CQUNwRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUM7WUFFRixnREFBZ0Q7WUFDaEQsSUFBSSxjQUFjLEdBQTBCLElBQUksQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt3QkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksMkJBQTJCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLDJCQUEyQixRQUFRLFlBQVksU0FBUyxFQUFFLENBQ3RJLENBQUM7d0JBQ0YsSUFBSSxnQkFBZ0IsQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDeEQsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsaUJBQWlCLENBQUM7NEJBQy9ELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQzt3QkFDL0QsQ0FBQzt3QkFDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7b0JBQzlELENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQW1CLENBQUMsQ0FBQztnQkFFdEMsbURBQW1EO2dCQUNuRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDekIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLG1CQUFtQixHQUFHLElBQUksQ0FBQztnQkFDM0IsZ0JBQWdCLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7WUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFFbkUsZ0NBQWdDO1lBQ2hDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQ2xDLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRXRDLHFEQUFxRDtnQkFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckQsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFFOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLGlDQUFpQyxRQUFRLEtBQUssS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUNuRixDQUFDO3dCQUNGLGlEQUFpRDt3QkFDakQsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSDs7Ozs7O2VBTUc7WUFDSCxNQUFNLGVBQWUsR0FBRyxDQUN0QixVQUFrQixFQUNsQixZQUFxQixFQUNyQixZQUE0QixFQUM1QixZQUFxQixFQUNyQixFQUFFO2dCQUNGLHNEQUFzRDtnQkFDdEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUM3QixjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixnQkFBZ0IsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7Z0JBRS9DLDJDQUEyQztnQkFDM0MsTUFBTSxzQkFBc0IsR0FBRyxZQUFZLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLHNCQUFzQixFQUFFLENBQUM7b0JBQzNCLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBRTlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxzQ0FBc0MsWUFBWSxDQUFDLE1BQU0sUUFBUSxDQUNsRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCwrRkFBK0Y7Z0JBQy9GLElBQUksWUFBWSxHQUFHLFlBQVk7b0JBQzdCLENBQUMsQ0FBQyxZQUFZO29CQUNkLENBQUMsQ0FBQyxVQUFVO3dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7d0JBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFZCw4REFBOEQ7Z0JBQzlELElBQUksVUFBVSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDhDQUE4QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxzQkFBc0IsRUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDckYsQ0FBQztxQkFBTSxJQUFJLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksa0NBQWtDLFVBQVUsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ILENBQUM7Z0JBRUQsc0ZBQXNGO2dCQUN0RiwyRUFBMkU7Z0JBQzNFLElBQUksVUFBVSxJQUFJLGdCQUFnQixDQUFDLFlBQVksS0FBSyxVQUFVLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNwRiwyRkFBMkY7b0JBRTNGLDJCQUEyQjtvQkFDM0IsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDN0QsQ0FBQztvQkFFRiwyRUFBMkU7b0JBQzNFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO3dCQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxzREFBc0QsVUFBVSw0QkFBNEIsQ0FBQyxDQUFDO3dCQUUxSCx1RkFBdUY7d0JBQ3ZGLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBRTFDLHdEQUF3RDt3QkFDeEQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUMzQixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQzs0QkFFM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksa0NBQWtDLFlBQVksT0FBTyxjQUFjLEVBQUUsQ0FBQyxDQUFDOzRCQUVuRyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNoRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3hCLENBQUMsS0FBSyxZQUFZO2dDQUNsQixDQUFDLEtBQUssY0FBYztnQ0FDcEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQ25DLENBQ0YsQ0FBQzt3QkFDSixDQUFDO29CQUNILENBQUM7b0JBRUQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO3dCQUN4QixZQUFZLEdBQUcsbUJBQW1CLENBQUM7d0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDhDQUE4QyxVQUFVLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RJLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixpRkFBaUY7d0JBQ2pGLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ2hGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBRTNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2hFLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ3hELENBQUM7NEJBRUYsSUFBSSxhQUFhLElBQUksYUFBYSxLQUFLLFlBQVksRUFBRSxDQUFDO2dDQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSw2RUFBNkUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQ0FDdkgsWUFBWSxHQUFHLGFBQWEsQ0FBQzs0QkFDL0IsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLDREQUE0RCxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dDQUN0RyxtREFBbUQ7Z0NBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLHNCQUFzQixFQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRCQUNyRixDQUFDO3dCQUNILENBQUM7NkJBQU0sQ0FBQzs0QkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSw0REFBNEQsVUFBVSxFQUFFLENBQUMsQ0FBQzs0QkFDdEcsbURBQW1EOzRCQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxzQkFBc0IsRUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckYsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsMENBQTBDO2dCQUMxQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2dCQUU3Qyw0REFBNEQ7Z0JBQzVELElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2YsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksa0NBQWtDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBRUQsa0RBQWtEO2dCQUNsRCxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixNQUFNLG1CQUFtQixHQUFhO3dCQUNwQyxHQUFHLFlBQVksQ0FBQyxVQUFVO3dCQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7cUJBQzNDLENBQUM7b0JBQ0YsTUFBTSxtQkFBbUIsR0FBYTt3QkFDcEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO3dCQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7cUJBQzNDLENBQUM7b0JBRUYsNENBQTRDO29CQUM1QyxJQUNFLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ2xDLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxFQUNwRSxDQUFDO3dCQUNELE9BQU8sd0JBQXdCLENBQzdCLFVBQVUsRUFDViwyQkFBMkIsUUFBUSwyQkFBMkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3JGLElBQUksQ0FDTCxFQUFFLENBQ0osQ0FBQztvQkFDSixDQUFDO29CQUVELG9EQUFvRDtvQkFDcEQsSUFDRSxzQkFBc0I7d0JBQ3RCLFlBQVksQ0FBQyxlQUFlLEtBQUssSUFBSTt3QkFDckMsWUFBWTt3QkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzlCLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQy9CLFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixZQUFZLEVBQ1osVUFBVSxDQUNYLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDekYsSUFDRSxDQUFDLGVBQWUsQ0FDZCxRQUFRLEVBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQ3RDLEVBQ0QsQ0FBQzt3QkFDRCxPQUFPLHdCQUF3QixDQUM3QixVQUFVLEVBQ1YsMkJBQTJCLFFBQVEsc0NBQXNDLENBQzFFLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO2dCQUVELHVFQUF1RTtnQkFDdkUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQy9CLFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksQ0FDYixDQUFDO1lBQ0osQ0FBQyxDQUFDO1lBRUYsb0NBQW9DO1lBQ3BDLDRGQUE0RjtZQUM1RixJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO2dCQUM5QixjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFDekQsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDekMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQjt3QkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDMUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFDckQsQ0FBQzt3QkFDRCxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxxQkFBcUIsUUFBUSxpQkFBaUIsUUFBUSw4Q0FBOEMsQ0FDckgsQ0FBQzt3QkFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2IsT0FBTztvQkFDVCxDQUFDO29CQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksWUFBWSxnQ0FBZ0MsUUFBUSxZQUFZLFNBQVMsa0NBQWtDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQ3pJLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxlQUFlLENBQ2IsRUFBRSxFQUNGLFNBQVMsRUFDVDt3QkFDRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7d0JBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUU7d0JBQ2pELFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUU7d0JBQ2pELFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUyxDQUFDO3dCQUNwQyxVQUFVLEVBQUUsRUFBRTtxQkFDZixFQUNELFNBQVMsQ0FDVixDQUFDO29CQUNGLE9BQU87Z0JBQ1QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDJFQUEyRTtvQkFDM0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuRCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsTUFBTSxDQUFDLFVBQVU7d0JBQ2pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQzVCLGNBQWMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUMvQyxDQUFDO29CQUNGLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ2pCLE1BQU0sbUJBQW1CLEdBQWE7NEJBQ3BDLEdBQUcsWUFBWSxDQUFDLFVBQVU7NEJBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQzt5QkFDM0MsQ0FBQzt3QkFDRixNQUFNLG1CQUFtQixHQUFhOzRCQUNwQyxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7NEJBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQzt5QkFDM0MsQ0FBQzt3QkFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7NEJBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxZQUFZLHFCQUFxQixRQUFRLHdDQUF3QyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDNUcsSUFBSSxDQUNMLFlBQVksU0FBUyxHQUFHLENBQzFCLENBQUM7NEJBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUNiLE9BQU87d0JBQ1QsQ0FBQzt3QkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksZ0NBQWdDLFFBQVEsWUFBWSxTQUFTLG1CQUFtQixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdkgsSUFBSSxDQUNMLEdBQUcsQ0FDTCxDQUFDO3dCQUNKLENBQUM7d0JBQ0QsZUFBZSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUN4RCxPQUFPO29CQUNULENBQUM7b0JBQ0QsNEVBQTRFO2dCQUM5RSxDQUFDO1lBQ0gsQ0FBQztZQUVELHlFQUF5RTtZQUN6RSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFFNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDbkIsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUM3QixjQUFjLEdBQUcsSUFBSSxDQUFDO29CQUN4QixDQUFDO29CQUVELG1CQUFtQixHQUFHLElBQUksQ0FBQztvQkFFM0IsaUVBQWlFO29CQUNqRSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7b0JBRXBCLGdEQUFnRDtvQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksNEJBQTRCLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQyxDQUFDO29CQUU5RSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUMxQixnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO3dCQUU5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSwwQkFBMEIsQ0FBQyxDQUFDO3dCQUV4RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksd0NBQXdDLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FDN0UsQ0FBQzt3QkFDSixDQUFDO3dCQUVELDJEQUEyRDt3QkFDM0QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7d0JBRTNFLElBQUksT0FBTyxFQUFFLFlBQVksSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ25ELG1EQUFtRDs0QkFDbkQsVUFBVSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7NEJBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLGlEQUFpRCxVQUFVLEVBQUUsQ0FBQyxDQUFDOzRCQUUzRiw0RkFBNEY7NEJBQzVGLDBFQUEwRTs0QkFDMUUsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQzs0QkFFM0MsMkVBQTJFOzRCQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxxQ0FBcUMsVUFBVSxrQ0FBa0MsQ0FBQyxDQUFDO3dCQUNqSCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sd0JBQXdCOzRCQUN4QixVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7NEJBRXZDLElBQUksVUFBVSxFQUFFLENBQUM7Z0NBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksMkJBQTJCLFVBQVUsRUFBRSxDQUFDLENBQUM7NEJBQ3ZFLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxpQ0FBaUMsQ0FBQyxDQUFDOzRCQUNqRSxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLCtCQUErQixDQUFDLENBQUM7b0JBQy9ELENBQUM7b0JBRUQsNkNBQTZDO29CQUM3QyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO29CQUUzQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFlBQVksOEJBQThCLFFBQVEsY0FDcEQsVUFBVSxJQUFJLFNBQ2hCLEVBQUUsQ0FDSCxDQUFDO29CQUNKLENBQUM7b0JBRUQsZUFBZSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixnQkFBZ0IsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7Z0JBRS9DLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7b0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQzFDLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQ3JELENBQUM7b0JBQ0QsT0FBTyx3QkFBd0IsQ0FDN0IsVUFBVSxFQUNWLDJCQUEyQixRQUFRLHFDQUFxQyxDQUN6RSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRiwwQkFBMEI7UUFDMUIsc0NBQXNDO1FBQ3RDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hGLHFEQUFxRDtZQUNyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbkQsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3JELGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1lBQ0QscUZBQXFGO1lBQ3JGLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBVSxFQUFFLEVBQUU7Z0JBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLElBQUksS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FDVCwwQ0FBMEMsSUFBSSxHQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQzVELEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2pGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCw2RkFBNkY7UUFDN0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsc0NBQXNDO1lBQ3RDLElBQUksSUFBSSxDQUFDLGNBQWM7Z0JBQUUsT0FBTztZQUVoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7WUFDL0IsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7WUFFaEMsbUVBQW1FO1lBQ25FLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV6RCxLQUFLLE1BQU0sRUFBRSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTTtvQkFBRSxTQUFTO2dCQUV0Qix5QkFBeUI7Z0JBQ3pCLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixjQUFjLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDaEMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDM0IsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLG9CQUFvQixFQUFFLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3hCLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDN0IsdUJBQXVCLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQztnQkFFRCxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO2dCQUVELHNFQUFzRTtnQkFDdEUsSUFDRSxNQUFNLENBQUMsa0JBQWtCO29CQUN6QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUztvQkFDMUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO29CQUN4QixHQUFHLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sRUFDeEMsQ0FBQztvQkFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksRUFBRSx1Q0FBdUMsUUFBUSxpQkFBaUIsT0FBTyxDQUFDLFFBQVEsQ0FDcEYsR0FBRyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDaEMseUJBQXlCLENBQzNCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDakQsQ0FBQztnQkFFRCx5REFBeUQ7Z0JBQ3pELElBQ0UsQ0FBQyxNQUFNLENBQUMsc0JBQXNCO29CQUM5QixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQW1CLEdBQUcsQ0FBQyxFQUN0RSxDQUFDO29CQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxFQUFFLDhCQUNKLE1BQU0sQ0FBQyxRQUNULHdDQUF3QyxPQUFPLENBQUMsUUFBUSxDQUN0RCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUMvQixFQUFFLENBQ0osQ0FBQztnQkFDSixDQUFDO2dCQUVELDJFQUEyRTtnQkFDM0UsSUFDRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCO29CQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixLQUFLLFVBQVUsQ0FBQyxFQUN6RSxDQUFDO29CQUNELE1BQU0sY0FBYyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO29CQUVqRCxrREFBa0Q7b0JBQ2xELElBQ0UsTUFBTSxDQUFDLFlBQVk7d0JBQ25CLE1BQU0sQ0FBQyxLQUFLO3dCQUNaLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFrQixHQUFHLENBQUMsRUFDckQsQ0FBQzt3QkFDRCx1RkFBdUY7d0JBQ3ZGLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzs0QkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLEVBQUUsb0NBQ0osTUFBTSxDQUFDLFFBQ1QsaUJBQWlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUk7Z0NBQ25ELG9DQUFvQyxDQUN2QyxDQUFDOzRCQUVGLDJFQUEyRTs0QkFDM0UsTUFBTSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQzs0QkFFdEMsa0VBQWtFOzRCQUNsRSx3RUFBd0U7NEJBQ3hFLE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWtCLEdBQUcsQ0FBQyxDQUFDOzRCQUVqRSxzREFBc0Q7NEJBQ3RELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ2xELElBQUksQ0FBQztvQ0FDSCwrREFBK0Q7b0NBQy9ELHNFQUFzRTtvQ0FDdEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29DQUV2QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3Q0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztvQ0FDMUQsQ0FBQztnQ0FDSCxDQUFDO2dDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0NBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUscUNBQXFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0NBQ2hFLENBQUM7NEJBQ0gsQ0FBQzs0QkFFRCxxREFBcUQ7NEJBQ3JELFNBQVM7d0JBQ1gsQ0FBQztvQkFDSCxDQUFDO29CQUVELHFFQUFxRTtvQkFDckUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFrQixDQUFDO29CQUN4RCxJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLENBQUM7d0JBQ3BFLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztvQkFDbkQsQ0FBQztvQkFFRCxJQUFJLGNBQWMsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNsRSxvREFBb0Q7d0JBQ3BELElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDOzRCQUMzRCxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksRUFBRSx5Q0FDSixNQUFNLENBQUMsUUFDVCxpQkFBaUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSTtnQ0FDbkQsMENBQTBDLENBQzdDLENBQUM7NEJBRUYsd0NBQXdDOzRCQUN4QyxNQUFNLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDOzRCQUN0QyxNQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxDQUFDOzRCQUV4RCxnREFBZ0Q7NEJBQ2hELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ2xELElBQUksQ0FBQztvQ0FDSCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0NBRXZDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dDQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxtREFBbUQsQ0FBQyxDQUFDO29DQUN6RSxDQUFDO2dDQUNILENBQUM7Z0NBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQ0FDYixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxpQ0FBaUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQ0FDNUQsQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUM7NkJBQU0sQ0FBQzs0QkFDTixnRUFBZ0U7NEJBQ2hFLDhFQUE4RTs0QkFDOUUsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQ0FDeEMsZ0VBQWdFO2dDQUNoRSx3RUFBd0U7Z0NBQ3hFLElBQUksY0FBYyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO29DQUN4QyxVQUFVO29DQUNWLE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxFQUFFLG9DQUNKLE1BQU0sQ0FBQyxRQUNULGlCQUFpQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJO3dDQUNuRCxxRUFBcUUsQ0FDeEUsQ0FBQztvQ0FDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7Z0NBQzVELENBQUM7cUNBQU0sQ0FBQztvQ0FDTixtREFBbUQ7b0NBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsSUFBSSxFQUFFLG9DQUNKLE1BQU0sQ0FBQyxRQUNULGlCQUFpQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJO3dDQUNuRCw0QkFBNEIsQ0FDL0IsQ0FBQztvQ0FFRiwwREFBMEQ7b0NBQzFELE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLGdCQUFnQixHQUFHLENBQUMsQ0FBQztnQ0FDbkQsQ0FBQzs0QkFDSCxDQUFDO2lDQUFNLENBQUM7Z0NBQ04sNERBQTREO2dDQUM1RCxPQUFPLENBQUMsR0FBRyxDQUNULElBQUksRUFBRSxzREFBc0QsTUFBTSxDQUFDLFFBQVEsR0FBRztvQ0FDNUUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHO29DQUMxQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDcEUsQ0FBQztnQ0FDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDOzRCQUMvQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUFJLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzt3QkFDaEYsd0RBQXdEO3dCQUN4RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLEVBQUUsNEVBQTRFLENBQ25GLENBQUM7d0JBQ0osQ0FBQzt3QkFDRCxNQUFNLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO29CQUN6QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsdUJBQXVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUk7Z0JBQ3BELGNBQWMsY0FBYyxlQUFlLHNCQUFzQixhQUFhLG9CQUFvQixLQUFLO2dCQUN2RyxXQUFXLGlCQUFpQixlQUFlLG9CQUFvQixrQkFBa0IsdUJBQXVCLElBQUk7Z0JBQzVHLHVCQUF1QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxRQUFRLENBQzNFLFdBQVcsQ0FDWixJQUFJO2dCQUNMLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNuQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVE7b0JBQ2xDLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtpQkFDcEMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztRQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixJQUFJLEtBQUssQ0FBQyxDQUFDO1FBRW5ELHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLGNBQThCO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsaUNBQWlDO1FBQ2pDLHVCQUF1QixFQUFFLENBQUM7UUFFMUIsaUNBQWlDO1FBQ2pDLE1BQU0sbUJBQW1CLEdBQW9CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUM5RCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBRXJFLG1EQUFtRDtRQUNuRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLGFBQWEsQ0FBQyxNQUFNLHdCQUF3QixDQUFDLENBQUM7UUFFekUsNkNBQTZDO1FBQzdDLEtBQUssTUFBTSxFQUFFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQztvQkFDSCxtQkFBbUI7b0JBQ25CLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUN4QixZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNsQyxNQUFNLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztvQkFDbEMsQ0FBQztvQkFFRCx5QkFBeUI7b0JBQ3pCLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3hCLENBQUM7b0JBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDbEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDeEIsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekQsd0NBQXdDO1FBQ3hDLEtBQUssTUFBTSxFQUFFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQztvQkFDSCwrQ0FBK0M7b0JBQy9DLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDOzRCQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUM1QixDQUFDO29CQUNILENBQUM7b0JBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQy9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzVCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzlFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXJCLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGIn0=
|