# License of this script, not of the application it contains: # # Copyright Erik Veenstra # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License, # version 2, as published by the Free Software Foundation. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA. # Parts of this code are based on code from Thomas Hurst # . # Tar2RubyScript constants unless defined?(BLOCKSIZE) ShowContent = ARGV.include?("--tar2rubyscript-list") JustExtract = ARGV.include?("--tar2rubyscript-justextract") ToTar = ARGV.include?("--tar2rubyscript-totar") Preserve = ARGV.include?("--tar2rubyscript-preserve") end ARGV.concat [] ARGV.delete_if{|arg| arg =~ /^--tar2rubyscript-/} ARGV << "--tar2rubyscript-preserve" if Preserve # Tar constants unless defined?(BLOCKSIZE) BLOCKSIZE = 512 NAMELEN = 100 MODELEN = 8 UIDLEN = 8 GIDLEN = 8 CHKSUMLEN = 8 SIZELEN = 12 MAGICLEN = 8 MODTIMELEN = 12 UNAMELEN = 32 GNAMELEN = 32 DEVLEN = 8 TMAGIC = "ustar" GNU_TMAGIC = "ustar " SOLARIS_TMAGIC = "ustar\00000" MAGICS = [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC] LF_OLDFILE = '\0' LF_FILE = '0' LF_LINK = '1' LF_SYMLINK = '2' LF_CHAR = '3' LF_BLOCK = '4' LF_DIR = '5' LF_FIFO = '6' LF_CONTIG = '7' GNUTYPE_DUMPDIR = 'D' GNUTYPE_LONGLINK = 'K' # Identifies the *next* file on the tape as having a long linkname. GNUTYPE_LONGNAME = 'L' # Identifies the *next* file on the tape as having a long name. GNUTYPE_MULTIVOL = 'M' # This is the continuation of a file that began on another volume. GNUTYPE_NAMES = 'N' # For storing filenames that do not fit into the main header. GNUTYPE_SPARSE = 'S' # This is for sparse files. GNUTYPE_VOLHDR = 'V' # This file is a tape/volume header. Ignore it on extraction. end class Dir def self.rm_rf(entry) File.chmod(0755, entry) if File.ftype(entry) == "directory" pdir = Dir.pwd Dir.chdir(entry) Dir.new(".").each do |e| Dir.rm_rf(e) if not [".", ".."].include?(e) end Dir.chdir(pdir) begin Dir.delete(entry) rescue => e $stderr.puts e.message end else begin File.delete(entry) rescue => e $stderr.puts e.message end end end end class Reader def initialize(filehandle) @fp = filehandle end def extract each do |entry| entry.extract end end def list each do |entry| entry.list end end def each @fp.rewind while entry = next_entry yield(entry) end end def next_entry buf = @fp.read(BLOCKSIZE) if buf.length < BLOCKSIZE or buf == "\000" * BLOCKSIZE entry = nil else entry = Entry.new(buf, @fp) end entry end end class Entry attr_reader(:header, :data) def initialize(header, fp) @header = Header.new(header) readdata = lambda do |header| padding = (BLOCKSIZE - (header.size % BLOCKSIZE)) % BLOCKSIZE @data = fp.read(header.size) if header.size > 0 dummy = fp.read(padding) if padding > 0 end readdata.call(@header) if @header.longname? gnuname = @data[0..-2] header = fp.read(BLOCKSIZE) @header = Header.new(header) @header.name = gnuname readdata.call(@header) end end def extract if not @header.name.empty? if @header.dir? begin Dir.mkdir(@header.name, @header.mode) rescue SystemCallError => e $stderr.puts "Couldn't create dir #{@header.name}: " + e.message end elsif @header.file? begin File.open(@header.name, "wb") do |fp| fp.write(@data) fp.chmod(@header.mode) end rescue => e $stderr.puts "Couldn't create file #{@header.name}: " + e.message end else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end #File.chown(@header.uid, @header.gid, @header.name) #File.utime(Time.now, @header.mtime, @header.name) end end def list if not @header.name.empty? if @header.dir? $stderr.puts "d %s" % [@header.name] elsif @header.file? $stderr.puts "f %s (%s)" % [@header.name, @header.size] else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end end end end class Header attr_reader(:name, :uid, :gid, :size, :mtime, :uname, :gname, :mode, :linkflag) attr_writer(:name) def initialize(header) fields = header.unpack('A100 A8 A8 A8 A12 A12 A8 A1 A100 A8 A32 A32 A8 A8') types = ['str', 'oct', 'oct', 'oct', 'oct', 'time', 'oct', 'str', 'str', 'str', 'str', 'str', 'oct', 'oct'] begin converted = [] while field = fields.shift type = types.shift case type when 'str' then converted.push(field) when 'oct' then converted.push(field.oct) when 'time' then converted.push(Time::at(field.oct)) end end @name, @mode, @uid, @gid, @size, @mtime, @chksum, @linkflag, @linkname, @magic, @uname, @gname, @devmajor, @devminor = converted @name.gsub!(/^\.\//, "") @raw = header rescue ArgumentError => e raise "Couldn't determine a real value for a field (#{field})" end raise "Magic header value #{@magic.inspect} is invalid." if not MAGICS.include?(@magic) @linkflag = LF_FILE if @linkflag == LF_OLDFILE or @linkflag == LF_CONTIG @linkflag = LF_DIR if @name[-1] == '/' and @linkflag == LF_FILE @linkname = @linkname[1,-1] if @linkname[0] == '/' @size = 0 if @size < 0 @name = @linkname + '/' + @name if @linkname.size > 0 end def file? @linkflag == LF_FILE end def dir? @linkflag == LF_DIR end def longname? @linkflag == GNUTYPE_LONGNAME end end class Content @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def list begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).list} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class TempSpace @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @olddir = Dir.pwd temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" @tempdir = "#{temp}/tar2rubyscript.d.#{Process.pid}.#{@@count}" @@tempspace = self @newdir = @tempdir @touchthread = Thread.new do loop do sleep 60*60 touch(@tempdir) touch(@tempfile) end end end def extract Dir.rm_rf(@tempdir) if File.exists?(@tempdir) Dir.mkdir(@tempdir) newlocation do # Create the temp environment. File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} # Eventually look for a subdirectory. entries = Dir.entries(".") entries.delete(".") entries.delete("..") if entries.length == 1 entry = entries.shift.dup if File.directory?(entry) @newdir = "#{@tempdir}/#{entry}" end end end # Remember all File objects. @ioobjects = [] ObjectSpace::each_object(File) do |obj| @ioobjects << obj end at_exit do @touchthread.kill # Close all File objects, opened in init.rb . ObjectSpace::each_object(File) do |obj| obj.close if (not obj.closed? and not @ioobjects.include?(obj)) end # Remove the temp environment. Dir.chdir(@olddir) Dir.rm_rf(@tempfile) Dir.rm_rf(@tempdir) end self end def cleanup @archive = nil self end def touch(entry) entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil? return unless File.exists?(entry) if File.directory?(entry) pdir = Dir.pwd begin Dir.chdir(entry) begin Dir.new(".").each do |e| touch(e) unless [".", ".."].include?(e) end ensure Dir.chdir(pdir) end rescue Errno::EACCES => error $stderr.puts error end else File.utime(Time.now, File.mtime(entry), entry) end end def oldlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@olddir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @olddir) if not file.nil? end res end def newlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@newdir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @newdir) if not file.nil? end res end def self.oldlocation(file="") if block_given? @@tempspace.oldlocation { yield } else @@tempspace.oldlocation(file) end end def self.newlocation(file="") if block_given? @@tempspace.newlocation { yield } else @@tempspace.newlocation(file) end end end class Extract @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def extract begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class MakeTar def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @tarfile = File.expand_path(__FILE__).gsub(/\.rbw?$/, "") + ".tar" end def extract File.open(@tarfile, "wb") {|f| f.write @archive} self end def cleanup @archive = nil self end end def oldlocation(file="") if block_given? TempSpace.oldlocation { yield } else TempSpace.oldlocation(file) end end def newlocation(file="") if block_given? TempSpace.newlocation { yield } else TempSpace.newlocation(file) end end if ShowContent Content.new.list.cleanup elsif JustExtract Extract.new.extract.cleanup elsif ToTar MakeTar.new.extract.cleanup else TempSpace.new.extract.cleanup $:.unshift(newlocation) $:.push(oldlocation) s = ENV["PATH"].dup if Dir.pwd[1..2] == ":/" # Hack ??? s << ";#{newlocation.gsub(/\//, "\\")}" s << ";#{oldlocation.gsub(/\//, "\\")}" else s << ":#{newlocation}" s << ":#{oldlocation}" end ENV["PATH"] = s TAR2RUBYSCRIPT = true unless defined?(TAR2RUBYSCRIPT) newlocation do if __FILE__ == $0 $0.replace(File.expand_path("./init.rb")) if File.file?("./init.rb") load File.expand_path("./init.rb") else $stderr.puts "%s doesn't contain an init.rb ." % __FILE__ end else if File.file?("./init.rb") load File.expand_path("./init.rb") end end end end # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1OTQudGFyLwAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAw # ADEwMjUwMzIwNjEzADAxNjIxNAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTU5NC50 # YXIvaW5pdC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDAxNTAAMTAxNjY2MTYxMzYAMDE3NTMwACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3J3ZCIKClJXRGlhbG9nLm5ldygiPHdpbmRvdyBuYW1lPVwibWFpblwiIHRp # dGxlPVwiSFdcIj48cD5IZWxsbyBXb3JsZCE8L3A+PC93aW5kb3c+Iikuc2Vy # dmUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1OTQudGFyL3RhcjJydWJ5 # c2NyaXB0LnNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAw # MDAwMDM0ADEwMDQwNDYxMzExADAyMTU1NAAgMAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg # AGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABldmRvIHJ1YnlsaWJjb3B5IC0tcndk # LWV4aXQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5l # YXIycnVieXNjcmlwdC5mLjExNTk0LnRhci9ldi8AAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAwMAAxMDI1 # MDMyMDYxMwAwMTY2NDAAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1OTQudGFyL2V2 # L2Z0b29scy5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUw # ADAwMDAwMDA2NTE2ADEwMjUwMzIwNjEzADAyMDUwNgAgMAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 # c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1aXJlICJmdG9vbHMi # CgpjbGFzcyBEaXIKICBkZWYgc2VsZi5jb3B5KGZyb20sIHRvKQogICAgaWYg # RmlsZS5kaXJlY3Rvcnk/KGZyb20pCiAgICAgIHBkaXIJPSBEaXIucHdkCiAg # ICAgIHRvZGlyCT0gRmlsZS5leHBhbmRfcGF0aCh0bykKCiAgICAgIEZpbGUu # bWtwYXRoKHRvZGlyKQoKICAgICAgRGlyLmNoZGlyKGZyb20pCiAgICAgICAg # RGlyLm5ldygiLiIpLmVhY2ggZG8gfGV8CiAgICAgICAgICBEaXIuY29weShl # LCB0b2RpcisiLyIrZSkJaWYgbm90IFsiLiIsICIuLiJdLmluY2x1ZGU/KGUp # CiAgICAgICAgZW5kCiAgICAgIERpci5jaGRpcihwZGlyKQogICAgZWxzZQog # ICAgICB0b2Rpcgk9IEZpbGUuZGlybmFtZShGaWxlLmV4cGFuZF9wYXRoKHRv # KSkKCiAgICAgIEZpbGUubWtwYXRoKHRvZGlyKQoKICAgICAgRmlsZS5jb3B5 # KGZyb20sIHRvKQogICAgZW5kCiAgZW5kCgogIGRlZiBzZWxmLm1vdmUoZnJv # bSwgdG8pCiAgICBEaXIuY29weShmcm9tLCB0bykKICAgIERpci5ybV9yZihm # cm9tKQogIGVuZAoKICBkZWYgc2VsZi5ybV9yZihlbnRyeSkKICAgIEZpbGUu # Y2htb2QoMDc1NSwgZW50cnkpCgogICAgaWYgRmlsZS5mdHlwZShlbnRyeSkg # PT0gImRpcmVjdG9yeSIKICAgICAgcGRpcgk9IERpci5wd2QKCiAgICAgIERp # ci5jaGRpcihlbnRyeSkKICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8 # ZXwKICAgICAgICAgIERpci5ybV9yZihlKQlpZiBub3QgWyIuIiwgIi4uIl0u # aW5jbHVkZT8oZSkKICAgICAgICBlbmQKICAgICAgRGlyLmNoZGlyKHBkaXIp # CgogICAgICBiZWdpbgogICAgICAgIERpci5kZWxldGUoZW50cnkpCiAgICAg # IHJlc2N1ZSA9PiBlCiAgICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQog # ICAgICBlbmQKICAgIGVsc2UKICAgICAgYmVnaW4KICAgICAgICBGaWxlLmRl # bGV0ZShlbnRyeSkKICAgICAgcmVzY3VlID0+IGUKICAgICAgICAkc3RkZXJy # LnB1dHMgZS5tZXNzYWdlCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRl # ZiBzZWxmLmZpbmQoZW50cnk9bmlsLCBtYXNrPW5pbCkKICAgIGVudHJ5CT0g # Ii4iCWlmIGVudHJ5Lm5pbD8KCiAgICBlbnRyeQk9IGVudHJ5LmdzdWIoL1tc # L1xcXSokLywgIiIpCXVubGVzcyBlbnRyeS5uaWw/CgogICAgbWFzawk9IC9e # I3ttYXNrfSQvaQlpZiBtYXNrLmtpbmRfb2Y/KFN0cmluZykKCiAgICByZXMJ # PSBbXQoKICAgIGlmIEZpbGUuZGlyZWN0b3J5PyhlbnRyeSkKICAgICAgcGRp # cgk9IERpci5wd2QKCiAgICAgIHJlcyArPSBbIiVzLyIgJSBlbnRyeV0JaWYg # bWFzay5uaWw/IG9yIGVudHJ5ID1+IG1hc2sKCiAgICAgIGJlZ2luCiAgICAg # ICAgRGlyLmNoZGlyKGVudHJ5KQoKICAgICAgICBiZWdpbgogICAgICAgICAg # RGlyLm5ldygiLiIpLmVhY2ggZG8gfGV8CiAgICAgICAgICAgIHJlcyArPSBE # aXIuZmluZChlLCBtYXNrKS5jb2xsZWN0e3xlfCBlbnRyeSsiLyIrZX0JdW5s # ZXNzIFsiLiIsICIuLiJdLmluY2x1ZGU/KGUpCiAgICAgICAgICBlbmQKICAg # ICAgICBlbnN1cmUKICAgICAgICAgIERpci5jaGRpcihwZGlyKQogICAgICAg # IGVuZAogICAgICByZXNjdWUgRXJybm86OkVBQ0NFUyA9PiBlCiAgICAgICAg # JHN0ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBlbmQKICAgIGVsc2UKICAg # ICAgcmVzICs9IFtlbnRyeV0JaWYgbWFzay5uaWw/IG9yIGVudHJ5ID1+IG1h # c2sKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIEZpbGUKICBk # ZWYgc2VsZi5yb2xsYmFja3VwKGZpbGUsIG1vZGU9bmlsKQogICAgYmFja3Vw # ZmlsZQk9IGZpbGUgKyAiLlJCLkJBQ0tVUCIKICAgIGNvbnRyb2xmaWxlCT0g # ZmlsZSArICIuUkIuQ09OVFJPTCIKICAgIHJlcwkJPSBuaWwKCiAgICBGaWxl # LnRvdWNoKGZpbGUpICAgIHVubGVzcyBGaWxlLmZpbGU/KGZpbGUpCgoJIyBS # b2xsYmFjawoKICAgIGlmIEZpbGUuZmlsZT8oYmFja3VwZmlsZSkgYW5kIEZp # bGUuZmlsZT8oY29udHJvbGZpbGUpCiAgICAgICRzdGRlcnIucHV0cyAiUmVz # dG9yaW5nICN7ZmlsZX0uLi4iCgogICAgICBGaWxlLmNvcHkoYmFja3VwZmls # ZSwgZmlsZSkJCQkJIyBSb2xsYmFjayBmcm9tIHBoYXNlIDMKICAgIGVuZAoK # CSMgUmVzZXQKCiAgICBGaWxlLmRlbGV0ZShiYWNrdXBmaWxlKQlpZiBGaWxl # LmZpbGU/KGJhY2t1cGZpbGUpCSMgUmVzZXQgZnJvbSBwaGFzZSAyIG9yIDMK # ICAgIEZpbGUuZGVsZXRlKGNvbnRyb2xmaWxlKQlpZiBGaWxlLmZpbGU/KGNv # bnRyb2xmaWxlKQkjIFJlc2V0IGZyb20gcGhhc2UgMyBvciA0CgoJIyBCYWNr # dXAKCiAgICBGaWxlLmNvcHkoZmlsZSwgYmFja3VwZmlsZSkJCQkJCSMgRW50 # ZXIgcGhhc2UgMgogICAgRmlsZS50b3VjaChjb250cm9sZmlsZSkJCQkJCSMg # RW50ZXIgcGhhc2UgMwoKCSMgVGhlIHJlYWwgdGhpbmcKCiAgICBpZiBibG9j # a19naXZlbj8KICAgICAgaWYgbW9kZS5uaWw/CiAgICAgICAgcmVzCT0geWll # bGQKICAgICAgZWxzZQogICAgICAgIEZpbGUub3BlbihmaWxlLCBtb2RlKSBk # byB8ZnwKICAgICAgICAgIHJlcwk9IHlpZWxkKGYpCiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCgoJIyBDbGVhbnVwCgogICAgRmlsZS5kZWxldGUo # YmFja3VwZmlsZSkJCQkJCSMgRW50ZXIgcGhhc2UgNAogICAgRmlsZS5kZWxl # dGUoY29udHJvbGZpbGUpCQkJCQkjIEVudGVyIHBoYXNlIDUKCgkjIFJldHVy # biwgbGlrZSBGaWxlLm9wZW4KCiAgICByZXMJPSBGaWxlLm9wZW4oZmlsZSwg # KG1vZGUgb3IgInIiKSkJdW5sZXNzIGJsb2NrX2dpdmVuPwoKICAgIHJlcwog # IGVuZAoKICBkZWYgc2VsZi50b3VjaChmaWxlKQogICAgaWYgRmlsZS5leGlz # dHM/KGZpbGUpCiAgICAgIEZpbGUudXRpbWUoVGltZS5ub3csIEZpbGUubXRp # bWUoZmlsZSksIGZpbGUpCiAgICBlbHNlCiAgICAgIEZpbGUub3BlbihmaWxl # LCAiYSIpe3xmfH0KICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi53aGljaChm # aWxlKQogICAgcmVzCT0gbmlsCgogICAgaWYgd2luZG93cz8KICAgICAgZmls # ZQk9IGZpbGUuZ3N1YigvXC5leGUkL2ksICIiKSArICIuZXhlIgogICAgICBz # ZXAJCT0gIjsiCiAgICBlbHNlCiAgICAgIHNlcAkJPSAiOiIKICAgIGVuZAoK # ICAgIGNhdGNoIDpzdG9wIGRvCiAgICAgIEVOVlsiUEFUSCJdLnNwbGl0KC8j # e3NlcH0vKS5yZXZlcnNlLmVhY2ggZG8gfGR8CiAgICAgICAgaWYgRmlsZS5k # aXJlY3Rvcnk/KGQpCiAgICAgICAgICBEaXIubmV3KGQpLmVhY2ggZG8gfGV8 # CiAgICAgICAgICAgICBpZiBlLmRvd25jYXNlID09IGZpbGUuZG93bmNhc2UK # ICAgICAgICAgICAgICAgcmVzCT0gRmlsZS5leHBhbmRfcGF0aChlLCBkKQog # ICAgICAgICAgICAgICB0aHJvdyA6c3RvcAogICAgICAgICAgICBlbmQKICAg # ICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAg # IHJlcwogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExNTk0LnRhci9l # di9yd2QucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1 # MAAwMDAwMDIwMjUxNgAxMDI1MDMyMDYxMwAwMTc3NzIAIDAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # dXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYvcnVi # eSIKcmVxdWlyZSAiZXYveG1sIgpyZXF1aXJlICJldi9uZXQiCnJlcXVpcmUg # ImV2L2Jyb3dzZXIiCnJlcXVpcmUgImV2L3RocmVhZCIKcmVxdWlyZSAibWQ1 # IgpyZXF1aXJlICJyYmNvbmZpZyIKCmJlZ2luCiAgcmVxdWlyZSAid2luMzJv # bGUiCiAgcmVxdWlyZSAid2luMzIvcmVnaXN0cnkiCnJlc2N1ZSBMb2FkRXJy # b3IKICAkIi5wdXNoICJ3aW4zMm9sZS5zbyIKICAkIi5wdXNoICJ3aW4zMi9y # ZWdpc3RyeS5yYiIKZW5kCgokcndkX2V4aXQJPSBBUkdWLmluY2x1ZGU/KCIt # LXJ3ZC1leGl0IikJIyBIYWNrID8/PwokcndkX2V4aXQJPSB0cnVlCWlmIGRl # ZmluZWQ/KFJFUVVJUkUyTElCKQokcndkX2RlYnVnCT0gKCRyd2RfZGVidWcg # b3IgJERFQlVHIG9yIGZhbHNlKQokcndkX2JvcmRlcgk9ICgkcndkX2JvcmRl # ciBvciAwKQokcndkX2Rpcgk9IERpci5wd2QKJHJ3ZF9maWxlcwk9IEZpbGUu # ZXhwYW5kX3BhdGgoInJ3ZF9maWxlcyIsIERpci5wd2QpCiRyd2RfaHRtbAk9 # IHt9CgpBUkdWLmRlbGV0ZV9pZiBkbyB8YXJnfAogIGFyZyA9fiAvXi0tcndk # LS8KZW5kCgpSV0RFbXB0eWxpbmUJPSAiLi4uIgoKI21vZHVsZSBSV0QKCnJj # ZmlsZQk9IG5pbApzCT0gRU5WWyJIT01FIl0JCTsgcyA9IEZpbGUuZXhwYW5k # X3BhdGgoIi5yd2RyYyIsIHMpCXVubGVzcyBzLm5pbD8JOyByY2ZpbGUgPSBz # CWlmIChub3Qgcy5uaWw/IGFuZCByY2ZpbGUubmlsPyBhbmQgRmlsZS5maWxl # PyhzKSkKcwk9IEVOVlsiVVNFUlBST0ZJTEUiXQk7IHMgPSBGaWxlLmV4cGFu # ZF9wYXRoKCJyd2QuY2ZnIiwgcykJdW5sZXNzIHMubmlsPwk7IHJjZmlsZSA9 # IHMJaWYgKG5vdCBzLm5pbD8gYW5kIHJjZmlsZS5uaWw/IGFuZCBGaWxlLmZp # bGU/KHMpKQpzCT0gRU5WWyJ3aW5kaXIiXQkJOyBzID0gRmlsZS5leHBhbmRf # cGF0aCgicndkLmNmZyIsIHMpCXVubGVzcyBzLm5pbD8JOyByY2ZpbGUgPSBz # CWlmIChub3Qgcy5uaWw/IGFuZCByY2ZpbGUubmlsPyBhbmQgRmlsZS5maWxl # PyhzKSkKCkFMCT0gImFsaWduPSdsZWZ0JyIKQUMJPSAiYWxpZ249J2NlbnRl # ciciCkFSCT0gImFsaWduPSdyaWdodCciClZBCT0gInZhbGlnbj0nbWlkZGxl # JyIKCkZvcm1hdAk9ICJcbjwhLS0gJS0xMHMgJS0xMHMgLS0+XHQiCgp1bmxl # c3MgcmNmaWxlLm5pbD8KICBwdXRzICJSZWFkaW5nICN7cmNmaWxlfSAuLi4i # CgogIEhhc2guZmlsZShyY2ZpbGUpLmVhY2ggZG8gfGssIHZ8CiAgICBFTlZb # a10JPSB2CXVubGVzcyBFTlYuaW5jbHVkZT8oaykKICBlbmQKZW5kCgpFTlZb # IlJXREJST1dTRVIiXQk9IChFTlZbIlJXREJST1dTRVIiXSBvciBkZWZhdWx0 # YnJvd3Nlcikgb3IgcHV0cyAiTm8gYnJvd3NlciBmb3VuZC4iCkVOVlsiUldE # UE9SVFMiXQkJPSAoRU5WWyJSV0RQT1JUUyJdIG9yICI3NzAxLTc3MDkiKQpF # TlZbIlJXRFRIRU1FIl0JCT0gKEVOVlsiUldEVEhFTUUiXSBvciAiREVGQVVM # VCIpCgojdHJhcCgiSU5UIikJe3B1dHMgIlRlcm1pbmF0aW5nLi4uIiA7IGV4 # aXR9CgokU0FGRQk9IDIKCmNsYXNzIElFCiAgZGVmIGluaXRpYWxpemUodXJs # KQogICAgQGllID0gV0lOMzJPTEUubmV3KCJJbnRlcm5ldEV4cGxvcmVyLkFw # cGxpY2F0aW9uIikKICAgIEBldgk9IFdJTjMyT0xFX0VWRU5ULm5ldyhAaWUs # ICJEV2ViQnJvd3NlckV2ZW50czIiKQoKICAgIEBpZS5uYXZpZ2F0ZSh1cmwp # CgogICAgQGllLm1lbnViYXIJCT0gZmFsc2UKICAgIEBpZS50b29sYmFyCQk9 # IGZhbHNlCiAgICBAaWUuYWRkcmVzc2Jhcgk9IGZhbHNlCiAgICBAaWUuc3Rh # dHVzYmFyCT0gZmFsc2UKCiAgICBAaWUudmlzaWJsZQkJPSB0cnVlCgogICAg # YXRfZXhpdCBkbwogICAgICBAaWUudmlzaWJsZQk9IGZhbHNlCiAgICBlbmQK # CiAgICBAZXYub25fZXZlbnQoIk9uUXVpdCIpIGRvCiAgICAgIFRocmVhZC5t # YWluLmV4aXQKICAgIGVuZAoKICAgIFRocmVhZC5uZXcgZG8KICAgICAgbG9v # cCBkbwogICAgICAgIFdJTjMyT0xFX0VWRU5ULm1lc3NhZ2VfbG9vcAogICAg # ICBlbmQKICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIEFycmF5CiAgZGVmIHJ3 # ZF9vcHRpb25zKGVtcHR5bGluZT1uaWwpCiAgICBpZiBlbXB0eWxpbmUubmls # PwogICAgICBhCT0gc2VsZgogICAgZWxzZQogICAgICBhCT0gW2VtcHR5bGlu # ZV0uY29uY2F0KHNlbGYpCiAgICBlbmQKCiAgICBhLm51bXNvcnQuY29sbGVj # dHt8c3wgIjxvcHRpb24+I3tzLnRvX3MudG9faHRtbH08L29wdGlvbj4iIH0u # am9pbigiXG4iKQogIGVuZAoKICBkZWYgcndkX21ldGhvZChtZXRob2QpCiAg # ICByZXMJPSAiIgoKICAgIHNlbGYuZWFjaCBkbyB8c3wKICAgICAgcwkJPSBz # LmpvaW4oIi8iKQlpZiBzLmtpbmRfb2Y/KEFycmF5KQogICAgICBzMgk9IHMu # ZHVwCiAgICAgIHMyWzAuLjBdCT0gczJbMC4uMF0udXBjYXNlCiAgICAgIHJl # cwk9IHJlcyArICI8cCBhbGlnbj0nbGVmdCc+PGEgYWN0aW9uPScje21ldGhv # ZH0vI3tzLnRvX2h0bWx9Jz4je3MyLnRvX2h0bWx9PC9hPjwvcD4iCiAgICBl # bmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiByd2Rfcm93KGtleT1u # aWwsIHZhbHVlPW5pbCwgYm9sZD1mYWxzZSkKICAgIHJlcwk9ICIiCgogICAg # cmVzCT0gcmVzICsgIjxyb3cgdmFsaWduPSd0b3AnPiIKICAgIHJlcwk9IHJl # cyArICI8cmFkaW8gbmFtZT0nI3trZXkudG9faHRtbH0nIHZhbHVlPScje3Zh # bHVlLnRvX2h0bWx9Jy8+Igl1bmxlc3Mga2V5Lm5pbD8KICAgIHJlcwk9IHJl # cyArIHNlbGYuY29sbGVjdHt8c3wgIjxwIGFsaWduPScjeyhzLmtpbmRfb2Y/ # KE51bWVyaWMpIG9yIHMgPX4gL15cZCtcLlxkKyQvKSA/ICJyaWdodCIgOiAi # bGVmdCJ9Jz4jeyI8Yj4iIGlmIGJvbGR9I3tzLnRvX3MudG9faHRtbH0jeyI8 # L2I+IiBpZiBib2xkfTwvcD4ifS5qb2luKCIiKQogICAgcmVzCT0gcmVzICsg # Ijwvcm93PiIKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiByd2RfdGFi # bGUoaGVhZGVycz1uaWwsIGhpZ2hsaWdodHJvd3M9W10pCiAgICByZXMJPSAi # IgoKICAgIGhpZ2hsaWdodHJvd3MJPSBbaGlnaGxpZ2h0cm93c10uZmxhdHRl # bgoKICAgIG4JPSAtMQoKICAgIHJlcwk9IHJlcyArICI8dGFibGU+IgogICAg # cmVzCT0gcmVzICsgaGVhZGVycy5yd2Rfcm93KG5pbCwgbmlsLCB0cnVlKQl1 # bmxlc3MgaGVhZGVycy5uaWw/CiAgICByZXMJPSByZXMgKyBzZWxmLmNvbGxl # Y3R7fGF8IGEucndkX3JvdyhuaWwsIG5pbCwgaGlnaGxpZ2h0cm93cy5pbmNs # dWRlPyhuKz0xKSl9LmpvaW4oIiIpCiAgICByZXMJPSByZXMgKyAiPC90YWJs # ZT4iCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBkZWYgcndkX2hlYWRlcnMo # ZW1wdHlmaWVsZD1mYWxzZSkKICAgIHJlcwk9ICIiCgogICAgcmVzCT0gcmVz # ICsgIjxyb3c+IgogICAgcmVzCT0gcmVzICsgIjxwLz4iCWlmIGVtcHR5Zmll # bGQKICAgIHJlcwk9IHJlcyArIHNlbGYuY29sbGVjdHt8c3wgIjxwIGFsaWdu # PSdsZWZ0Jz48Yj4je3MudG9faHRtbH08L2I+PC9wPiIgfS5qb2luKCIiKQog # ICAgcmVzCT0gcmVzICsgIjwvcm93PiIKCiAgICByZXR1cm4gcmVzCiAgZW5k # CgogIGRlZiByd2RfZm9ybShwcmVmaXgsIHZhbHVlcz1bXSwgdHdvcGFydHM9 # MCwgb3B0aW9ucz17fSkKICAgIHJlcwk9IFtdCgogICAgcmVzIDw8ICI8dGFi # bGU+IgogICAgc2VsZi5lYWNoX2luZGV4IGRvIHxufAogICAgICBuYW1lCT0g # IiN7cHJlZml4LnRvX2h0bWx9I3tzZWxmW25dLmRvd25jYXNlLnRvX2h0bWx9 # IgoKICAgICAgcmVzIDw8ICI8cm93PiIKICAgICAgcmVzIDw8ICI8cCBhbGln # bj0ncmlnaHQnPiIKICAgICAgcmVzIDw8ICIje3NlbGZbbl0udG9faHRtbH06 # IgogICAgICByZXMgPDwgIjwvcD4iCgogICAgICBpZiBvcHRpb25zLmtleXMu # aW5jbHVkZT8oc2VsZltuXSkKICAgICAgICByZXMgPDwgIjxzZWxlY3QgbmFt # ZT0nI3tuYW1lfSc+IgogICAgICAgIHJlcyA8PCBvcHRpb25zW3NlbGZbbl1d # LnJ3ZF9vcHRpb25zKFJXREVtcHR5bGluZSkKICAgICAgICByZXMgPDwgIjwv # c2VsZWN0PiIKICAgICAgZWxzZQogICAgICAgIHMJPSAiIgoKICAgICAgICBz # IDw8ICI8dGV4dCBuYW1lPScje25hbWV9JyIKICAgICAgICBzIDw8ICIgdmFs # dWU9JyN7dmFsdWVzW25dLnRvX3MudG9faHRtbH0nIglpZiBuIDwgdmFsdWVz # Lmxlbmd0aAogICAgICAgIHMgPDwgIi8+IgoKICAgICAgICByZXMgPDwgcwog # ICAgICBlbmQKCiAgICAgIHJlcyA8PCAiPC9yb3c+IgoKICAgICAgaWYgdHdv # cGFydHMgPiAwIGFuZCBuID09IHR3b3BhcnRzLTEKICAgICAgICByZXMgPDwg # Ijxyb3c+PGVtcHR5Lz48L3Jvdz4iCiAgICAgIGVuZAogICAgZW5kCiAgICBy # ZXMgPDwgIjwvdGFibGU+IgoKICAgIHJldHVybiByZXMuam9pbigiXG4iKQog # IGVuZAplbmQKCmNsYXNzIEhhc2gKICBkZWYgcndkX3RhYmxlKGZpZWxkPW5p # bCwgam9pbndpdGg9bmlsLCBoZWFkZXJzPW5pbCkKICAgIHJlcwk9IFtdCgog # ICAgcmVzIDw8ICI8dGFibGU+IgogICAgcmVzIDw8IGhlYWRlcnMucndkX2hl # YWRlcnMoKG5vdCBmaWVsZC5uaWw/KSkJaWYgbm90IGhlYWRlcnMubmlsPwog # ICAgc2VsZi5rZXlzLm51bXNvcnQuZWFjaCBkbyB8a2V5fAogICAgICBrZXky # CT0ga2V5CiAgICAgIHZhbHVlMgk9IHNlbGZba2V5XQoKICAgICAga2V5Mgk9 # IGtleTIuam9pbihqb2lud2l0aCkJaWYga2V5Mi5raW5kX29mPyhBcnJheSkK # ICAgICAgdmFsdWUyCT0gW3ZhbHVlMl0JCWlmIHZhbHVlMi5raW5kX29mPyhT # dHJpbmcpCgogICAgICByZXMgPDwgdmFsdWUyLnJ3ZF9yb3coZmllbGQsIGtl # eTIpCiAgICBlbmQKICAgIHJlcyA8PCAiPC90YWJsZT4iCgogICAgcmVzLmpv # aW4oIlxuIikKICBlbmQKZW5kCgpjbGFzcyBFVlRhYmxlCiAgZGVmIHJ3ZF90 # YWJsZShmaWVsZD1uaWwsIGpvaW53aXRoPUBzZXApCiAgICBzdXBlcihmaWVs # ZCwgam9pbndpdGgsIEBoZWFkZXJzKQogIGVuZAoKICBkZWYgcndkX2Zvcm0o # cHJlZml4PSIiLCBrZXk9bmlsLCB0d29wYXJ0cz1mYWxzZSkKICAgIHZhbHVl # cwk9IHNlbGZba2V5XQlpZiBub3Qga2V5Lm5pbD8KICAgIHZhbHVlcwk9IFtd # CQlpZiB2YWx1ZXMubmlsPwogICAgb3B0aW9ucwk9IHt9CgogICAgaWYgRmls # ZS5maWxlPyhvbGRsb2NhdGlvbigiY29uc3RyYWludHMudHN2IikpCiAgICAg # IHRhYmxlCT0gRmlsZS5iYXNlbmFtZShAZmlsZSkuZ3N1YigvXC50c3YkLywg # IiIpCgogICAgICBUU1ZGaWxlLm5ldyhvbGRsb2NhdGlvbigiY29uc3RyYWlu # dHMudHN2IikpLnN1YnNldChbIlRhYmxlIiwgIkNvbnN0cmFpbnQiXSwgW3Rh # YmxlLCAia2V5Il0sIFsiQ29sdW1uIiwgIlZhbHVlIl0pLnZhbHVlcy5lYWNo # IGRvIHxjb2x1bW4sIHRhYmxlMnwKICAgICAgICBvcHRpb25zW2NvbHVtbl0J # PSBUU1ZGaWxlLm5ldyhvbGRsb2NhdGlvbigiI3t0YWJsZTJ9LnRzdiIpKS5r # ZXlzLmNvbGxlY3R7fGF8IGEuam9pbigiXHQiKX0KICAgICAgZW5kCiAgICBl # bmQKCiAgICBAaGVhZGVycy5yd2RfZm9ybShwcmVmaXgsIHZhbHVlcywgdHdv # cGFydHMgPyBAa2V5IDogMCwgb3B0aW9ucykKICBlbmQKCiAgZGVmIHJ3ZF9t # ZXRhZGF0YQogICAgcmVzCT0gW10KCiAgICByZXMgPDwgIjx0YWJsZT4iCiAg # ICByZXMgPDwgIjxyb3c+IgogICAgcmVzIDw8ICIgIDxlbXB0eS8+IgogICAg # cmVzIDw8ICIgIDx0ZXh0IG5hbWU9J2hlYWRlcl9uZXcnIHZhbHVlPScnLz4i # CiAgICByZXMgPDwgIjwvcm93PiIKICAgIEBoZWFkZXJzLmVhY2hfaW5kZXgg # ZG8gfG58CiAgICAgIHJlcyA8PCAiPHJvdz4iCiAgICAgIHJlcyA8PCAiICA8 # dGV4dCBuYW1lPSdoZWFkZXJfI3tufV9vbGQnIHZhbHVlPScje0BoZWFkZXJz # W25dfScvPiIKICAgICAgcmVzIDw8ICIgIDx0ZXh0IG5hbWU9J2hlYWRlcl8j # e259X25ldycgdmFsdWU9JycvPiIKICAgICAgcmVzIDw8ICI8L3Jvdz4iCiAg # ICBlbmQKICAgIHJlcyA8PCAiPC90YWJsZT4iCgogICAgcmV0dXJuIHJlcy5q # b2luKCJcbiIpCiAgZW5kCmVuZAoKY2xhc3MgT3BlblRhZwogIGRlZiBwcmVj # aGlsZHJlbihyZXMsIGJlZm9yZSwgYWZ0ZXIsIHZhcnNodG1sLCB2YXJzc3Ry # aW5nLCBzd2l0Y2hlcywgaGVscCwgb25lb3Jtb3JlZmllbGRzLCBmaXJzdGFj # dGlvbiwgdGFicywgdGFiLCBwZGEpCiAgICBiZWYJPSBiZWZvcmVbLTFdCiAg # ICByZXMgPDwgRm9ybWF0ICUgWyJCZWZvcmUiLCBAc3VidHlwZV0JaWYgKCRy # d2RfZGVidWcgYW5kIG5vdCBiZWYubmlsPykKICAgIHJlcyA8PCBiZWYJaWYg # bm90IGJlZi5uaWw/CgogICAgcmVzIDw8IEZvcm1hdCAlIFsiUHJlIiwgQHN1 # YnR5cGVdCWlmICRyd2RfZGVidWcKCiAgICBhbGlnbgk9IEFDCiAgICBhbGln # bgk9ICJhbGlnbj0nI3tAYXJnc1siYWxpZ24iXX0nIglpZiBAYXJncy5pbmNs # dWRlPygiYWxpZ24iKQoKICAgIHZhbGlnbgk9IFZBCiAgICB2YWxpZ24JPSAi # dmFsaWduPScje0BhcmdzWyJ2YWxpZ24iXX0nIglpZiBAYXJncy5pbmNsdWRl # PygidmFsaWduIikKCiAgICB2YWx1ZTEJPSAiIgogICAgdmFsdWUxCT0gdmFy # c2h0bWxbQGFyZ3NbIm5hbWUiXV0JaWYgdmFyc2h0bWwuaW5jbHVkZT8oQGFy # Z3NbIm5hbWUiXSkKICAgIHZhbHVlMQk9IEBhcmdzWyJ2YWx1ZSJdCQlpZiBA # YXJncy5pbmNsdWRlPygidmFsdWUiKQoKICAgIHZhbHVlMgk9ICIiCiAgICB2 # YWx1ZTIJPSB2YXJzc3RyaW5nW0BhcmdzWyJuYW1lIl1dCWlmIHZhcnNzdHJp # bmcuaW5jbHVkZT8oQGFyZ3NbIm5hbWUiXSkKICAgIHZhbHVlMgk9IEBhcmdz # WyJ2YWx1ZSJdCQlpZiBAYXJncy5pbmNsdWRlPygidmFsdWUiKQoKICAgIGNl # bGxzcGFjaW5nCT0gMwogICAgY2VsbHNwYWNpbmcJPSAwCWlmIHBkYQoKICAg # IGNhc2UgQHN1YnR5cGUKICAgIHdoZW4gImFwcGxpY2F0aW9uIgogICAgd2hl # biAid2luZG93IiwgImhlbHB3aW5kb3ciCiAgICAgIGFyZ3MJPSBAYXJncy5k # ZWVwX2R1cAoKICAgICAgYXJnc1sibm9oZWxwYnV0dG9uIl0JPSAobm90IGhl # bHApCgogICAgICB0ZW1wbGF0ZQk9ICRyd2RfaHRtbF8xCiAgICAgIHRlbXBs # YXRlCT0gJHJ3ZF9odG1sX1BEQV8xCWlmIHBkYQoKICAgICAgcmVzIDw8ICh0 # ZW1wbGF0ZSh0ZW1wbGF0ZSwgYXJncykpCiAgICB3aGVuICJwIgkJdGhlbiBy # ZXMgPDwgIjxwICN7YWxpZ259PiIKICAgIHdoZW4gInByZSIJCXRoZW4gcmVz # IDw8ICI8cHJlICN7YWxpZ259PiIKICAgIHdoZW4gImJpZyIJCXRoZW4gcmVz # IDw8ICI8cCAje2FsaWdufT48YmlnPiIKICAgIHdoZW4gInNtYWxsIgl0aGVu # IHJlcyA8PCAiPHAgI3thbGlnbn0+PHNtYWxsPiIKICAgIHdoZW4gImxpc3Qi # CQl0aGVuIHJlcyA8PCAiPHVsICN7YWxpZ259PiIKICAgIHdoZW4gIml0ZW0i # CQl0aGVuIHJlcyA8PCAiPGxpICN7YWxpZ259PiIKICAgIHdoZW4gImVtcHR5 # Igl0aGVuIHJlcyA8PCAiPHA+PGJyPiIKICAgIHdoZW4gImltYWdlIgogICAg # ICB3aWR0aAk9ICJ3aWR0aD0nI3tAYXJnc1sid2lkdGgiXX0iCWlmIEBhcmdz # LmluY2x1ZGU/KCJ3aWR0aCIpCiAgICAgIGhlaWdodAk9ICJoZWlnaHQ9JyN7 # QGFyZ3NbImhlaWdodCJdfSciCWlmIEBhcmdzLmluY2x1ZGU/KCJoZWlnaHQi # KQoKICAgICAgcmVzIDw8ICI8aW1nIHNyYz0nI3tAYXJnc1sic3JjIl19JyBh # bHQ9JyN7QGFyZ3NbImFsdCJdfScgI3t3aWR0aH0gI3toZWlnaHR9PiIKICAg # IHdoZW4gInByb2dyZXNzYmFyIgogICAgICB3aWR0aAk9IDIwMAoKICAgICAg # cmVzIDw8ICI8dGFibGU+IgogICAgICByZXMgPDwgIiAgPHRyPiIKICAgICAg # cmVzIDw8ICIgICAgPHRkIGNvbHNwYW49JzInPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScje3dpZHRoKzV9Jz48L3RkPiIK # ICAgICAgcmVzIDw8ICIgIDwvdHI+IgogICAgICByZXMgPDwgIiAgPHRyPiIK # ICAgICAgcmVzIDw8ICIgICAgPHRkIGJnY29sb3I9JyNEREREREQnPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEwJyB3aWR0aD0nI3sod2lk # dGgqQGFyZ3NbInZhbHVlIl0udG9fZikudG9faX0nPjwvdGQ+IgogICAgICBy # ZXMgPDwgIiAgICA8dGQgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMTAnIHdpZHRoPScjeyh3aWR0aCooMS4w # LUBhcmdzWyJ2YWx1ZSJdLnRvX2YpKS50b19pfSc+PC90ZD4iCiAgICAgIHJl # cyA8PCAiICA8L3RyPiIKICAgICAgcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdo # ZW4gImJyIgkJdGhlbiByZXMgPDwgIjxicj4iCiAgICB3aGVuICJociIJCXRo # ZW4gcmVzIDw8ICI8aHI+IgogICAgd2hlbiAiYiIJCXRoZW4gcmVzIDw8ICI8 # Yj4iCiAgICB3aGVuICJpIgkJdGhlbiByZXMgPDwgIjxpPiIKICAgIHdoZW4g # ImEiCiAgICAgIGlmIEBhcmdzLmluY2x1ZGU/KCJocmVmIikKICAgICAgICBy # ZXMgPDwgIjxhIGhyZWY9JyN7QGFyZ3NbImhyZWYiXX0nIHRhcmdldD0nI3tA # YXJnc1sidGFyZ2V0Il0gb3IgIl9ibGFuayJ9Jz4iCiAgICAgIGVsc2UKICAg # ICAgICByZXMgPDwgIjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9k # eWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cIiN7QGFyZ3NbImFjdGlvbiJdfVwi # O2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+IgogICAgICBlbmQKICAg # IHdoZW4gInZlcnRpY2FsIgl0aGVuIHJlcyA8PCAiPHRhYmxlICN7QUN9IGJv # cmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScje2NlbGxzcGFj # aW5nfScgY2VsbHBhZGRpbmc9JzAnPiIKICAgIHdoZW4gImhvcml6b250YWwi # CXRoZW4gcmVzIDw8ICI8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9y # ZGVyfScgY2VsbHNwYWNpbmc9JyN7Y2VsbHNwYWNpbmd9JyBjZWxscGFkZGlu # Zz0nMCc+PHRyICN7YWxpZ259ICN7dmFsaWdufT4iCiAgICB3aGVuICJ0YWJs # ZSIJdGhlbiByZXMgPDwgIjx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9i # b3JkZXJ9JyBjZWxsc3BhY2luZz0nI3tjZWxsc3BhY2luZ30nIGNlbGxwYWRk # aW5nPScwJz4iCiAgICB3aGVuICJyb3ciCQl0aGVuIHJlcyA8PCAiPHRyICN7 # YWxpZ259ICN7dmFsaWdufT4iCiAgICB3aGVuICJoaWRkZW4iCXRoZW4gcmVz # IDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1sibmFtZSJd # fScgdmFsdWU9JyN7dmFsdWUxfScgdHlwZT0naGlkZGVuJz4iCiAgICB3aGVu # ICJ0ZXh0IgogICAgICBtYXhsZW5ndGgJPSAiIgogICAgICBtYXhsZW5ndGgJ # PSAibWF4bGVuZ3RoPSclcyciICUgQGFyZ3NbIm1heGxlbmd0aCJdCWlmIEBh # cmdzLmluY2x1ZGU/KCJtYXhsZW5ndGgiKQogICAgICBzaXplCT0gIiIKICAg # ICAgc2l6ZQk9ICJzaXplPSclcyciICUgQGFyZ3NbInNpemUiXQkJaWYgQGFy # Z3MuaW5jbHVkZT8oInNpemUiKQogICAgICBzaXplCT0gInNpemU9JyVzJyIg # JSAxMAkJCWlmIHBkYQogICAgICByZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1 # dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyB2YWx1ZT0nI3t2YWx1ZTF9JyB0 # eXBlPSd0ZXh0JyAje21heGxlbmd0aH0gI3tzaXplfT4iCiAgICAgIG9uZW9y # bW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gInRleHRhcmVhIgogICAg # ICByZXMgPDwgIjxwICN7YWxpZ259Pjx0ZXh0YXJlYSBuYW1lPScje0Bhcmdz # WyJuYW1lIl19JyByb3dzPScyNScgY29scz0nODAnPiN7dmFsdWUyLmNybGZ9 # PC90ZXh0YXJlYT4iCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIK # ICAgIHdoZW4gInBhc3N3b3JkIgogICAgICBtYXhsZW5ndGgJPSAiIgogICAg # ICBtYXhsZW5ndGgJPSAibWF4bGVuZ3RoPSclcyciICUgQGFyZ3NbIm1heGxl # bmd0aCJdCWlmIEBhcmdzLmluY2x1ZGU/KCJtYXhsZW5ndGgiKQogICAgICBz # aXplCT0gIiIKICAgICAgc2l6ZQk9ICJzaXplPSclcyciICUgMTAJCQlpZiBw # ZGEKICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tA # YXJnc1sibmFtZSJdfScgdmFsdWU9JyN7dmFsdWUxfScgdHlwZT0ncGFzc3dv # cmQnICN7bWF4bGVuZ3RofSAje3NpemV9PiIKICAgICAgb25lb3Jtb3JlZmll # bGRzCTw8ICJ0cnVlIgogICAgd2hlbiAiY2hlY2tib3giCiAgICAgIGlmIHZh # cnNodG1sW0BhcmdzWyJuYW1lIl1dID09ICJvbiIKICAgICAgICBzd2l0Y2hl # c1tAYXJnc1sibmFtZSJdXQk9IHRydWUKICAgICAgICByZXMgPDwgIjxwICN7 # YWxpZ259PjxpbnB1dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyBjaGVja2Vk # PSdvbicgdHlwZT0nY2hlY2tib3gnPiIKICAgICAgZWxzZQogICAgICAgIHN3 # aXRjaGVzW0BhcmdzWyJuYW1lIl1dCT0gZmFsc2UKICAgICAgICByZXMgPDwg # IjxwICN7YWxpZ259PjxpbnB1dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyB0 # eXBlPSdjaGVja2JveCc+IgogICAgICBlbmQKICAgICAgb25lb3Jtb3JlZmll # bGRzCTw8ICJ0cnVlIgogICAgd2hlbiAicmFkaW8iCiAgICAgIGlmIHZhcnNo # dG1sW0BhcmdzWyJuYW1lIl1dID09IHZhbHVlMQkjID8/PyAxIG9yIDI/CiAg # ICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJn # c1sibmFtZSJdfScgY2hlY2tlZD0nb24nIHZhbHVlPScje3ZhbHVlMX0nIHR5 # cGU9J3JhZGlvJz4iCiAgICAgIGVsc2UKICAgICAgICByZXMgPDwgIjxwICN7 # YWxpZ259PjxpbnB1dCBuYW1lPScje0BhcmdzWyJuYW1lIl19JyB2YWx1ZT0n # I3t2YWx1ZTF9JyB0eXBlPSdyYWRpbyc+IgogICAgICBlbmQKICAgICAgb25l # b3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAic2VsZWN0IgogICAg # IHJlcyA8PCAiPHNlbGVjdCAje2FsaWdufSBuYW1lPScje0BhcmdzWyJuYW1l # Il19JyB3aWR0aD0nI3tAYXJnc1sid2lkdGgiXX0gc2l6ZT0nI3tAYXJnc1si # c2l6ZSJdfSc+IgkjID8/PyBNaXNzY2hpZW4gbm9nIGlldHMgbWV0ICdtdWx0 # aXBsZSc/CiAgICAgIG5hbWUJPSBAYXJnc1sibmFtZSJdCiAgICAgICRzZWxl # Y3QJPSB2YXJzaHRtbFtuYW1lXQogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwg # InRydWUiCiAgICB3aGVuICJvcHRpb24iCiAgICAgIGlmICRzZWxlY3QgPT0g # QGNoaWxkcmVuWzBdLnRleHQKICAgICAgICByZXMgPDwgIjxvcHRpb24gc2Vs # ZWN0ZWQ9J3RydWUnPiIKICAgICAgZWxzZQogICAgICAgIHJlcyA8PCAiPG9w # dGlvbj4iCiAgICAgIGVuZAogICAgd2hlbiAiYnV0dG9uIgogICAgICByZXMg # PDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScje0BhcmdzWyJjYXB0 # aW9uIl19JyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9u # LnZhbHVlPVwiI3tAYXJnc1siYWN0aW9uIl19XCI7Jz4iCiAgICAgIGZpcnN0 # YWN0aW9uCTw8IEBhcmdzWyJhY3Rpb24iXQlpZiAoZmlyc3RhY3Rpb24uZW1w # dHk/IGFuZCBAYXJncy5pbmNsdWRlPygiYWN0aW9uIikpCiAgICAgIG9uZW9y # bW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImJhY2siCiAgICAgIHJl # cyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0JhY2snIG9uY2xp # Y2s9J2RvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2Rf # YmFja1wiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndkX2JhY2siCWlm # IGZpcnN0YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwg # InRydWUiCiAgICB3aGVuICJjYW5jZWwiCiAgICAgIHJlcyA8PCAiPGlucHV0 # IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0NhbmNlbCcgb25jbGljaz0nZG9jdW1l # bnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9jYW5jZWxcIjsn # PiIKICAgICAgZmlyc3RhY3Rpb24JPDwgInJ3ZF9jYW5jZWwiCWlmIGZpcnN0 # YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUi # CiAgICB3aGVuICJoZWxwIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdz # dWJtaXQnIHZhbHVlPSdIZWxwJyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9y # bS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2hlbHBcIjsnPiIKICAgICAgZmly # c3RhY3Rpb24JPDwgInJ3ZF9oZWxwIglpZiBmaXJzdGFjdGlvbi5lbXB0eT8K # ICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAicXVp # dCIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0n # UXVpdCcgb25jbGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52 # YWx1ZT1cInJ3ZF9xdWl0XCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8ICJy # d2RfcXVpdCIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9ybW9y # ZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImNsb3NlIgogICAgICByZXMg # PDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDbG9zZScgb25jbGlj # az0nd2luZG93LmNsb3NlKCk7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8ICJy # d2RfcXVpdCIJaWYgZmlyc3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9ybW9y # ZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gIm1haW4iCiAgICAgIHJlcyA8 # PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J01haW4nIG9uY2xpY2s9 # J2RvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfbWFp # blwiOyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCAicndkX21haW4iCWlmIGZp # cnN0YWN0aW9uLmVtcHR5PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRy # dWUiCiAgICB3aGVuICJyZXNldCIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlw # ZT0ncmVzZXQnICB2YWx1ZT0nUmVzZXQnPiIKICAgICAgZmlyc3RhY3Rpb24J # PDwgInJ3ZF9xdWl0IglpZiBmaXJzdGFjdGlvbi5lbXB0eT8JIyA/Pz8KICAg # ICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAiY2xvc2V3 # aW5kb3ciCiAgICAgICNyZXMgPDwgIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZh # c2NyaXB0Jz5cbiIJIyA/Pz8KICAgICAgI3JlcyA8PCAiPCEtLVxuIgogICAg # ICAjcmVzIDw8ICIgIHdpbmRvdy5jbG9zZSgpO1xuIgogICAgICAjcmVzIDw8 # ICIvLy0tPlxuIgogICAgICAjcmVzIDw8ICI8L3NjcmlwdD4iCiAgICB3aGVu # ICJ0YWJzIgogICAgICByZXMgPDwgIjx0YWJsZSAje0FDfSBib3JkZXI9JyN7 # JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAn # PiIKICAgICAgcmVzIDw8ICIgIDx0ciAje0FMfT4iCiAgICAgIHJlcyA8PCAi # ICAgIDx0ZCAje0FMfSBjbGFzcz0ndGFicyc+IgogICAgICByZXMgPDwgIiAg # ICAgIDx0YWJsZSAje0FMfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPiIKICAgICAgcmVzIDw8ICIg # ICAgICAgIDx0ciAje0FMfT4iCiAgICAgICNyZXMgPDwgIiAgICAgICAgICA8 # dGQgY2xhc3M9J25vdGFiJz4mbmJzcDs8L3RkPiIKICAgICAgdGFicy5lYWNo # IGRvIHxvYmp8CiAgICAgICAgbmFtZQk9IG9iai5hcmdzWyJuYW1lIl0KICAg # ICAgICBjYXB0aW9uCT0gb2JqLmFyZ3NbImNhcHRpb24iXQoKICAgICAgICBy # ZXMgPDwgIjx0ZCAje0FMfSBjbGFzcz0nbm90YWInPiZuYnNwOzwvdGQ+Igl1 # bmxlc3Mgb2JqID09IHRhYnNbMF0KCiAgICAgICAgaWYgbmFtZSA9PSB0YWIK # ICAgICAgICAgIHJlcyA8PCAiPHRkICN7QUN9IGNsYXNzPSdhY3RpdmV0YWIn # Pjx0dD4mbmJzcDsje2NhcHRpb259Jm5ic3A7PC90dD48L3RkPiIKICAgICAg # ICBlbHNlCiAgICAgICAgICByZXMgPDwgIjx0ZCAje0FDfSBjbGFzcz0ncGFz # c2l2ZXRhYic+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9y # bS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX3RhYl8je25hbWV9XCI7ZG9jdW1l # bnQuYm9keWZvcm0uc3VibWl0KCk7Jz48dHQ+Jm5ic3A7I3tjYXB0aW9ufSZu # YnNwOzwvdHQ+PC9hPjwvdGQ+IgogICAgICAgIGVuZAogICAgICBlbmQKICAg # ICAgcmVzIDw8ICIgICAgICAgICAgPHRkIGNsYXNzPSdub3RhYicgd2lkdGg9 # JzEwMCUnPiZuYnNwOzwvdGQ+IgogICAgICByZXMgPDwgIiAgICAgICAgPC90 # cj4iCiAgICAgIHJlcyA8PCAiICAgICAgPC90YWJsZT4iCiAgICAgIHJlcyA8 # PCAiICAgIDwvdGQ+IgogICAgICByZXMgPDwgIiAgPC90cj4iCiAgICAgIHJl # cyA8PCAiICA8dHIgI3thbGlnbn0+IgogICAgICByZXMgPDwgIiAgICA8dGQg # I3thbGlnbn0gY2xhc3M9J3RhYmJsYWQnPiIKICAgIHdoZW4gInRhYiIKICAg # ICAgcmVzIDw8ICI8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVy # fScgY2VsbHNwYWNpbmc9JzMnIGNlbGxwYWRkaW5nPScwJz4iCiAgICB3aGVu # ICJwYW5lbCIKICAgICAgbGV2ZWwJPSAoQGFyZ3NbImxldmVsIl0gb3IgIm5v # cm1hbCIpCiAgICAgIHJlcyA8PCAiPHRhYmxlICN7QUN9IGJvcmRlcj0nI3sk # cndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+ # IgogICAgICByZXMgPDwgIiAgPHRyICN7YWxpZ259PiIKICAgICAgcmVzIDw8 # ICIgICAgPHRkICN7YWxpZ259IGNsYXNzPSdwYW5lbDEnPiIJCWlmIGxldmVs # ID09ICJub3JtYWwiCiAgICAgIHJlcyA8PCAiICAgIDx0ZCAje2FsaWdufSBj # bGFzcz0ncGFuZWwxaGlnaCc+IglpZiBsZXZlbCA9PSAiaGlnaCIKICAgICAg # cmVzIDw8ICIgICAgPHRkICN7YWxpZ259IGNsYXNzPSdwYW5lbDFsb3cnPiIJ # aWYgbGV2ZWwgPT0gImxvdyIKICAgICAgcmVzIDw8ICIgICAgICA8dGFibGUg # I3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPScwJz4iCiAgICAgIHJlcyA8PCAiICAgICAgICA8dHIg # I3thbGlnbn0+IgogICAgICByZXMgPDwgIiAgICAgICAgICA8dGQgI3thbGln # bn0gY2xhc3M9J3BhbmVsMic+IgkJaWYgbGV2ZWwgPT0gIm5vcm1hbCIKICAg # ICAgcmVzIDw8ICIgICAgICAgICAgPHRkICN7YWxpZ259IGNsYXNzPSdwYW5l # bDJoaWdoJz4iCWlmIGxldmVsID09ICJoaWdoIgogICAgICByZXMgPDwgIiAg # ICAgICAgICA8dGQgI3thbGlnbn0gY2xhc3M9J3BhbmVsMmxvdyc+IglpZiBs # ZXZlbCA9PSAibG93IgogICAgICByZXMgPDwgIiAgICAgICAgICAgIDx0YWJs # ZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0n # MycgY2VsbHBhZGRpbmc9JzAnPiIKICAgIGVsc2UKICAgICAgcHV0cyAiPCN7 # QHN1YnR5cGV9PiIKICAgICAgcmVzIDw8ICImbHQ7I3tAc3VidHlwZX0mZ3Q7 # IgogICAgZW5kCgogICAgYmVmCT0gbmlsCiAgICBhZnQJPSBuaWwKCiAgICBj # YXNlIEBzdWJ0eXBlCiAgICB3aGVuICJ2ZXJ0aWNhbCIsICJ3aW5kb3ciLCAi # aGVscHdpbmRvdyIsICJ0YWIiLCAicGFuZWwiCiAgICAgIHJlcyA8PCBGb3Jt # YXQgJSBbIkFmdFByZSIsIEBzdWJ0eXBlXQlpZiAkcndkX2RlYnVnCiAgICAg # IGlmIEBhcmdzLmluY2x1ZGU/KCJzcGFjaW5nIikKICAgICAgICBzCT0gIjx0 # cj48dGQ+Jm5ic3A7PC90ZD48L3RyPiIgKiAoQGFyZ3NbInNwYWNpbmciXS50 # b19pKQogICAgICBlbHNlCiAgICAgICAgcwk9ICIiCiAgICAgIGVuZAogICAg # ICBiZWYJPSAiI3tzfTx0ciAje2FsaWdufSAje3ZhbGlnbn0+PHRkICN7YWxp # Z259PiIKICAgICAgYWZ0CT0gIjwvdGQ+PC90cj4iCiAgICB3aGVuICJob3Jp # em9udGFsIiwgInJvdyIKICAgICAgcmVzIDw8IEZvcm1hdCAlIFsiQWZ0UHJl # IiwgQHN1YnR5cGVdCWlmICRyd2RfZGVidWcKICAgICAgYmVmCT0gIjx0ZCAj # e2FsaWdufT4iCiAgICAgIGFmdAk9ICI8L3RkPiIKICAgIGVuZAoKICAgIGJl # Zm9yZS5wdXNoKGJlZikKICAgIGFmdGVyLnB1c2goYWZ0KQogIGVuZAoKICBk # ZWYgcG9zdGNoaWxkcmVuKHJlcywgYmVmb3JlLCBhZnRlciwgdmFyc2h0bWws # IHZhcnNzdHJpbmcsIHN3aXRjaGVzLCBoZWxwLCBvbmVvcm1vcmVmaWVsZHMs # IGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBkYSkKICAgIGNhc2UgQHN1YnR5 # cGUKICAgIHdoZW4gInZlcnRpY2FsIiwgIndpbmRvdyIsICJoZWxwd2luZG93 # IiwgInRhYiIsICJwYW5lbCIKICAgICAgcmVzIDw8IEZvcm1hdCAlIFsiQmVm # UG9zdCIsIEBzdWJ0eXBlXQlpZiAkcndkX2RlYnVnCiAgICAgIGlmIEBhcmdz # LmluY2x1ZGU/KCJzcGFjaW5nIikKICAgICAgICByZXMgPDwgIjx0cj48dGQ+ # Jm5ic3A7PC90ZD48L3RyPiIgKiAoQGFyZ3NbInNwYWNpbmciXS50b19pKQog # ICAgICBlbmQKICAgIHdoZW4gImhvcml6b250YWwiLCAicm93IgogICAgICBy # ZXMgPDwgRm9ybWF0ICUgWyJCZWZQb3N0IiwgQHN1YnR5cGVdCWlmICRyd2Rf # ZGVidWcKICAgIGVuZAoKICAgIHJlcyA8PCBGb3JtYXQgJSBbIlBvc3QiLCBA # c3VidHlwZV0JCWlmICRyd2RfZGVidWcKCiAgICBjYXNlIEBzdWJ0eXBlCiAg # ICB3aGVuICJhcHBsaWNhdGlvbiIKICAgIHdoZW4gIndpbmRvdyIsICJoZWxw # d2luZG93IgogICAgICBhcmdzCT0gQGFyZ3MuZGVlcF9kdXAKCiAgICAgIGFy # Z3NbIm5vaGVscGJ1dHRvbiJdCT0gKG5vdCBoZWxwKQoKICAgICAgdGVtcGxh # dGUJPSAkcndkX2h0bWxfMgogICAgICB0ZW1wbGF0ZQk9ICRyd2RfaHRtbF9Q # REFfMglpZiBwZGEKCiAgICAgIHJlcyA8PCAodGVtcGxhdGUodGVtcGxhdGUs # IGFyZ3MpKQogICAgd2hlbiAicCIJCXRoZW4gcmVzIDw8ICI8L3A+IgogICAg # d2hlbiAicHJlIgkJdGhlbiByZXMgPDwgIjwvcHJlPiIKICAgIHdoZW4gImJp # ZyIJCXRoZW4gcmVzIDw8ICI8L2JpZz48L3A+IgogICAgd2hlbiAic21hbGwi # CXRoZW4gcmVzIDw8ICI8L3NtYWxsPjwvcD4iCiAgICB3aGVuICJsaXN0IgkJ # dGhlbiByZXMgPDwgIjwvdWw+IgogICAgd2hlbiAiaXRlbSIJCXRoZW4gcmVz # IDw8ICI8L2xpPiIKICAgIHdoZW4gImVtcHR5Igl0aGVuIHJlcyA8PCAiPC9w # PiIKICAgIHdoZW4gImltYWdlIgl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAi # cHJvZ3Jlc3NiYXIiCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJiciIJCXRo # ZW4gcmVzIDw8ICIiCiAgICB3aGVuICJociIJCXRoZW4gcmVzIDw8ICIiCiAg # ICB3aGVuICJiIgkJdGhlbiByZXMgPDwgIjwvYj4iCiAgICB3aGVuICJpIgkJ # dGhlbiByZXMgPDwgIjwvaT4iCiAgICB3aGVuICJhIgkJdGhlbiByZXMgPDwg # IjwvYT4iCiAgICB3aGVuICJ2ZXJ0aWNhbCIJdGhlbiByZXMgPDwgIjwvdGFi # bGU+IgogICAgd2hlbiAiaG9yaXpvbnRhbCIJdGhlbiByZXMgPDwgIjwvdHI+ # PC90YWJsZT4iCiAgICB3aGVuICJ0YWJsZSIJdGhlbiByZXMgPDwgIjwvdGFi # bGU+IgogICAgd2hlbiAicm93IgkJdGhlbiByZXMgPDwgIjwvdHI+IgogICAg # d2hlbiAiaGlkZGVuIgl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInRl # eHQiCQl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInRleHRhcmVhIgl0 # aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInBhc3N3b3JkIgl0aGVuIHJl # cyA8PCAiPC9wPiIKICAgIHdoZW4gImNoZWNrYm94Igl0aGVuIHJlcyA8PCAi # PC9wPiIKICAgIHdoZW4gInJhZGlvIgl0aGVuIHJlcyA8PCAiPC9wPiIKICAg # IHdoZW4gInNlbGVjdCIKICAgICAgcmVzIDw8ICI8L3NlbGVjdD4iCiAgICAg # ICRzZWxlY3QJPSBuaWwKICAgIHdoZW4gIm9wdGlvbiIJdGhlbiByZXMgPDwg # Ijwvb3B0aW9uPiIKICAgIHdoZW4gImJ1dHRvbiIJdGhlbiByZXMgPDwgIiIK # ICAgIHdoZW4gImJhY2siCQl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiY2Fu # Y2VsIgl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiaGVscCIJCXRoZW4gcmVz # IDw8ICIiCiAgICB3aGVuICJxdWl0IgkJdGhlbiByZXMgPDwgIiIKICAgIHdo # ZW4gImNsb3NlIgl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAibWFpbiIJCXRo # ZW4gcmVzIDw8ICIiCiAgICB3aGVuICJyZXNldCIJdGhlbiByZXMgPDwgIiIK # ICAgIHdoZW4gImNsb3Nld2luZG93Igl0aGVuIHJlcyA8PCAiIgogICAgd2hl # biAidGFicyIKICAgICAgcmVzIDw8ICIgICAgPC90ZD4iCiAgICAgIHJlcyA8 # PCAiICA8L3RyPiIKICAgICAgcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdoZW4g # InRhYiIKICAgICAgcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdoZW4gInBhbmVs # IgogICAgICByZXMgPDwgIiAgICAgICAgICAgIDwvdGFibGU+IgogICAgICBy # ZXMgPDwgIiAgICAgICAgICA8L3RkPiIKICAgICAgcmVzIDw8ICIgICAgICAg # IDwvdHI+IgogICAgICByZXMgPDwgIiAgICAgIDwvdGFibGU+IgogICAgICBy # ZXMgPDwgIiAgICA8L3RkPiIKICAgICAgcmVzIDw8ICIgIDwvdHI+IgogICAg # ICByZXMgPDwgIjwvdGFibGU+IgogICAgZWxzZQogICAgICBwdXRzICI8LyN7 # QHN1YnR5cGV9PiIKICAgICAgcmVzIDw8ICImbHQ7LyN7QHN1YnR5cGV9Jmd0 # OyIKICAgIGVuZAoKICAgIGJlZm9yZS5wb3AKICAgIGFmdGVyLnBvcAoKICAg # IGFmdAk9IGFmdGVyWy0xXQogICAgcmVzIDw8IEZvcm1hdCAlIFsiQWZ0ZXIi # LCBAc3VidHlwZV0JCWlmICgkcndkX2RlYnVnIGFuZCBub3QgYWZ0Lm5pbD8p # CiAgICByZXMgPDwgYWZ0CWlmIG5vdCBhZnQubmlsPwogIGVuZAoKICBkZWYg # dGVtcGxhdGUoaHRtbCwgdmFycykKICAgIHJlcwk9IFtdCgogICAgYQk9IHt9 # CgogICAgdmFycy5lYWNoIGRvIHxrLCB2fAogICAgICBhW2sudXBjYXNlXQk9 # IHYKICAgIGVuZAoKICAgIGxvZ28JPSBuaWwKICAgIGxvZ28JPSBGaWxlLmV4 # cGFuZF9wYXRoKHZhcnNbImxvZ28iXSwgJHJ3ZF9maWxlcykJCWlmIHZhcnMu # aW5jbHVkZT8oImxvZ28iKQogICAgbG9nbwk9IG5pbAkJCQkJCQl1bmxlc3Mg # bG9nby5uaWw/IG9yIEZpbGUuZmlsZT8obG9nbykKCiAgICB3YXRlcm1hcmsJ # PSBuaWwKICAgIHdhdGVybWFyawk9IEZpbGUuZXhwYW5kX3BhdGgodmFyc1si # d2F0ZXJtYXJrIl0sICRyd2RfZmlsZXMpCWlmIHZhcnMuaW5jbHVkZT8oIndh # dGVybWFyayIpCiAgICB3YXRlcm1hcmsJPSBuaWwJCQkJCQkJdW5sZXNzIHdh # dGVybWFyay5uaWw/IG9yIEZpbGUuZmlsZT8od2F0ZXJtYXJrKQoKICAgIGFb # IkxPR08iXQkJPSAiIgl1bmxlc3Mgbm90IGxvZ28ubmlsPwogICAgYVsiV0FU # RVJNQVJLIl0JPSAiIgl1bmxlc3Mgbm90IHdhdGVybWFyay5uaWw/CgogICAg # YVsiSEVMUEJVVFRPTiJdCT0gKG5vdCAodmFyc1sibm9oZWxwYnV0dG9uIl0p # KQogICAgYVsiQkFDS0JVVFRPTlMiXQk9IChub3QgKHZhcnNbIm5vYmFja2J1 # dHRvbnMiXSkpCiAgICBhWyJCQUNLQlVUVE9OUyJdCT0gKG5vdCAodmFyc1si # bm9iYWNrYnV0dG9ucyJdKSkKICAgIGFbIkNMT1NFQlVUVE9OIl0JPSAobm90 # ICh2YXJzWyJub2Nsb3NlYnV0dG9uIl0pKQoKICAgIGlmIGEuaW5jbHVkZT8o # IldJRFRIIikKICAgICAgYVsiV0lEVEgxIl0JPSAid2lkdGg9JyN7YVsiV0lE # VEgiXX0nIgogICAgICBhWyJXSURUSDIiXQk9IGFbIldJRFRIIl0KICAgIGVs # c2UKICAgICAgYVsiV0lEVEgxIl0JPSAiICIKICAgICAgYVsiV0lEVEgyIl0J # PSAiMSIKICAgIGVuZAoKICAgIGh0bWwuc3BsaXQoL1xyKlxuLykuZWFjaCBk # byB8bGluZXwKICAgICAgaWYgbGluZSA9fiAvJVtBLVowLTldKyUvCiAgICAg # ICAgYS5lYWNoIGRvIHxrLCB2fAogICAgICAgICAgdgk9IGZhbHNlCWlmICh2 # LmtpbmRfb2Y/KFN0cmluZykgYW5kIHYuZW1wdHk/KQoKICAgICAgICAgIGlm # IGxpbmUuaW5jbHVkZT8oIiUje2t9JSIpCiAgICAgICAgICAgIGxpbmUuZ3N1 # YiEoIiUje2t9JSIsICIje3Z9IikJaWYgdgogICAgICAgICAgZW5kCiAgICAg # ICAgZW5kCgogICAgICAgIGxpbmUJPSAiPCEtLSAje2xpbmUuc2NhbigvJVtB # LVowLTldKyUvKS5qb2luKCIgIil9IC0tPiIJaWYgbGluZSA9fiAvJVtBLVow # LTldKyUvCiAgICAgIGVuZAoKICAgICAgcmVzIDw8IGxpbmUKICAgIGVuZAoK # ICAgIHJlcy5qb2luKCJcbiIpCiAgZW5kCmVuZAoKY2xhc3MgVGV4dAogIGRl # ZiBwcmVjaGlsZHJlbihyZXMsIGJlZm9yZSwgYWZ0ZXIsIHZhcnNodG1sLCB2 # YXJzc3RyaW5nLCBzd2l0Y2hlcywgaGVscCwgb25lb3Jtb3JlZmllbGRzLCBm # aXJzdGFjdGlvbiwgdGFicywgdGFiLCBwZGEpCiAgICBpZiBub3QgQHRleHQu # c2NhbigvW14gXHRcclxuXS8pLmVtcHR5PwogICAgICByZXMgPDwgRm9ybWF0 # ICUgWyJUZXh0IiwgIiJdCWlmICRyd2RfZGVidWcKICAgICAgcmVzIDw8ICIj # e0B0ZXh0fSIKICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIFJXRFRyZWUgPCBY # TUwKZW5kCgpjbGFzcyBSV0RXaW5kb3cKICBAQHdpbmRvd3MJPSB7fQkjIEtp # bmQgb2YgY2FjaGluZy4KICBAQGhlbHB3aW5kb3dzCT0ge30JIyBLaW5kIG9m # IGNhY2hpbmcuCgogIGRlZiBpbml0aWFsaXplKHJ3ZCwgd2luZG93PW5pbCkK # ICAgIHJ3ZAk9IHJ3ZC5qb2luKCJcbiIpCWlmIHJ3ZC5raW5kX29mPyhBcnJh # eSkKCiAgICBpZiBAQHdpbmRvd3NbcndkXS5uaWw/CiAgICAgIEBAd2luZG93 # c1tyd2RdCQk9IHt9CiAgICAgIEBAaGVscHdpbmRvd3NbcndkXQk9IHt9Cgog # ICAgICB0cmVlCT0gWE1MLm5ldyhyd2QpCgogICAgICB0cmVlLnBhcnNlKE9w # ZW5UYWcsICJ3aW5kb3ciKSBkbyB8dHlwZSwgb2JqfAogICAgICAgICRyd2Rf # YXBwdmFycy5lYWNoe3xrLCB2fCBvYmouYXJnc1trXSA9IHZ9CiAgICAgICAg # QEB3aW5kb3dzW3J3ZF1bb2JqLmFyZ3NbIm5hbWUiXV0JPSBvYmoudG9faAog # ICAgICBlbmQKCiAgICAgIHRyZWUucGFyc2UoT3BlblRhZywgImhlbHB3aW5k # b3ciKSBkbyB8dHlwZSwgb2JqfAogICAgICAgICRyd2RfYXBwdmFycy5lYWNo # e3xrLCB2fCBvYmouYXJnc1trXSA9IHZ9CiAgICAgICAgQEBoZWxwd2luZG93 # c1tyd2RdW29iai5hcmdzWyJuYW1lIl1dCT0gb2JqLnRvX2gKICAgICAgZW5k # CiAgICBlbmQKCiAgICBAcndkCT0gKEBAd2luZG93c1tyd2RdW3dpbmRvd10g # b3IgIiIpLmR1cAogICAgQGhlbHByd2QJPSAoQEBoZWxwd2luZG93c1tyd2Rd # W3dpbmRvd10gb3IgIiIpLmR1cAogIGVuZAoKICBkZWYgcmVuZGVyKHBkYSwg # YWN0aW9uPW5pbCwgdmFycz1IYXNoLm5ldywgc3dpdGNoZXM9SGFzaC5uZXcs # IGhlbHA9ZmFsc2UsIHRhYj0iIikKICAgIHZhcnNodG1sCQk9IEhhc2gubmV3 # CiAgICB2YXJzc3RyaW5nCQk9IEhhc2gubmV3CiAgICBvbmVvcm1vcmVmaWVs # ZHMJPSAiIgogICAgZmlyc3RhY3Rpb24JCT0gIiIKICAgIGh0bWwJCT0gW10K # CiAgICB2YXJzCT0gdmFycy5kZWVwX2R1cAoKICAgIHZhcnMuZWFjaCBkbyB8 # a2V5LCB2YWx1ZXwKICAgICAgaWYgbm90IGtleS5lbXB0eT8KICAgICAgICBp # ZiB2YWx1ZS5yZXNwb25kX3RvPyAidG9fcyIKICAgICAgICAgIEByd2QuZ3N1 # YiEoLyUlI3trZXl9JSUvLCB2YWx1ZS50b19zKQogICAgICAgICAgQHJ3ZC5n # c3ViISgvJSN7a2V5fSUvLCB2YWx1ZS50b19zLnRvX2h0bWwpCgogICAgICAg # ICAgQGhlbHByd2QuZ3N1YiEoLyUlI3trZXl9JSUvLCB2YWx1ZS50b19zKQog # ICAgICAgICAgQGhlbHByd2QuZ3N1YiEoLyUje2tleX0lLywgdmFsdWUudG9f # cy50b19odG1sKQoKICAgICAgICAgIHZhcnNodG1sW2tleV0JCT0gdmFsdWUu # dG9fcy50b19odG1sCiAgICAgICAgICB2YXJzc3RyaW5nW2tleV0JPSB2YWx1 # ZS50b19zCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAgd2lu # ZG93b2JqZWN0CT0gUldEVHJlZS5uZXcoQHJ3ZCkuY2hpbGRyZW4uZHVwLmRl # bGV0ZV9pZnt8b2JqfCBvYmouc3VidHlwZSAhPSAid2luZG93In1bMF0KICAg # IGhlbHBvYmplY3QJCT0gUldEVHJlZS5uZXcoQGhlbHByd2QpLmNoaWxkcmVu # LmR1cC5kZWxldGVfaWZ7fG9ianwgb2JqLnN1YnR5cGUgIT0gImhlbHB3aW5k # b3cifVswXQoKICAgIHRhYnNvYmoJPSB3aW5kb3dvYmplY3QuY2hpbGRyZW4u # ZHVwLmRlbGV0ZV9pZnt8b2JqfCBvYmouc3VidHlwZSAhPSAidGFicyJ9WzBd # CgogICAgaWYgbm90IHRhYnNvYmoubmlsPwogICAgICB0YWJzCT0gdGFic29i # ai5jaGlsZHJlbi5kdXAuZGVsZXRlX2lme3xvYmp8IChub3Qgb2JqLmtpbmRf # b2Y/KE9wZW5UYWcpKSBvciAob2JqLnN1YnR5cGUgIT0gInRhYiIpfQoKICAg # ICAgaWYgdGFiLmVtcHR5PwogICAgICAgIHRhYgkJCT0gdGFic1swXS5hcmdz # WyJuYW1lIl0KICAgICAgZW5kCgogICAgICB0YWJzb2JqLmNoaWxkcmVuLmRl # bGV0ZV9pZnt8b2JqfCAob2JqLmtpbmRfb2Y/KE9wZW5UYWcpKSBhbmQgKG9i # ai5zdWJ0eXBlID09ICJ0YWIiKSBhbmQgb2JqLmFyZ3NbIm5hbWUiXSAhPSB0 # YWJ9CiAgICBlbmQKCiAgICBpZiBoZWxwCiAgICAgIGhlbHBvYmplY3QucGFy # c2V0cmVlKCJwcmVjaGlsZHJlbiIsICJwb3N0Y2hpbGRyZW4iLCBodG1sLCBb # IiJdLCBbIiJdLCB2YXJzaHRtbCwgdmFyc3N0cmluZywgc3dpdGNoZXMsIGZh # bHNlLCBvbmVvcm1vcmVmaWVsZHMsIGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIs # IHBkYSkKICAgIGVsc2UKICAgICAgd2luZG93b2JqZWN0LnBhcnNldHJlZSgi # cHJlY2hpbGRyZW4iLCAicG9zdGNoaWxkcmVuIiwgaHRtbCwgWyIiXSwgWyIi # XSwgdmFyc2h0bWwsIHZhcnNzdHJpbmcsIHN3aXRjaGVzLCAobm90IEBoZWxw # cndkLmVtcHR5PyksIG9uZW9ybW9yZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRh # YnMsIHRhYiwgcGRhKQogICAgZW5kCgogICAgaHRtbAk9IGh0bWwuam9pbigi # IikJIyA/Pz8KCiAgICBodG1sLmdzdWIhKC8lJSpbWzphbG51bTpdX1wtXSsl # JSovLCAiIikJaWYgbm90ICRyd2RfZGVidWcKICAgIGh0bWwuZ3N1YiEoLyUl # LywgIiUiKQogICAgaHRtbC5nc3ViISgvXG5cbiovLCAiXG4iKQoKICAgIGlm # IG9uZW9ybW9yZWZpZWxkcy5lbXB0eT8KICAgICAgZm9jdXMJPSAiIgogICAg # ZWxzZQogICAgICBmb2N1cwk9ICJkb2N1bWVudC5ib2R5Zm9ybS5lbGVtZW50 # c1swXS5mb2N1cygpOyIKICAgIGVuZAoKICAgIGZpcnN0YWN0aW9uCT0gYWN0 # aW9uCWlmIHdpbmRvd29iamVjdC5hcmdzLmtleXMuaW5jbHVkZT8oInJlZnJl # c2giKQl1bmxlc3MgYWN0aW9uLm5pbD8KCiAgICBodG1sLmdzdWIhKC9cJFJX # RF9GSVJTVEFDVElPTlwkLwksIGZpcnN0YWN0aW9uKQogICAgaHRtbC5nc3Vi # ISgvXCRSV0RfRk9DVVNcJC8JCSwgZm9jdXMpCgogICAgaHRtbAogIGVuZApl # bmQKCmNsYXNzIFJXRE1lc3NhZ2UgPCBSV0RXaW5kb3cKICBkZWYgaW5pdGlh # bGl6ZShtc2cpCiAgICBzdXBlcigiPHdpbmRvdyB0aXRsZT0nUldEIE1lc3Nh # Z2UnIG5vYmFja2J1dHRvbnMgbm9jbG9zZWJ1dHRvbj48cD4je21zZ308L3A+ # PGJhY2svPjwvd2luZG93PiIpCiAgZW5kCmVuZAoKY2xhc3MgUldERXJyb3Ig # PCBSV0RXaW5kb3cKICBkZWYgaW5pdGlhbGl6ZShtc2cpCiAgICBzdXBlcigi # PHdpbmRvdyB0aXRsZT0nUldEIEVycm9yJyBub2JhY2tidXR0b25zIG5vY2xv # c2VidXR0b24+PHA+PGI+RXJyb3I6PC9iPiAje21zZ308L3A+PGJhY2svPjwv # d2luZG93PiIpCiAgZW5kCmVuZAoKY2xhc3MgUldEUHJvZ3Jlc3NCYXIgPCBS # V0RXaW5kb3cKICBkZWYgaW5pdGlhbGl6ZShyZWZyZXNoLCBwcm9ncmVzcykK # ICAgIHMJPSAiIgogICAgcyA8PCAiPHdpbmRvdyB0aXRsZT0nUldEIFByb2dy # ZXNzJyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0b24gcmVmcmVzaD0nI3ty # ZWZyZXNofSc+IgogICAgaWYgcHJvZ3Jlc3MubGVuZ3RoID09IDEKICAgICAg # cHJvZ3Jlc3MuZWFjaCBkbyB8Y2FwdGlvbiwgdmFsdWV8CiAgICAgICAgcyA8 # PCAiPHA+I3tjYXB0aW9ufTwvcD48cHJvZ3Jlc3NiYXIgdmFsdWU9JyN7dmFs # dWV9Jy8+PHA+I3soMTAwKnZhbHVlKS50b19pfSUlPC9wPiIKICAgICAgZW5k # CiAgICBlbHNlCiAgICAgIHMgPDwgIjx0YWJsZT4iCiAgICAgIHByb2dyZXNz # LmVhY2ggZG8gfGNhcHRpb24sIHZhbHVlfAogICAgICAgIHMgPDwgIjxyb3c+ # PHAgYWxpZ249J2xlZnQnPiN7Y2FwdGlvbn08L3A+PHByb2dyZXNzYmFyIHZh # bHVlPScje3ZhbHVlfScvPjxwIGFsaWduPSdyaWdodCc+I3soMTAwKnZhbHVl # KS50b19pfSUlPC9wPjwvcm93PiIKICAgICAgZW5kCiAgICAgIHMgPDwgIjwv # dGFibGU+IgogICAgZW5kCiAgICBzIDw8ICI8Y2FuY2VsLz4iCiAgICBzIDw8 # ICI8L3dpbmRvdz4iCiAgICBzdXBlcihzKQogIGVuZAplbmQKCmNsYXNzIFJX # RERvbmUgPCBSV0RXaW5kb3cKICBkZWYgaW5pdGlhbGl6ZShleGl0YnJvd3Nl # cikKICAgIHN1cGVyKCI8d2luZG93IHRpdGxlPSdSV0QgTWVzc2FnZScgbm9i # YWNrYnV0dG9ucyBub2Nsb3NlYnV0dG9uPjxwPkRvbmUuPC9wPjxpPihTb21l # IGJyb3dzZXJzIGRvbid0IGNsb3NlLDxicj5iZWNhdXNlIG9mIHNlY3VyaXR5 # IHJlYXNvbnMuKTwvaT48aG9yaXpvbnRhbD48Y2xvc2UvPiN7ZXhpdGJyb3dz # ZXIgPyAiIiA6ICI8YnV0dG9uIGNhcHRpb249J0FnYWluJy8+In08L2hvcml6 # b250YWw+I3tleGl0YnJvd3NlciA/ICI8Y2xvc2V3aW5kb3cvPiIgOiAiIn08 # L3dpbmRvdz4iKQogIGVuZAplbmQKCmNsYXNzIFJXRGlhbG9nCiAgZGVmIGlu # aXRpYWxpemUoeG1sKQogICAgQHJ3ZF94bWwJCQk9IHhtbAogICAgQHJ3ZF9l # eGl0YnJvd3NlcgkJPSBmYWxzZQogICAgQHJ3ZF9oaXN0b3J5CQk9IFtdCiAg # ICBAcndkX2lnbm9yZV92YXJzCQk9IFtdCiAgICBAcndkX2NhbGxfYWZ0ZXJf # YmFjawk9IFtdCiAgICBAcndkX3RpbWUJCQk9IFRpbWUubm93CgogICAgJHJ3 # ZF9hcHB2YXJzCT0ge30JaWYgJHJ3ZF9hcHB2YXJzLm5pbD8KICAgIFhNTC5u # ZXcoeG1sKS5wYXJzZShPcGVuVGFnLCAiYXBwbGljYXRpb24iKSBkbyB8dHlw # ZSwgb2JqfAogICAgICBvYmouYXJncy5kZWVwX2R1cC5lYWNoIGRvIHxrLCB2 # fAogICAgICAgICRyd2RfYXBwdmFyc1trXQk9IHYKICAgICAgZW5kCiAgICBl # bmQKICBlbmQKCiAgZGVmIHNlbGYuZmlsZShyd2RmaWxlLCAqYXJncykKICAg # IG5ldyhGaWxlLm5ldyhyd2RmaWxlKS5yZWFkbGluZXMsICphcmdzKQogIGVu # ZAoKICBkZWYgc2VydmUocG9ydD1uaWwsIGF1dGg9bmlsLCByZWFsbT1zZWxm # LmNsYXNzLnRvX3MpCiAgICBleGl0CWlmICRyd2RfZXhpdAoKICAgIHJhaXNl # ICJSV0QgaXMgbm90IGluaXRpYWxpemVkLiIJaWYgQHJ3ZF94bWwubmlsPwoK # ICAgIGxvdywgaGlnaAk9IEVOVlsiUldEUE9SVFMiXS5zcGxpdCgvW15cZCtd # LykKICAgIGhpZ2gJPSBsb3cJaWYgaGlnaC5uaWw/CiAgICBsb3csIGhpZ2gJ # PSBsb3cudG9faSwgaGlnaC50b19pCgogICAgaW8JCT0gbmlsCgogICAgcG9y # dCwgaW8JPSBUQ1BTZXJ2ZXIuZnJlZXBvcnQobG93LCBoaWdoLCAobm90IGF1 # dGgubmlsPykpCWlmIHBvcnQubmlsPwogICAgcmFpc2UgIk5vIGZyZWUgVENQ # IHBvcnQuIgkJCQkJCWlmIHBvcnQubmlsPwoKICAgIHBvcnQJPSBwb3J0LnRv # X2kKCiAgICBAcndkX3NlcnZlcgk9IFJXRFNlcnZlci5uZXcoc2VsZiwgcG9y # dCwgaW8sIGF1dGgsIHJlYWxtKQoKICAgIHNlbGYKICBlbmQKCiAgZGVmIHJl # bmRlcihyZXMsIHBhdGgsIHBvc3QsIGRvd25sb2FkLCBkb3dubG9hZGZpbGUs # IHBkYSwgc2Vzc2lvbmlkKQoJCSMgQXZvaWQgYSB0aW1lb3V0LgoKICAgIEBy # d2RfdGltZQkJPSBUaW1lLm5vdwoKCQkjIEluaXRpYWxpemUgc29tZSB2YXJz # LgoKICAgIHZhcnMJCT0gSGFzaC5uZXcJaWYgdmFycy5uaWw/CiAgICBAcndk # X3N3aXRjaGVzCT0gSGFzaC5uZXcJaWYgQHJ3ZF9zd2l0Y2hlcy5uaWw/Cgog # ICAgZG9uZQkJPSBmYWxzZQogICAgaGVscAkJPSBmYWxzZQogICAgYmFjawkJ # PSBmYWxzZQogICAgdGFiCQkJPSAiIgogICAgQHJ3ZF9tc2d0eXBlCT0gbmls # CWlmIEByd2RfcHJvZ3Jlc3NfdGhyZWFkLm5pbD8KICAgIEByd2RfZG93bmxv # YWQJPSBuaWwKICAgIEByd2RfZG93bmxvYWRfZmlsZQk9IG5pbAoKCQkjIFN3 # aXRjaGVzIGFyZSB1c2VkIGZvciBjaGVja2JveGVzLgoKICAgIEByd2Rfc3dp # dGNoZXMuZWFjaCBkbyB8a2V5LCB2YWx1ZXwKICAgICAgdmFyc1trZXldCT0g # Im9mZiIKICAgIGVuZAoKICAgIEByd2Rfc3dpdGNoZXMJPSBIYXNoLm5ldwoK # CQkjIENvcHkgdGhlIHZhcnMgZnJvbSB0aGUgd2luZG93IHRvIHZhcnMuIHZh # cnMgd2lsIGxhdGVyIG9uIGJlIGNvcGllZCB0byBpbnN0YW5jZSB2YXJpYWJs # ZXMuCgogICAgcG9zdC5zb3J0LmVhY2ggZG8gfGtleSwgdmFsdWV8CiAgICAg # IHB1dHMgIlBvc3Q6ICN7a2V5fSAtPiAje3ZhbHVlLmZyb21faHRtbC5pbnNw # ZWN0fSIJaWYgJHJ3ZF9kZWJ1ZwoKICAgICAgdmFyc1trZXldCT0gdmFsdWUu # ZnJvbV9odG1sCiAgICBlbmQKCgkJIyBTdGFjayBoYW5kbGluZyBmb3Igcndk # X2FjdGlvbiwgcndkX3dpbmRvdyBhbmQgcndkX3RhYi4KCiAgICBAcndkX2Fj # dGlvbgkJCT0gdmFyc1sicndkX2FjdGlvbiJdCQlpZiB2YXJzLmluY2x1ZGU/ # KCJyd2RfYWN0aW9uIikKICAgIEByd2RfYWN0aW9uLCBAcndkX2FyZ3MJPSBA # cndkX2FjdGlvbi5zcGxpdCgvXC8vLCAyKQl1bmxlc3MgQHJ3ZF9hY3Rpb24u # bmlsPwogICAgQHJ3ZF9hY3Rpb24sIHJlc3QJCT0gQHJ3ZF9hY3Rpb24uc3Bs # aXQoL1w/LykJdW5sZXNzIEByd2RfYWN0aW9uLm5pbD8KCiAgICBAcndkX3Jl # ZnJlc2hfYWN0aW9uCQk9IChAcndkX2FjdGlvbiBvciBAcndkX3JlZnJlc2hf # YWN0aW9uIG9yICJtYWluIikKCiAgICB1bmxlc3MgcmVzdC5uaWw/CiAgICAg # IHJlc3QuZWFjaCBkbyB8c3wKICAgICAgICBrLCB2CT0gcy5zcGxpdCgvPS8s # IDIpCiAgICAgICAgdmFyc1trXQk9IHYKICAgICAgZW5kCiAgICBlbmQKCiAg # ICBpZiBAcndkX2FjdGlvbiA9PSAicndkX2NhbmNlbCIKICAgICAgQHJ3ZF9w # cm9ncmVzc190aHJlYWQua2lsbAkJdW5sZXNzIEByd2RfcHJvZ3Jlc3NfdGhy # ZWFkLm5pbD8KICAgICAgQHJ3ZF9wcm9ncmVzc190aHJlYWQJPSBuaWwKICAg # ICAgQHJ3ZF9hY3Rpb24JCT0gInJ3ZF9iYWNrIgogICAgZW5kCgogICAgQHJ3 # ZF9oaXN0b3J5CT0gW1sibWFpbiIsIFtdLCAibWFpbiIsICIiXV0JaWYgQHJ3 # ZF9oaXN0b3J5LmVtcHR5PwoKICAgIGlmIEByd2RfYWN0aW9uID1+IC9ecndk # X3RhYl8vCiAgICAgIEByd2RfdGFiCT0gQHJ3ZF9hY3Rpb24uc3ViKC9ecndk # X3RhYl8vLCAiIikKICAgICAgQHJ3ZF9oaXN0b3J5Wy0xXVszXQk9IEByd2Rf # dGFiCiAgICBlbHNlCiAgICAgIGNhc2UgQHJ3ZF9hY3Rpb24KICAgICAgd2hl # biAicndkX2JhY2siCiAgICAgICAgQHJ3ZF9oaXN0b3J5LnBvcAogICAgICAg # IEByd2RfYWN0aW9uCQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBu # aWwsIG5pbF0pWzBdCiAgICAgICAgQHJ3ZF9hcmdzCQkJPSAoQHJ3ZF9oaXN0 # b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzFdCiAgICAgICAgQHJ3ZF93 # aW5kb3cJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmls # XSlbMl0KICAgICAgICBAcndkX3RhYgkJCT0gKEByd2RfaGlzdG9yeVstMV0g # b3IgW25pbCwgbmlsLCBuaWxdKVszXQogICAgICAgIGJhY2sJCQkJPSB0cnVl # CiAgICAgIHdoZW4gInJ3ZF9oZWxwIgogICAgICAgIGhlbHAJCQkJPSB0cnVl # CiAgICAgIHdoZW4gInJ3ZF9tYWluIgogICAgICAgIEByd2RfYWN0aW9uCQkJ # PSBuaWwKICAgICAgICBAcndkX3dpbmRvdwkJCT0gbmlsCiAgICAgICAgQHJ3 # ZF90YWIJCQk9IG5pbAogICAgICAgIEByd2RfaGlzdG9yeQkJCT0gW10KICAg # ICAgd2hlbiAicndkX3F1aXQiCiAgICAgICAgZG9uZQkJCQk9IHRydWUKICAg # ICAgZWxzZQogICAgICBlbmQKCgkJIyBIaXN0b3J5IHN0dWZmCgogICAgICBA # cndkX2hpc3RvcnkJPSBAcndkX2hpc3RvcnlbLTEwMC4uLTFdCWlmIEByd2Rf # aGlzdG9yeS5sZW5ndGggPj0gMTAwCiAgICAgIEByd2RfYWN0aW9uCT0gIm1h # aW4iCQkJaWYgQHJ3ZF9hY3Rpb24ubmlsPwogICAgICBAcndkX2FjdGlvbgk9 # ICJtYWluIgkJCWlmIEByd2RfYWN0aW9uLmVtcHR5PwogICAgICBAcndkX3dp # bmRvdwk9ICJtYWluIgkJCWlmIEByd2Rfd2luZG93Lm5pbD8KICAgICAgQHJ3 # ZF93aW5kb3cJPSAibWFpbiIJCQlpZiBAcndkX3dpbmRvdy5lbXB0eT8KICAg # ICAgQHJ3ZF90YWIJCT0gIiIJCQkJaWYgQHJ3ZF90YWIubmlsPwogICAgICBA # cndkX2FyZ3MJCT0gW10JCQkJaWYgQHJ3ZF9hcmdzLm5pbD8KICAgICAgQHJ3 # ZF9hcmdzCQk9IFtdCQkJCWlmIEByd2RfYWN0aW9uID09ICJtYWluIgoKICAg # ICAgdmFyc1sicndkX2FjdGlvbiJdCT0gQHJ3ZF9hY3Rpb24KICAgICAgdmFy # c1sicndkX3dpbmRvdyJdCT0gQHJ3ZF93aW5kb3cKICAgICAgdmFyc1sicndk # X3RhYiJdCQk9IEByd2RfdGFiCgoJCSMgQ29weSB2YXJzIGZyb20gd2luZG93 # IHRvIGluc3RhbmNlLgoKICAgICAgdmFycy5lYWNoIGRvIHxrLCB2fAogICAg # ICAgIGluc3RhbmNlX2V2YWwgIkAje2t9CT0gdmFyc1snI3trfSddIgkJaWYg # KChub3Qgay5lbXB0eT8pIGFuZCBrLnNjYW4oL15yd2RfLykuZW1wdHk/IGFu # ZCBub3QgQHJ3ZF9pZ25vcmVfdmFycy5pbmNsdWRlPygiQCN7a30iKSkKICAg # ICAgZW5kCgoJCSMgQ2FsbGJhY2suCgogICAgICBpZiAobm90IGJhY2spIG9y # IEByd2RfY2FsbF9hZnRlcl9iYWNrLmluY2x1ZGU/KEByd2RfYWN0aW9uKQog # ICAgICAgIHVubGVzcyBAcndkX2FjdGlvbiA9fiAvXnJ3ZF8vCiAgICAgICAg # ICBwdXRzICJNZXRob2Q6ICN7QHJ3ZF9hY3Rpb259KCN7QHJ3ZF9hcmdzLmpv # aW4oIiwgIil9KSIJaWYgJHJ3ZF9kZWJ1ZwogICAgICAgICAgaWYgbWV0aG9k # cy5pbmNsdWRlPyhAcndkX2FjdGlvbikKICAgICAgICAgICAgbWV0aG9kKEBy # d2RfYWN0aW9uKS5jYWxsKCpAcndkX2FyZ3MpCiAgICAgICAgICBlbHNlCiAg # ICAgICAgICAgIHB1dHMgIk1ldGhvZCAnJXMnIGlzIG5vdCBkZWZpbmVkLiIg # JSBAcndkX2FjdGlvbgogICAgICAgICAgZW5kCiAgICAgICAgZW5kCgoJCSMg # SGlzdG9yeSBzdHVmZgoKICAgICAgICBAcndkX2hpc3RvcnkJPSBbWyJtYWlu # IiwgW10sICJtYWluIiwgIiJdXQlpZiBAcndkX2FjdGlvbiA9PSAibWFpbiIK # ICAgICAgICBAcndkX2hpc3RvcnkJPSBbWyJtYWluIiwgW10sICJtYWluIiwg # IiJdXQlpZiBAcndkX2hpc3RvcnkuZW1wdHk/CgogICAgICAgIGEJCT0gW0By # d2RfYWN0aW9uLCBAcndkX2FyZ3MsIEByd2Rfd2luZG93LCBAcndkX3RhYl0K # CiAgICAgICAgQHJ3ZF9oaXN0b3J5LnB1c2ggYQkJCQlpZiAoQHJ3ZF9oaXN0 # b3J5Wy0xXSAhPSBhIG9yIG5vdCBAcndkX21zZ3R5cGUubmlsPykKCiAgICAg # ICAgaWYgQHJ3ZF93aW5kb3cgPT0gInJ3ZF9iYWNrIgogICAgICAgICAgQHJ3 # ZF9oaXN0b3J5LnBvcAogICAgICAgICAgQHJ3ZF9oaXN0b3J5LnBvcAogICAg # ICAgICAgQHJ3ZF9hY3Rpb24JCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtu # aWwsIG5pbCwgbmlsXSlbMF0KICAgICAgICAgIEByd2RfYXJncwkJCT0gKEBy # d2RfaGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVsxXQogICAgICAg # ICAgQHJ3ZF93aW5kb3cJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWws # IG5pbCwgbmlsXSlbMl0KICAgICAgICAgIEByd2RfdGFiCQkJPSAoQHJ3ZF9o # aXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzNdCiAgICAgICAgZW5k # CiAgICAgIGVuZAogICAgZW5kCgoJCSMgQ29weSB2YXJzIGZyb20gaW5zdGFu # Y2UgdG8gd2luZG93LgoKICAgIGluc3RhbmNlX3ZhcmlhYmxlcy5lYWNoIGRv # IHxrfAogICAgICBrLnN1YiEoL15ALywgIiIpCiAgICAgIGluc3RhbmNlX2V2 # YWwgInZhcnNbJyN7a30nXSA9IEAje2t9LnRvX3MiCWlmIChrLnNjYW4oL15y # d2RfLykuZW1wdHk/IGFuZCBub3QgQHJ3ZF9pZ25vcmVfdmFycy5pbmNsdWRl # PygiQCN7a30iKSkKICAgIGVuZAoKCQkjIGp1c3QgaWdub3JlLgoKICAgIHZh # cnMuc29ydC5lYWNoIGRvIHxrZXksIHZhbHVlfAogICAgICBwdXRzICJQcmU6 # ICN7a2V5fSAtPiAje3ZhbHVlLmluc3BlY3R9IglpZiAkcndkX2RlYnVnCiAg # ICBlbmQKCgoJCSMgQW5zd2VyIHRvIGJyb3dzZXIuCgogICAgaWYgZG9uZQog # ICAgICByZXMgPDwgUldERG9uZS5uZXcoQHJ3ZF9leGl0YnJvd3NlcikucmVu # ZGVyKHBkYSkKICAgIGVsc2UKICAgICAgaWYgbm90IEByd2RfZG93bmxvYWQu # bmlsPwogICAgICAgIHB1dHMgIkRvd25sb2FkOiAje0Byd2Rfd2luZG93fSIJ # CWlmICRyd2RfZGVidWcKCiAgICAgICAgZG93bmxvYWQJPDwgQHJ3ZF9kb3du # bG9hZAogICAgICAgIGRvd25sb2FkZmlsZQk8PCBAcndkX2Rvd25sb2FkX2Zp # bGUKICAgICAgZWxzZQogICAgICAgIGlmIG5vdCBAcndkX3Byb2dyZXNzX3Ro # cmVhZC5uaWw/CiAgICAgICAgICByZXMgPDwgUldEUHJvZ3Jlc3NCYXIubmV3 # KEByd2RfcHJvZ3Jlc3NfcmVmcmVzaCwgQHJ3ZF9wcm9ncmVzc19wcm9ncmVz # cykucmVuZGVyKHBkYSwgQHJ3ZF9yZWZyZXNoX2FjdGlvbikKICAgICAgICBl # bHNlCiAgICAgICAgICBpZiBub3QgQHJ3ZF9tc2d0eXBlLm5pbD8KICAgICAg # ICAgICAgcmVzIDw8IFJXRE1lc3NhZ2UubmV3KEByd2RfbXNnKS5yZW5kZXIo # cGRhKQlpZiBAcndkX21zZ3R5cGUgPT0gIm1lc3NhZ2UiCiAgICAgICAgICAg # IHJlcyA8PCBSV0RFcnJvci5uZXcoQHJ3ZF9tc2cpLnJlbmRlcihwZGEpCWlm # IEByd2RfbXNndHlwZSA9PSAiZXJyb3IiCiAgICAgICAgICAgIHJlcyA8PCBA # cndkX21zZwkJCQlpZiBAcndkX21zZ3R5cGUgPT0gInRleHQiCiAgICAgICAg # ICBlbHNlCiAgICAgICAgICAgIHB1dHMgIldpbmRvdzogI3tAcndkX3dpbmRv # d30iCQlpZiAkcndkX2RlYnVnCiAgICAgICAgICAgIHB1dHMgIlRhYjogI3tA # cndkX3RhYn0iCQlpZiAkcndkX2RlYnVnCgogICAgICAgICAgICByZXMgPDwg # UldEV2luZG93Lm5ldyhAcndkX3htbCwgQHJ3ZF93aW5kb3cpLnJlbmRlcihw # ZGEsIEByd2RfcmVmcmVzaF9hY3Rpb24sIHZhcnMsIEByd2Rfc3dpdGNoZXMs # IGhlbHAsIEByd2RfdGFiKQogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIGRvbmUKICBlbmQKCiAgZGVm # IHNhbWV3aW5kb3c/CiAgICBAcndkX2hpc3RvcnlbLTFdWzJdID09IEByd2Rf # d2luZG93CiAgZW5kCgogIGRlZiBtZXNzYWdlKG1zZywgJmJsb2NrKQogICAg # QHJ3ZF9tc2cJCT0gbXNnCiAgICBAcndkX21zZ3R5cGUJPSAibWVzc2FnZSIK # ICBlbmQKCiAgZGVmIGVycm9yKG1zZywgJmJsb2NrKQogICAgQHJ3ZF9tc2cJ # CT0gbXNnCiAgICBAcndkX21zZ3R5cGUJPSAiZXJyb3IiCiAgZW5kCgogIGRl # ZiB0ZXh0KG1zZykKICAgIEByd2RfbXNnCQk9ICI8aHRtbD48Ym9keT48cHJl # PiN7bXNnfTwvcHJlPjwvYm9keT48L2h0bWw+IgogICAgQHJ3ZF9tc2d0eXBl # CT0gInRleHQiCiAgZW5kCgogIGRlZiBwcm9ncmVzc2JhcihyZWZyZXNoLCAq # cHJvZ3Jlc3MpCiAgICBAcndkX3Byb2dyZXNzX3JlZnJlc2gJPSAocmVmcmVz # aCBvciAxKQogICAgQHJ3ZF9wcm9ncmVzc19wcm9ncmVzcwk9IFtdCgogICAg # d2hpbGUgbm90IHByb2dyZXNzLmVtcHR5PwogICAgICBzCT0gKHByb2dyZXNz # LnNoaWZ0IG9yICIiKQogICAgICBpZiBzLmtpbmRfb2Y/KEFycmF5KQogICAg # ICAgIGNhcHRpb24sIHZhbHVlCT0gcwogICAgICAgIHZhbHVlCT0gKHZhbHVl # IG9yIDAuMCkudG9fZgogICAgICBlbHNlCiAgICAgICAgY2FwdGlvbgk9IHMK # ICAgICAgICB2YWx1ZQk9IChwcm9ncmVzcy5zaGlmdCBvciAwLjApLnRvX2YK # ICAgICAgZW5kCgogICAgICBAcndkX3Byb2dyZXNzX3Byb2dyZXNzIDw8IFtj # YXB0aW9uLCB2YWx1ZV0KICAgIGVuZAoKICAgIGlmIEByd2RfcHJvZ3Jlc3Nf # dGhyZWFkLm5pbD8KICAgICAgQHJ3ZF9wcm9ncmVzc19wcm9ncmVzcy5lYWNo # IGRvIHxhfAogICAgICAgIGFbMV0JPSAwLjAKICAgICAgZW5kCgogICAgICBA # cndkX3Byb2dyZXNzX3RocmVhZCA9CiAgICAgIFRocmVhZC5uZXcgZG8KICAg # ICAgICB5aWVsZAogICAgICBlbmQKICAgICAgVGhyZWFkLnBhc3MKICAgIGVu # ZAoKICAgIEByd2RfcHJvZ3Jlc3NfdGhyZWFkCT0gbmlsCXVubGVzcyBAcndk # X3Byb2dyZXNzX3RocmVhZC5hbGl2ZT8KICBlbmQKCiAgZGVmIGRvd25sb2Fk # KGRhdGEsIGZpbGVuYW1lPSIiKQogICAgQHJ3ZF9kb3dubG9hZAk9IGRhdGEK # ICAgIEByd2RfZG93bmxvYWRfZmlsZQk9IGZpbGVuYW1lCiAgZW5kCgogIGRl # ZiBleGl0YnJvd3NlcgogICAgQHJ3ZF9leGl0YnJvd3Nlcgk9IHRydWUKICBl # bmQKCiAgZGVmIHRpbWVvdXQodGltZW91dCwgaW50ZXJ2YWw9MSkKICAgIEBy # d2RfdGltZW91dAk9IHRpbWVvdXQKCiAgICB1bmxlc3MgQHJ3ZF90aW1lb3V0 # X3RocmVhZAogICAgICBAcndkX3RpbWVvdXRfdGhyZWFkID0KICAgICAgVGhy # ZWFkLm5ldyBkbwogICAgICAgIGxvb3AgZG8KICAgICAgICAgIGlmIFRpbWUu # bm93IC0gQHJ3ZF90aW1lID4gQHJ3ZF90aW1lb3V0CiAgICAgICAgICAgICRz # dGRlcnIucHV0cyAiRXhpdGluZyBkdWUgdG8gdGltZW91dCAoI3tAcndkX3Rp # bWVvdXR9IHNlY29uZHMpLiIKICAgICAgICAgICAgZXhpdCAxCiAgICAgICAg # ICBlbmQKICAgICAgICAgIHNsZWVwIGludGVydmFsCiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgUldETG9naW4gPCBS # V0RpYWxvZwogIGRlZiBpbml0aWFsaXplKHJlYWxtKQogICAgc3VwZXIoIjx3 # aW5kb3cgbmFtZT0nbWFpbicgdGl0bGU9J1JXRCBMb2dpbiBmb3IgI3tyZWFs # bX0nIG5vYmFja2J1dHRvbnMgbm9jbG9zZWJ1dHRvbj48dGFibGU+PHJvdz48 # cCBhbGlnbj0ncmlnaHQnPlVzZXJuYW1lOjwvcD48dGV4dCBuYW1lPSdyd2Rf # YScvPjwvcm93Pjxyb3c+PHAgYWxpZ249J3JpZ2h0Jz5QYXNzd29yZDo8L3A+ # PHBhc3N3b3JkIG5hbWU9J3J3ZF9iJy8+PC9yb3c+PC90YWJsZT48YnV0dG9u # IGNhcHRpb249J0xvZ2luJy8+PC93aW5kb3c+IikKICBlbmQKZW5kCgpjbGFz # cyBSV0RUaW1lT3V0IDwgUldEaWFsb2cKICBkZWYgaW5pdGlhbGl6ZQogICAg # c3VwZXIoIjx3aW5kb3cgbmFtZT0nbWFpbicgdGl0bGU9J1JXRCBFcnJvcicg # bm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0dG9uPjxwPjxiPkVycm9yOjwvYj4g # U2Vzc2lvbiBoYXMgZXhwaXJlZC48L3A+PGJ1dHRvbiBjYXB0aW9uPSdOZXcg # c2Vzc2lvbicvPjwvd2luZG93PiIpCiAgZW5kCmVuZAoKY2xhc3MgU2Vzc2lv # bkNsZWFudXAKICBkZWYgaW5pdGlhbGl6ZShzZXNzaW9ucywgaW50ZXJ2YWws # IHRpbWVvdXQpCiAgICBldmVyeShpbnRlcnZhbCkgZG8KICAgICAgc2Vzc2lv # bnMuZGVsZXRlX2lmIGRvIHxpZCwgc2Vzc2lvbnwKICAgICAgICB0aW1lCT0g # VGltZS5ub3cudG9faSAtIHNlc3Npb24ubGFzdGFjY2Vzcy50b19pCgogICAg # ICAgIHB1dHMgIlNlc3Npb24gJXMgZGVsZXRlZCIgJSBpZAlpZiB0aW1lID4g # dGltZW91dAoKICAgICAgICB0aW1lID4gdGltZW91dAogICAgICBlbmQKICAg # IGVuZAogIGVuZAplbmQKCmNsYXNzIFNlc3Npb25zCiAgZGVmIGluaXRpYWxp # emUocmFjaywgY2xlYW51cCkKICAgIEByYWNrCT0gcmFjay50b19zCiAgICBA # Y2xlYW51cAk9IFNlc3Npb25DbGVhbnVwLm5ldyhzZWxmLCAzNjAwLCAyNCoz # NjAwKQlpZiBjbGVhbnVwCiAgICBAc2Vzc2lvbnMJPSB7fQogIGVuZAoKICBk # ZWYgW10oc2Vzc2lvbmlkKQogICAgQHNlc3Npb25zW3Nlc3Npb25pZF0KICBl # bmQKCiAgZGVmIFtdPShzZXNzaW9uaWQsIHZhbHVlKQogICAgQHNlc3Npb25z # W3Nlc3Npb25pZF0JPSB2YWx1ZQogIGVuZAoKICBkZWYgZGVsZXRlKHNlc3Np # b25pZCkKICAgIEBzZXNzaW9ucy5kZWxldGUoc2Vzc2lvbmlkKQogIGVuZAoK # ICBkZWYgZGVsZXRlX2lmKCZibG9jaykKICAgIEBzZXNzaW9ucy5kZWxldGVf # aWZ7fGssIHZ8IGJsb2NrLmNhbGwoaywgdil9CiAgZW5kCgogIGRlZiBpbmNs # dWRlPyhzZXNzaW9uaWQpCiAgICBAc2Vzc2lvbnMuaW5jbHVkZT8oc2Vzc2lv # bmlkKQogIGVuZAplbmQKCmNsYXNzIFJXRFNlc3Npb24gPCBIYXNoCiAgYXR0 # cl9yZWFkZXIgOnNlc3Npb25pZAogIGF0dHJfcmVhZGVyIDpsYXN0YWNjZXNz # CiAgYXR0cl9yZWFkZXIgOmF1dGhlbnRpY2F0ZWQKICBhdHRyX3dyaXRlciA6 # YXV0aGVudGljYXRlZAoKICBkZWYgaW5pdGlhbGl6ZShzZXNzaW9uaWQ9bmls # KQogICAgQHNlc3Npb25pZAkJPSBzZXNzaW9uaWQKICAgIEBsYXN0YWNjZXNz # CQk9IFRpbWUubm93CiAgICBAYXV0aGVudGljYXRlZAk9IGZhbHNlCiAgZW5k # CgogIGRlZiB0b3VjaAogICAgQGxhc3RhY2Nlc3MJPSBUaW1lLm5vdwogIGVu # ZAoKICBkZWYgcmVuZGVyKHJlcywgcGF0aCwgcG9zdCwgZG93bmxvYWQsIGRv # d25sb2FkZmlsZSwgcGRhKQogICAgZG9uZQk9IHNlbGZbIm9iamVjdCJdLnJl # bmRlcihyZXMsIHBhdGgsIHBvc3QsIGRvd25sb2FkLCBkb3dubG9hZGZpbGUs # IHBkYSwgQHNlc3Npb25pZCkKCiAgICByZXMuZ3N1YiEoL1wkUldEX1NFU1NJ # T05cJC8sIGRvbmUgPyAiIiA6ICIje0BzZXNzaW9uaWR9IikKCiAgICByZXR1 # cm4gZG9uZQogIGVuZAplbmQKCmNsYXNzIFJXRFNlcnZlcgogIGRlZiBpbml0 # aWFsaXplKG9iaiwgcG9ydCwgaW8sIGF1dGgsIHJlYWxtKQogICAgQG9iamVj # dAkJPSBvYmoKICAgIEBsb2NhbGJyb3dzaW5nCT0gZmFsc2UKICAgIEBicm93 # c2Vyc3RhcnRlZAk9IGZhbHNlCiAgICBAc2Vzc2lvbnMJCT0gU2Vzc2lvbnMu # bmV3KG9iai5jbGFzcywgKG5vdCBhdXRoLm5pbD8pKQoKICAgIGlmIGF1dGgu # bmlsPwogICAgICBAbG9jYWxicm93c2luZwk9IHRydWUKCiAgICAgIGlmIEVO # Vi5pbmNsdWRlPygiUldEQlJPV1NFUiIpIGFuZCBub3QgRU5WWyJSV0RCUk9X # U0VSIl0ubmlsPyBhbmQgbm90IEVOVlsiUldEQlJPV1NFUiJdLmVtcHR5Pwog # ICAgICAgIEBicm93c2Vyc3RhcnRlZAk9IHRydWUKICAgICAgICBAb2JqZWN0 # LmV4aXRicm93c2VyCgoJIyBTdGFydCBicm93c2VyLgoKICAgICAgICBAYnJv # d3NlcnRocmVhZAk9CiAgICAgICAgVGhyZWFkLm5ldyBkbwogICAgICAgICAg # cHV0cyAiU3RhcnRpbmcgdGhlIGJyb3dzZXIuLi4iCgogICAgICAgICAgI2lm # IEVOVlsiUldEQlJPV1NFUiJdLmRvd25jYXNlID1+IC9pZXhwbG9yZS8JIyA/ # Pz8KICAgICAgICAgICAgI0BpZQk9IElFLm5ldygiaHR0cDovL2xvY2FsaG9z # dDoje3BvcnR9LyIpCiAgICAgICAgICAjZWxzZQogICAgICAgICAgICBicm93 # c2VyCT0gRU5WWyJSV0RCUk9XU0VSIl0uZHVwCiAgICAgICAgICAgIHVybAkJ # PSAiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgW3BvcnRdCgogICAgICAgICAg # ICByZQkJPSAvWyQlXTFcYi8KICAgICAgICAgICAgY29tbWFuZAk9ICIlcyBc # IiVzXCIiICUgW2Jyb3dzZXIsIHVybF0KICAgICAgICAgICAgY29tbWFuZAk9 # IGJyb3dzZXIuZ3N1YihyZSwgdXJsKQlpZiBicm93c2VyID1+IHJlCgogICAg # ICAgICAgICBjb21tYW5kLmdzdWIhKC8lcG9ydCUvLCBwb3J0LnRvX3MpCgog # ICAgICAgICAgICBzeXN0ZW0oY29tbWFuZCkgb3IgJHN0ZGVyci5wdXRzICJT # dGFydGluZyBvZiB0aGUgYnJvd3NlciBmYWlsZWQsIG9yIHRoZSBicm93c2Vy # IHRlcm1pbmF0ZWQgYWJub3JtYWxseS5cbkNvbW1hbmQgPT4gI3tjb21tYW5k # fSIKICAgICAgICAgICNlbmQKCiAgICAgICAgICBwdXRzICJUaGUgYnJvd3Nl # ciBoYXMgdGVybWluYXRlZC4iCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAg # ZW5kCgoJIyBTdGFydCBzZXJ2ZXIuCgogICAgcG9ydGlvCQk9IHBvcnQKICAg # IHBvcnRpbwkJPSBbcG9ydCwgaW9dCXVubGVzcyBpby5uaWw/CiAgICB0aHJl # YWRsaW1pdGVyCT0gVGhyZWFkTGltaXRlci5uZXcoMSkKCiAgICBIVFRQU2Vy # dmVyLnNlcnZlKHBvcnRpbywgKG5vdCBhdXRoLm5pbD8pKSBkbyB8cmVxLCBy # ZXNwfAogICAgICB0aHJlYWRsaW1pdGVyLndhaXQgZG8KICAgICAgICB2YXJz # CT0ge30KICAgICAgICByZXEudmFycy5lYWNoIGRvIHxrLCB2fAogICAgICAg # ICAgdmFyc1trXQk9IHYuam9pbigiXHQiKQogICAgICAgIGVuZAogICAgICAg # IHBhZAk9IChyZXEucmVxdWVzdC5wYXRoIG9yICIvIikKCiAgICAgICAgaWYg # YXV0aC5raW5kX29mPyBTdHJpbmcKICAgICAgICAgIGZpbGUJPSAiI3tob21l # fS8je2F1dGh9IgogICAgICAgICAgYXV0aHMJPSB7fQogICAgICAgICAgYXV0 # aHMJPSBIYXNoLmZpbGUoZmlsZSkJaWYgRmlsZS5maWxlPyhmaWxlKQogICAg # ICAgIGVsc2UKICAgICAgICAgIGF1dGhzCT0gYXV0aAogICAgICAgIGVuZAoK # ICAgICAgICAjb2xkc2Vzc2lvbmlkCT0gdmFyc1sicndkX3Nlc3Npb24iXQog # ICAgICAgIG9sZHNlc3Npb25pZAk9IHJlcS5jb29raWVzWyJzZXNzaW9uaWQi # XQoKCQkjIFJldHJpZXZlIHNlc3Npb24uCgogICAgICAgIHNlc3Npb24JPSBA # c2Vzc2lvbnNbb2xkc2Vzc2lvbmlkXQoKCQkjIEV2ZW50dWFsbHkgY3JlYXRl # IG5ldyBzZXNzaW9uLgoKICAgICAgICBpZiBzZXNzaW9uLm5pbD8KICAgICAg # ICAgIHNlc3Npb25pZAk9IE1ENS5uZXcocmVxLnBlZXJhZGRyWzNdLnRvX3Mg # KyBAb2JqZWN0Lmluc3BlY3QudG9fcyArICgiJTEuNmYiICUgVGltZS5ub3cu # dG9fZikpLnRvX3MJd2hpbGUgKHNlc3Npb25pZCA9PSBuaWwgb3IgQHNlc3Np # b25zLmluY2x1ZGU/KHNlc3Npb25pZCkpCiAgICAgICAgICBzZXNzaW9uCQk9 # IFJXRFNlc3Npb24ubmV3KHNlc3Npb25pZCkKCiAgICAgICAgICBpZiBhdXRo # Lm5pbD8KICAgICAgICAgICAgc2Vzc2lvblsib2JqZWN0Il0JCT0gQG9iamVj # dAogICAgICAgICAgZWxzZQogICAgICAgICAgICBzZXNzaW9uWyJvYmplY3Qi # XQkJPSBAb2JqZWN0LmNsb25lCiAgICAgICAgICBlbmQKCiAgICAgICAgICBp # ZiBvbGRzZXNzaW9uaWQubmlsPyBvciBvbGRzZXNzaW9uaWQuZW1wdHk/CiAg # ICAgICAgICAgIGlmIG5vdCBhdXRoLm5pbD8gYW5kIG5vdCBhdXRoLmVtcHR5 # PyBhbmQgbm90IHNlc3Npb24uYXV0aGVudGljYXRlZCBhbmQgcGFkICF+IC9e # XC9yd2RfLwoKCQkjIENoZWNrIGF1dGhlbnRpY2F0aW9uCgogICAgICAgICAg # ICAgIHVzCT0gdmFyc1sicndkX2EiXQogICAgICAgICAgICAgIHBhCT0gdmFy # c1sicndkX2IiXQoKICAgICAgICAgICAgICBpZiB1cy5uaWw/IG9yIHBhLm5p # bD8gb3IgYXV0aHNbdXNdICE9IHBhCiAgICAgICAgICAgICAgICBzZXNzaW9u # CQkJCT0gUldEU2Vzc2lvbi5uZXcKICAgICAgICAgICAgICAgIHNlc3Npb25b # Im9iamVjdCJdCQk9IFJXRExvZ2luLm5ldyhyZWFsbSkKICAgICAgICAgICAg # ICAgIHBhZAkJCQk9ICIvIgogICAgICAgICAgICAgIGVsc2UKICAgICAgICAg # ICAgICAgIHNlc3Npb24uYXV0aGVudGljYXRlZAkJPSB0cnVlCiAgICAgICAg # ICAgICAgICBAc2Vzc2lvbnNbc2Vzc2lvbi5zZXNzaW9uaWRdCT0gc2Vzc2lv # bgogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAg # ICAgICAgc2Vzc2lvbi5hdXRoZW50aWNhdGVkCQk9IHRydWUKICAgICAgICAg # ICAgICBAc2Vzc2lvbnNbc2Vzc2lvbi5zZXNzaW9uaWRdCT0gc2Vzc2lvbgog # ICAgICAgICAgICBlbmQKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgc2Vz # c2lvbgkJPSBSV0RTZXNzaW9uLm5ldwogICAgICAgICAgICBzZXNzaW9uWyJv # YmplY3QiXQk9IFJXRFRpbWVPdXQubmV3CiAgICAgICAgICBlbmQKCiAgICAg # ICAgICB2YXJzCT0ge30KICAgICAgICBlbmQKCgkJIyBBdm9pZCB0aW1lb3V0 # LgoKICAgICAgICBzZXNzaW9uLnRvdWNoCgogICAgICAgIGlmIHBhZCA9PSAi # LyIKCgkJIyBTZXJ2ZSBtZXRob2RzL2NhbGxiYWNrcy4KCgkJIyBCdWlsZCBu # ZXcgcGFnZS4KCiAgICAgICAgICBkb3dubG9hZAk9ICIiCiAgICAgICAgICBk # b3dubG9hZGZpbGUJPSAiIgogICAgICAgICAgcmVzCQk9ICIiCgogICAgICAg # ICAgZG9uZQk9IHNlc3Npb24ucmVuZGVyKHJlcywgcGFkLCB2YXJzLCBkb3du # bG9hZCwgZG93bmxvYWRmaWxlLCByZXEucGRhPykKCiAgICAgICAgICBiZWdp # bgogICAgICAgICAgICBpZiBkb3dubG9hZC5lbXB0eT8KICAgICAgICAgICAg # ICByZXNwWyJDb250ZW50LVR5cGUiXQkJPSAidGV4dC9odG1sIgogICAgICAg # ICAgICAgIGlmIGRvbmUKICAgICAgICAgICAgICAgIHJlc3AuY29va2llc1si # c2Vzc2lvbmlkIl0JPSAiIgogICAgICAgICAgICAgIGVsc2UKICAgICAgICAg # ICAgICAgIHJlc3AuY29va2llc1sic2Vzc2lvbmlkIl0JPSBzZXNzaW9uLnNl # c3Npb25pZAogICAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgICByZXNw # IDw8IHJlcwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmVzcFsi # Q29udGVudC1UeXBlIl0JCT0gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIK # ICAgICAgICAgICAgICByZXNwWyJDb250ZW50LURpc3Bvc2l0aW9uIl0JPSAi # YXR0YWNobWVudDsiCiAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1EaXNw # b3NpdGlvbiJdCT0gImF0dGFjaG1lbnQ7IGZpbGVuYW1lPSVzIiAlIGRvd25s # b2FkZmlsZQl1bmxlc3MgZG93bmxvYWRmaWxlLmVtcHR5PwoKICAgICAgICAg # ICAgICByZXNwIDw8IGRvd25sb2FkCiAgICAgICAgICAgIGVuZAogICAgICAg # ICAgcmVzY3VlCiAgICAgICAgICAgIHB1dHMgIlNlbmRpbmcgcmVzcG9uc2Ug # dG8gYnJvd3NlciBmYWlsZWQuIgoKICAgICAgICAgICAgQHNlc3Npb25zLmRl # bGV0ZShzZXNzaW9uLnNlc3Npb25pZCkKICAgICAgICAgIGVuZAoKCQkjIEV2 # ZW50dWFsbHkgZGVsZXRlIHRoaXMgc2Vzc2lvbi4KCiAgICAgICAgICBpZiBk # b25lCiAgICAgICAgICAgIEBzZXNzaW9ucy5kZWxldGUoc2Vzc2lvbi5zZXNz # aW9uaWQpCgogICAgICAgICAgICBpZiBAbG9jYWxicm93c2luZwogICAgICAg # ICAgICAgIHJlc3Auc3RvcAoKICAgICAgICAgICAgICBpZiBAYnJvd3NlcnN0 # YXJ0ZWQgYW5kIG5vdCBAYnJvd3NlcnRocmVhZC5uaWw/IGFuZCBAYnJvd3Nl # cnRocmVhZC5hbGl2ZT8KICAgICAgICAgICAgICAgIHJlc3Auc3RvcCBkbwog # ICAgICAgICAgICAgICAgICBwdXRzICJXYWl0aW5nIGZvciB0aGUgYnJvd3Nl # ciB0byB0ZXJtaW5hdGUuLi4iCgogICAgICAgICAgICAgICAgICBAYnJvd3Nl # cnRocmVhZC5qb2luCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg # ICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbmQKCiAgICAgICAg # ZWxzZQoKCQkjIFNlcnZlIGZpbGVzLgoKICAgICAgICAgIGlmIHBhZCA9PSAi # L3J3ZF9waXhlbC5naWYiCiAgICAgICAgICAgIHJlc3BbIkNhY2hlLUNvbnRy # b2wiXQk9ICJtYXgtYWdlPTg2NDAwIgogICAgICAgICAgICByZXNwWyJDb250 # ZW50LVR5cGUiXQk9ICJpbWFnZS9naWYiCiAgICAgICAgICAgIHJlc3AgPDwg # JHJ3ZF9waXhlbAogICAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBzZXNz # aW9uLmF1dGhlbnRpY2F0ZWQKICAgICAgICAgICAgICBwd2QJPSBEaXIucHdk # CiAgICAgICAgICAgICAgZmlsZQk9IEZpbGUuZXhwYW5kX3BhdGgocGFkLmdz # dWIoL15cLyovLCAiIiksICRyd2RfZmlsZXMpCgogICAgICAgICAgICAgIGlm # IG5vdCBmaWxlLmluZGV4KHB3ZCkgPT0gMAogICAgICAgICAgICAgICAgcmVz # cFsiQ29udGVudC1UeXBlIl0JPSAidGV4dC9odG1sIgogICAgICAgICAgICAg # ICAgcmVzcC5yZXNwb25zZQkJPSAiSFRUUC8xLjAgNDAwIEJBRCBSRVFVRVNU # IgogICAgICAgICAgICAgICAgcmVzcCA8PCAiPGh0bWw+PGJvZHk+PHA+PGI+ # QmFkIFJlcXVlc3QuPC9iPiAoPHR0PiN7cGFkfTwvdHQ+KTwvcD48L2JvZHk+ # PC9odG1sPiIKICAgICAgICAgICAgICBlbHNpZiBGaWxlLmZpbGU/KGZpbGUp # CiAgICAgICAgICAgICAgICByZXNwIDw8IEZpbGUubmV3KGZpbGUsICJyYiIp # LnJlYWQJcmVzY3VlIG5pbAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAg # ICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gInRleHQvaHRtbCIKICAg # ICAgICAgICAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAvMS4wIDQwNCBO # T1QgRk9VTkQiCiAgICAgICAgICAgICAgICByZXNwIDw8ICI8aHRtbD48Ym9k # eT48cD48Yj5Ob3QgZm91bmQuPC9iPiAoPHR0PiN7cGFkfTwvdHQ+KTwvcD48 # L2JvZHk+PC9odG1sPiIKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg # ZWxzZQogICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gInRl # eHQvaHRtbCIKICAgICAgICAgICAgICByZXNwLnJlc3BvbnNlCQk9ICJIVFRQ # LzEuMCA/Pz8gTk9UIEFVVEhPUklaRUQiCiAgICAgICAgICAgICAgcmVzcCA8 # PCAiPGh0bWw+PGJvZHk+PHA+PGI+Tm90IEF1dGhvcml6ZWQuPC9iPjwvcD48 # L2JvZHk+PC9odG1sPiIKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbmQK # CiAgICAgICAgZW5kCgogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCiRy # d2RfaHRtbFsiREVGQVVMVCJdCT0gIgo8IS0tIEdlbmVyYXRlZCBieSBSdWJ5 # V2ViRGlhbG9nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgICAgICAgICAgLS0+CjwhLS0gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBs # ZWFzZSBjb250YWN0IEVyaWsgVmVlbnN0cmEgPHJ3ZEBlcmlrdmVlbi5kZHMu # bmw+LiAtLT4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+JVRJVExFJTwv # dGl0bGU+CgogICAgPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBj # b250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9JUNIQVJTRVQlJz4KICAgIDxt # ZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtU3R5bGUtVHlwZScgY29udGVudD0n # dGV4dC9jc3MnPgogICAgPG1ldGEgaHR0cC1lcXVpdj0nUmVmcmVzaCcgY29u # dGVudD0nJVJFRlJFU0glLCBqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3Jt # LnN1Ym1pdCgpOyc+CgogICAgPGxpbmsgcmVsPSdzaG9ydGN1dCBpY29uJyBo # cmVmPSclTE9HTyUnPgoKICAgIDxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+CiAg # ICA8IS0tCgoJYm9keSB7CgkJYmFja2dyb3VuZAkJOiB1cmwoJVdBVEVSTUFS # SyUpIHdoaXRlIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0IGZpeGVkOwoJfQoK # CWEgewoJCXRleHQtZGVjb3JhdGlvbgkJOiBub25lOwoJfQoKCWE6aG92ZXIg # ewoJCWJhY2tncm91bmQJCTogI0FBQUFBQTsKCX0KCgl0ZC5wYW5lbDEgewoJ # CWJvcmRlci1jb2xvcgkJOiAjODg4ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4 # ODg4OwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6 # IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMiB7CgkJ # Ym9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVF # RUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTog # c29saWQgc29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFuZWwxaGlnaCB7 # CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNF # RUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJ # CTogc29saWQgc29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFuZWwyaGln # aCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4 # ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5 # bGUJCTogbm9uZSBub25lIG5vbmUgbm9uZTsKCX0KCgl0ZC5wYW5lbDFsb3cg # ewoJCWJvcmRlci1jb2xvcgkJOiAjODg4ODg4ICNFRUVFRUUgI0VFRUVFRSAj # ODg4ODg4OwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxl # CQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMmxv # dyB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4ODg4ODggI0VFRUVFRSAjRUVFRUVF # ICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5 # bGUJCTogbm9uZSBub25lIG5vbmUgbm9uZTsKCX0KCgl0ZC50YWJibGFkIHsK # CQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAjODg4ODg4ICM4ODg4ODggI0VF # RUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJ # OiBub25lIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhc3NpdmV0YWIg # ewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcgk6ICNCQkJCQkI7 # CgkJYm9yZGVyLWNvbG9yCQk6ICNEREREREQgI0RERERERCAjRUVFRUVFICNE # REREREQ7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJ # CTogc29saWQgc29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQuYWN0aXZldGFi # IHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAjODg4ODg4ICM4ODg4ODgg # I0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHls # ZQkJOiBzb2xpZCBzb2xpZCBub25lIHNvbGlkOwoJfQoKCXRkLm5vdGFiIHsK # CQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAjRUVFRUVFICNFRUVFRUUgI0VF # RUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJ # OiBub25lIG5vbmUgc29saWQgbm9uZTsKCX0KCiAgICAvLy0tPgogICAgPC9z # dHlsZT4KCiAgICA8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+CiAg # ICA8IS0tCiAgICAgIGZ1bmN0aW9uIEJvZHlHbygpIHsKICAgICAgICAkUldE # X0ZPQ1VTJAogICAgICB9CiAgICAvLy0tPgogICAgPC9zY3JpcHQ+CiAgPC9o # ZWFkPgoKICA8Ym9keSBiZ2NvbG9yPSd3aGl0ZScgb25sb2FkPSdCb2R5R28o # KScgbGluaz0nIzAwMDAwMCcgdmxpbms9JyMwMDAwMDAnIGFsaW5rPScjMDAw # MDAwJz4KICAgIDxmb3JtIG5hbWU9J2JvZHlmb3JtJyBhY3Rpb249Jy8nIG1l # dGhvZD0ncG9zdCc+CiAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3Jk # ZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcgd2lkdGg9 # JzEwMCUnIGhlaWdodD0nMTAwJSc+CiAgICAgICAgPHRyIGFsaWduPSdjZW50 # ZXInIHZhbGlnbj0nbWlkZGxlJz4KICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJz4KCiAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3Jk # ZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+CgogICAg # ICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # ICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAg # ICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVy # Jz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAg # ICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFj # ayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAg # IDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVF # RUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # PC90cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAg # ID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # d2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0 # ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # YmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInPgoKICAgICAgICAgICAgICAgICAgPHRhYmxlIGFs # aWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxw # YWRkaW5nPScwJyAlV0lEVEgxJT4KICAgICAgICAgICAgICAgICAgICA8dHIg # YWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nIzQ0NDQ4OCc+CgogICAgICAgICAgICAg # ICAgICAgICAgICA8dGFibGUgYWxpZ249J2xlZnQnIGJvcmRlcj0nMCcgY2Vs # bHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAg # ICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2JvcmRlcic+PGltZyBzcmM9JyVM # T0dPJScgd2lkdGg9JzE0JyBoZWlnaHQ9JzE0Jz48L3RkPgogICAgICAgICAg # ICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInPjxiPjxzbWFs # bD48Zm9udCBjb2xvcj0nI0ZGRkZGRic+Jm5ic3A7JVRJVExFJSZuYnNwOzwv # Zm9udD48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAg # ICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+Cgog # ICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J3JpZ2h0JyBi # b3JkZXI9JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFkZGluZz0nMCc+CiAg # ICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgog # ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAlSEVMUEJVVFRPTiUg # IC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48 # c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5y # d2RfYWN0aW9uLnZhbHVlPVwicndkX2hlbHBcIjtkb2N1bWVudC5ib2R5Zm9y # bS5zdWJtaXQoKTsnPiZuYnNwOz8mbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90 # ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRU # T05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+ # PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZv # cm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9tYWluXCI7ZG9jdW1lbnQuYm9k # eWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jmx0OyZuYnNwOzwvYT48L3Nt # YWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEt # LSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1 # bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2JhY2tcIjtk # b2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZsdDsmbmJzcDs8 # L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAg # ICAgIDwhLS0gJUNMT1NFQlVUVE9OJSAtLT48dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3Jp # cHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9x # dWl0XCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDtYJm5i # c3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAg # ICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4K # CiAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAg # ICAgIDwvdHI+CgogICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2Vu # dGVyJz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JyVXSURUSDIlJz48L3RkPgogICAgICAgICAgICAg # ICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0n # Y2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPScjQ0NDQ0NDJz4KICAgICAgICAgICAgICAgICAgICAg # ICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNp # bmc9JzMnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAg # ICAgICAlQk9EWSUKICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4K # CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdyd2RfYWN0 # aW9uJyB2YWx1ZT0nJFJXRF9GSVJTVEFDVElPTiQnIHR5cGU9J2hpZGRlbic+ # CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdyd2Rfc2Vz # c2lvbicgdmFsdWU9JyRSV0RfU0VTU0lPTiQnIHR5cGU9J2hpZGRlbic+CiAg # ICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAg # IDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAg # ICAgICAgPC90ZD4KCiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVF # RUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgPC90cj4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXIn # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVF # RUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # YmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2Nl # bnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAg # ICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # d2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0 # ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAg # ICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAg # ICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAg # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNr # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAg # ICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAg # ICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAg # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICA8L3Rh # YmxlPgoKICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgPC90 # YWJsZT4KICAgIDwvZm9ybT4KICA8L2JvZHk+CjwvaHRtbD4KIgoKJHJ3ZF9o # dG1sWyJXSU5ET1dTTE9PS0FMSUtFIl0JPSAiCjwhLS0gR2VuZXJhdGVkIGJ5 # IFJ1YnlXZWJEaWFsb2cuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAtLT4KPCEtLSBGb3IgbW9yZSBpbmZvcm1hdGlv # biwgcGxlYXNlIGNvbnRhY3QgRXJpayBWZWVuc3RyYSA8cndkQGVyaWt2ZWVu # LmRkcy5ubD4uIC0tPgo8aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT4lVElU # TEUlPC90aXRsZT4KCiAgICA8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5 # cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0lQ0hBUlNFVCUnPgog # ICAgPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1TdHlsZS1UeXBlJyBjb250 # ZW50PSd0ZXh0L2Nzcyc+CiAgICA8bWV0YSBodHRwLWVxdWl2PSdSZWZyZXNo # JyBjb250ZW50PSclUkVGUkVTSCUsIGphdmFzY3JpcHQ6ZG9jdW1lbnQuYm9k # eWZvcm0uc3VibWl0KCk7Jz4KCiAgICA8bGluayByZWw9J3Nob3J0Y3V0IGlj # b24nIGhyZWY9JyVMT0dPJSc+CgogICAgPHN0eWxlIHR5cGU9J3RleHQvY3Nz # Jz4KICAgIDwhLS0KCglib2R5IHsKCQliYWNrZ3JvdW5kCQk6IHVybCglV0FU # RVJNQVJLJSkgd2hpdGUgY2VudGVyIGNlbnRlciBuby1yZXBlYXQgZml4ZWQ7 # Cgl9CgoJYSB7CgkJdGV4dC1kZWNvcmF0aW9uCQk6IG5vbmU7Cgl9CgoJYTpo # b3ZlciB7CgkJYmFja2dyb3VuZAkJOiAjQUFBQUFBOwoJfQoKCXRkLndpbmRv # dyB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4 # ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDNwdDsKCQlib3JkZXItc3R5 # bGUJCTogc29saWQgc29saWQgc29saWQgc29saWQ7Cgl9CgoJdGQucGFuZWwx # IHsKCQlib3JkZXItY29sb3IJCTogIzg4ODg4OCAjRUVFRUVFICNFRUVFRUUg # Izg4ODg4ODsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHls # ZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDIg # ewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAj # RUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxl # CQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMWhp # Z2ggewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4 # OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0 # eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVs # MmhpZ2ggewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4ODggIzg4 # ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVy # LXN0eWxlCQk6IG5vbmUgbm9uZSBub25lIG5vbmU7Cgl9CgoJdGQucGFuZWwx # bG93IHsKCQlib3JkZXItY29sb3IJCTogIzg4ODg4OCAjRUVFRUVFICNFRUVF # RUUgIzg4ODg4ODsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJCWJvcmRlci1z # dHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5l # bDJsb3cgewoJCWJvcmRlci1jb2xvcgkJOiAjODg4ODg4ICNFRUVFRUUgI0VF # RUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVy # LXN0eWxlCQk6IG5vbmUgbm9uZSBub25lIG5vbmU7Cgl9CgoJdGQudGFiYmxh # ZCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4 # ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5 # bGUJCTogbm9uZSBzb2xpZCBzb2xpZCBzb2xpZDsKCX0KCgl0ZC5wYXNzaXZl # dGFiIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IJOiAjQkJC # QkJCOwoJCWJvcmRlci1jb2xvcgkJOiAjREREREREICNEREREREQgI0VFRUVF # RSAjREREREREOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0 # eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoKCXRkLmFjdGl2 # ZXRhYiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4 # ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXIt # c3R5bGUJCTogc29saWQgc29saWQgbm9uZSBzb2xpZDsKCX0KCgl0ZC5ub3Rh # YiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgI0VFRUVFRSAjRUVFRUVF # ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5 # bGUJCTogbm9uZSBub25lIHNvbGlkIG5vbmU7Cgl9CgogICAgLy8tLT4KICAg # IDwvc3R5bGU+CgogICAgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQn # PgogICAgPCEtLQogICAgICBmdW5jdGlvbiBCb2R5R28oKSB7CiAgICAgICAg # JFJXRF9GT0NVUyQKICAgICAgfQogICAgLy8tLT4KICAgIDwvc2NyaXB0Pgog # IDwvaGVhZD4KCiAgPGJvZHkgYmdjb2xvcj0nd2hpdGUnIG9ubG9hZD0nQm9k # eUdvKCknIGxpbms9JyMwMDAwMDAnIHZsaW5rPScjMDAwMDAwJyBhbGluaz0n # IzAwMDAwMCc+CiAgICA8Zm9ybSBuYW1lPSdib2R5Zm9ybScgYWN0aW9uPScv # JyBtZXRob2Q9J3Bvc3QnPgogICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicg # Ym9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnIHdp # ZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPgogICAgICAgIDx0ciBhbGlnbj0n # Y2VudGVyJyB2YWxpZ249J21pZGRsZSc+CiAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcic+CgogICAgICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicg # Ym9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPgoK # ICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgY2xhc3M9J3dpbmRvdyc+CgogICAg # ICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScw # JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnICVXSURUSDElPgog # ICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAg # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScj # NDQ0NDg4Jz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGln # bj0nbGVmdCcgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRp # bmc9JzAnPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0n # Y2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nYm9yZGVyJz48aW1nIHNyYz0nJUxPR08lJyB3aWR0aD0nMTQnIGhlaWdo # dD0nMTQnPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcic+PGI+PHNtYWxsPjxmb250IGNvbG9yPScjRkZGRkZG # Jz4mbmJzcDslVElUTEUlJm5ic3A7PC9mb250Pjwvc21hbGw+PC9iPjwvdGQ+ # CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAg # ICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAgICAg # IDx0YWJsZSBhbGlnbj0ncmlnaHQnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9 # JzEnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAgICAg # ICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAg # ICAgICA8IS0tICVIRUxQQlVUVE9OJSAgLS0+PHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2Ny # aXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2Rf # aGVscFwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7PyZu # YnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAg # ICAgICAgICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2 # YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwi # cndkX21haW5cIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNw # OyZsdDsmbHQ7Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48 # YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rp # b24udmFsdWU9XCJyd2RfYmFja1wiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1p # dCgpOyc+Jm5ic3A7Jmx0OyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgog # ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAlQ0xPU0VCVVRUT04l # IC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48 # c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5y # d2RfYWN0aW9uLnZhbHVlPVwicndkX3F1aXRcIjtkb2N1bWVudC5ib2R5Zm9y # bS5zdWJtaXQoKTsnPiZuYnNwO1gmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90 # ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAg # ICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgICAgICAg # IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAg # ICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nJVdJRFRI # MiUnPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAg # ICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNDQ0NDQ0Mn # PgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J2NlbnRl # cicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMycgY2VsbHBhZGRpbmc9JzAn # PgogICAgICAgICAgICAgICAgICAgICAgICAgICVCT0RZJQogICAgICAgICAg # ICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgICAgICAg # ICAgPGlucHV0IG5hbWU9J3J3ZF9hY3Rpb24nIHZhbHVlPSckUldEX0ZJUlNU # QUNUSU9OJCcgdHlwZT0naGlkZGVuJz4KICAgICAgICAgICAgICAgICAgICAg # ICAgPGlucHV0IG5hbWU9J3J3ZF9zZXNzaW9uJyB2YWx1ZT0nJFJXRF9TRVNT # SU9OJCcgdHlwZT0naGlkZGVuJz4KICAgICAgICAgICAgICAgICAgICAgIDwv # dGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAg # ICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAg # ICAgIDwvdHI+CgogICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgIDwv # dGQ+CiAgICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KICAgIDwvZm9ybT4K # ICA8L2JvZHk+CjwvaHRtbD4KIgoKJHJ3ZF9odG1sWyJQREEiXQk9ICIKPCEt # LSBHZW5lcmF0ZWQgYnkgUnVieVdlYkRpYWxvZy4gICAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIEZvciBt # b3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgY29udGFjdCBFcmlrIFZlZW5zdHJh # IDxyd2RAZXJpa3ZlZW4uZGRzLm5sPi4gLS0+CjxodG1sPgogIDxoZWFkPgog # ICAgPHRpdGxlPiVUSVRMRSU8L3RpdGxlPgoKICAgIDxtZXRhIGh0dHAtZXF1 # aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0 # PSVDSEFSU0VUJSc+CiAgICA8bWV0YSBodHRwLWVxdWl2PSdSZWZyZXNoJyBj # b250ZW50PSclUkVGUkVTSCUsIGphdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZv # cm0uc3VibWl0KCk7Jz4KCiAgICA8bGluayByZWw9J3Nob3J0Y3V0IGljb24n # IGhyZWY9JyVMT0dPJSc+CgogICAgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFz # Y3JpcHQnPgogICAgPCEtLQogICAgICBmdW5jdGlvbiBCb2R5R28oKSB7CiAg # ICAgICAgJFJXRF9GT0NVUyQKICAgICAgfQogICAgLy8tLT4KICAgIDwvc2Ny # aXB0PgogIDwvaGVhZD4KCiAgPGJvZHkgYmdjb2xvcj0nd2hpdGUnIG9ubG9h # ZD0nQm9keUdvKCknIGxpbms9JyMwMDAwMDAnIHZsaW5rPScjMDAwMDAwJyBh # bGluaz0nIzAwMDAwMCc+CiAgICA8Zm9ybSBuYW1lPSdib2R5Zm9ybScgYWN0 # aW9uPScvJyBtZXRob2Q9J3Bvc3QnPgogICAgICA8dGFibGUgYWxpZ249J2Nl # bnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9 # JzAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPgoKICAgICAgICA8dHIg # YWxpZ249J2NlbnRlcic+CiAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nIzQ0NDQ4OCc+CgogICAgICAgICAgICA8dGFibGUgYWxpZ249 # J2xlZnQnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5n # PScwJz4KICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2JvcmRlcic+PGltZyBzcmM9JyVMT0dP # JScgd2lkdGg9JzE0JyBoZWlnaHQ9JzE0Jz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInPjxiPjxzbWFsbD48Zm9udCBjb2xvcj0n # I0ZGRkZGRic+Jm5ic3A7JVRJVExFJSZuYnNwOzwvZm9udD48L3NtYWxsPjwv # Yj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFi # bGU+CgogICAgICAgICAgICA8dGFibGUgYWxpZ249J3JpZ2h0JyBib3JkZXI9 # JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAg # ICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPCEt # LSAlSEVMUEJVVFRPTiUgIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1 # bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2hlbHBcIjtk # b2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOz8mbmJzcDs8L2E+ # PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgIDwhLS0gJUJBQ0tC # VVRUT05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVF # RSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9k # eWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9tYWluXCI7ZG9jdW1lbnQu # Ym9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jmx0OyZuYnNwOzwvYT48 # L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgPCEtLSAlQkFDS0JV # VFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVF # Jz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5 # Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2JhY2tcIjtkb2N1bWVudC5i # b2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZsdDsmbmJzcDs8L2E+PC9zbWFs # bD48L2I+PC90ZD4KICAgICAgICAgICAgICAgIDwhLS0gJUNMT1NFQlVUVE9O # JSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+ # PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0u # cndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9xdWl0XCI7ZG9jdW1lbnQuYm9keWZv # cm0uc3VibWl0KCk7Jz4mbmJzcDtYJm5ic3A7PC9hPjwvc21hbGw+PC9iPjwv # dGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4K # CiAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CgogICAgICAgIDwhLS0K # ICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgYmdjb2xvcj0nI0ZGRkZGRic+Jm5ic3A7PC90ZD4KICAg # ICAgICA8L3RyPgogICAgICAgIC0tPgoKICAgICAgICA8dHIgYWxpZ249J2Nl # bnRlcic+CiAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # I0ZGRkZGRic+CgogICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVy # JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+ # CiAgICAgICAgICAgICAgICAlQk9EWSUKICAgICAgICAgICAgICA8L3RhYmxl # PgoKICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX2FjdGlvbicgdmFs # dWU9JyRSV0RfRklSU1RBQ1RJT04kJyB0eXBlPSdoaWRkZW4nPgogICAgICAg # ICAgICAgIDxpbnB1dCBuYW1lPSdyd2Rfc2Vzc2lvbicgdmFsdWU9JyRSV0Rf # U0VTU0lPTiQnIHR5cGU9J2hpZGRlbic+CiAgICAgICAgICA8L3RkPgogICAg # ICAgIDwvdHI+CgogICAgICA8L3RhYmxlPgogICAgPC9mb3JtPgogIDwvYm9k # eT4KPC9odG1sPgoiCgokcndkX3BpeGVsCT0gIgpSMGxHT0RsaEFRQUJBTUlB # QUFBQUFQLy8vKzd1N2tSRWlQLy8vLy8vLy8vLy8vLy8veUg1QkFFS0FBTUEK # TEFBQUFBQUJBQUVBQUFNQ09Ba0FPdz09CiIudW5wYWNrKCJtIikuc2hpZnQK # CiRyd2RfbG9nbwk9ICIKUjBsR09EbGhFQUFRQU1JQUFBQUFBUC8vLys3dTdr # UkVpUC8vLy8vLy8vLy8vLy8vL3lINUJBRUtBQVFBCkxBQUFBQUFRQUJBQUFB # TkNTRXJRL2syMVFLdWxySXJOdThoZXVBR1VjSjBCdVFWRDY3NkRhc0swek5L # dgpqZWZCK29vNmw2QXhCQXg3TTJIUmVQUXBoNXhnYTBSc0pxZkVMUEkyRFNV # QUFEcz0KIi51bnBhY2soIm0iKS5zaGlmdAoKCiRyd2RfaHRtbF8xLCAkcndk # X2h0bWxfMgkJPSAkcndkX2h0bWxbRU5WWyJSV0RUSEVNRSJdXS5zcGxpdCgv # XlxzKiVCT0RZJVxzKlxyKiQvKQokcndkX2h0bWxfUERBXzEsICRyd2RfaHRt # bF9QREFfMgk9ICRyd2RfaHRtbFsiUERBIl0uc3BsaXQoL15ccyolQk9EWSVc # cypcciokLykKCiNlbmQKIwojY2xhc3MgUldEaWFsb2cgPCBSV0Q6OlJXRGlh # bG9nCiNlbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExNTk0LnRhci9ldi9ydWJ5 # LnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAw # MDA0MDI2MAAxMDI1MDMyMDYxMwAwMjAxNTMAIDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg # IABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiY2dpIgpyZXF1aXJl # ICJyYmNvbmZpZyIKcmVxdWlyZSAidGhyZWFkIgoKVGhyZWFkLmFib3J0X29u # X2V4Y2VwdGlvbgk9IHRydWUKCiRERUJVRwk9ICgkREVCVUcgb3IgRU5WWyJS # VUJZREVCVUciXSBvciBmYWxzZSkKCiN0ZWtlbnMJPSAnXHdcflxAXCNcJFwl # XF5cJlwqXC1cKycKdGVrZW5zCQk9ICdeXHNcclxuXGBcIVwoXClcW1xdXHtc # fVw8XD5cLFwuXC9cP1xcXHxcPVw7XDpcIicKCiN0ZWtlbnMxMQk9ICdcdycK # dGVrZW5zMTEJPSB0ZWtlbnMgKyAiJyIKCnRla2VuczIxCT0gdGVrZW5zICsg # IiciCnRla2VuczIyCT0gdGVrZW5zCnRla2VuczIzCT0gdGVrZW5zICsgIici # Cgp0ZWtlbnMzMQk9ICdcd1xzXHJcbicKClJlZ0V4cFN0cmluZ1dvcmQJPSAi # KFsje3Rla2VuczExfV0rKSIJCQkJCQkJCQk7IFJlZ0V4cFdvcmQJCT0gUmVn # ZXhwLm5ldyhSZWdFeHBTdHJpbmdXb3JkKQpSZWdFeHBTdHJpbmdXb3JkMgk9 # ICIoWyN7dGVrZW5zMjF9XShbI3t0ZWtlbnMyMn1dKlsje3Rla2VuczIzfV0p # PykiCQkJCQk7IFJlZ0V4cFdvcmQyCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3Ry # aW5nV29yZDIpClJlZ0V4cFN0cmluZ1RleHQJPSAiKFsje3Rla2VuczMxfV0r # KSIJCQkJCQkJCQk7IFJlZ0V4cFRleHQJCT0gUmVnZXhwLm5ldyhSZWdFeHBT # dHJpbmdUZXh0KQpSZWdFeHBTdHJpbmdGaWxlCT0gJyhcd1tcd1wuXC1dKikn # CQkJCQkJCQkJOyBSZWdFeHBGaWxlCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3Ry # aW5nRmlsZSkKUmVnRXhwU3RyaW5nRW1haWwJPSAnKFtcd1wtXC5dK0BbXHdc # LVwuXSspJwkJCQkJCQkJOyBSZWdFeHBFbWFpbAkJPSBSZWdleHAubmV3KFJl # Z0V4cFN0cmluZ0VtYWlsKQpSZWdFeHBTdHJpbmdVUkwJCT0gJyhcdys6XC9c # L1tcd1wuXC1dKyg6XGQqKT9cL1tcd1wuXC1cL1wjXD9cPVwlXSopJwkJCQkJ # OyBSZWdFeHBVUkwJCT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdVUkwpClJl # Z0V4cFN0cmluZ1ByaW50CT0gJyhbXHcgXHRcclxuXGBcflwhXEBcI1wkXCVc # XlwmXCpcKFwpXC1cK1w9XFtcXVx7XH1cO1w6XCdcIlwsXC5cL1w8XD5cP1xc # XHxdKyknCTsgUmVnRXhwUHJpbnQJCT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJp # bmdQcmludCkKUmVnRXhwU3RyaW5nRGlmZgk9ICcoXltcLVwrXShbXlwtXCtd # LiopPyknCQkJCQkJCQk7IFJlZ0V4cERpZmYJCT0gUmVnZXhwLm5ldyhSZWdF # eHBTdHJpbmdEaWZmKQpSZWdFeHBTdHJpbmdIVEhMaW5rCT0gJyhgW1x3XCxd # KlxiYVxiW15gXSpgKScJCQkJCQkJCTsgUmVnRXhwSFRITGluawkJPSBSZWdl # eHAubmV3KFJlZ0V4cFN0cmluZ0hUSExpbmspClJlZ0V4cFN0cmluZ0hUSFNw # ZWNpYWwJPSAnKGBbXmBdKmApJwkJCQkJCQkJCQk7IFJlZ0V4cEhUSFNwZWNp # YWwJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ0hUSFNwZWNpYWwpCgptb2R1 # bGUgRW51bWVyYWJsZQogIGRlZiBkZWVwX2R1cAogICAgTWFyc2hhbDo6bG9h # ZChNYXJzaGFsOjpkdW1wKGR1cCkpCiAgZW5kCgogIGRlZiBkZWVwX2Nsb25l # CiAgICBNYXJzaGFsOjpsb2FkKE1hcnNoYWw6OmR1bXAoY2xvbmUpKQogIGVu # ZAplbmQKCmNsYXNzIFRocmVhZAogIGRlZiBzZWxmLmJhY2tncm91bmQoKmFy # Z3MpCiAgICBuZXcoKmFyZ3MpIGRvIHwqYXJnc3wKICAgICAgVGhyZWFkLnBh # c3MKCiAgICAgIHlpZWxkKCphcmdzKQogICAgZW5kCiAgZW5kCmVuZAoKY2xh # c3MgT2JqZWN0CiAgYWxpYXMgZGVlcF9kdXAgOmR1cAogIGFsaWFzIGRlZXBf # Y2xvbmUgOmNsb25lCgogIGRlZiB0b19mcwogICAgdG9fcwogIGVuZAoKICBk # ZWYgaWRzCiAgICBpZAogIGVuZAplbmQKCmNsYXNzIE51bWVyaWMKICBkZWYg # dG9fZnMKICAgIHRvX2YKICBlbmQKCiAgZGVmIHRvX2h0bWwoZW9sY29udmVy # c2lvbj10cnVlKQogICAgc2VsZi50b19zLnRvX2h0bWwoZW9sY29udmVyc2lv # bikKICBlbmQKZW5kCgpjbGFzcyBJbnRlZ2VyCiAgZGVmIG9jdAogICAgbgk9 # IHNlbGYKICAgIHJlcwk9IFtdCgogICAgd2hpbGUgbiA+IDgKICAgICAgbiwg # eAk9IG4uZGl2bW9kKDgpCiAgICAgIHJlcyA8PCB4CiAgICBlbmQKICAgIHJl # cyA8PCBuCgogICAgcmVzLnJldmVyc2Uuam9pbigiIikKICBlbmQKZW5kCgpj # bGFzcyBTdHJpbmcKICBkZWYgY2hvbXAhKGR1bW15PW5pbCkKICAgIHNlbGYu # Z3N1YiEoL1tcclxuXSpcei8sICIiKQogIGVuZAoKICBkZWYgY2hvbXAoZHVt # bXk9bmlsKQogICAgc2VsZi5nc3ViKC9bXHJcbl0qXHovLCAiIikKICBlbmQK # CiAgZGVmIGxmCiAgICBzZWxmLmdzdWIoL1xyKlxuLywgIlxuIikuZ3N1Yigv # XG5cei8sICIiKSArICJcbiIKICBlbmQKCiAgZGVmIGNybGYKICAgIHNlbGYu # Z3N1YigvXHIqXG4vLCAiXHJcbiIpLmdzdWIoL1xyXG5cei8sICIiKSArICJc # clxuIgogIGVuZAoKICBkZWYgc3RyaXAKICAgIHNlbGYuc3RyaXBiZWZvcmUu # c3RyaXBhZnRlcgogIGVuZAoKICBkZWYgc3RyaXBiZWZvcmUKICAgIHNlbGYu # Z3N1YigvXEFbWzpibGFuazpdXHJcbl0qLywgIiIpCiAgZW5kCgogIGRlZiBz # dHJpcGFmdGVyCiAgICBzZWxmLmdzdWIoL1tbOmJsYW5rOl1cclxuXSpcei8s # ICIiKQogIGVuZAoKICBkZWYgY29tcHJlc3MKICAgIHNlbGYuZ3N1YigvW1s6 # Ymxhbms6XVxyXG5dKy8sICIgIikuc3RyaXAKICBlbmQKCiAgZGVmIGNvbXBy # ZXNzc3BhY2VzCiAgICBzZWxmLmdzdWIoL1tbOmJsYW5rOl1dKy8sICIgIikK # ICBlbmQKCiAgZGVmIGNvbXByZXNzcGVybGluZQogICAgcmVzCT0gc2VsZi5z # cGxpdCgvXG4vKQogICAgcmVzLmNvbGxlY3Qhe3xsaW5lfCBsaW5lLmNvbXBy # ZXNzfQogICAgcmVzLmRlbGV0ZV9pZnt8bGluZXwgbGluZS5lbXB0eT99CiAg # ICByZXMuam9pbigiXG4iKQogIGVuZAoKICBkZWYgbnVtZXJpYz8KICAgIGQs # IGEsIG4JPSBbc2VsZl0udG9fcGFyCgogICAgbm90IG4uZW1wdHk/CiAgZW5k # CgogIGRlZiBleGVjKGlucHV0PW5pbCwgb3V0cHV0PXRydWUpCiAgICByZXMJ # PSBbXQoKICAgIElPLnBvcGVuKHNlbGYsICJ3KyIpIGRvIHxmfAogICAgICBm # LnB1dHMgaW5wdXQJdW5sZXNzIGlucHV0Lm5pbD8KICAgICAgZi5jbG9zZV93 # cml0ZQoKICAgICAgcmVzCT0gZi5yZWFkbGluZXMgaWYgb3V0cHV0CiAgICBl # bmQKCiAgICByZXMuam9pbigiIikKICBlbmQKCiAgZGVmIGV2YWwKICAgIEtl # cm5lbDo6ZXZhbChzZWxmKQogIGVuZAoKICBkZWYgc3BlYWsKICAgIHJlcXVp # cmUgImRyYiIKCiAgICBEUmIuc3RhcnRfc2VydmljZQogICAgRFJiT2JqZWN0 # Lm5ldyhuaWwsICJkcnVieTovL2xvY2FsaG9zdDozMTAwIikuc3BlYWsoc2Vs # ZikKICBlbmQKCiAgZGVmIHNwbGl0YmxvY2tzKCpkZWxpbWl0ZXJzKQogICAg # YmVnaW5kZWxpbWl0ZXJzCT0gW10KICAgIGVuZGRlbGltaXRlcnMJPSBbXQoK # ICAgIGRlbGltaXRlcnMuZWFjaCBkbyB8aywgdnwKICAgICAgYmVnaW5kZWxp # bWl0ZXJzCTw8IGsuZG93bmNhc2UKICAgICAgZW5kZGVsaW1pdGVycwk8PCB2 # LmRvd25jYXNlCiAgICBlbmQKCiAgICBiZAk9IGJlZ2luZGVsaW1pdGVycy5j # b2xsZWN0CXt8c3wgUmVnZXhwLmVzY2FwZShzKX0KICAgIGVkCT0gZW5kZGVs # aW1pdGVycy5jb2xsZWN0CQl7fHN8IFJlZ2V4cC5lc2NhcGUocyl9CgogICAg # YmUJPSBiZC5qb2luKCJ8IikKICAgIGVlCT0gZWQuam9pbigifCIpCgogICAg # cmVzCQk9IFtdCiAgICB0eXBlCT0gMAogICAgdG1wCQk9ICIiCiAgICBicwkJ # PSAiIgogICAgZXMJCT0gIiIKCiAgICBzZWxmLnNwbGl0KC8oI3tlZX18I3ti # ZX0pL2kpLmVhY2ggZG8gfHN8CiAgICAgIGlmIHR5cGUgPT0gMAogICAgICAg # IGlmIGJlZ2luZGVsaW1pdGVycy5pbmNsdWRlPyhzLmRvd25jYXNlKQogICAg # ICAgICAgaQk9IGJlZ2luZGVsaW1pdGVycy5pbmRleChzLmRvd25jYXNlKQog # ICAgICAgICAgdHlwZQk9IGkrMQogICAgICAgICAgdG1wCT0gcwogICAgICAg # ICAgYnMJPSBzLmRvd25jYXNlCiAgICAgICAgICBlcwk9IGVuZGRlbGltaXRl # cnNbaV0KICAgICAgICBlbHNlCiAgICAgICAgICByZXMgPDwgWzAsIHNdCXVu # bGVzcyBzLmVtcHR5PwogICAgICAgIGVuZAogICAgICBlbHNlCiAgICAgICAg # aWYgcy5kb3duY2FzZSA9PSBlcwogICAgICAgICAgcmVzIDw8IFt0eXBlLCB0 # bXAgKyBzXQogICAgICAgICAgdHlwZQk9IDAKICAgICAgICAgIHRtcAk9ICIi # CiAgICAgICAgICBicwk9ICIiCiAgICAgICAgICBlcwk9ICIiCiAgICAgICAg # ZWxzZQogICAgICAgICAgaWYgcy5kb3duY2FzZSA9PSBicwogICAgICAgICAg # ICByZXMgPDwgWzAsIHRtcF0KICAgICAgICAgICAgdG1wCT0gcwogICAgICAg # ICAgZWxzZQogICAgICAgICAgICB0bXAJPSB0bXAgKyBzCiAgICAgICAgICBl # bmQKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMgPDwg # WzAsIHRtcF0JdW5sZXNzIHRtcC5lbXB0eT8KCiAgICByZXR1cm4gcmVzCiAg # ZW5kCgogIGRlZiBzcGxpdHdvcmRzKHRva2Vucz1bXSkKICAgIHRva2VucwkJ # PSBbdG9rZW5zXQl1bmxlc3MgdG9rZW5zLmtpbmRfb2Y/KEFycmF5KQogICAg # cmVzCQkJPSBbXQoKICAgIHNlbGYuc3BsaXRibG9ja3MoWyInIiwgIiciXSwg # WyciJywgJyInXSkuZWFjaCBkbyB8dHlwZSwgc3wKICAgICAgY2FzZSB0eXBl # CiAgICAgIHdoZW4gMAogICAgICAgIHRva2Vucy5lYWNoIGRvIHx0b2tlbnwK # ICAgICAgICAgIHRva2VuMgk9IHRva2VuCiAgICAgICAgICB0b2tlbjIJPSBS # ZWdleHAuZXNjYXBlKHRva2VuMikJaWYgdG9rZW4yLmtpbmRfb2Y/KFN0cmlu # ZykKICAgICAgICAgIHMuZ3N1YiEoLyN7dG9rZW4yfS8sICIgI3t0b2tlbn0g # IikKICAgICAgICBlbmQKICAgICAgICBzLnNwbGl0KCkuZWFjaCBkbyB8d3wK # ICAgICAgICAgIHJlcyA8PCB3CiAgICAgICAgZW5kCiAgICAgIHdoZW4gMSwg # MgogICAgICAgIHJlcyA8PCBzWzEuLi0yXQogICAgICBlbmQKICAgIGVuZAoK # ICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIHVuY29tbWVudAogICAgcmVz # CT0gW10KCiAgICBzZWxmLnNwbGl0YmxvY2tzKFsiJyIsICInIl0sIFsnIics # ICciJ10sIFsiIyIsICJcbiJdKS5lYWNoIGRvIHx0eXBlLCBzfAogICAgICBj # YXNlIHR5cGUKICAgICAgd2hlbiAwLCAxLCAyCXRoZW4JcmVzIDw8IHMKICAg # ICAgd2hlbiAzCQl0aGVuCXJlcyA8PCAiXG4iCiAgICAgIGVuZAogICAgZW5k # CgogICAgcmVzLmpvaW4oIiIpCiAgZW5kCgogIGRlZiBub3F1b3RlcwogICAg # c2VsZi5zdWIoL1xBWyciXS8sICIiKS5zdWIoL1snIl1cei8sICIiKQogIGVu # ZAoKICBkZWYgdG9faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzCT0g # Q0dJLmVzY2FwZUhUTUwoc2VsZikKCiAgICBzLmdzdWIhKC9cIi8sICJcJiMz # NDsiKQogICAgcy5nc3ViISgvXCcvLCAiXCYjMTgwOyIpCgogICAgaWYgZW9s # Y29udmVyc2lvbgogICAgICBzLmdzdWIhKC9cbi8gLCAiPGJyPiIpCiAgICBl # bmQKCiAgICBzCiAgZW5kCgogIGRlZiBmcm9tX2h0bWwoZW9sY29udmVyc2lv # bj10cnVlKQogICAgcwk9IHNlbGYKCiAgICBzLmdzdWIhKC8mIzM0Oy8gLCAi # XCIiKQogICAgcy5nc3ViISgvJiMxODA7LywgIlwnIikKCiAgICBzCT0gQ0dJ # LnVuZXNjYXBlSFRNTChzZWxmKQoKICAgIGlmIGVvbGNvbnZlcnNpb24KICAg # ICAgcy5nc3ViISgvPGJyPi8sICJcbiIpCiAgICBlbmQKCiAgICBzCiAgZW5k # CgogIGRlZiB0b19mcwogICAgaWYgbnVtZXJpYz8KICAgICAgdG9fZgogICAg # ZWxzZQogICAgICB0b19zCiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBBcnJh # eQogIGRlZiBjaG9tcCEKICAgIHNlbGYuY29sbGVjdCF7fHN8IHMuY2hvbXB9 # CiAgZW5kCgogIGRlZiBjaG9tcAogICAgc2VsZi5jb2xsZWN0e3xzfCBzLmNo # b21wfQogIGVuZAoKICBkZWYgY29tcHJlc3MKICAgIHNlbGYuY29sbGVjdHt8 # c3wgcy5jb21wcmVzc30KICBlbmQKCiAgZGVmIHVuY29tbWVudAogICAgc2Vs # Zi5qb2luKCJcMCIpLnVuY29tbWVudC5zcGxpdCgiXDAiKQogIGVuZAoKICBk # ZWYgc3RyaXAKICAgIHNlbGYuY29sbGVjdHt8c3wgcy5zdHJpcH0KICBlbmQK # CiAgZGVmIHN1bQogICAgcmVzCT0gMAogICAgc2VsZi5lYWNoIGRvIHxufAog # ICAgICByZXMgKz0gbgogICAgZW5kCiAgICByZXMKICBlbmQKCiAgZGVmIHBy # b2R1Y3QKICAgIHJlcwk9IDEKICAgIHNlbGYuZWFjaCBkbyB8bnwKICAgICAg # cmVzICo9IG4KICAgIGVuZAogICAgcmVzCiAgZW5kCgogIGRlZiBqb2lud29y # ZHMoc2VwPSIgIiwgcXVvdGU9JyInKQogICAgc2VsZi5jb2xsZWN0IGRvIHxz # fAogICAgICBzCT0gcXVvdGUgKyBzICsgcXVvdGUJaWYgcyA9fiAvW1s6Ymxh # bms6XV0vCiAgICAgIHMKICAgIGVuZC5qb2luKHNlcCkKICBlbmQKCiAgZGVm # IGRvbWlubyh0YWJlbGxlbiwga29sb209bmlsLCBvbmx5bWF0Y2hpbmdsaW5l # cz1mYWxzZSkKICAgIGxpbmtzCT0gc2VsZgogICAgcmVzCQk9IFtdCiAgICBy # ZXMJCT0gc2VsZi5kdXAJdW5sZXNzIG9ubHltYXRjaGluZ2xpbmVzCgogICAg # dGFiZWxsZW4uZWFjaCBkbyB8cmVjaHRzfAogICAgICB0bXAJPSBbXQoKICAg # ICAgbGlua3MuZWFjaCBkbyB8bHwKICAgICAgICBpZiBrb2xvbS5uaWw/IG9y # IGwubGVuZ3RoID09IGtvbG9tCiAgICAgICAgICByZWNodHMuZWFjaCBkbyB8 # cnwKICAgICAgICAgICAgdG1wIDw8IGwgKyByWzEuLi0xXQlpZiBsWy0xXSA9 # PSByWzBdCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5kCgog # ICAgICBsaW5rcwk9IHRtcAogICAgICByZXMuY29uY2F0KHRtcCkKICAgIGVu # ZAoKICAgIHJlcwk9IHJlcy5zb3J0LnVuaXEKICBlbmQKCiAgZGVmIGRvbWlu # b2xvb3AodGFiZWxsZW4pCiAgICBscmVzCT0gW10KICAgIHJlcwkJPSBzZWxm # LmR1cAogICAga29sb20JPSAyCgogICAgd2hpbGUgbHJlcy5sZW5ndGggIT0g # cmVzLmxlbmd0aCBkbwogICAgICBscmVzCT0gcmVzLmR1cAogICAgICByZXMJ # PSByZXMuZG9taW5vKHRhYmVsbGVuLCBrb2xvbSkKCiAgICAgIHJlcy5lYWNo # IGRvIHxsaW5lfAogICAgICAgIGxpbmUgPDwgIioiCWlmIChsaW5lLmxlbmd0 # aCAhPSBsaW5lLnVuaXEubGVuZ3RoIGFuZCBsaW5lWy0xXSAhPSAiKiIpCiAg # ICAgIGVuZAoKICAgICAgJHN0ZGVyci5wcmludCAiI3sxMDAqKHJlcy5sZW5n # dGgpLyhscmVzLmxlbmd0aCl9JSAiCgogICAgICBrb2xvbSArPSAxCiAgICBl # bmQKCiAgICAkc3RkZXJyLnB1dHMgIiIKCiAgICByZXR1cm4gcmVzCiAgZW5k # CgogIGRlZiBidWlsZHRyZWUKICAgIHNlbGYuZG9taW5vbG9vcChbc2VsZl0p # CiAgZW5kCgogIGRlZiBzdWJzZXQoZmllbGRzLCB2YWx1ZXMsIHJlc3VsdHMs # IGV4YWN0PXRydWUsIGVtcHR5bGluZT1uaWwsIGpvaW53aXRoPW5pbCkKICAg # IGZpZWxkcwk9IFtmaWVsZHNdCQl1bmxlc3MgZmllbGRzLmtpbmRfb2Y/IEFy # cmF5CiAgICB2YWx1ZXMJPSBbdmFsdWVzXQkJdW5sZXNzIHZhbHVlcy5raW5k # X29mPyBBcnJheQogICAgcmVzdWx0cwk9IFtyZXN1bHRzXQkJdW5sZXNzIHJl # c3VsdHMua2luZF9vZj8gQXJyYXkKICAgIGVtcHR5bGluZQk9IGVtcHR5bGlu # ZS5kb3duY2FzZQl1bmxlc3MgZW1wdHlsaW5lLm5pbD8KICAgIHJlcwkJPSBz # ZWxmLmR1cAogICAgcmVzLmRlbGV0ZV9pZiB7dHJ1ZX0KCiAgICBzZWxmLmVh # Y2ggZG8gfGx8CiAgICAgIG9rCT0gdHJ1ZQoKICAgICAgY2FzZSBsLmNsYXNz # LnRvX3MKICAgICAgd2hlbiAiU3RyaW5nIgogICAgICAgIGMJCT0gbC5zcGxp # dHdvcmRzCiAgICAgICAgY29ycmVjdGlvbgk9IDEKICAgICAgICBqb2lud2l0 # aAk9ICIgIglpZiBqb2lud2l0aC5uaWw/CiAgICAgIHdoZW4gIkFycmF5Igog # ICAgICAgIGMJCT0gbAogICAgICAgIGNvcnJlY3Rpb24JPSAwCiAgICAgIGVu # ZAoKICAgICAgI2NhdGNoIDpzdG9wIGRvCiAgICAgICAgdmFsdWVzMgk9IHZh # bHVlcy5kdXAKICAgICAgICBmaWVsZHMuZWFjaCBkbyB8ZnwKICAgICAgICAg # IHYJPSB2YWx1ZXMyLnNoaWZ0CiAgICAgICAgICB2CT0gdi5kb3duY2FzZQl1 # bmxlc3Mgdi5uaWw/CiAgICAgICAgICBpZiBlbXB0eWxpbmUubmlsPyBvciAo # bm90IHYgPT0gZW1wdHlsaW5lKQogICAgICAgICAgICBpZiBleGFjdAogICAg # ICAgICAgICAgIHVubGVzcyAodi5uaWw/IG9yIGNbZi1jb3JyZWN0aW9uXS5k # b3duY2FzZSA9PSB2KQogICAgICAgICAgICAgICAgb2sJPSBmYWxzZQogICAg # ICAgICAgICAgICAgI3Rocm93IDpzdG9wCiAgICAgICAgICAgICAgZW5kCiAg # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB1bmxlc3MgKHYubmlsPyBv # ciBjW2YtY29ycmVjdGlvbl0uZG93bmNhc2UuaW5jbHVkZT8odikpCiAgICAg # ICAgICAgICAgICBvawk9IGZhbHNlCiAgICAgICAgICAgICAgICAjdGhyb3cg # OnN0b3AKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAg # ICAgICBlbmQKICAgICAgICBlbmQKICAgICAgI2VuZAoKICAgICAgaWYgb2sK # ICAgICAgICByZXMyCT0gW10KICAgICAgICByZXN1bHRzLmVhY2ggZG8gfG58 # CiAgICAgICAgICByZXMyIDw8IGNbbi0xXQogICAgICAgIGVuZAogICAgICAg # IHJlczIJPSByZXMyLmpvaW4oam9pbndpdGgpCXVubGVzcyBqb2lud2l0aC5u # aWw/CiAgICAgICAgcmVzIDw8IHJlczIKICAgICAgZW5kCiAgICBlbmQKCiAg # ICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiBmb3JtYXQoZm9ybWF0KQogICAg # Zm9ybWF0CT0gZm9ybWF0LmdzdWIoL1xzLywgIiIpCiAgICByZXMJCT0gW10K # CiAgICBbZm9ybWF0Lmxlbmd0aCwgc2VsZi5sZW5ndGhdLm1pbi50aW1lcyBk # byB8bnwKICAgICAgY2FzZSBmb3JtYXRbbl0uY2hyLmRvd25jYXNlCiAgICAg # IHdoZW4gImkiCXRoZW4JcmVzIDw8IHNlbGZbbl0udG9faQogICAgICB3aGVu # ICJzIgl0aGVuCXJlcyA8PCBzZWxmW25dLnRvX3MKICAgICAgZWxzZQkJcmVz # IDw8IHNlbGZbbl0KICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMKICBlbmQK # CiAgZGVmIHRvX2kKICAgIGNvbGxlY3R7fGN8IGMudG9faX0KICBlbmQKCiAg # ZGVmIHRvX3BhcgogICAgZGFzaAk9IHNlbGYuZHVwCiAgICBhbHBoYQk9IHNl # bGYuZHVwCiAgICBudW1lcmljCT0gc2VsZi5kdXAKCiAgICBkYXNoLmRlbGV0 # ZV9pZiBkbyB8c3wKICAgICAgbm90IChzID1+IC9cQS0vKSBvcgogICAgICAo # cyA9fiAvXEEtP1tbOmRpZ2l0Ol1cLl0rXHovKSBvcgogICAgICAocyA9fiAv # Xi0rJC8pCiAgICBlbmQKCiAgICBhbHBoYS5kZWxldGVfaWYgZG8gfHN8CiAg # ICAgICgocyA9fiAvXEEtLykgb3IKICAgICAgIChzID1+IC9cQS0/W1s6ZGln # aXQ6XVwuXStcei8pKSBhbmQKICAgICAgbm90ICgocyA9fiAvXlwuKyQvKSBv # ciAocyA9fiAvXi0rJC8pKQogICAgZW5kCgogICAgbnVtZXJpYy5kZWxldGVf # aWYgZG8gfHN8CiAgICAgIG5vdCAocyA9fiAvXEEtP1tbOmRpZ2l0Ol1cLl0r # XHovKSBvcgogICAgICAocyA9fiAvXlwuKyQvKQogICAgZW5kCgogICAgcmFp # c2UgIk9vcHMhIglpZiBkYXNoLmxlbmd0aCArIGFscGhhLmxlbmd0aCArIG51 # bWVyaWMubGVuZ3RoICE9IGxlbmd0aAoKICAgIHJldHVybiBkYXNoLCBhbHBo # YSwgbnVtZXJpYwogIGVuZAoKICBkZWYgc2VsZi5maWxlKGZpbGUpCiAgICBy # ZXMJPSBuZXcKCiAgICBGaWxlLm9wZW4oZmlsZSkgZG8gfGZ8CiAgICAgIGYu # cmVhZGxpbmVzLnVuY29tbWVudC5jaG9tcC5lYWNoIGRvIHxsaW5lfAogICAg # ICAgIHJlcyA8PCBsaW5lCiAgICAgIGVuZAogICAgZW5kCgogICAgcmVzCiAg # ZW5kCgogIGRlZiBudW1zb3J0CiAgICBzb3J0IGRvIHxhLCBifAogICAgICBh # Mgk9IGEudG9fZnMKICAgICAgYjIJPSBiLnRvX2ZzCgogICAgICBpZiBhMi5j # bGFzcyAhPSBiMi5jbGFzcwogICAgICAgIGEyCT0gYQogICAgICAgIGIyCT0g # YgogICAgICBlbmQKCiAgICAgIGEyIDw9PiBiMgogICAgZW5kCiAgZW5kCgog # IGRlZiB0b19mcwogICAgY29sbGVjdHt8c3wgcy50b19mc30KICBlbmQKCiAg # ZGVmIGNoYW9zCiAgICByZXMJPSBzZWxmLmR1cAoKICAgIChsZW5ndGheMiku # dGltZXMgZG8KICAgICAgYQk9IHJhbmQobGVuZ3RoKQogICAgICBiCT0gcmFu # ZChsZW5ndGgpCgogICAgICByZXNbYV0sIHJlc1tiXQk9IHJlc1tiXSwgcmVz # W2FdCiAgICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIGFueQogICAgaWYg # ZW1wdHk/CiAgICAgIG5pbAogICAgZWxzZQogICAgICBzZWxmW3JhbmQoc2Vs # Zi5sZW5ndGgpXQogICAgZW5kCiAgZW5kCgogIGRlZiBtaW5tYXgKICAgIG1p # biwgdmFsdWUsIG1heAk9IHNlbGYKICAgIFttaW4sIFt2YWx1ZSwgbWF4XS5t # aW5dLm1heAogIGVuZAoKICBkZWYgaWRzCiAgICBjb2xsZWN0e3xlfCBlLmlk # c30KICBlbmQKCiAgZGVmIHJvdGF0ZQogICAgcmFpc2UgIkFycmF5IGhhcyB0 # byBiZSAyRCAoQW4gQXJyYXkgb2YgQXJyYXlzKS4iCXVubGVzcyBzZWxmLmR1 # cC5kZWxldGVfaWZ7fGF8IGEua2luZF9vZj8oQXJyYXkpfS5lbXB0eT8KCiAg # ICByZXMJPSBbXQoKICAgIHNlbGZbMF0ubGVuZ3RoLnRpbWVzIGRvIHx4fAog # ICAgICBhCT0gW10KCiAgICAgIHNlbGYubGVuZ3RoLnRpbWVzIGRvIHx5fAog # ICAgICAgIGEgPDwgc2VsZlt5XVt4XQogICAgICBlbmQKCiAgICAgIHJlcyA8 # PCBhCiAgICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIHRvX2gKICAgIHJh # aXNlICJBcnJheSBoYXMgdG8gYmUgMkQgKEFuIEFycmF5IG9mIEFycmF5cyku # Igl1bmxlc3Mgc2VsZi5kdXAuZGVsZXRlX2lme3xhfCBhLmtpbmRfb2Y/KEFy # cmF5KX0uZW1wdHk/CgogICAgcmVzCT0ge30KCiAgICBzZWxmLmVhY2ggZG8g # fGssIHYsICpyZXN0fAogICAgICByZXNba10JPSB2CiAgICBlbmQKCiAgICBy # ZXMKICBlbmQKZW5kCgpjbGFzcyBIYXNoCiAgZGVmIHNhdmUoZmlsZSwgYXBw # ZW5kPWZhbHNlKQogICAgb3JnCT0ge30KICAgIG9yZwk9IEhhc2guZmlsZShm # aWxlKQlpZiAoYXBwZW5kIGFuZCBGaWxlLmZpbGU/KGZpbGUpKQoKICAgIHNl # bGYuc29ydC5lYWNoIGRvIHxrLCB2fAogICAgICBvcmdba10JPSB2CiAgICBl # bmQKCiAgICBGaWxlLm9wZW4oZmlsZSwgInciKSBkbyB8ZnwKICAgICAgb3Jn # LnNvcnQuZWFjaCBkbyB8aywgdnwKICAgICAgICBmLnB1dHMgIiVzXHQ9ICVz # IiAlIFtrLCB2XQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgc3Vi # c2V0KGZpZWxkcywgdmFsdWVzLCByZXN1bHRzPW5pbCwgZXhhY3Q9dHJ1ZSwg # ZW1wdHlsaW5lPW5pbCwgam9pbndpdGg9bmlsKQogICAgZmllbGRzCT0gW2Zp # ZWxkc10JCXVubGVzcyBmaWVsZHMua2luZF9vZj8gQXJyYXkKICAgIHZhbHVl # cwk9IFt2YWx1ZXNdCQl1bmxlc3MgdmFsdWVzLmtpbmRfb2Y/IEFycmF5CiAg # ICByZXN1bHRzCT0gW3Jlc3VsdHNdCQl1bmxlc3MgcmVzdWx0cy5raW5kX29m # PyBBcnJheQogICAgZW1wdHlsaW5lCT0gZW1wdHlsaW5lLmRvd25jYXNlCXVu # bGVzcyBlbXB0eWxpbmUubmlsPwogICAgcmVzCQk9IHNlbGYuZHVwCiAgICBy # ZXMuZGVsZXRlX2lmIHt0cnVlfQoKICAgIHNlbGYuZWFjaCBkbyB8aywgbHwK # ICAgICAgb2sJPSB0cnVlCgogICAgICBjYXNlIGwuY2xhc3MudG9fcwogICAg # ICB3aGVuICJTdHJpbmciCiAgICAgICAgYwkJPSBsLnNwbGl0d29yZHMKICAg # ICAgICBjb3JyZWN0aW9uCT0gMQogICAgICAgIGpvaW53aXRoCT0gIiAiCWlm # IGpvaW53aXRoLm5pbD8KICAgICAgd2hlbiAiQXJyYXkiCiAgICAgICAgYwkJ # PSBsCiAgICAgICAgY29ycmVjdGlvbgk9IDAKICAgICAgZW5kCgogICAgICAj # Y2F0Y2ggOnN0b3AgZG8KICAgICAgICB2YWx1ZXMyCT0gdmFsdWVzLmR1cAog # ICAgICAgIGZpZWxkcy5lYWNoIGRvIHxmfAogICAgICAgICAgdgk9IHZhbHVl # czIuc2hpZnQKICAgICAgICAgIHYJPSB2LmRvd25jYXNlCXVubGVzcyB2Lm5p # bD8KICAgICAgICAgIGlmIGVtcHR5bGluZS5uaWw/IG9yIChub3QgdiA9PSBl # bXB0eWxpbmUpCiAgICAgICAgICAgIGlmIGV4YWN0CiAgICAgICAgICAgICAg # dW5sZXNzICh2Lm5pbD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlID09 # IHYpCiAgICAgICAgICAgICAgICBvawk9IGZhbHNlCiAgICAgICAgICAgICAg # ICAjdGhyb3cgOnN0b3AKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg # ZWxzZQogICAgICAgICAgICAgIHVubGVzcyAodi5uaWw/IG9yIGNbZi1jb3Jy # ZWN0aW9uXS5kb3duY2FzZS5pbmNsdWRlPyh2KSkKICAgICAgICAgICAgICAg # IG9rCT0gZmFsc2UKICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAogICAg # ICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICAgIGVuZAog # ICAgICAgIGVuZAogICAgICAjZW5kCgogICAgICBpZiBvawogICAgICAgIHJl # czIJPSBbXQogICAgICAgIGlmIHJlc3VsdHMgPT0gW25pbF0KICAgICAgICAg # IHJlczIJPSBjCiAgICAgICAgZWxzZQogICAgICAgICAgcmVzdWx0cy5lYWNo # IGRvIHxufAogICAgICAgICAgICByZXMyIDw8IGNbbi1jb3JyZWN0aW9uXQog # ICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgICAgcmVzMgk9IHJlczIu # am9pbihqb2lud2l0aCkJdW5sZXNzIGpvaW53aXRoLm5pbD8KICAgICAgICBy # ZXNba10JPSByZXMyCiAgICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHJl # cwogIGVuZAoKICBkZWYgdG9faQogICAgY29sbGVjdHt8aywgdnwgdi50b19p # fQogIGVuZAoKICBkZWYgc2VsZi5maWxlKGZpbGUpCiAgICByZXMJPSBuZXcK # CiAgICBGaWxlLm9wZW4oZmlsZSkgZG8gfGZ8CiAgICAgICNmLnJlYWRsaW5l # cy5jaG9tcC5lYWNoIGRvIHxsaW5lfAogICAgICB3aGlsZSBsaW5lID0gZi5n # ZXRzIGRvCiAgICAgICAgbGluZS5jaG9tcCEKCiAgICAgICAgdW5sZXNzIGxp # bmUuZW1wdHk/CiAgICAgICAgICBrLCB2CT0gbGluZS5zcGxpdCgvXHMqPVxz # Ki8sIDIpCiAgICAgICAgICByZXNba10JPSB2CiAgICAgICAgZW5kCiAgICAg # IGVuZAogICAgZW5kCgogICAgcmVzCiAgZW5kCgogIGRlZiBpZHMKICAgIGNv # bGxlY3R7fGssIHZ8IFtrLCB2XS5pZHN9CiAgZW5kCmVuZAoKZGVmIGlkMnJl # ZihpZCkKICBPYmplY3RTcGFjZS5faWQycmVmKGlkKQplbmQKCmRlZiBhZnRl # cihzZWNvbmRzLCAqYXJncykKICBpZiBub3Qgc2Vjb25kcy5uaWw/IGFuZCBu # b3Qgc2Vjb25kcy56ZXJvPwogICAgVGhyZWFkLm5ldygqYXJncykgZG8gfCph # cmdzMnwKICAgICAgc2xlZXAgc2Vjb25kcwogICAgICB5aWVsZCgqYXJnczIp # CiAgICBlbmQKICBlbmQKZW5kCgpkZWYgZXZlcnkoc2Vjb25kcywgKmFyZ3Mp # CiAgaWYgbm90IHNlY29uZHMubmlsPyBhbmQgbm90IHNlY29uZHMuemVybz8K # ICAgIFRocmVhZC5uZXcoKmFyZ3MpIGRvIHwqYXJnczJ8CiAgICAgIGxvb3Ag # ZG8KICAgICAgICBzbGVlcCBzZWNvbmRzCiAgICAgICAgeWllbGQoKmFyZ3My # KQogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCmRlZiBldnRpbWVvdXQo # c2Vjb25kcykKICBiZWdpbgogICAgdGltZW91dChzZWNvbmRzKSBkbwogICAg # ICB5aWVsZAogICAgZW5kCiAgcmVzY3VlIFRpbWVvdXRFcnJvcgogIGVuZApl # bmQKCmRlZiBldnRpbWVvdXRyZXRyeShzZWNvbmRzKQogIG9rCT0gZmFsc2UK # CiAgd2hpbGUgbm90IG9rCiAgICBldnRpbWVvdXQoc2Vjb25kcykgZG8KICAg # ICAgeWllbGQKICAgICAgb2sJPSB0cnVlCiAgICBlbmQKICBlbmQKZW5kCgpk # ZWYgdHJhcChzaWduYWwpCiAgS2VybmVsOjp0cmFwKHNpZ25hbCkgZG8KICAg # IHlpZWxkCiAgZW5kCgoJIyBTZWVtcyBwb2ludGxlc3MsIGJ1dCBpdCdzIGZv # ciBjYXRjaGluZyBeQyB1bmRlciBXaW5kb3dzLi4uCgogIGV2ZXJ5KDEpCXt9 # CWlmIHdpbmRvd3M/CmVuZAoKZGVmIGxpbnV4PwogIG5vdCAodGFyZ2V0X29z # LmRvd25jYXNlID1+IC9saW51eC8pLm5pbD8KZW5kCgpkZWYgZGFyd2luPwog # IG5vdCAodGFyZ2V0X29zLmRvd25jYXNlID1+IC9kYXJ3aW4vKS5uaWw/CmVu # ZAoKZGVmIHdpbmRvd3M/CiAgbm90ICh0YXJnZXRfb3MuZG93bmNhc2UgPX4g # LzMyLykubmlsPwplbmQKCmRlZiBjeWd3aW4/CiAgbm90ICh0YXJnZXRfb3Mu # ZG93bmNhc2UgPX4gL2N5Zy8pLm5pbD8KZW5kCgpkZWYgdGFyZ2V0X29zCiAg # Q29uZmlnOjpDT05GSUdbInRhcmdldF9vcyJdIG9yICIiCmVuZAoKZGVmIHVz # ZXIKICBFTlZbIlVTRVIiXSBvciBFTlZbIlVTRVJOQU1FIl0KZW5kCgpkZWYg # aG9tZQogIChFTlZbIkhPTUUiXSBvciBFTlZbIlVTRVJQUk9GSUxFIl0gb3Ig # KEZpbGUuZGlyZWN0b3J5PygiaDovIikgPyAiaDoiIDogImM6IikpLmdzdWIo # L1xcLywgIi8iKQplbmQKCmRlZiB0ZW1wCiAgKEVOVlsiVE1QRElSIl0gb3Ig # RU5WWyJUTVAiXSBvciBFTlZbIlRFTVAiXSBvciAiL3RtcCIpLmdzdWIoL1xc # LywgIi8iKQplbmQKCmRlZiBzdGR0bXAKICAkc3RkZXJyID0gJHN0ZG91dCA9 # IEZpbGUubmV3KCIje3RlbXB9L3J1YnkuI3tQcm9jZXNzLnBpZH0ubG9nIiwg # ImEiKQplbmQKc3RkdG1wCWlmIGRlZmluZWQ/KFJVQllTQ1JJUFQyRVhFKSBh # bmQgKFJVQllTQ1JJUFQyRVhFID1+IC9ydWJ5dy9pKQoKJG5vYm0JPSBmYWxz # ZQoKZGVmIG5vYm0KICAkbm9ibQk9IHRydWUKZW5kCgpkZWYgYm0obGFiZWw9 # IiIpCiAgaWYgJG5vYm0KICAgIGlmIGJsb2NrX2dpdmVuPwogICAgICByZXR1 # cm4geWllbGQKICAgIGVsc2UKICAgICAgcmV0dXJuIG5pbAogICAgZW5kCiAg # ZW5kCgogIGxhYmVsCT0gbGFiZWwuaW5zcGVjdAkjdW5sZXNzIGxhYmVsLmtp # bmRfb2Y/KFN0cmluZykKICByZXMJPSBuaWwKCiAgJGJtX211dGV4CT0gKCRi # bV9tdXRleCBvciBNdXRleC5uZXcpCgogICRibV9tdXRleC5zeW5jaHJvbml6 # ZSBkbwogICAgaWYgJGJtLm5pbD8KICAgICAgcmVxdWlyZSAiZXYvYm0iCgog # ICAgICAkYm0JCT0ge30KCiAgICAgIGF0X2V4aXQgZG8KICAgICAgICBsCT0g # JGJtLmtleXMuY29sbGVjdHt8c3wgcy5sZW5ndGh9Lm1heAoJI2Zvcm1hdDEJ # PSAiJTEwcyAlMTBzICUxMHMgJTEwcyAlMTBzICUxMHMgICAlcyIKCSNmb3Jt # YXQyCT0gIiUxMC42ZiAlMTAuNmYgJTEwLjZmICUxMC42ZiAlMTAuNmYgJTEw # ZCAgICVzIgoJIyRzdGRlcnIucHV0cyBmb3JtYXQxICUgWyJVU0VSQ1BVIiwg # IlNZU0NQVSIsICJDVVNFUkNQVSIsICJDU1lTQ1BVIiwgIkVMQVBTRUQiLCAi # Q09VTlQiLCAiTEFCRUwiXQoJIyRibS5zb3J0e3xhLCBifCBbYlsxXSwgYlsw # XV0gPD0+IFthWzFdLCBhWzBdXX0uZWFjaCBkbyB8aywgdnwKCSAgIyRzdGRl # cnIucHV0cyBmb3JtYXQyICUgKHYgKyBba10pCgkjZW5kCgoJZm9ybWF0MQk9 # ICIlMTBzICUxMHMgJTEwcyAgICVzIgoJZm9ybWF0Mgk9ICIlMTAuNmYgJTEw # LjZmICUxMGQgICAlcyIKICAgICAgICAkYm0uZWFjaCBkbyB8aywgdnwKICAg # ICAgICAgICRibVtrXQk9IFt2WzBdK3ZbMV0sIHZbNF0sIHZbNV1dCiAgICAg # ICAgZW5kCgkkc3RkZXJyLnB1dHMgZm9ybWF0MSAlIFsiQ1BVIiwgIkVMQVBT # RUQiLCAiQ09VTlQiLCAiTEFCRUwiXQoJJGJtLnNvcnR7fGEsIGJ8IFtiWzFd # LCBiWzBdXSA8PT4gW2FbMV0sIGFbMF1dfS5lYWNoIGRvIHxrLCB2fAoJICAk # c3RkZXJyLnB1dHMgZm9ybWF0MiAlICh2ICsgW2tdKQoJZW5kCiAgICAgIGVu # ZAogICAgZW5kCgogICAgJGJtW2xhYmVsXSA9IFswLjBdKjUgKyBbMF0JdW5s # ZXNzICRibS5pbmNsdWRlPyhsYWJlbCkKICAgICRibVtsYWJlbF1bNV0gKz0g # MQogIGVuZAoKICBpZiBibG9ja19naXZlbj8KICAgIGJtCT0gQmVuY2htYXJr # Lm1lYXN1cmV7cmVzID0geWllbGR9CiAgICBibWEJPSBibS50b19hCSMgW2R1 # bW15IGxhYmVsLCB1c2VyIENQVSB0aW1lLCBzeXN0ZW0gQ1BVIHRpbWUsIGNo # aWxkcmVucyB1c2VyIENQVSB0aW1lLCBjaGlsZHJlbnMgc3lzdGVtIENQVSB0 # aW1lLCBlbGFwc2VkIHJlYWwgdGltZV0KCiAgICAkYm1fbGFzdAk9IGJtYQoK # ICAgICRibV9tdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICBlCT0gJGJtW2xh # YmVsXQogICAgICAwLnVwdG8oNCkgZG8gfG58CiAgICAgICAgZVtuXSArPSBi # bWFbbisxXQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICByZXMKZW5kCgpk # ZWYgdHJhY2UKICByZXMJPW5pbAoKICBzZXRfdHJhY2VfZnVuYyBsYW1iZGEg # eyB8ZXZlbnQsIGZpbGUsIGxpbmUsIGlkLCBiaW5kaW5nLCBjbGFzc25hbWV8 # CiAgICAkc3RkZXJyLnByaW50ZiAiJThzICVzOiUtMmQgJTEwcyAlOHNcbiIs # IGV2ZW50LCBmaWxlLCBsaW5lLCBpZCwgY2xhc3NuYW1lCiAgfQoKICBpZiBi # bG9ja19naXZlbj8KICAgIHJlcwk9IHlpZWxkCgogICAgbm90cmFjZQogIGVu # ZAoKICByZXMKZW5kCgpkZWYgbm90cmFjZQogIHNldF90cmFjZV9mdW5jIG5p # bAplbmQKCmRlZiBsYW1iZGFfY2FjaGVkKCZibG9jaykKICBoYXNoCT0ge30K # ICBsYW1iZGEgZG8gfCphcmdzfAogICAgcmVzCT0gaGFzaFthcmdzXQogICAg # aWYgcmVzLm5pbD8KICAgICAgcmVzCQk9IGJsb2NrLmNhbGwoKmFyZ3MpCiAg # ICAgIGhhc2hbYXJnc10JPSByZXMKICAgIGVuZAogICAgcmVzCiAgZW5kCmVu # ZAoKZGVmIGFzayhvcHRpb25zLCB0ZXh0PWZhbHNlKQogIGkJPSAwCiAgJHN0 # ZGVyci5wdXRzICIiCiAgb3B0aW9ucy5lYWNoIGRvIHxzfAogICAgJHN0ZGVy # ci5wdXRzICIgJWQgJXMiICUgW2krPTEsIHNdCiAgZW5kCiAgJHN0ZGVyci5w # dXRzICIiCiAgJHN0ZGVyci5wcmludCAiPyAiCiAgcmVzCT0gJHN0ZGluLmdl # dHMKICB1bmxlc3MgcmVzLm5pbD8KICAgIHJlcwk9IHJlcy5zdHJpcAogICAg # cmVzCT0gb3B0aW9uc1tyZXMudG9faS0xXQlpZiB0ZXh0IGFuZCBub3QgcmVz # LmVtcHR5PwogIGVuZAogIHJlcwplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1OTQudGFyL2V2L3htbC5yYgAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1MzE1 # ADEwMjUwMzIwNjEzADAxNzc3NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAByZXF1aXJlICJldi9zZ21sIgoKY2xhc3MgU0dN # TE9iamVjdAogIGRlZiB0b194KGNsb3NldGFncz10cnVlKQogICAgcmVzCT0g # IiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVuX3RvX3giLCAicG9zdGNo # aWxkcmVuX3RvX3giLCByZXMsIGNsb3NldGFncykKCiAgICByZXMKICBlbmQK # ZW5kCgpjbGFzcyBUZXh0IDwgU0dNTE9iamVjdAogIGRlZiBwcmVjaGlsZHJl # bl90b194KHJlcywgY2xvc2V0YWdzKQogICAgcmVzIDw8IEB0ZXh0LnN0cmlw # CXVubGVzcyBAdGV4dC5zdHJpcC5lbXB0eT8KICBlbmQKZW5kCgpjbGFzcyBD # b21tZW50IDwgU0dNTE9iamVjdAogIGRlZiBwcmVjaGlsZHJlbl90b194KHJl # cywgY2xvc2V0YWdzKQogICAgcmVzIDw8ICJcbiIJaWYgbm90IHByZXZpb3Vz # KFtdLCBbVGV4dF0pLmtpbmRfb2Y/KENvbW1lbnQpCiAgICBsaW5lcwk9IEB0 # ZXh0LmdzdWIoLyg8IS0tfC0tPikvLCAiIikubGYuc3BsaXQoL1xuLykKICAg # IGlmIGxpbmVzLmxlbmd0aCA9PSAxCiAgICAgIHJlcyA8PCAiICAiKihAbGV2 # ZWwtMSkgKyAiPCEtLSAiICsgbGluZXNbMF0uc3RyaXAgKyAiIC0tPiIgKyAi # XG4iCiAgICBlbHNlCiAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkgKyAi # PCEtLSIgKyAiXG4iCiAgICAgIHJlcyA8PCBsaW5lcy5jb2xsZWN0e3xzfCAi # ICAiKihAbGV2ZWwtMSkgKyBzLnN0cmlwfS5kZWxldGVfaWZ7fHN8IHMuY29t # cHJlc3MuZW1wdHk/fS5qb2luKCJcbiIpCiAgICAgIHJlcyA8PCAiXG4iCiAg # ICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkgKyAiLS0+IiArICJcbiIKICAg # ICAgcmVzIDw8ICJcbiIKICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIFNwZWNp # YWwgPCBTR01MT2JqZWN0CiAgZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBj # bG9zZXRhZ3MpCiAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgQHRleHQu # Y29tcHJlc3MgKyAiXG4iCiAgZW5kCmVuZAoKY2xhc3MgSW5zdHJ1Y3Rpb24g # PCBTR01MT2JqZWN0CiAgZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBjbG9z # ZXRhZ3MpCiAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgQHRleHQuY29t # cHJlc3MgKyAiXG4iCiAgZW5kCmVuZAoKY2xhc3MgT3BlblRhZyA8IFRhZwog # IGRlZiBwcmVjaGlsZHJlbl90b194KHJlcywgY2xvc2V0YWdzKQogICAgYQk9 # IFtAc3VidHlwZV0KCiAgICBhcmdzCT0gQGFyZ3MuZHVwCiAgICBhcmdzLmRl # bGV0ZSgiaWQiKQogICAgYXJncy5kZWxldGUoIm5hbWUiKQogICAgYXJncwk9 # IGFyZ3Muc29ydAogICAgYXJncy51bnNoaWZ0KFsiaWQiLCBAYXJnc1siaWQi # XV0pCQlpZiBAYXJncy5pbmNsdWRlPygiaWQiKQogICAgYXJncy51bnNoaWZ0 # KFsibmFtZSIsIEBhcmdzWyJuYW1lIl1dKQlpZiBAYXJncy5pbmNsdWRlPygi # bmFtZSIpCgogICAgYXJncy5lYWNoIGRvIHxrLCB2fAogICAgICBpZiBub3Qg # di5pbmNsdWRlPygiJyIpCiAgICAgICAgYSA8PCAiI3trfT0nI3t2fSciCiAg # ICAgIGVsc2UKICAgICAgICBpZiBub3Qgdi5pbmNsdWRlPygnIicpCiAgICAg # ICAgICBhIDw8ICIje2t9PVwiI3t2fVwiIgogICAgICAgIGVsc2UKICAgICAg # ICAgIGEgPDwgIiN7a309JyN7di5nc3ViKC9cJy8sICciJyl9JyIKICAgICAg # ICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICBpZiBAY2hpbGRyZW4ubGVu # Z3RoID09IDAgb3IgKEBjaGlsZHJlbi5sZW5ndGggPT0gMSBhbmQgQGNoaWxk # cmVuWzBdLmtpbmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0udGV4dC5j # b21wcmVzcy5lbXB0eT8pCiAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkg # KyAiPCN7YS5qb2luKCIgIil9Lz4iICsgIlxuIgogICAgZWxzZQogICAgICBp # ZiBAY2hpbGRyZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5raW5k # X29mPyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQubGYuc3BsaXQoL1xu # LykubGVuZ3RoID09IDEKICAgICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEp # ICsgIjwje2Euam9pbigiICIpfT4iCiAgICAgIGVsc2UKICAgICAgICByZXMg # PDwgIiAgIiooQGxldmVsLTEpICsgIjwje2Euam9pbigiICIpfT4iICsgIlxu # IgogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgcG9zdGNoaWxkcmVu # X3RvX3gocmVzLCBjbG9zZXRhZ3MpCiAgICBpZiBjbG9zZXRhZ3MKICAgICAg # dW5sZXNzIEBjaGlsZHJlbi5sZW5ndGggPT0gMCBvciAoQGNoaWxkcmVuLmxl # bmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0ua2luZF9vZj8oVGV4dCkgYW5k # IEBjaGlsZHJlblswXS50ZXh0LmNvbXByZXNzLmVtcHR5PykKICAgICAgICBy # ZXMgPDwgIlxuIgkJaWYgQGNoaWxkcmVuLmxlbmd0aCA9PSAxIGFuZCBAY2hp # bGRyZW5bMF0ua2luZF9vZj8oVGV4dCkgYW5kIEBjaGlsZHJlblswXS50ZXh0 # LmxmLnNwbGl0KC9cbi8pLmxlbmd0aCA+IDEKICAgICAgICByZXMgPDwgIiAg # IiooQGxldmVsLTEpCXVubGVzcyBAY2hpbGRyZW4ubGVuZ3RoID09IDEgYW5k # IEBjaGlsZHJlblswXS5raW5kX29mPyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBd # LnRleHQubGYuc3BsaXQoL1xuLykubGVuZ3RoID09IDEKICAgICAgICByZXMg # PDwgIjwvI3tAc3VidHlwZX0+IgogICAgICAgIHJlcyA8PCAiXG4iCiAgICAg # IGVuZAogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgWE1MIDwgU0dNTAogIGRl # ZiB0b194KGNsb3NldGFncz10cnVlKQogICAgcmVzCT0gIiIKCiAgICBwYXJz # ZXRyZWUoInByZWNoaWxkcmVuX3RvX3giLCAicG9zdGNoaWxkcmVuX3RvX3gi # LCByZXMsIGNsb3NldGFncykKCiAgICByZXMKICBlbmQKZW5kCgAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMTU5NC50YXIvZXYvc2dtbC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1 # NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMTAxMjUAMTAyNTAzMjA2MTMAMDIw # MTMxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHJlcXVpcmUgImV2L3RyZWUiCgpjbGFzcyBTR01MT2JqZWN0IDwgVHJlZU9i # amVjdAogIGRlZiB0b19zCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgi # cHJlY2hpbGRyZW5fdG9fcyIsICJwb3N0Y2hpbGRyZW5fdG9fcyIsIHJlcykK # CiAgICByZXMKICBlbmQKCiAgZGVmIHRvX2gKICAgIHJlcwk9ICIiCgogICAg # cGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19zZ21sIiwgInBvc3RjaGlsZHJl # bl90b19zZ21sIiwgcmVzKQoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIFRl # eHQgPCBTR01MT2JqZWN0CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1 # cGVyKCkKICAgIEB0ZXh0ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRy # ZW5fdG9fcyhyZXMpCiAgICAjcmVzIDw8ICIje0NHSS51bmVzY2FwZUhUTUwo # QHRleHQpfSAiCiAgICByZXMgPDwgQHRleHQKICBlbmQKCiAgZGVmIHByZWNo # aWxkcmVuX3RvX3NnbWwocmVzKQogICAgI3JlcyA8PCAiI3tDR0kudW5lc2Nh # cGVIVE1MKEB0ZXh0KX0iCiAgICByZXMgPDwgQHRleHQKICBlbmQKZW5kCgpj # bGFzcyBDb21tZW50IDwgU0dNTE9iamVjdAogIGRlZiBpbml0aWFsaXplKHRl # eHQpCiAgICBzdXBlcigpCiAgICBAdGV4dCA9IHRleHQKICBlbmQKCiAgZGVm # IHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgcmVzIDw8ICIje0B0ZXh0 # fSIKICBlbmQKZW5kCgpjbGFzcyBTcGVjaWFsIDwgU0dNTE9iamVjdAogIGRl # ZiBpbml0aWFsaXplKHRleHQpCiAgICBzdXBlcigpCiAgICBAdGV4dCA9IHRl # eHQKICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAg # cmVzIDw8ICIje0B0ZXh0fSIKICBlbmQKZW5kCgpjbGFzcyBJbnN0cnVjdGlv # biA8IFNHTUxPYmplY3QKICBkZWYgaW5pdGlhbGl6ZSh0ZXh0KQogICAgc3Vw # ZXIoKQogICAgQHRleHQgPSB0ZXh0CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJl # bl90b19zZ21sKHJlcykKICAgIHJlcyA8PCAiI3tAdGV4dH0iCiAgZW5kCmVu # ZAoKY2xhc3MgVGFnIDwgU0dNTE9iamVjdAogIGF0dHJfcmVhZGVyIDphcmdz # CiAgYXR0cl93cml0ZXIgOmFyZ3MKCiAgZGVmIGluaXRpYWxpemUoc3VidHlw # ZSwgYXJncz17fSkKICAgIHN1cGVyKHN1YnR5cGUpCiAgICBAYXJncyA9IGFy # Z3MKICAgIEB0ZXh0ID0gIiIKICBlbmQKZW5kCgpjbGFzcyBPcGVuVGFnIDwg # VGFnCiAgZGVmIGluaXRpYWxpemUoKmFyZ3MpCiAgICBzdXBlcgogICAgQHVw # b3Jkb3duID0gRG93bgogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dt # bChyZXMpCiAgICBhCT0gW0BzdWJ0eXBlXQoKICAgIEBhcmdzLnNvcnQuZWFj # aCBkbyB8aywgdnwKICAgICAgaWYgbm90IHYuaW5jbHVkZT8oIiciKQogICAg # ICAgIGEgPDwgIiN7a309JyN7dn0nIgogICAgICBlbHNlCiAgICAgICAgaWYg # bm90IHYuaW5jbHVkZT8oJyInKQogICAgICAgICAgYSA8PCAiI3trfT1cIiN7 # dn1cIiIKICAgICAgICBlbHNlCiAgICAgICAgICBhIDw8ICIje2t9PScje3Yu # Z3N1YigvXCcvLCAnIicpfSciCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAg # ZW5kCgogICAgcmVzIDw8ICI8I3thLmpvaW4oIiAiKX0+IiArIEB0ZXh0CiAg # ZW5kCgogIGRlZiBwb3N0Y2hpbGRyZW5fdG9fc2dtbChyZXMpCiAgICByZXMg # PDwgIjwvI3tAc3VidHlwZX0+IglpZiBAY2xvc2VkCiAgZW5kCmVuZAoKY2xh # c3MgQ2xvc2VUYWcgPCBUYWcKICBkZWYgaW5pdGlhbGl6ZSgqYXJncykKICAg # IHN1cGVyCiAgICBAdXBvcmRvd24gPSBEdW1teQogIGVuZAplbmQKCmNsYXNz # IFNHTUwgPCBUcmVlCiAgZGVmIGluaXRpYWxpemUoKmFyZ3MpCiAgICBAdGFn # Y2FjaGUJPSB7fQoKICAgIHN1cGVyCiAgZW5kCgogIGRlZiBidWlsZG9iamVj # dHMoc3RyaW5nKQogICAgQG9iamVjdHMgPSBbXQoKICAgIHZlcndlcmszCT0K # ICAgIGxhbWJkYSBkbyB8c3RyaW5nfAogICAgICBhCT0gW10KICAKICAgICAg # c3RyaW5nWzEuLi0yXS5zcGxpdGJsb2NrcyhbIiciLCAiJyJdLCBbJyInLCAn # IiddKS5jb2xsZWN0IGRvIHx0eXBlLCBzfAogICAgICAgIGNhc2UgdHlwZQog # ICAgICAgIHdoZW4gMAogICAgICAgICAgaWYgc2VsZi5jbGFzcy50b19zID09 # ICJIVE1MIgogICAgICAgICAgICBzLnNwbGl0d29yZHMuZWFjaCBkbyB8d3wK # ICAgICAgICAgICAgICBkCT0gdy5zcGxpdCgiPSIsIDIpCiAgCiAgICAgICAg # ICAgICAgaWYgZC5sZW5ndGggPT0gMQogICAgICAgICAgICAgICAgYSA8PCBk # WzBdCiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYSA8PCBk # WzBdCWlmIG5vdCBkWzBdLm5pbD8gYW5kIG5vdCBkWzBdLmVtcHR5PwogICAg # ICAgICAgICAgICAgYSA8PCAiPSIKICAgICAgICAgICAgICAgIGEgPDwgZFsx # XQlpZiBub3QgZFsxXS5uaWw/IGFuZCBub3QgZFsxXS5lbXB0eT8KICAgICAg # ICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbHNlCiAg # ICAgICAgICAgIGEuY29uY2F0IHMuc3BsaXR3b3JkcyhbIi8iLCAiPSJdKQog # ICAgICAgICAgZW5kCiAgICAgICAgd2hlbiAxLCAyCXRoZW4gYSA8PCBzCiAg # ICAgICAgZW5kCiAgICAgIGVuZAogIAogICAgICBvcGVuCT0gZmFsc2UKICAg # ICAgY2xvc2UJPSBmYWxzZQogIAogICAgICBhID0gYVswXS5zcGxpdHdvcmRz # KCIvIikgKyBhWzEuLi0xXQogIAogICAgICBpZiBhWzBdID09ICIvIgogICAg # ICAgIGNsb3NlCT0gdHJ1ZQogICAgICAgIGEuc2hpZnQKICAgICAgZWxzZQog # ICAgICAgIG9wZW4JPSB0cnVlCiAgICAgIGVuZAogIAogICAgICBpZiBhWy0x # XSA9PSAiLyIKICAgICAgICBjbG9zZQk9IHRydWUKICAgICAgICBhLnBvcAog # ICAgICBlbmQKICAKICAgICAgdGFnCT0gYS5zaGlmdC5kb3duY2FzZQogICAg # ICBhcmdzCT0ge30KICAKICAgICAgd2hpbGUgbm90IGEubGVuZ3RoLnplcm8/ # CiAgICAgICAgaWYgYS5sZW5ndGggPj0gMyBhbmQgYVsxXSA9PSAiPSIKICAg # ICAgICAgIGtleQk9IGEuc2hpZnQuZG93bmNhc2UKICAgICAgICAgIGR1bW15 # CT0gYS5zaGlmdAogICAgICAgICAgdmFsdWUJPSBhLnNoaWZ0Lm5vcXVvdGVz # CiAgICAgICAgICBhcmdzW2tleV0JPSB2YWx1ZQogICAgICAgIGVsc2UKICAg # ICAgICAgIGtleQk9IGEuc2hpZnQuZG93bmNhc2UKICAgICAgICAgIGFyZ3Nb # a2V5XQk9ICIiCiAgICAgICAgZW5kCiAgICAgIGVuZAogIAogICAgICBbdGFn # LCBhcmdzLCBvcGVuLCBjbG9zZV0KICAgIGVuZAoKICAgIHZlcndlcmsyCT0K # ICAgIGxhbWJkYSBkbyB8c3RyaW5nfAogICAgICBpZiBAdGFnY2FjaGUuaW5j # bHVkZT8gc3RyaW5nCiAgICAgICAgcmVzCT0gQHRhZ2NhY2hlW3N0cmluZ10K # ICAgICAgZWxzZQogICAgICAgIHJlcwk9IHZlcndlcmszLmNhbGwoc3RyaW5n # KQoKICAgICAgICBAdGFnY2FjaGVbc3RyaW5nXSA9IHJlcwogICAgICBlbmQK # CiAgICAgIHJlcwogICAgZW5kCgogICAgdmVyd2VyazEgPQogICAgbGFtYmRh # IGRvIHxzdHJpbmd8CiAgICAgIHRhZywgYXJncywgb3BlbiwgY2xvc2UJPSB2 # ZXJ3ZXJrMi5jYWxsKHN0cmluZykKCiAgICAgIEBvYmplY3RzIDw8IE9wZW5U # YWcubmV3KHRhZy5kdXAsIGFyZ3MuZHVwKQlpZiBvcGVuCiAgICAgIEBvYmpl # Y3RzIDw8IENsb3NlVGFnLm5ldyh0YWcuZHVwLCBhcmdzLmR1cCkJaWYgY2xv # c2UKICAgIGVuZAoKICAgIHN0cmluZy5zcGxpdGJsb2NrcyhbIjwhLS0iLCAi # LS0+Il0sIFsiPCEiLCAiPiJdLCBbIjw/IiwgIj8+Il0sIFsiPCIsICI+Il0p # LmVhY2ggZG8gfHR5cGUsIHN8CiAgICAgIGNhc2UgdHlwZQogICAgICB3aGVu # IDAJCXRoZW4gQG9iamVjdHMgPDwgVGV4dC5uZXcocykKICAgICAgd2hlbiAx # CQl0aGVuIEBvYmplY3RzIDw8IENvbW1lbnQubmV3KHMpCiAgICAgIHdoZW4g # MgkJdGhlbiBAb2JqZWN0cyA8PCBTcGVjaWFsLm5ldyhzKQogICAgICB3aGVu # IDMJCXRoZW4gQG9iamVjdHMgPDwgSW5zdHJ1Y3Rpb24ubmV3KHMpCiAgICAg # IHdoZW4gNAkJdGhlbiB2ZXJ3ZXJrMS5jYWxsKHMpCiAgICAgIGVuZAogICAg # ZW5kCiAgZW5kCgogIGRlZiB0b19zCiAgICByZXMJPSAiIgoKICAgIHBhcnNl # dHJlZSgicHJlY2hpbGRyZW5fdG9fcyIsICJwb3N0Y2hpbGRyZW5fdG9fcyIs # IHJlcykKCiAgICByZXMKICBlbmQKCiAgZGVmIHRvX2gKICAgIHJlcwk9ICIi # CgogICAgcGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19zZ21sIiwgInBvc3Rj # aGlsZHJlbl90b19zZ21sIiwgcmVzKQoKICAgIHJlcwogIGVuZAplbmQKAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExNTk0 # LnRhci9ldi90cmVlLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAA # MDAwMTc1MAAwMDAwMDAxNzE2MwAxMDI1MDMyMDYxMwAwMjAxMzcAIDAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAw # MDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAi # ZXYvcnVieSIKcmVxdWlyZSAiZXYvbmV0IgpyZXF1aXJlICJtZDUiCnJlcXVp # cmUgInRocmVhZCIKClNhbWUJPSAwCkRvd24JPSAxClVwCT0gMgpEdW1teQk9 # IDMKCm1vZHVsZSBUZXh0QXJyYXkKICBkZWYgdGV4dGFycmF5CiAgICBAY2hp # bGRyZW4uY29sbGVjdCBkbyB8b2JqfAogICAgICBbb2JqLnRleHRdIDw8IG9i # ai50ZXh0YXJyYXkKICAgIGVuZC5mbGF0dGVuLmNvbXBhY3QKICBlbmQKZW5k # CgoKbW9kdWxlIFBhcnNlVHJlZQogIGRlZiBwYXJzZXRyZWUocHJlbWV0aG9k # PSJwcmVjaGlsZHJlbiIsIHBvc3RtZXRob2Q9InBvc3RjaGlsZHJlbiIsICph # cmdzKQogICAgaWYgQHZpc2libGUKICAgICAgbWV0aG9kKHByZW1ldGhvZCku # Y2FsbCgqYXJncykJaWYgcmVzcG9uZF90bz8ocHJlbWV0aG9kKQoKICAgICAg # QGNoaWxkcmVuLmVhY2ggZG8gfG9ianwKICAgICAgICBvYmoucGFyc2V0cmVl # KHByZW1ldGhvZCwgcG9zdG1ldGhvZCwgKmFyZ3MpCiAgICAgIGVuZAoKICAg # ICAgbWV0aG9kKHBvc3RtZXRob2QpLmNhbGwoKmFyZ3MpCWlmIHJlc3BvbmRf # dG8/KHBvc3RtZXRob2QpCiAgICBlbmQKICBlbmQKCiAgI2RlZiBwYXJzZXRy # ZWUocHJlbWV0aG9kPSJwcmVjaGlsZHJlbiIsIHBvc3RtZXRob2Q9InBvc3Rj # aGlsZHJlbiIsICphcmdzKQogICMgIHN0YWNrCT0gW3NlbGZdCiAgIyAgZG9u # ZQk9IFtdCiAgIwogICMgIHdoaWxlIG5vdCBzdGFjay5lbXB0eT8KICAjICAg # IG9iagk9IHN0YWNrLnBvcAogICMKICAjICAgIGlmIG5vdCBkb25lLmluY2x1 # ZGU/KG9iaikKICAjICAgICAgb2JqLm1ldGhvZChwcmVtZXRob2QpLmNhbGwo # KmFyZ3MpCWlmIG9iai5yZXNwb25kX3RvPyhwcmVtZXRob2QpCiAgIwogICMg # ICAgICBzdGFjay5wdXNoKG9iaikKICAjICAgICAgZG9uZS5wdXNoKG9iaikK # ICAjCiAgIyAgICAgIHN0YWNrLmNvbmNhdCBvYmouY2hpbGRyZW4ucmV2ZXJz # ZQogICMgICAgICAjb2JqLmNoaWxkcmVuLnJldmVyc2UuZWFjaCBkbyB8Y29i # anwKICAjICAgICAgICAjc3RhY2sucHVzaChjb2JqKQogICMgICAgICAjZW5k # CiAgIyAgICBlbHNlCiAgIyAgICAgIG9iai5tZXRob2QocG9zdG1ldGhvZCku # Y2FsbCgqYXJncykJaWYgb2JqLnJlc3BvbmRfdG8/KHBvc3RtZXRob2QpCiAg # IyAgICBlbmQKICAjICBlbmQKICAjZW5kCmVuZAoKY2xhc3MgVHJlZU9iamVj # dAogIGF0dHJfcmVhZGVyIDpzdWJ0eXBlCiAgYXR0cl93cml0ZXIgOnN1YnR5 # cGUKICBhdHRyX3JlYWRlciA6dXBvcmRvd24KICBhdHRyX3dyaXRlciA6dXBv # cmRvd24KICBhdHRyX3JlYWRlciA6bGV2ZWwKICBhdHRyX3dyaXRlciA6bGV2 # ZWwKICBhdHRyX3JlYWRlciA6cGFyZW50CiAgYXR0cl93cml0ZXIgOnBhcmVu # dAogIGF0dHJfcmVhZGVyIDpjaGlsZHJlbgogIGF0dHJfd3JpdGVyIDpjaGls # ZHJlbgogIGF0dHJfcmVhZGVyIDpjbG9zZWQKICBhdHRyX3dyaXRlciA6Y2xv # c2VkCiAgYXR0cl9yZWFkZXIgOnRleHQKICBhdHRyX3dyaXRlciA6dGV4dAog # IGF0dHJfcmVhZGVyIDp2aXNpYmxlCiAgYXR0cl93cml0ZXIgOnZpc2libGUK # CiAgaW5jbHVkZSBUZXh0QXJyYXkKICBpbmNsdWRlIFBhcnNlVHJlZQoKICBk # ZWYgaW5pdGlhbGl6ZShzdWJ0eXBlPW5pbCkKICAgIEBzdWJ0eXBlCT0gc3Vi # dHlwZQogICAgQHVwb3Jkb3duCT0gU2FtZQogICAgQGxldmVsCT0gbmlsCiAg # ICBAcGFyZW50CT0gbmlsCiAgICBAY2hpbGRyZW4JPSBbXQogICAgQGNsb3Nl # ZAk9IG5pbAogICAgQHZpc2libGUJPSB0cnVlCiAgZW5kCgogIGRlZiBpbnNw # ZWN0CiAgICBwYXJlbnQsIGNoaWxkcmVuCT0gQHBhcmVudCwgQGNoaWxkcmVu # CgogICAgQHBhcmVudCwgQGNoaWxkcmVuCT0gcGFyZW50Lm9iamVjdF9pZCwg # Y2hpbGRyZW4uY29sbGVjdHt8b2JqfCBvYmoub2JqZWN0X2lkfQoKICAgIHJl # cyA9ICIgICIgKiAobGV2ZWwtMSkgKyAiI3tzZWxmLmNsYXNzfSgje0BzdWJ0 # eXBlfSkgI3tzdXBlcn0iCgogICAgQHBhcmVudCwgQGNoaWxkcmVuCT0gcGFy # ZW50LCBjaGlsZHJlbgoKICAgIHJlcwogIGVuZAoKICBkZWYgcHJldmlvdXMo # a2xhc3M9W10sIHNraXA9W10pCiAgICBrbGFzcwk9IFtrbGFzc10uZmxhdHRl # bgogICAgc2tpcAk9IFtza2lwXS5mbGF0dGVuCgogICAgcG8JPSBAcGFyZW50 # CiAgICByZXR1cm4gbmlsCWlmIHBvLm5pbD8KCiAgICBjaAk9IHBvLmNoaWxk # cmVuCiAgICByZXR1cm4gbmlsCWlmIGNoLm5pbD8KCiAgICBuCT0gY2guaW5k # ZXgoc2VsZikKICAgIHJldHVybiBuaWwJaWYgbi5uaWw/CgogICAgcmVzCT0g # bmlsCiAgICBpZiBrbGFzcy5uaWw/CiAgICAgIG4gLT0gMQogICAgICByZXMJ # PSBjaFtuXQogICAgZWxzZQogICAgICBiZWdpbgogICAgICAgIG4gLT0gMQog # ICAgICAgIHJlcwk9IGNoW25dCiAgICAgIGVuZCB3aGlsZSAoa2xhc3MuZW1w # dHk/IG9yIGtsYXNzLmNvbGxlY3R7fGt8IGNoW24tMV0ua2luZF9vZj8oayl9 # LnNvcnQudW5pcSA9PSBbdHJ1ZV0pIFwKICAgICAgICAgICAgYW5kIChza2lw # LmVtcHR5PyBvciBza2lwLmNvbGxlY3R7fGt8IGNoW24tMV0ua2luZF9vZj8o # ayl9LnNvcnQudW5pcSA9PSBbZmFsc2VdKQogICAgZW5kCgogICAgcmVzCiAg # ZW5kCmVuZAoKY2xhc3MgVHJlZQogIEBAdmVyc2llCT0gMQogIEBAbXV0ZXgJ # PSBNdXRleC5uZXcKCiAgYXR0cl9yZWFkZXIgOmRhdGEKICBhdHRyX3dyaXRl # ciA6ZGF0YQogIGF0dHJfcmVhZGVyIDpwYXJlbnQKICBhdHRyX3dyaXRlciA6 # cGFyZW50CiAgYXR0cl9yZWFkZXIgOmNoaWxkcmVuCiAgYXR0cl93cml0ZXIg # OmNoaWxkcmVuCiAgYXR0cl9yZWFkZXIgOnZpc2libGUKICBhdHRyX3dyaXRl # ciA6dmlzaWJsZQoKICBpbmNsdWRlIFRleHRBcnJheQogIGluY2x1ZGUgUGFy # c2VUcmVlCgogIGRlZiBpbml0aWFsaXplKHN0cmluZykKICAgIHN0cmluZyA9 # IHN0cmluZy5qb2luKCIiKSBpZiBzdHJpbmcua2luZF9vZj8oQXJyYXkpCgog # ICAgQGRhdGEJCT0gc3RyaW5nCiAgICBAcGFyZW50CQk9IG5pbAogICAgQGNo # aWxkcmVuCQk9IFtdCiAgICBAb2JqZWN0cwkJPSBbXQogICAgQHZpc2libGUJ # CT0gdHJ1ZQogICAgQGNoZWNrdmlzaWJpbGl0eQk9IGZhbHNlCgogICAgYnVp # bGRvYmplY3RzKHN0cmluZykKICAgIGJ1aWxkcGFyZW50cwogICAgYnVpbGRj # aGlsZHJlbgogICAgbWFya2Nsb3NlZAogICAgZGVsZXRlZHVtbWllcwoKICAg # IEBjaGVja3Zpc2liaWxpdHkJPSB0cnVlCiAgZW5kCgogIGRlZiBzZWxmLmZp # bGUoZmlsZSkKICAgIG5ldyhGaWxlLm5ldyhmaWxlKS5yZWFkbGluZXMpCiAg # ZW5kCgogIGRlZiBzZWxmLmxvY2F0aW9uKHVybCwgZm9ybT1IYXNoLm5ldykK # ICAgIHMJPSBIVFRQQ2xpZW50LmdldCh1cmwsIHt9LCBmb3JtKQogICAgcwk9 # ICIiCWlmIHMubmlsPwogICAgbmV3KHMpCiAgZW5kCgogIGRlZiBzZWxmLm5l # d19mcm9tX2NhY2hlMihkYXRhKQogICAgbmV3KGRhdGEpCiAgZW5kCgogIGRl # ZiBzZWxmLm5ld19mcm9tX2NhY2hlKGRhdGEpCiAgICBoYXNoCT0gTUQ1Lm5l # dygiI3tAQHZlcnNpZX0gI3tkYXRhfSIpCgogICAgZGlyCQk9ICIje3RlbXB9 # L2V2Y2FjaGUuI3t1c2VyfS90cmVlLm5ldyIKICAgIGZpbGUJPSAiI3tkaXJ9 # LyN7aGFzaH0iCgogICAgdHJlZQk9IG5pbAoKICAgIEZpbGUubWtwYXRoKGRp # cikKCiAgICBpZiBGaWxlLmZpbGU/KGZpbGUpCiAgICAgIEBAbXV0ZXguc3lu # Y2hyb25pemUgZG8KICAgICAgICB0cmVlCT0gTWFyc2hhbC5yZXN0b3JlKEZp # bGUubmV3KGZpbGUsICJyYiIpKQogICAgICBlbmQKICAgIGVsc2UKICAgICAg # dHJlZQk9IG5ldyhkYXRhKQoKICAgICAgaWYgbm90IHRyZWUubmlsPwogICAg # ICAgIEBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICAgIEZpbGUub3Bl # bihmaWxlLCAid2IiKSB7fGZ8IE1hcnNoYWwuZHVtcCh0cmVlLCBmKX0KICAg # ICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXR1cm4gdHJlZQog # IGVuZAoKICBkZWYgaW5zcGVjdAogICAgQG9iamVjdHMuY29sbGVjdCBkbyB8 # b2JqfAogICAgICBvYmouaW5zcGVjdAogICAgZW5kLmpvaW4oIlxuIikKICBl # bmQKCiAgZGVmIGJ1aWxkb2JqZWN0cyhzdHJpbmcpCiAgICByYWlzZSAiSGFz # IHRvIGJlIGRlZmluZWQgaW4gdGhlIHN1YmNsYXNzLiIKICBlbmQKCiAgZGVm # IGJ1aWxkcGFyZW50cwogICAgbGV2ZWwJPSAxCiAgICBsZXZlbHMJPSBIYXNo # Lm5ldwogICAgbGV2ZWxzWzBdCT0gbmlsCiAgICBwYXJzZSBkbyB8dHlwZSwg # b2JqfAogICAgICBjYXNlIG9iai51cG9yZG93bgogICAgICB3aGVuIERvd24K # ICAgICAgICBvYmoubGV2ZWwJPSBsZXZlbAogICAgICAgIG9iai5wYXJlbnQJ # PSBsZXZlbHNbbGV2ZWwtMV0KICAgICAgICBsZXZlbHNbbGV2ZWxdCT0gb2Jq # CiAgICAgICAgbGV2ZWwgKz0gMQogICAgICB3aGVuIFVwLCBEdW1teQogICAg # ICAgIHBsID0gbGV2ZWwKICAgICAgICAxLnVwdG8obGV2ZWwtMSkgZG8gfGx8 # CiAgICAgICAgICBwbyA9IGxldmVsc1tsXQogICAgICAgICAgcGwgPSBsIGlm # IHBvLnN1YnR5cGUgPT0gb2JqLnN1YnR5cGUKICAgICAgICBlbmQKICAgICAg # ICBsZXZlbCA9IHBsCiAgICAgICAgb2JqLmxldmVsCT0gbGV2ZWwKICAgICAg # ICBvYmoucGFyZW50CT0gbGV2ZWxzW2xldmVsLTFdCiAgICAgIHdoZW4gU2Ft # ZQogICAgICAgIG9iai5sZXZlbAk9IGxldmVsCiAgICAgICAgb2JqLnBhcmVu # dAk9IGxldmVsc1tsZXZlbC0xXQogICAgICBlbmQKICAgIGVuZAogIGVuZAoK # ICBkZWYgYnVpbGRjaGlsZHJlbgogICAgQG9iamVjdHMuZWFjaCBkbyB8b2Jq # fAogICAgICBvYmouY2hpbGRyZW4gPSBbXQogICAgZW5kCgogICAgcGFyc2Ug # ZG8gfHR5cGUsIG9ianwKICAgICAgaWYgbm90IG9iai5wYXJlbnQubmlsPwog # ICAgICAgIHBvID0gb2JqLnBhcmVudAogICAgICAgIHBvLmNoaWxkcmVuIDw8 # IG9iagogICAgICBlbHNlCiAgICAgICAgQGNoaWxkcmVuIDw8IG9iagogICAg # ICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgbWFya2Nsb3NlZAogICAgKFtz # ZWxmXSArIEBvYmplY3RzKS5lYWNoIGRvIHxvYmp8CiAgICAgIG9iai5jaGls # ZHJlbi5lYWNoX2luZGV4IGRvIHxpfAogICAgICAgIGNvMQkJPSBvYmouY2hp # bGRyZW5baV0KICAgICAgICBjbzIJCT0gb2JqLmNoaWxkcmVuW2krMV0KCiAg # ICAgICAgY28xLmNsb3NlZAk9IChub3QgY28yLm5pbD8gYW5kIGNvMS51cG9y # ZG93biA9PSBEb3duIGFuZCAoY28yLnVwb3Jkb3duID09IFVwIG9yIGNvMi51 # cG9yZG93biA9PSBEdW1teSkgYW5kIGNvMS5zdWJ0eXBlID09IGNvMi5zdWJ0 # eXBlKQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgZGVsZXRlZHVt # bWllcwogICAgKFtzZWxmXSArIEBvYmplY3RzKS5lYWNoIGRvIHxvYmp8CiAg # ICAgIG9iai5jaGlsZHJlbi5kZWxldGVfaWYgZG8gfG9iajJ8CiAgICAgICAg # b2JqMi51cG9yZG93biA9PSBEdW1teQogICAgICBlbmQKICAgIGVuZAoKICAg # IEBvYmplY3RzLmRlbGV0ZV9pZiBkbyB8b2JqfAogICAgICBvYmoudXBvcmRv # d24gPT0gRHVtbXkKICAgIGVuZAogIGVuZAoKICBkZWYgcGFyc2UodHlwZXM9 # W10sIHN1YnR5cGVzPVtdLCBvbmNlPWZhbHNlKQogICAgdHlwZXMJPSBbdHlw # ZXNdCWlmIHR5cGVzLmNsYXNzID09IENsYXNzCiAgICBzdWJ0eXBlcwk9IFtz # dWJ0eXBlc10JaWYgc3VidHlwZXMuY2xhc3MgPT0gU3RyaW5nCiAgICBoaWRl # bGV2ZWwJPSBuaWwKCiAgICBjYXRjaCA6b25jZSBkbwogICAgICBAb2JqZWN0 # cy5lYWNoIGRvIHxvYmp8CiAgICAgICAgaWYgKEBjaGVja3Zpc2liaWxpdHkg # YW5kIGhpZGVsZXZlbC5uaWw/IGFuZCAobm90IG9iai52aXNpYmxlKSkKICAg # ICAgICAgIGhpZGVsZXZlbAk9IG9iai5sZXZlbAogICAgICAgIGVsc2UKICAg # ICAgICAgIGlmIChAY2hlY2t2aXNpYmlsaXR5IGFuZCAobm90IGhpZGVsZXZl # bC5uaWw/KSBhbmQgb2JqLnZpc2libGUgYW5kIG9iai5sZXZlbCA8PSBoaWRl # bGV2ZWwpCiAgICAgICAgICAgIGhpZGVsZXZlbAk9IG5pbAogICAgICAgICAg # ZW5kCiAgICAgICAgZW5kCgogICAgICAgIGlmIGhpZGVsZXZlbC5uaWw/CiAg # ICAgICAgICBvayA9IGZhbHNlCiAgICAgICAgICBjYXRjaCA6c3RvcCBkbwog # ICAgICAgICAgICBpZiB0eXBlcy5lbXB0eT8KICAgICAgICAgICAgICBpZiBz # dWJ0eXBlcy5lbXB0eT8KICAgICAgICAgICAgICAgIG9rID0gdHJ1ZQogICAg # ICAgICAgICAgICAgdGhyb3cgOnN0b3AKICAgICAgICAgICAgICBlbHNlCiAg # ICAgICAgICAgICAgICBzdWJ0eXBlcy5lYWNoIGRvIHxzdHwKICAgICAgICAg # ICAgICAgICAgaWYgb2JqLnN1YnR5cGUgPT0gc3QKICAgICAgICAgICAgICAg # ICAgICBvayA9IHRydWUKICAgICAgICAgICAgICAgICAgICB0aHJvdyA6c3Rv # cAogICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGVuZAog # ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg # ICAgaWYgc3VidHlwZXMuZW1wdHk/CiAgICAgICAgICAgICAgICB0eXBlcy5l # YWNoIGRvIHx0fAogICAgICAgICAgICAgICAgICBpZiBvYmoua2luZF9vZj8o # dCkKICAgICAgICAgICAgICAgICAgICBvayA9IHRydWUKICAgICAgICAgICAg # ICAgICAgICB0aHJvdyA6c3RvcAogICAgICAgICAgICAgICAgICBlbmQKICAg # ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAg # ICAgICAgIHR5cGVzLmVhY2ggZG8gfHR8CiAgICAgICAgICAgICAgICAgIHN1 # YnR5cGVzLmVhY2ggZG8gfHN0fAogICAgICAgICAgICAgICAgICAgIGlmIG9i # ai5raW5kX29mPyh0KSBhbmQgb2JqLnN1YnR5cGUgPT0gc3QKICAgICAgICAg # ICAgICAgICAgICAgIG9rID0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICAg # dGhyb3cgOnN0b3AKICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAg # ICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg # ICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbmQKCiAgICAgICAg # ICBpZiBvawogICAgICAgICAgICB5aWVsZChvYmouY2xhc3MudG9fcywgb2Jq # KQoKICAgICAgICAgICAgdGhyb3cgOm9uY2UJaWYgb25jZQogICAgICAgICAg # ZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRl # ZiBwYXRoKHBhZCkKICAgIHAxCT0gc2VsZgoKICAgIHVubGVzcyBwYWQubmls # PwogICAgICBwYWQuc3BsaXQoL1wvLykuZWFjaCBkbyB8ZGVlbHwKICAgICAg # ICB0YWcsIHZvb3Jrb21lbgk9IGRlZWwuc3BsaXQoLzovKQoKICAgICAgICBp # ZiAobm90IHRhZy5uaWw/KSBhbmQgKG5vdCBwMS5uaWw/KQogICAgICAgICAg # dm9vcmtvbWVuCT0gMQlpZiB2b29ya29tZW4ubmlsPwogICAgICAgICAgdm9v # cmtvbWVuCT0gdm9vcmtvbWVuLnRvX2kKCiAgICAgICAgICB0ZWxsZXIJPSAw # CiAgICAgICAgICBwMgk9IG5pbAogICAgICAgICAgcDEuY2hpbGRyZW4uZWFj # aF9pbmRleCBkbyB8aXwKICAgICAgICAgICAgI2lmIHAxLmNoaWxkcmVuW2ld # LnVwb3Jkb3duID09IERvd24KICAgICAgICAgICAgICB1bmxlc3MgIHAxLmNo # aWxkcmVuW2ldLnN1YnR5cGUubmlsPwogICAgICAgICAgICAgICAgaWYgcDEu # Y2hpbGRyZW5baV0uc3VidHlwZS5ub3F1b3RlcyA9PSB0YWcubm9xdW90ZXMK # ICAgICAgICAgICAgICAgICAgdGVsbGVyICs9IDEKICAgICAgICAgICAgICAg # ICAgcDIJPSBwMS5jaGlsZHJlbltpXQlpZiB0ZWxsZXIgPT0gdm9vcmtvbWVu # CiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICBlbmQKICAgICAg # ICAgICAgI2VuZAogICAgICAgICAgZW5kCiAgICAgICAgICBwMQk9IHAyCiAg # ICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAgcDEKICBlbmQKZW5k # CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFy # MnJ1YnlzY3JpcHQuZi4xMTU5NC50YXIvZXYvbmV0LnJiAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwNDYyMjYAMTAyNTAz # MjA2MTMAMDE3NzcwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJlcXVpcmUgImV2L2Z0b29s # cyIKcmVxdWlyZSAiZXYvbWltZSIKcmVxdWlyZSAibmV0L2h0dHAiCnJlcXVp # cmUgInNvY2tldCIKcmVxdWlyZSAidXJpIgpyZXF1aXJlICJjZ2kiCnJlcXVp # cmUgIm1kNSIKcmVxdWlyZSAidGhyZWFkIgoKJHByb3h5CT0gRU5WWyJQUk9Y # WSJdCWlmICRwcm94eS5uaWw/CgpmaWxlCT0gIiN7aG9tZX0vLmV2bmV0Igpp # ZiBGaWxlLmZpbGU/KGZpbGUpCiAgSGFzaC5maWxlKGZpbGUpLmVhY2ggZG8g # fGssIHZ8CiAgICBldmFsICIkI3trfSA9ICcje3Z9JyIJdW5sZXNzIGs9fiAv # XlwjLwogIGVuZAplbmQKCmRlZiB1cmkydHh0KHMpCgkjID8/PyBXZXJrdCBu # aWV0IGdvZWQKICBpCT0gcy5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKICB3 # aGlsZSBub3QgaS5uaWw/CiAgICBzCT0gc1swLi4oaS0xKV0gKyBzWyhpKzEp # Li4oaSsyKV0udW5wYWNrKCdIMicpLnNoaWZ0LnRvX2kuY2hyICsgc1soaSsz # KS4uLTFdCiAgICBpCT0gcy5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKICBl # bmQKICBzCmVuZAoKY2xhc3MgVENQU2VydmVyCiAgZGVmIHNlbGYuZnJlZXBv # cnQoZnJvbSwgdG8sIHJlbW90ZT1mYWxzZSkKICAgIGlmIHdpbmRvd3M/IG9y # IGN5Z3dpbj8KICAgICAgVENQU2VydmVyLmZyZWVwb3J0X3dpbmRvd3MoZnJv # bSwgdG8sIHJlbW90ZSkKICAgIGVsc2UKICAgICAgVENQU2VydmVyLmZyZWVw # b3J0X2xpbnV4KGZyb20sIHRvLCByZW1vdGUpCiAgICBlbmQKICBlbmQKCiAg # ZGVmIHNlbGYuZnJlZXBvcnRfbGludXgoZnJvbSwgdG8sIHJlbW90ZSkKICAg # IHBvcnRzCT0gKGZyb20uLnRvKS50b19hCiAgICBwb3J0CT0gbmlsCiAgICBy # ZXMJCT0gbmlsCgogICAgd2hpbGUgcmVzLm5pbD8gYW5kIG5vdCBwb3J0cy5l # bXB0eT8KICAgICAgYmVnaW4KICAgICAgICBwb3J0CT0gcG9ydHNbMF0KICAg # ICAgICBwb3J0cy5kZWxldGUocG9ydCkKCiAgICAgICAgaW8JPSBUQ1BTZXJ2 # ZXIubmV3KHJlbW90ZSA/ICIwLjAuMC4wIiA6ICJsb2NhbGhvc3QiLCBwb3J0 # KQoKICAgICAgICByZXMJPSBbcG9ydCwgaW9dCiAgICAgIHJlc2N1ZQogICAg # ICBlbmQKICAgIGVuZAoKICAgIHJlcwk9IFtuaWwsIG5pbF0JaWYgcmVzLm5p # bD8KCiAgICBwb3J0LCBpbwk9IHJlcwoKICAgIHJldHVybiBwb3J0LCBpbwog # IGVuZAoKICBkZWYgc2VsZi5mcmVlcG9ydF93aW5kb3dzKGZyb20sIHRvLCBy # ZW1vdGUpCiAgICBwb3J0cwk9IChmcm9tLi50bykudG9fYQogICAgcG9ydAk9 # IG5pbAogICAgcmVzCQk9IG5pbAoKICAgIHdoaWxlIHJlcy5uaWw/IGFuZCBu # b3QgcG9ydHMuZW1wdHk/CiAgICAgIGJlZ2luCiAgICAgICAgcG9ydAk9IHBv # cnRzLmFueQogICAgICAgIHBvcnRzLmRlbGV0ZShwb3J0KQoKICAgICAgICBp # bwk9IFRDUFNvY2tldC5uZXcoImxvY2FsaG9zdCIsIHBvcnQpCiAgICAgICAg # aW8uY2xvc2UKICAgICAgcmVzY3VlCiAgICAgICAgcmVzCT0gcG9ydAogICAg # ICBlbmQKICAgIGVuZAoKICAgIHBvcnQsIGlvCT0gcmVzCgogICAgcmV0dXJu # IHBvcnQsIGlvCiAgZW5kCgogIGRlZiBzZWxmLmZyZWVwb3J0X3dpbmRvd3My # KGZyb20sIHRvLCByZW1vdGUpCiAgICByZXMJPSBuaWwKICAgIHBvcnQJPSBm # cm9tCgogICAgd2hpbGUgcmVzLm5pbD8gYW5kIHBvcnQgPD0gdG8KICAgICAg # YmVnaW4KICAgICAgICBpbwk9IFRDUFNvY2tldC5uZXcoImxvY2FsaG9zdCIs # IHBvcnQpCiAgICAgICAgaW8uY2xvc2UKCiAgICAgICAgcG9ydCArPSAxCiAg # ICAgIHJlc2N1ZQogICAgICAgIHJlcwk9IHBvcnQKICAgICAgZW5kCiAgICBl # bmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiBzZWxmLnVzZWRwb3J0 # cyhmcm9tLCB0bykKICAgIHRocmVhZHMJPSBbXQogICAgcmVzCQk9IFtdCgog # ICAgZnJvbS51cHRvKHRvKSBkbyB8cG9ydHwKICAgICAgdGhyZWFkcyA8PCBU # aHJlYWQubmV3IGRvCiAgICAgICAgYmVnaW4KICAgICAgICAgIGlvCT0gVENQ # U29ja2V0Lm5ldygibG9jYWxob3N0IiwgcG9ydCkKICAgICAgICAgIGlvLmNs # b3NlCgogICAgICAgICAgcG9ydAogICAgICAgIHJlc2N1ZQogICAgICAgICAg # bmlsCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAgdGhyZWFk # cy5lYWNoIGRvIHx0aHJlYWR8CiAgICAgIHBvcnQJPSB0aHJlYWQudmFsdWUK # ICAgICAgcmVzIDw8IHBvcnQJdW5sZXNzIHBvcnQubmlsPwogICAgZW5kCgog # ICAgcmV0dXJuIHJlcwogIGVuZAplbmQKCmNsYXNzIEVWVVJJCiAgYXR0cl9y # ZWFkZXIgOnByb3RvY29sCiAgYXR0cl93cml0ZXIgOnByb3RvY29sCiAgYXR0 # cl9yZWFkZXIgOnVzZXJwYXNzCiAgYXR0cl93cml0ZXIgOnVzZXJwYXNzCiAg # YXR0cl9yZWFkZXIgOmhvc3QKICBhdHRyX3dyaXRlciA6aG9zdAogIGF0dHJf # cmVhZGVyIDpwb3J0CiAgYXR0cl93cml0ZXIgOnBvcnQKICBhdHRyX3JlYWRl # ciA6cGF0aAogIGF0dHJfd3JpdGVyIDpwYXRoCiAgYXR0cl9yZWFkZXIgOnZh # cnMKICBhdHRyX3dyaXRlciA6dmFycwogIGF0dHJfcmVhZGVyIDphbmNob3IK # ICBhdHRyX3dyaXRlciA6YW5jaG9yCgogIGRlZiBpbml0aWFsaXplKHVybCkK # ICAgIGJlZ2luCiAgICAgIEBwcm90b2NvbCwgQHVzZXJwYXNzLCBAaG9zdCwg # QHBvcnQsIGQxLCBAcGF0aCwgZDIsIEB2YXJzLCBAYW5jaG9yCT0gVVJJLnNw # bGl0KHVybC50b19zKQogICAgcmVzY3VlCiAgICBlbmQKCiAgICBAcGF0aAkJ # PSAiLyIJCWlmIChub3QgQHBhdGgubmlsPyBhbmQgQHBhdGguZW1wdHk/IGFu # ZCBAcHJvdG9jb2wgPT0gImh0dHAiKQoKICAgIEBwcm90b2NvbAkJPSAiIgkJ # aWYgQHByb3RvY29sLm5pbD8KICAgIEB1c2VycGFzcwkJPSAiIgkJaWYgQHVz # ZXJwYXNzLm5pbD8KICAgIEBob3N0CQk9ICIiCQlpZiBAaG9zdC5uaWw/CiAg # ICBAcG9ydAkJPSAwCQlpZiBAcG9ydC5uaWw/CiAgICBAcGF0aAkJPSAiIgkJ # aWYgQHBhdGgubmlsPwogICAgQHZhcnMJCT0gIiIJCWlmIEB2YXJzLm5pbD8K # ICAgIEBhbmNob3IJCT0gIiIJCWlmIEBhbmNob3IubmlsPwoKICAgIHJlcwkJ # CT0ge30KICAgIEB2YXJzdm9sZ29yZGUJPSBbXQogICAgQHZhcnMuc3BsaXQo # LyYvKS5lYWNoe3x2YXJ8IGssIHYgPSB2YXIuc3BsaXQoLz0vKSA7IHJlc1tr # XSA9IHYgOyBAdmFyc3ZvbGdvcmRlIDw8IGt9CiAgICBAdmFycwkJPSByZXMK # CiAgICBAcG9ydAkJPSBAcG9ydC50b19pCiAgZW5kCgogIGRlZiArKHVybDIp # CiAgICB1cmwxCT0gc2VsZi50b19zCiAgICB1cmwyCT0gdXJsMi50b19zCWlm # IHVybDIua2luZF9vZj8oc2VsZi5jbGFzcykKCiAgICByZXR1cm4gRVZVUkku # bmV3KChVUkk6OkdlbmVyaWMubmV3KCpVUkkuc3BsaXQodXJsMSkpICsgVVJJ # OjpHZW5lcmljLm5ldygqVVJJLnNwbGl0KHVybDIpKSkudG9fcykJcmVzY3Vl # IG5pbAogIGVuZAoKICBkZWYgdG9fcwogICAgcHJvdG9jb2wJPSBAcHJvdG9j # b2wKICAgIHVzZXJwYXNzCT0gQHVzZXJwYXNzCiAgICBob3N0CT0gQGhvc3QK # ICAgIHBvcnQJPSBAcG9ydAogICAgcGF0aAk9IEBwYXRoCiAgICB2YXJzCT0g # dmFyc3RyaW5nCiAgICBhbmNob3IJPSBAYW5jaG9yCgogICAgcHJvdG9jb2wJ # PSBuaWwJaWYgQHByb3RvY29sLmVtcHR5PwogICAgdXNlcnBhc3MJPSBuaWwJ # aWYgQHVzZXJwYXNzLmVtcHR5PwogICAgaG9zdAk9IG5pbAlpZiBAaG9zdC5l # bXB0eT8KICAgIHBvcnQJPSBuaWwJaWYgQHBvcnQuemVybz8KICAgIHBhdGgJ # PSBuaWwJaWYgQHBhdGguZW1wdHk/CiAgICB2YXJzCT0gbmlsCWlmIEB2YXJz # LmVtcHR5PwogICAgYW5jaG9yCT0gbmlsCWlmIEBhbmNob3IuZW1wdHk/Cgog # ICAgcmVzCT0gVVJJOjpIVFRQLm5ldyhAcHJvdG9jb2wsIEB1c2VycGFzcywg # QGhvc3QsIHBvcnQsIG5pbCwgQHBhdGgsIG5pbCwgdmFycywgQGFuY2hvciku # dG9fcy5mcm9tX2h0bWwKCiAgICByZXMuZ3N1YiEoL0AvLCAiIikJaWYgKEB1 # c2VycGFzcy5uaWw/IG9yIEB1c2VycGFzcy5lbXB0eT8pCgogICAgcmVzLmdz # dWIhKC9cIyQvLCAiIikKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiBs # b2NhbG5hbWUKICAgIHByb3RvY29sCT0gQHByb3RvY29sCiAgICB1c2VycGFz # cwk9IEB1c2VycGFzcwogICAgaG9zdAk9IEBob3N0CiAgICBwb3J0CT0gQHBv # cnQKICAgIHBhdGgJPSBAcGF0aAogICAgdmFycwk9IHZhcnN0cmluZwogICAg # YW5jaG9yCT0gQGFuY2hvcgoKICAgIHByb3RvY29sCT0gbmlsCWlmIEBwcm90 # b2NvbC5lbXB0eT8KICAgIHVzZXJwYXNzCT0gbmlsCWlmIEB1c2VycGFzcy5l # bXB0eT8KICAgIGhvc3QJPSBuaWwJaWYgQGhvc3QuZW1wdHk/CiAgICBwb3J0 # CT0gbmlsCWlmIEBwb3J0Lnplcm8/CiAgICBwYXRoCT0gbmlsCWlmIEBwYXRo # LmVtcHR5PwogICAgdmFycwk9IG5pbAlpZiBAdmFycy5lbXB0eT8KICAgIGFu # Y2hvcgk9IG5pbAlpZiBAYW5jaG9yLmVtcHR5PwoKICAgIHBhdGgJPSAiI3tw # YXRofS4iCWlmIHBhdGggPX4gL1tcL1xcXSQvCgogICAgZgk9IE1ENS5uZXco # cHJvdG9jb2wudG9fcyArIHVzZXJwYXNzLnRvX3MgKyBob3N0LnRvX3MgKyBw # b3J0LnRvX3MgKyBGaWxlLmRpcm5hbWUocGF0aC50b19zKSArIHZhcnMudG9f # cykudG9fcwogICAgZQk9IEZpbGUuYmFzZW5hbWUocGF0aC50b19zKS5nc3Vi # KC9bXlx3XC5cLV0vLCAiXyIpLmdzdWIoL18rLywgIl8iKQogICAgcmVzCT0g # ZiArICIuIiArIGUKICAgIHJlcy5nc3ViISgvW15cd10rJC8sICIiKQoKICAg # IHJldHVybiByZXMKICBlbmQKCiAgZGVmIHZhcnN0cmluZwogICAgcmVzCQk9 # IFtdCiAgICB2YXJzCT0gQHZhcnMuZHVwCgogICAgQHZhcnN2b2xnb3JkZS5l # YWNoIGRvIHxrfAogICAgICBpZiB2YXJzLmluY2x1ZGU/KGspCiAgICAgICAg # dgk9IHZhcnNba10KICAgICAgICB2YXJzLmRlbGV0ZShrKQoKICAgICAgICBy # ZXMgPDwgKHYubmlsPyA/IGsgOiAiI3trfT0je3Z9IikKICAgICAgZW5kCiAg # ICBlbmQKCiAgICByZXMuY29uY2F0KHZhcnMuY29sbGVjdHt8aywgdnwgdi5u # aWw/ID8gayA6ICIje2t9PSN7dn0ifSkKCiAgICByZXR1cm4gcmVzLmpvaW4o # IiYiKQogIGVuZAplbmQKCmNsYXNzIEhUVFBDbGllbnQKICBAQHZlcnNpZQk9 # IDEKICBAQG11dGV4CT0gTXV0ZXgubmV3CiAgQEBob3N0cwk9IHt9CgogIGNs # YXNzIEhlYWRlcgogICAgYXR0cl9yZWFkZXIgOmhlYWRlcgogICAgYXR0cl9y # ZWFkZXIgOnByb3RvY29sCiAgICBhdHRyX3JlYWRlciA6Y29kZQogICAgYXR0 # cl9yZWFkZXIgOnRleHQKCiAgICBkZWYgaW5pdGlhbGl6ZShoZWFkZXIpCiAg # ICAgIEBoZWFkZXIJPSB7fQoKICAgICAgaWYgbm90IGhlYWRlci5uaWw/CiAg # ICAgICAgZmlyc3RsaW5lLCByZXN0CT0gaGVhZGVyLnNwbGl0KC9ccipcbi8s # IDIpCgogICAgICAgIEBwcm90b2NvbCwgQGNvZGUsIEB0ZXh0CT0gZmlyc3Rs # aW5lLnNwbGl0KC8gICovLCAzKQoKICAgICAgICBAY29kZQk9IEBjb2RlLnRv # X2kKCiAgICAgICAgaWYgbm90IHJlc3QubmlsPwogICAgICAgICAgcmVzdC5z # cGxpdCgvXHIqXG4vKS5lYWNoIGRvIHxsaW5lfAogICAgICAgICAgICBrZXks # IHZhbHVlCT0gbGluZS5zcGxpdCgvIC8sIDIpCiAgICAgICAgICAgIEBoZWFk # ZXJba2V5LnN1YigvOiQvLCAiIikuZG93bmNhc2VdCT0gdmFsdWUKICAgICAg # ICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIGRl # ZiB0b19zCiAgICAgIHJlcwk9ICIiCgogICAgICByZXMgPDwgIiVzICVzICVz # XG4iICUgW0Bwcm90b2NvbCwgQGNvZGUsIEB0ZXh0XQoKICAgICAgQGhlYWRl # ci5lYWNoIGRvIHxrLCB2fAogICAgICAgIHJlcyA8PCAiJXM9JXNcbiIgJSBb # aywgdl0KICAgICAgZW5kCgogICAgICByZXR1cm4gcmVzCiAgICBlbmQKICBl # bmQKCiAgY2xhc3MgQ2h1bmsKICAgIGRlZiBpbml0aWFsaXplKGRhdGEpCiAg # ICAgIEBkYXRhCT0gIiIKICAgICAgbGluZSwgZGF0YQk9IGRhdGEuc3BsaXQo # L1xyKlxuLywgMikKICAgICAgc2l6ZSwgZXh0CQk9IGxpbmUuc3BsaXQoLzsv # LCAyKQogICAgICBzaXplCQk9IHNpemUuaGV4CiAgICAgIHdoaWxlIG5vdCBz # aXplLnplcm8/IGFuZCBub3QgZGF0YS5uaWw/CiAgICAgICAgQGRhdGEJCSs9 # IGRhdGFbMC4uKHNpemUtMSldCiAgICAgICAgZGF0YQkJPSBkYXRhW3NpemUu # Li0xXQogICAgICAgIGlmIG5vdCBkYXRhLm5pbD8KICAgICAgICAgIGRhdGEu # Z3N1YiEoL15ccipcbi8sICIiKQogICAgICAgICAgbGluZSwgZGF0YQk9IGRh # dGEuc3BsaXQoL1xyKlxuLywgMikKICAgICAgICAgIHNpemUsIGV4dAk9IGxp # bmUuc3BsaXQoLzsvLCAyKQogICAgICAgICAgc2l6ZQkJPSBzaXplLmhleAog # ICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIGRlZiB0b19zCiAg # ICAgIEBkYXRhCiAgICBlbmQKICBlbmQKCiAgY2xhc3MgTm9BZGRyZXNzRXhj # ZXB0aW9uIDwgU3RhbmRhcmRFcnJvcgogIGVuZAoKICBkZWYgc2VsZi5nZXRh # ZGRyZXNzKGhvc3QpCiAgICBpZiBub3QgQEBob3N0cy5pbmNsdWRlPyhob3N0 # KQogICAgICBAQGhvc3RzW2hvc3RdCT0gIiIKICAgICAgZXZ0aW1lb3V0KDUp # IGRvCSMgPz8/IERvZXQgJ3V0IG5pZXQ/Li4uCiAgICAgICAgQEBob3N0c1to # b3N0XQk9IElQU29ja2V0LmdldGFkZHJlc3MoaG9zdCkKICAgICAgZW5kCiAg # ICBlbmQKCiAgICByYWlzZSBOb0FkZHJlc3NFeGNlcHRpb24sIGhvc3QJaWYg # QEBob3N0c1tob3N0XS5lbXB0eT8KCiAgICBAQGhvc3RzW2hvc3RdCiAgZW5k # CgogIGRlZiBzZWxmLmhlYWQodXJpLCBmb3JtPXt9LCByZWN1cnNpdmU9dHJ1 # ZSkKICAgIGhlYWRlcgk9IEhlYWRlci5uZXcobmlsKQoKICAgIGJlZ2luCiAg # ICAgIHdoaWxlIG5vdCB1cmkubmlsPwogICAgICAgIHVyaQkJPSBFVlVSSS5u # ZXcodXJpKSBpZiB1cmkua2luZF9vZj8gU3RyaW5nCiAgICAgICAgaG9zdAkJ # PSB1cmkuaG9zdAogICAgICAgIHBvcnQJCT0gdXJpLnBvcnQKCiAgICAgICAg # aWYgJHByb3h5Lm5pbD8gb3IgJHByb3h5LmVtcHR5PyBvciBob3N0ID09ICJs # b2NhbGhvc3QiCiAgICAgICAgICBpbwkJPSBuaWwKCiAgICAgICAgICBAQG11 # dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgICAgIGlvCQkJPSBUQ1BTb2Nr # ZXQubmV3KGdldGFkZHJlc3MoaG9zdCksIHBvcnQuemVybz8gPyA4MCA6IHBv # cnQpCiAgICAgICAgICBlbmQKCiAgICAgICAgICBpby53cml0ZSgiSEVBRCAj # e3VyaS5wYXRoIG9yICcvJ30je3VyaS52YXJzdHJpbmcuZW1wdHk/ID8gJycg # OiAnPycgKyB1cmkudmFyc3RyaW5nfSBIVFRQLzEuMFxyXG5Ib3N0OiAje2hv # c3R9XHJcblxyXG4iKQogICAgICAgIGVsc2UKICAgICAgICAgIHByb3h5CQk9 # IEVWVVJJLm5ldygkcHJveHkpCiAgICAgICAgICBpbwkJPSBUQ1BTb2NrZXQu # bmV3KHByb3h5Lmhvc3QsIHByb3h5LnBvcnQuemVybz8gPyA4MDgwIDogcHJv # eHkucG9ydCkKCiAgICAgICAgICBpby53cml0ZSgiSEVBRCAje3VyaX0gSFRU # UC8xLjBcclxuI3siUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgIiskcHJv # eHlfYXV0aCsiXHJcbiIgaWYgbm90ICRwcm94eV9hdXRoLm5pbD99XHJcblxy # XG4iKQogICAgICAgIGVuZAoKICAgICAgICBpby5jbG9zZV93cml0ZQoKICAg # ICAgICByZXMJPSBpby5yZWFkCgogICAgICAgIGlvLmNsb3NlX3JlYWQKCiAg # ICAgICAgaGVhZGVyLCBkYXRhCT0gbmlsLCBuaWwKICAgICAgICBoZWFkZXIs # IGRhdGEJPSByZXMuc3BsaXQoL1xyKlxuXHIqXG4vLCAyKQlpZiBub3QgcmVz # Lm5pbD8KICAgICAgICBoZWFkZXIJCT0gSGVhZGVyLm5ldyhoZWFkZXIpCgog # ICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgaGVhZGVyLmhlYWRlclsibG9jYXRp # b24iXSAhPSB1cmkudG9fcwogICAgICAgICAgdXJpCT0gRVZVUkkubmV3KHVy # aSkgKyBoZWFkZXIuaGVhZGVyWyJsb2NhdGlvbiJdCiAgICAgICAgZWxzZQog # ICAgICAgICAgdXJpCT0gbmlsCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAg # cmVzY3VlIEVycm5vOjpFQ09OTlJFU0VULCBFcnJubzo6RUhPU1RVTlJFQUNI # ID0+IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBzbGVl # cCAxCiAgICAgIHJldHJ5CiAgICByZXNjdWUgRXJybm86OkVDT05OUkVGVVNF # RCA9PiBlCiAgICAgIGRhdGEJPSBuaWwKICAgIHJlc2N1ZSBOb0FkZHJlc3NF # eGNlcHRpb24gPT4gZQogICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAg # ICAgIGhlYWRlcgk9IEhlYWRlci5uZXcobmlsKQogICAgZW5kCgogICAgR0Mu # c3RhcnQKCiAgICByZXR1cm4gaGVhZGVyCiAgZW5kCgogIGRlZiBzZWxmLmdl # dCh1cmksIGh0dHBoZWFkZXI9e30sIGZvcm09e30pCiAgICBwb3N0CT0gQXJy # YXkubmV3CiAgICBmb3JtLmVhY2hfcGFpciBkbyB8dmFyLCB2YWx1ZXwKICAg # ICAgcG9zdCA8PCAiI3t2YXIudG9faHRtbH09I3t2YWx1ZS50b19odG1sfSIK # ICAgIGVuZAogICAgcG9zdAk9IHBvc3Quam9pbigiPyIpCgogICAgZGF0YQk9 # IG5pbAoKICAgIGJlZ2luCiAgICAgIHdoaWxlIG5vdCB1cmkubmlsPwogICAg # ICAgIHVyaQk9IEVWVVJJLm5ldyh1cmkpIGlmIHVyaS5raW5kX29mPyBTdHJp # bmcKICAgICAgICBob3N0CT0gdXJpLmhvc3QKICAgICAgICBwb3J0CT0gdXJp # LnBvcnQKCiAgICAgICAgaWYgJHByb3h5Lm5pbD8gb3IgJHByb3h5LmVtcHR5 # PyBvciBob3N0ID09ICJsb2NhbGhvc3QiCiAgICAgICAgICBpbwk9IG5pbAog # ICAgICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAgICAgICBp # bwkJCT0gVENQU29ja2V0Lm5ldyhnZXRhZGRyZXNzKGhvc3QpLCBwb3J0Lnpl # cm8/ID8gODAgOiBwb3J0KQogICAgICAgICAgZW5kCgogICAgICAgICAgaWYg # cG9zdC5lbXB0eT8KICAgICAgICAgICAgaW8ud3JpdGUgIkdFVCAlcyVzIEhU # VFAvMS4wXHJcbiIgJSBbKHVyaS5wYXRoIG9yICcvJyksICh1cmkudmFyc3Ry # aW5nLmVtcHR5PyA/ICcnIDogJz8nICsgdXJpLnZhcnN0cmluZyldCiAgICAg # ICAgICBlbHNlCiAgICAgICAgICAgIGlvLndyaXRlICJQT1NUICVzJXMgSFRU # UC8xLjBcclxuIiAlIFsodXJpLnBhdGggb3IgJy8nKSwgKHVyaS52YXJzdHJp # bmcuZW1wdHk/ID8gJycgOiAnPycgKyB1cmkudmFyc3RyaW5nKV0KICAgICAg # ICAgIGVuZAogICAgICAgIGVsc2UKICAgICAgICAgIHByb3h5CT0gRVZVUkku # bmV3KCRwcm94eSkKICAgICAgICAgIGlvCT0gVENQU29ja2V0Lm5ldyhwcm94 # eS5ob3N0LCBwcm94eS5wb3J0Lnplcm8/ID8gODA4MCA6IHByb3h5LnBvcnQp # CgogICAgICAgICAgaWYgcG9zdC5lbXB0eT8KICAgICAgICAgICAgaW8ud3Jp # dGUgIkdFVCAlcyBIVFRQLzEuMFxyXG4iICUgdXJpCiAgICAgICAgICBlbHNl # CiAgICAgICAgICAgIGlvLndyaXRlICJQT1NUICVzIEhUVFAvMS4wXHJcbiIg # JSB1cmkKICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBpby53 # cml0ZSAiSG9zdDogJXNcclxuIiAlIGhvc3QKICAgICAgICBpby53cml0ZSAi # VXNlci1BZ2VudDogeHl6XHJcbiIKICAgICAgICBpby53cml0ZSAiUHJveHkt # QXV0aG9yaXphdGlvbjogQmFzaWMgJXNcclxuIiAlICRwcm94eV9hdXRoCXVu # bGVzcyAkcHJveHlfYXV0aC5uaWw/CiAgICAgICAgI2lvLndyaXRlICJBY2Nl # cHQtRW5jb2Rpbmc6IGRlZmxhdGVcclxuIgogICAgICAgICNpby53cml0ZSAi # QWNjZXB0LUNoYXJzZXQ6IElTTy04ODU5LTFcclxuIgogICAgICAgIGlvLndy # aXRlICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCiAgICAgICAgaW8ud3JpdGUg # IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv # ZGVkXHJcbiIJdW5sZXNzIHBvc3QuZW1wdHk/CiAgICAgICAgaW8ud3JpdGUg # IkNvbnRlbnQtTGVuZ3RoOiAlc1xyXG4iICUgcG9zdC5sZW5ndGgJCQl1bmxl # c3MgcG9zdC5lbXB0eT8KICAgICAgICBodHRwaGVhZGVyLmVhY2ggZG8gfGss # IHZ8CiAgICAgICAgICAkc3RkZXJyLnB1dHMgIiVzOiAlc1xyXG4iICUgW2ss # IHZdCiAgICAgICAgICBpby53cml0ZSAiJXM6ICVzXHJcbiIgJSBbaywgdl0K # ICAgICAgICBlbmQKICAgICAgICBpby53cml0ZSAiXHJcbiIKICAgICAgICBp # by53cml0ZSBwb3N0CQkJCQkJCXVubGVzcyBwb3N0LmVtcHR5PwoKICAgICAg # ICBpby5jbG9zZV93cml0ZQoKICAgICAgICByZXMJCT0gaW8ucmVhZAoKICAg # ICAgICBpby5jbG9zZV9yZWFkCgogICAgICAgIGhlYWRlciwgZGF0YQk9IG5p # bCwgbmlsCiAgICAgICAgaGVhZGVyLCBkYXRhCT0gcmVzLnNwbGl0KC9ccipc # blxyKlxuLywgMikJaWYgbm90IHJlcy5uaWw/CgogICAgICAgIGhlYWRlcgk9 # IEhlYWRlci5uZXcoaGVhZGVyKQogICAgICAgIGxlbmd0aAk9IGhlYWRlci5o # ZWFkZXJbImNvbnRlbnQtbGVuZ3RoIl0KICAgICAgICBkYXRhCT0gIiIJaWYg # bGVuZ3RoID09ICIwIgoKICAgICAgICBpZiBoZWFkZXIuaGVhZGVyWyJsb2Nh # dGlvbiJdICE9IHVyaS50b19zCiAgICAgICAgICB1cmkJPSBFVlVSSS5uZXco # dXJpKSArIGhlYWRlci5oZWFkZXJbImxvY2F0aW9uIl0KICAgICAgICBlbHNl # CiAgICAgICAgICB1cmkJPSBuaWwKICAgICAgICBlbmQKCiAgICAgICAgaWYg # aGVhZGVyLmhlYWRlclsidHJhbnNmZXItZW5jb2RpbmciXSA9PSAiY2h1bmtl # ZCIKICAgICAgICAgIGRhdGEJPSBDaHVuay5uZXcoZGF0YSkudG9fcwlpZiBu # b3QgZGF0YS5uaWw/CiAgICAgICAgZW5kCgogICAgICAgICNpZiBoZWFkZXIu # aGVhZGVyWyJjb250ZW50LWVuY29kaW5nIl0gPT0gImd6aXAiCiAgICAgICAg # ICAjZGF0YQk9ICJnemlwIC1kIi5leGVjKGRhdGEpCWlmIG5vdCBkYXRhLm5p # bD8KICAgICAgICAjZW5kCgogICAgICAgIGRhdGEJPSBuaWwJdW5sZXNzIGhl # YWRlci5jb2RlID09IDIwMAogICAgICBlbmQKICAgIHJlc2N1ZSBFcnJubzo6 # RUNPTk5SRVNFVCwgRXJybm86OkVIT1NUVU5SRUFDSCA9PiBlCiAgICAgICRz # dGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgc2xlZXAgMQogICAgICByZXRy # eQogICAgcmVzY3VlIEVycm5vOjpFQ09OTlJFRlVTRUQgPT4gZQogICAgICBk # YXRhCT0gbmlsCiAgICByZXNjdWUgTm9BZGRyZXNzRXhjZXB0aW9uLCBFcnJu # bzo6RUNPTk5SRUZVU0VEID0+IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVz # c2FnZQogICAgICBkYXRhCT0gbmlsCiAgICBlbmQKCiAgICBHQy5zdGFydAoK # ICAgIHJldHVybiBkYXRhCiAgZW5kCgogIGRlZiBzZWxmLmhlYWRfZnJvbV9j # YWNoZSh1cmksIGZvcm09e30pCiAgICBmcm9tX2NhY2hlKCJoZWFkIiwgdXJp # LCBmb3JtKQogIGVuZAoKICBkZWYgc2VsZi5nZXRfZnJvbV9jYWNoZSh1cmks # IGZvcm09e30pCiAgICBmcm9tX2NhY2hlKCJnZXQiLCB1cmksIGZvcm0pCiAg # ZW5kCgogIGRlZiBzZWxmLmZyb21fY2FjaGUoYWN0aW9uLCB1cmksIGZvcm0p # CiAgICBsb2MJCT0gdXJpLnRvX3MgKyBmb3JtLnNvcnQuaW5zcGVjdAogICAg # aGFzaAk9IE1ENS5uZXcoIiN7QEB2ZXJzaWV9ICN7bG9jfSIpCgogICAgZGly # CQk9ICIje3RlbXB9L2V2Y2FjaGUuI3t1c2VyfS9odHRwY2xpZW50LiN7YWN0 # aW9ufSIKICAgIGZpbGUJPSAiI3tkaXJ9LyN7aGFzaH0iCiAgICBkYXRhCT0g # bmlsCgogICAgRmlsZS5ta3BhdGgoZGlyKQoKICAgIGV4cGlyZQk9IDM1Nioy # NCo2MCo2MAoKICAgIGlmIEZpbGUuZmlsZT8oZmlsZSkgYW5kIChUaW1lLm5l # dy50b19mIC0gRmlsZS5zdGF0KGZpbGUpLm10aW1lLnRvX2YgPCBleHBpcmUp # CiAgICAgIEBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBGaWxlLm9w # ZW4oZmlsZSwgInJiIikJe3xmfCBkYXRhID0gZi5yZWFkfQogICAgICBlbmQK # ICAgIGVsc2UKICAgICAgZGF0YQk9IG1ldGhvZChhY3Rpb24pLmNhbGwodXJp # LCBmb3JtKQoKICAgICAgaWYgbm90IGRhdGEubmlsPwogICAgICAgIEBAbXV0 # ZXguc3luY2hyb25pemUgZG8KICAgICAgICAgIEZpbGUub3BlbihmaWxlLCAi # d2IiKQl7fGZ8IGYud3JpdGUgZGF0YX0KICAgICAgICBlbmQKICAgICAgZW5k # CiAgICBlbmQKCiAgICByZXR1cm4gZGF0YQogIGVuZAplbmQKCmNsYXNzIFJl # cXVlc3RHZXQgPCBIYXNoCiAgZGVmIGluaXRpYWxpemUoZGF0YSkKICAgIENH # SS5wYXJzZShkYXRhKS5lYWNoIGRvIHxrLCB2fAogICAgICBzZWxmW2tdCT0g # dgogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgUmVxdWVzdFBvc3QgPCBIYXNo # CiAgZGVmIGluaXRpYWxpemUoZGF0YSkKICAgIENHSS5wYXJzZShkYXRhKS5l # YWNoIGRvIHxrLCB2fAogICAgICBzZWxmW2tdCT0gdgogICAgZW5kCiAgZW5k # CmVuZAoKY2xhc3MgUmVxdWVzdFJlcXVlc3QKICBhdHRyX3JlYWRlciA6bWV0 # aG9kCiAgYXR0cl9yZWFkZXIgOnVyaQogIGF0dHJfcmVhZGVyIDpwYXRoCiAg # YXR0cl9yZWFkZXIgOmRhdGEKICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKCiAg # ZGVmIGluaXRpYWxpemUoZmlyc3RsaW5lKQogICAgQG1ldGhvZCwgQHVyaSwg # QHByb3RvY29sCT0gZmlyc3RsaW5lLnNwbGl0KC8gLykKICAgIEBwYXRoLCBA # ZGF0YQkJPSBAdXJpLnNwbGl0KC9cPy8pCiAgICBAZGF0YQkJCT0gIiIJCQlp # ZiBAZGF0YS5uaWw/CSMgVE9ETwoKIyAgICBpCT0gQHBhdGguaW5kZXgoLyVb # WzpkaWdpdDpdXXsyfS8pCiMgICAgd2hpbGUgbm90IGkubmlsPwojICAgICAg # QHBhdGgJPSBAcGF0aFswLi4oaS0xKV0gKyBAcGF0aFsoaSsxKS4uKGkrMild # LnVucGFjaygnSDInKS5zaGlmdC50b19pLmNociArIEBwYXRoWyhpKzMpLi4t # MV0KIyAgICAgIGkJPSBAcGF0aC5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykK # IyAgICBlbmQKICBlbmQKCiAgZGVmIHRvX3MKICAgICIje0BtZXRob2R9ICN7 # QHVyaX0gI3tAcHJvdG9jb2x9XHJcbiIKICBlbmQKCiAgZGVmIGluc3BlY3QK # ICAgICIoUmVxdWVzdFJlcXVlc3Q6ICVzKSIgJSBbQG1ldGhvZCwgQHBhdGgs # IEBkYXRhLCBAcHJvdG9jb2xdLmpvaW4oIiwgIikKICBlbmQKZW5kCgpjbGFz # cyBSZXF1ZXN0IDwgSGFzaAogIGF0dHJfcmVhZGVyIDpwZWVyYWRkcgogIGF0 # dHJfcmVhZGVyIDpyZXF1ZXN0CiAgYXR0cl9yZWFkZXIgOmNvb2tpZXMKICBh # dHRyX3JlYWRlciA6dmFycwogIGF0dHJfcmVhZGVyIDp1c2VyCiAgYXR0cl93 # cml0ZXIgOnVzZXIKCiAgZGVmIGluaXRpYWxpemUoaW8pCiAgICBAaW8JCT0g # aW8KCiAgICBmaXJzdGxpbmUJPSBAaW8uZ2V0cwoKICAgIHJldHVybglpZiBm # aXJzdGxpbmUubmlsPwoKICAgIEByZXF1ZXN0CT0gUmVxdWVzdFJlcXVlc3Qu # bmV3KGZpcnN0bGluZS5zdHJpcCkKCiAgICBsaW5lCT0gQGlvLmdldHMKICAg # IGxpbmUJPSBsaW5lLnN0cmlwCXVubGVzcyBsaW5lLm5pbD8KICAgIHdoaWxl # IG5vdCBsaW5lLm5pbD8gYW5kIG5vdCBsaW5lLmVtcHR5PwogICAgICBrZXks # IHZhbHVlCT0gbGluZS5zcGxpdCgiICIsIDIpCiAgICAgIHNlbGZba2V5LnN1 # YigvOiQvLCAiIikuZG93bmNhc2VdCT0gdmFsdWUKCiAgICAgIGxpbmUJPSBA # aW8uZ2V0cwogICAgICBsaW5lCT0gbGluZS5zdHJpcAl1bmxlc3MgbGluZS5u # aWw/CiAgICBlbmQKCiAgICBjb29raWUJPSBzZWxmWyJjb29raWUiXQogICAg # Y29va2llCT0gIiIJaWYgY29va2llLm5pbD8KICAgIEBjb29raWVzCT0ge30K # ICAgIGNvb2tpZS5zcGxpdCgvOy8pLmVhY2ggZG8gfHN8CiAgICAgIGssIHYJ # CT0gcy5zdHJpcC5zcGxpdCgvPS8sIDIpCiAgICAgIEBjb29raWVzW2tdCT0g # dgogICAgZW5kCgogICAgaWYgbm90IEByZXF1ZXN0Lm1ldGhvZC5uaWw/CiAg # ICAgIGNhc2UgQHJlcXVlc3QubWV0aG9kLnVwY2FzZQogICAgICB3aGVuICJI # RUFEIgogICAgICB3aGVuICJHRVQiCiAgICAgICAgQHZhcnMJPSBSZXF1ZXN0 # R2V0Lm5ldyhAcmVxdWVzdC5kYXRhLm5pbD8gPyAiIiA6IEByZXF1ZXN0LmRh # dGEpCiAgICAgIHdoZW4gIlBPU1QiCiAgICAgICAgZGF0YQk9IChAaW8ucmVh # ZChzZWxmWyJjb250ZW50LWxlbmd0aCJdLnRvX2kpIG9yICIiKQogICAgICAg # IEB2YXJzCT0gUmVxdWVzdFBvc3QubmV3KChzZWxmWyJjb250ZW50LXR5cGUi # XSA9PSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgPyBk # YXRhIDogIiIpCiAgICAgIGVsc2UKICAgICAgICAkc3RkZXJyLnB1dHMgIlVu # a25vd24gcmVxdWVzdCAoJyN7Zmlyc3RsaW5lfScpLiIKICAgICAgZW5kCiAg # ICBlbmQKCiAgICBAcGVlcmFkZHIJPSBAaW8ucGVlcmFkZHIKCiAgICBAcGRh # CT0gZmFsc2UKICAgIEBwZGEJPSB0cnVlCWlmIChzZWxmLmluY2x1ZGU/KCJ1 # c2VyLWFnZW50IikgYW5kIHNlbGZbInVzZXItYWdlbnQiXS5kb3duY2FzZS5p # bmNsdWRlPygid2luZG93cyBjZSIpKQogICAgQHBkYQk9IHRydWUJaWYgKHNl # bGYuaW5jbHVkZT8oInVzZXItYWdlbnQiKSBhbmQgc2VsZlsidXNlci1hZ2Vu # dCJdLmRvd25jYXNlLmluY2x1ZGU/KCJoYW5kaHR0cCIpKQoKICAgIEBpby5j # bG9zZV9yZWFkCiAgZW5kCgogIGRlZiBwZGE/CiAgICBAcGRhCiAgZW5kCgog # IGRlZiB0b19zCiAgICByZXMgPSBAcmVxdWVzdC50b19zCiAgICBzZWxmLmVh # Y2ggZG8gfGssIHZ8CiAgICAgIHJlcyA8PCAiI3trfTogI3t2fVxyXG4iCiAg # ICBlbmQKICAgIHJlcwogIGVuZAoKICBkZWYgaW5zcGVjdAogICAgIihSZXF1 # ZXN0OiAlcykiICUgW0BwZWVyYWRkciwgQHJlcXVlc3QuaW5zcGVjdCwgQHZh # cnMuaW5zcGVjdCwgQGNvb2tpZXMuaW5zcGVjdCwgc3VwZXJdLmpvaW4oIiwg # IikKICBlbmQKZW5kCgpjbGFzcyBSZXNwb25zZSA8IEhhc2gKICBhdHRyX3dy # aXRlciA6cmVzcG9uc2UKICBhdHRyX3dyaXRlciA6ZmlsZQogIGF0dHJfcmVh # ZGVyIDpjb29raWVzCiAgYXR0cl9yZWFkZXIgOnN0b3AKICBhdHRyX3JlYWRl # ciA6YXRfc3RvcAoKICBkZWYgaW5pdGlhbGl6ZShpbykKICAgIEBpbwkJPSBp # bwogICAgQHJlc3BvbnNlCT0gIkhUVFAvMS4wIDIwMCBPSyIKICAgIEBjb29r # aWVzCT0ge30KICAgIEBkYXRhCT0gIiIKICAgIEBzeW5jZAk9IGZhbHNlCiAg # ICBAc3RvcAk9IGZhbHNlCiAgICBAYXRfc3RvcAk9IGxhbWJkYXt9CiAgICBA # ZmlsZQk9IG5pbAogIGVuZAoKICBkZWYgZmx1c2gKICAgIHN5bmMKCiAgICBp # ZiBAZmlsZQogICAgICBGaWxlLm9wZW4oQGZpbGUsICJyYiIpIGRvIHxmfAog # ICAgICAgIHdoaWxlIGRhdGEgPSBmLnJlYWQoMTBfMDAwKQogICAgICAgICAg # QGlvLndyaXRlIGRhdGEKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQK # CiAgICBAaW8uY2xvc2UKICBlbmQKCiAgZGVmIHRvX3MKICAgIHJlcyA9ICIj # e0ByZXNwb25zZX1cclxuIgogICAgc2VsZi5lYWNoIGRvIHxrLCB2fAogICAg # ICByZXMgPDwgIiN7a306ICN7dn1cclxuIgogICAgZW5kCgogICAgQGNvb2tp # ZXMuZWFjaCBkbyB8aywgdnwKICAgICAgcmVzIDw8ICJTZXQtQ29va2llOiAl # cz0lcztcclxuIiAlIFtrLCB2XQogICAgZW5kCgogICAgcmVzCiAgZW5kCgog # IGRlZiBzeW5jCiAgICBzaXplCT0gKEBkYXRhIG9yICIiKS5sZW5ndGgKCiAg # ICBpZiBAZmlsZQogICAgICBleHQJPSBAZmlsZS5zY2FuKC9cLlteXC5dKiQv # KQogICAgICBleHQJPSBleHQuc2hpZnQKICAgICAgZXh0CT0gZXh0WzEuLi0x # XQl1bmxlc3MgZXh0Lm5pbD8KICAgICAgbWltZXR5cGUJPSBFVk1pbWU6Ok1p # bWVUeXBlW2V4dF0KCiAgICAgIHNlbGZbIkNvbnRlbnQtVHlwZSJdCT0gbWlt # ZXR5cGUJCXVubGVzcyBtaW1ldHlwZS5uaWw/CgogICAgICBzaXplICs9IEZp # bGUuc2l6ZShAZmlsZSkJaWYgRmlsZS5maWxlPyhAZmlsZSkKICAgIGVuZAoK # ICAgIHNlbGZbIkNvbnRlbnQtTGVuZ3RoIl0JPSBzaXplCgogICAgQGlvLndy # aXRlKCIje3RvX3N9XHJcbiIpCXVubGVzcyBAc3luY2QKICAgIEBpby53cml0 # ZShAZGF0YSkKICAgIEBkYXRhCT0gIiIKICAgIEBzeW5jZAk9IHRydWUKICBl # bmQKCiAgZGVmIDw8IChzKQogICAgQGRhdGEgPDwgcwogIGVuZAoKICBkZWYg # Y2xlYW4KICAgIEBkYXRhCT0gIiIKICBlbmQKCiAgZGVmIGluc3BlY3QKICAg # ICIoUmVzcG9uc2U6ICVzKSIgJSBbQHJlc3BvbnNlLCBAZGF0YV0uam9pbigi # LCAiKQogIGVuZAoKICBkZWYgc3RvcCgmYmxvY2spCiAgICBAc3RvcAk9IHRy # dWUKICAgIEBhdF9zdG9wCT0gYmxvY2sJdW5sZXNzIGJsb2NrLm5pbD8KICBl # bmQKCiAgZGVmIHN0b3A/CiAgICBAc3RvcAogIGVuZAplbmQKCmNsYXNzIEhU # VFBTZXJ2ZXJFeGNlcHRpb24gPCBFeGNlcHRpb24KZW5kCgpjbGFzcyBIVFRQ # U2VydmVyCiAgZGVmIHNlbGYuc2VydmUocG9ydGlvPTgwLCByZW1vdGU9ZmFs # c2UsIGF1dGg9bmlsLCByZWFsbT0iZXYvbmV0IikKICAgIHBvcnQsIHNlcnZl # cgk9IHBvcnRpbwoKICAgIGJlZ2luCiAgICAgIHNlcnZlcgk9IFRDUFNlcnZl # ci5uZXcocmVtb3RlID8gIjAuMC4wLjAiIDogImxvY2FsaG9zdCIsIHBvcnQp # CWlmIHNlcnZlci5uaWw/CgogICAgICAkc3RkZXJyLnB1dHMgIkp1c3QgcG9p # bnQgeW91ciBicm93c2VyIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6I3twb3J0fS8g # Li4uIgogICAgcmVzY3VlCiAgICAgIHNlcnZlcgk9IG5pbAoKICAgICAgJHN0 # ZGVyci5wdXRzICJQb3J0ICN7cG9ydH0gaXMgaW4gdXNlLiIKICAgIGVuZAoK # ICAgIGlmIG5vdCBzZXJ2ZXIubmlsPwogICAgICBjb3VudAk9IDAKCiAgICAg # IGF0X2V4aXQgZG8KICAgICAgICAjJHN0ZGVyci5wdXRzICJSZWNlaXZlZCAj # e2NvdW50fSByZXF1ZXN0cyIKICAgICAgZW5kCgogICAgICBzZXJ2ZXJ0aHJl # YWQgPQogICAgICBUaHJlYWQubmV3IGRvCiAgICAgICAgbXV0ZXgJPSBNdXRl # eC5uZXcKCiAgICAgICAgVGhyZWFkLmN1cnJlbnRbInRocmVhZHMiXQk9IFtd # CgogICAgICAgIGV2ZXJ5KDEsIFRocmVhZC5jdXJyZW50KSBkbyB8dGhyZWFk # fAogICAgICAgICAgbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICAgICAg # dGhyZWFkWyJ0aHJlYWRzIl0uZGVsZXRlX2lme3x0fCAobm90IHQuYWxpdmU/ # KX0KICAgICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBsb29wIGRv # CiAgICAgICAgICBpbwk9IHNlcnZlci5hY2NlcHQKICAgICAgICAgIGNvdW50 # ICs9IDEKCiAgICAgICAgICB0aHJlYWQgPQogICAgICAgICAgVGhyZWFkLm5l # dyhUaHJlYWQuY3VycmVudCwgY291bnQpIGRvIHxwYXJlbnR0aHJlYWQsIGNv # dW50MnwKICAgICAgICAgICAgc3RvcAk9IGZhbHNlCgogICAgICAgICAgICBi # ZWdpbgogICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICByZXEJ # PSBSZXF1ZXN0Lm5ldyhpbykKICAgICAgICAgICAgICAgIHJlc3AJPSBSZXNw # b25zZS5uZXcoaW8pCiAgICAgICAgICAgICAgcmVzY3VlCiAgICAgICAgICAg # ICAgICByYWlzZSBIVFRQU2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAgICAg # ZW5kCgogICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICBpcAk9 # IHJlcS5wZWVyYWRkclszXQogICAgICAgICAgICAgIHJlc2N1ZSBOYW1lRXJy # b3IKICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBTZXJ2ZXJFeGNlcHRpb24K # ICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgaWYgKG5vdCByZW1v # dGUpIG9yIChyZW1vdGUgYW5kIChhdXRoLm5pbD8gb3IgYXV0aC5lbXB0eT8g # b3IgYXV0aGVudGljYXRlKGF1dGgsIHJlYWxtLCByZXEsIHJlc3ApKSkKICAg # ICAgICAgICAgICAgICRzdGRlcnIucHV0cyAiI3tjb3VudDJ9ICN7VGltZS5u # ZXcuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIil9ICN7aXB9ICN7cmVx # LnVzZXJ9ICN7cmVxLnJlcXVlc3QudG9fcy5zdHJpcH0iCgogICAgICAgICAg # ICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgeWllbGQocmVxLCByZXNw # KQogICAgICAgICAgICAgICAgcmVzY3VlIEV4Y2VwdGlvbiA9PiBlCiAgICAg # ICAgICAgICAgICAgIG11dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgICAg # ICAgICAgICAgJHN0ZGVyci5wdXRzIGUuY2xhc3MudG9fcyArICI6ICIgKyBl # Lm1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMgZS5i # YWNrdHJhY2UuY29sbGVjdHt8c3wgIlx0IitzfS5qb2luKCJcbiIpCiAgICAg # ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICByZXNwWyJDb250 # ZW50LVR5cGUiXQk9ICJ0ZXh0L3BsYWluIgogICAgICAgICAgICAgICAgICBy # ZXNwLnJlc3BvbnNlCQk9ICJIVFRQLzEuMCAyMDAgPz8/IgogICAgICAgICAg # ICAgICAgICByZXNwLmNsZWFuCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwg # ZS5jbGFzcy50b19zICsgIjogIiArIGUubWVzc2FnZQogICAgICAgICAgICAg # ICAgICByZXNwIDw8ICJcbiIKICAgICAgICAgICAgICAgICAgcmVzcCA8PCAi # XG4iCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgZS5iYWNrdHJhY2UuY29s # bGVjdHt8c3wgIlx0IitzfS5qb2luKCJcbiIpCiAgICAgICAgICAgICAgICAg # IHJlc3AgPDwgIlxuIgogICAgICAgICAgICAgICAgICByZXNwIDw8ICJcbiIK # ICAgICAgICAgICAgICAgICAgcmVzcCA8PCAiKFlvdSBjYW4gdXNlIHRoZSBi # YWNrIGJ1dHRvbiBhbmQgc3RvcCB0aGUgYXBwbGljYXRpb24gcHJvcGVybHks # IGlmIGFwcHJvcHJpYXRlLikiCiAgICAgICAgICAgICAgICBlbmQKCiAgICAg # ICAgICAgICAgICBzdG9wCT0gdHJ1ZQlpZiByZXNwLnN0b3A/CiAgICAgICAg # ICAgICAgZW5kCgogICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAg # ICByZXNwLmZsdXNoCQkJCiAgICAgICAgICAgICAgcmVzY3VlCiAgICAgICAg # ICAgICAgICByYWlzZSBIVFRQU2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAg # ICAgZW5kCiAgICAgICAgICAgIHJlc2N1ZSBIVFRQU2VydmVyRXhjZXB0aW9u # CiAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgcGFyZW50dGhyZWFkWyJz # dG9wIl0JPSByZXNwCWlmIHN0b3AKICAgICAgICAgIGVuZAoKICAgICAgICAg # IG11dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgICAgIFRocmVhZC5jdXJy # ZW50WyJ0aHJlYWRzIl0gPDwgdGhyZWFkCiAgICAgICAgICBlbmQKICAgICAg # ICBlbmQKICAgICAgZW5kCgogICAgICBzbGVlcCAwLjEJd2hpbGUgbm90IHNl # cnZlcnRocmVhZFsic3RvcCJdCgogICAgICBzZXJ2ZXJ0aHJlYWRbInRocmVh # ZHMiXS5lYWNoIHt8dHwgdC5qb2lufQoKICAgICAgc2VydmVydGhyZWFkWyJz # dG9wIl0uYXRfc3RvcC5jYWxsCgogICAgICBzZXJ2ZXJ0aHJlYWQua2lsbAog # ICAgZW5kCiAgZW5kCgogIGRlZiBzZWxmLmF1dGhlbnRpY2F0ZShhdXRoLCBy # ZWFsbSwgcmVxLCByZXNwKQogICAgaWYgYXV0aC5raW5kX29mPyBTdHJpbmcK # ICAgICAgZmlsZQk9ICIje2hvbWV9LyN7YXV0aH0iCiAgICAgIGF1dGhzCT0g # e30KICAgICAgYXV0aHMJPSBIYXNoLmZpbGUoZmlsZSkJaWYgRmlsZS5maWxl # PyhmaWxlKQogICAgZWxzZQogICAgICBhdXRocwk9IGF1dGgKICAgIGVuZAoK # ICAgIGF1dGh1c2VycGFzc3dvcmQJPSByZXFbImF1dGhvcml6YXRpb24iXQog # ICAgaWYgbm90IGF1dGh1c2VycGFzc3dvcmQubmlsPwogICAgICBhdXRodHlw # ZSwgdXNlcnBhc3N3b3JkCT0gYXV0aHVzZXJwYXNzd29yZC5zcGxpdCgvIC8p # CiAgICAgIGlmIGF1dGh0eXBlID09ICJCYXNpYyIgYW5kIG5vdCB1c2VycGFz # c3dvcmQubmlsPwogICAgICAgIHUsIHAJPSB1c2VycGFzc3dvcmQudW5wYWNr # KCJtIikuc2hpZnQuc3BsaXQoLzovKQogICAgICBlbmQKICAgIGVuZAoKICAg # IG9rCT0gKGF1dGhzLmluY2x1ZGU/KHUpIGFuZCBhdXRoc1t1XSA9PSBwKQoK # ICAgIHVubGVzcyBvawogICAgICByZXNwWyJXV1ctQXV0aGVudGljYXRlIl0J # PSAiQmFzaWMgcmVhbG09XCIje3JlYWxtfVwiIgogICAgICByZXNwLnJlc3Bv # bnNlCQk9ICJIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkIgogICAgZW5kCgog # ICAgcmVxLnVzZXIJPSB1CgogICAgcmV0dXJuIG9rCiAgZW5kCmVuZAoAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRt # cC5lYXIycnVieXNjcmlwdC5mLjExNTk0LnRhci9ldi9taW1lLnJiAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAzMTYxMwAx # MDI1MDMyMDYxMwAwMjAxMjMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAbW9kdWxlIEVWTWltZQogIE1pbWVUeXBlID0ge30K # CiAgTWltZVR5cGVbJzEyMyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0x # LTItMycKICBNaW1lVHlwZVsnM2RzJ10gPSAnaW1hZ2UveC0zZHMnCiAgTWlt # ZVR5cGVbJ2EnXSA9ICdhcHBsaWNhdGlvbi94LXVuaXgtYXJjaGl2ZScKICBN # aW1lVHlwZVsnYWJ3J10gPSAnYXBwbGljYXRpb24veC1hYml3b3JkJwogIE1p # bWVUeXBlWydhYzMnXSA9ICdhdWRpby9hYzMnCiAgTWltZVR5cGVbJ2FmbSdd # ID0gJ2FwcGxpY2F0aW9uL3gtZm9udC1hZm0nCiAgTWltZVR5cGVbJ2FnJ10g # PSAnaW1hZ2UveC1hcHBsaXgtZ3JhcGhpYycKICBNaW1lVHlwZVsnYWlmJ10g # PSAnYXVkaW8veC1haWZmJwogIE1pbWVUeXBlWydhaWZjJ10gPSAnYXVkaW8v # eC1haWZmJwogIE1pbWVUeXBlWydhaWZmJ10gPSAnYXVkaW8veC1haWZmJwog # IE1pbWVUeXBlWydhcCddID0gJ2FwcGxpY2F0aW9uL3gtYXBwbGl4LXByZXNl # bnRzJwogIE1pbWVUeXBlWydhcGUnXSA9ICdhcHBsaWNhdGlvbi94LWFwZScK # ICBNaW1lVHlwZVsnYXJqJ10gPSAnYXBwbGljYXRpb24veC1hcmonCiAgTWlt # ZVR5cGVbJ2FzJ10gPSAnYXBwbGljYXRpb24veC1hcHBsaXgtc3ByZWFkc2hl # ZXQnCiAgTWltZVR5cGVbJ2FzYyddID0gJ3RleHQvcGxhaW4nCiAgTWltZVR5 # cGVbJ2FzZiddID0gJ3ZpZGVvL3gtbXMtYXNmJwogIE1pbWVUeXBlWydhc3An # XSA9ICdhcHBsaWNhdGlvbi94LWFzcCcKICBNaW1lVHlwZVsnYXN4J10gPSAn # YXVkaW8veC1tcy1hc3gnCiAgTWltZVR5cGVbJ2F1J10gPSAnYXVkaW8veC11 # bGF3JwogIE1pbWVUeXBlWydhdmknXSA9ICd2aWRlby94LW1zdmlkZW8nCiAg # TWltZVR5cGVbJ2F3J10gPSAnYXBwbGljYXRpb24veC1hcHBsaXgtd29yZCcK # ICBNaW1lVHlwZVsnYmFrJ10gPSAnYXBwbGljYXRpb24veC1iYWNrdXAnCiAg # TWltZVR5cGVbJ2JjcGlvJ10gPSAnYXBwbGljYXRpb24veC1iY3BpbycKICBN # aW1lVHlwZVsnYmRmJ10gPSAnYXBwbGljYXRpb24veC1mb250LWJkZicKICBN # aW1lVHlwZVsnYmliJ10gPSAndGV4dC9iaWInCiAgTWltZVR5cGVbJ2Jpbidd # ID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKICBNaW1lVHlwZVsnYmxl # bmQnXSA9ICdhcHBsaWNhdGlvbi94LWJsZW5kZXInCiAgTWltZVR5cGVbJ2Js # ZW5kZXInXSA9ICdhcHBsaWNhdGlvbi94LWJsZW5kZXInCiAgTWltZVR5cGVb # J2JtcCddID0gJ2ltYWdlL2JtcCcKICBNaW1lVHlwZVsnYnonXSA9ICdhcHBs # aWNhdGlvbi94LWJ6aXAnCiAgTWltZVR5cGVbJ2J6MiddID0gJ2FwcGxpY2F0 # aW9uL3gtYnppcCcKICBNaW1lVHlwZVsnYyddID0gJ3RleHQveC1jJwogIE1p # bWVUeXBlWydjKysnXSA9ICd0ZXh0L3gtYysrJwogIE1pbWVUeXBlWydjYydd # ID0gJ3RleHQveC1jKysnCiAgTWltZVR5cGVbJ2NkZiddID0gJ2FwcGxpY2F0 # aW9uL3gtbmV0Y2RmJwogIE1pbWVUeXBlWydjZHInXSA9ICdhcHBsaWNhdGlv # bi92bmQuY29yZWwtZHJhdycKICBNaW1lVHlwZVsnY2dpJ10gPSAnYXBwbGlj # YXRpb24veC1jZ2knCiAgTWltZVR5cGVbJ2NnbSddID0gJ2ltYWdlL2NnbScK # ICBNaW1lVHlwZVsnY2xhc3MnXSA9ICdhcHBsaWNhdGlvbi94LWphdmEtYnl0 # ZS1jb2RlJwogIE1pbWVUeXBlWydjbHMnXSA9ICd0ZXh0L3gtdGV4JwogIE1p # bWVUeXBlWydjcGlvJ10gPSAnYXBwbGljYXRpb24veC1jcGlvJwogIE1pbWVU # eXBlWydjcHAnXSA9ICd0ZXh0L3gtYysrJwogIE1pbWVUeXBlWydjc2gnXSA9 # ICd0ZXh0L3gtY3NoJwogIE1pbWVUeXBlWydjc3MnXSA9ICd0ZXh0L2NzcycK # ICBNaW1lVHlwZVsnY3N2J10gPSAndGV4dC94LWNvbW1hLXNlcGFyYXRlZC12 # YWx1ZXMnCiAgTWltZVR5cGVbJ2RhdCddID0gJ3ZpZGVvL21wZWcnCiAgTWlt # ZVR5cGVbJ2RiZiddID0gJ2FwcGxpY2F0aW9uL3gteGJhc2UnCiAgTWltZVR5 # cGVbJ2RjJ10gPSAnYXBwbGljYXRpb24veC1kYy1yb20nCiAgTWltZVR5cGVb # J2RjbCddID0gJ3RleHQveC1kY2wnCiAgTWltZVR5cGVbJ2RjbSddID0gJ2lt # YWdlL3gtZGNtJwogIE1pbWVUeXBlWydkZWInXSA9ICdhcHBsaWNhdGlvbi94 # LWRlYicKICBNaW1lVHlwZVsnZGVza3RvcCddID0gJ2FwcGxpY2F0aW9uL3gt # Z25vbWUtYXBwLWluZm8nCiAgTWltZVR5cGVbJ2RpYSddID0gJ2FwcGxpY2F0 # aW9uL3gtZGlhLWRpYWdyYW0nCiAgTWltZVR5cGVbJ2RpZmYnXSA9ICd0ZXh0 # L3gtcGF0Y2gnCiAgTWltZVR5cGVbJ2RqdiddID0gJ2ltYWdlL3ZuZC5kanZ1 # JwogIE1pbWVUeXBlWydkanZ1J10gPSAnaW1hZ2Uvdm5kLmRqdnUnCiAgTWlt # ZVR5cGVbJ2RvYyddID0gJ2FwcGxpY2F0aW9uL21zd29yZCcKICBNaW1lVHlw # ZVsnZHNsJ10gPSAndGV4dC94LWRzbCcKICBNaW1lVHlwZVsnZHRkJ10gPSAn # dGV4dC94LWR0ZCcKICBNaW1lVHlwZVsnZHZpJ10gPSAnYXBwbGljYXRpb24v # eC1kdmknCiAgTWltZVR5cGVbJ2R3ZyddID0gJ2ltYWdlL3ZuZC5kd2cnCiAg # TWltZVR5cGVbJ2R4ZiddID0gJ2ltYWdlL3ZuZC5keGYnCiAgTWltZVR5cGVb # J2VsJ10gPSAndGV4dC94LWVtYWNzLWxpc3AnCiAgTWltZVR5cGVbJ2VtZidd # ID0gJ2ltYWdlL3gtZW1mJwogIE1pbWVUeXBlWydlcHMnXSA9ICdhcHBsaWNh # dGlvbi9wb3N0c2NyaXB0JwogIE1pbWVUeXBlWydldGhlbWUnXSA9ICdhcHBs # aWNhdGlvbi94LWUtdGhlbWUnCiAgTWltZVR5cGVbJ2V0eCddID0gJ3RleHQv # eC1zZXRleHQnCiAgTWltZVR5cGVbJ2V4ZSddID0gJ2FwcGxpY2F0aW9uL3gt # bXMtZG9zLWV4ZWN1dGFibGUnCiAgTWltZVR5cGVbJ2V6J10gPSAnYXBwbGlj # YXRpb24vYW5kcmV3LWluc2V0JwogIE1pbWVUeXBlWydmJ10gPSAndGV4dC94 # LWZvcnRyYW4nCiAgTWltZVR5cGVbJ2ZpZyddID0gJ2ltYWdlL3gteGZpZycK # ICBNaW1lVHlwZVsnZml0cyddID0gJ2ltYWdlL3gtZml0cycKICBNaW1lVHlw # ZVsnZmxhYyddID0gJ2F1ZGlvL3gtZmxhYycKICBNaW1lVHlwZVsnZmxjJ10g # PSAndmlkZW8veC1mbGMnCiAgTWltZVR5cGVbJ2ZsaSddID0gJ3ZpZGVvL3gt # ZmxpJwogIE1pbWVUeXBlWydnYiddID0gJ2FwcGxpY2F0aW9uL3gtZ2FtZWJv # eS1yb20nCiAgTWltZVR5cGVbJ2djaGVtcGFpbnQnXSA9ICdhcHBsaWNhdGlv # bi94LWdjaGVtcGFpbnQnCiAgTWltZVR5cGVbJ2djcmQnXSA9ICd0ZXh0L3gt # dmNhcmQnCiAgTWltZVR5cGVbJ2djcnlzdGFsJ10gPSAnYXBwbGljYXRpb24v # eC1nY3J5c3RhbCcKICBNaW1lVHlwZVsnZ2VtJ10gPSAndGV4dC94LXJ1Ynln # ZW0nCiAgTWltZVR5cGVbJ2dlbiddID0gJ2FwcGxpY2F0aW9uL3gtZ2VuZXNp # cy1yb20nCiAgTWltZVR5cGVbJ2dnJ10gPSAnYXBwbGljYXRpb24veC1zbXMt # cm9tJwogIE1pbWVUeXBlWydnaWYnXSA9ICdpbWFnZS9naWYnCiAgTWltZVR5 # cGVbJ2dsYWRlJ10gPSAnYXBwbGljYXRpb24veC1nbGFkZScKICBNaW1lVHlw # ZVsnZ25jJ10gPSAnYXBwbGljYXRpb24veC1nbnVjYXNoJwogIE1pbWVUeXBl # WydnbnVjYXNoJ10gPSAnYXBwbGljYXRpb24veC1nbnVjYXNoJwogIE1pbWVU # eXBlWydnbnVtZXJpYyddID0gJ2FwcGxpY2F0aW9uL3gtZ251bWVyaWMnCiAg # TWltZVR5cGVbJ2dyYXknXSA9ICdpbWFnZS94LWdyYXknCiAgTWltZVR5cGVb # J2d0YXInXSA9ICdhcHBsaWNhdGlvbi94LWd0YXInCiAgTWltZVR5cGVbJ2d6 # J10gPSAnYXBwbGljYXRpb24veC1nemlwJwogIE1pbWVUeXBlWydoJ10gPSAn # dGV4dC94LWMtaGVhZGVyJwogIE1pbWVUeXBlWydoKysnXSA9ICd0ZXh0L3gt # Yy1oZWFkZXInCiAgTWltZVR5cGVbJ2hkZiddID0gJ2FwcGxpY2F0aW9uL3gt # aGRmJwogIE1pbWVUeXBlWydobGxzJ10gPSAndGV4dC94LWhsbGFwaXNjcmlw # dCcKICBNaW1lVHlwZVsnaHBwJ10gPSAndGV4dC94LWMtaGVhZGVyJwogIE1p # bWVUeXBlWydocyddID0gJ3RleHQveC1oYXNrZWxsJwogIE1pbWVUeXBlWydo # dG0nXSA9ICd0ZXh0L2h0bWwnCiAgTWltZVR5cGVbJ2h0bWwnXSA9ICd0ZXh0 # L2h0bWwnCiAgTWltZVR5cGVbJ2ljYiddID0gJ2ltYWdlL3gtaWNiJwogIE1p # bWVUeXBlWydpY28nXSA9ICdpbWFnZS94LWljbycKICBNaW1lVHlwZVsnaWNz # J10gPSAndGV4dC9jYWxlbmRhcicKICBNaW1lVHlwZVsnaWRsJ10gPSAndGV4 # dC94LWlkbCcKICBNaW1lVHlwZVsnaWVmJ10gPSAnaW1hZ2UvaWVmJwogIE1p # bWVUeXBlWydpZmYnXSA9ICdpbWFnZS94LWlmZicKICBNaW1lVHlwZVsnaWxi # bSddID0gJ2ltYWdlL3gtaWxibScKICBNaW1lVHlwZVsnaXNvJ10gPSAnYXBw # bGljYXRpb24veC1pc28taW1hZ2UnCiAgTWltZVR5cGVbJ2l0J10gPSAnYXVk # aW8veC1pdCcKICBNaW1lVHlwZVsnamFyJ10gPSAnYXBwbGljYXRpb24veC1q # YXZhLWFyY2hpdmUnCiAgTWltZVR5cGVbJ2phdmEnXSA9ICd0ZXh0L3gtamF2 # YScKICBNaW1lVHlwZVsnanBlJ10gPSAnaW1hZ2UvanBlZycKICBNaW1lVHlw # ZVsnanBlZyddID0gJ2ltYWdlL2pwZWcnCiAgTWltZVR5cGVbJ2pwZyddID0g # J2ltYWdlL2pwZWcnCiAgTWltZVR5cGVbJ2pwciddID0gJ2FwcGxpY2F0aW9u # L3gtamJ1aWxkZXItcHJvamVjdCcKICBNaW1lVHlwZVsnanB4J10gPSAnYXBw # bGljYXRpb24veC1qYnVpbGRlci1wcm9qZWN0JwogIE1pbWVUeXBlWydqcydd # ID0gJ3RleHQveC1qYXZhc2NyaXB0JwogIE1pbWVUeXBlWydrZGVsbmsnXSA9 # ICdhcHBsaWNhdGlvbi94LWtkZS1hcHAtaW5mbycKICBNaW1lVHlwZVsna2ls # J10gPSAnYXBwbGljYXRpb24veC1raWxsdXN0cmF0b3InCiAgTWltZVR5cGVb # J2twciddID0gJ2FwcGxpY2F0aW9uL3gta3ByZXNlbnRlcicKICBNaW1lVHlw # ZVsna3NwJ10gPSAnYXBwbGljYXRpb24veC1rc3ByZWFkJwogIE1pbWVUeXBl # Wydrd2QnXSA9ICdhcHBsaWNhdGlvbi94LWt3b3JkJwogIE1pbWVUeXBlWyds # YSddID0gJ2FwcGxpY2F0aW9uL3gtc2hhcmVkLWxpYnJhcnktbGEnCiAgTWlt # ZVR5cGVbJ2xoYSddID0gJ2FwcGxpY2F0aW9uL3gtbGhhJwogIE1pbWVUeXBl # WydsaHMnXSA9ICd0ZXh0L3gtbGl0ZXJhdGUtaGFza2VsbCcKICBNaW1lVHlw # ZVsnbGh6J10gPSAnYXBwbGljYXRpb24veC1saHonCiAgTWltZVR5cGVbJ2xv # J10gPSAnYXBwbGljYXRpb24veC1vYmplY3QtZmlsZScKICBNaW1lVHlwZVsn # bHR4J10gPSAndGV4dC94LXRleCcKICBNaW1lVHlwZVsnbHdvJ10gPSAnaW1h # Z2UveC1sd28nCiAgTWltZVR5cGVbJ2x3b2InXSA9ICdpbWFnZS94LWx3bycK # ICBNaW1lVHlwZVsnbHdzJ10gPSAnaW1hZ2UveC1sd3MnCiAgTWltZVR5cGVb # J2x5eCddID0gJ3RleHQveC1seXgnCiAgTWltZVR5cGVbJ20nXSA9ICd0ZXh0 # L3gtb2JqYycKICBNaW1lVHlwZVsnbTN1J10gPSAnYXVkaW8veC1tcGVndXJs # JwogIE1pbWVUeXBlWydtNGEnXSA9ICdhdWRpby94LW00YScKICBNaW1lVHlw # ZVsnbWFuJ10gPSAndGV4dC94LXRyb2ZmLW1hbicKICBNaW1lVHlwZVsnbWQn # XSA9ICdhcHBsaWNhdGlvbi94LWdlbmVzaXMtcm9tJwogIE1pbWVUeXBlWydt # ZSddID0gJ3RleHQveC10cm9mZi1tZScKICBNaW1lVHlwZVsnbWdwJ10gPSAn # YXBwbGljYXRpb24veC1tYWdpY3BvaW50JwogIE1pbWVUeXBlWydtaWQnXSA9 # ICdhdWRpby94LW1pZGknCiAgTWltZVR5cGVbJ21pZGknXSA9ICdhdWRpby94 # LW1pZGknCiAgTWltZVR5cGVbJ21pZiddID0gJ2FwcGxpY2F0aW9uL3gtbWlm # JwogIE1pbWVUeXBlWydtaWZmJ10gPSAnaW1hZ2UveC1taWZmJwogIE1pbWVU # eXBlWydtbSddID0gJ3RleHQveC10cm9mZi1tbScKICBNaW1lVHlwZVsnbW1s # J10gPSAndGV4dC9tYXRobWwnCiAgTWltZVR5cGVbJ21vZCddID0gJ2F1ZGlv # L3gtbW9kJwogIE1pbWVUeXBlWydtb3YnXSA9ICd2aWRlby9xdWlja3RpbWUn # CiAgTWltZVR5cGVbJ21vdmllJ10gPSAndmlkZW8veC1zZ2ktbW92aWUnCiAg # TWltZVR5cGVbJ21wMSddID0gJ2F1ZGlvL21wZWcnCiAgTWltZVR5cGVbJ21w # MiddID0gJ3ZpZGVvL21wZWcnCiAgTWltZVR5cGVbJ21wMyddID0gJ2F1ZGlv # L21wZWcnCiAgTWltZVR5cGVbJ21wZSddID0gJ3ZpZGVvL21wZWcnCiAgTWlt # ZVR5cGVbJ21wZWcnXSA9ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWydtcGcn # XSA9ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWydtcnAnXSA9ICdhcHBsaWNh # dGlvbi94LW1ycHJvamVjdCcKICBNaW1lVHlwZVsnbXJwcm9qZWN0J10gPSAn # YXBwbGljYXRpb24veC1tcnByb2plY3QnCiAgTWltZVR5cGVbJ21zJ10gPSAn # dGV4dC94LXRyb2ZmLW1zJwogIE1pbWVUeXBlWydtc3gnXSA9ICdhcHBsaWNh # dGlvbi94LW1zeC1yb20nCiAgTWltZVR5cGVbJ242NCddID0gJ2FwcGxpY2F0 # aW9uL3gtbjY0LXJvbScKICBNaW1lVHlwZVsnbmMnXSA9ICdhcHBsaWNhdGlv # bi94LW5ldGNkZicKICBNaW1lVHlwZVsnbmVzJ10gPSAnYXBwbGljYXRpb24v # eC1uZXMtcm9tJwogIE1pbWVUeXBlWyduc3YnXSA9ICd2aWRlby94LW5zdicK # ICBNaW1lVHlwZVsnbyddID0gJ2FwcGxpY2F0aW9uL3gtb2JqZWN0LWZpbGUn # CiAgTWltZVR5cGVbJ29kYSddID0gJ2FwcGxpY2F0aW9uL29kYScKICBNaW1l # VHlwZVsnb2dnJ10gPSAnYXBwbGljYXRpb24vb2dnJwogIE1pbWVUeXBlWydv # bGVvJ10gPSAnYXBwbGljYXRpb24veC1vbGVvJwogIE1pbWVUeXBlWydwJ10g # PSAndGV4dC94LXBhc2NhbCcKICBNaW1lVHlwZVsncGFsbSddID0gJ2ltYWdl # L3gtcGFsbScKICBNaW1lVHlwZVsncGFzJ10gPSAndGV4dC94LXBhc2NhbCcK # ICBNaW1lVHlwZVsncGFzY2FsJ10gPSAndGV4dC94LXBhc2NhbCcKICBNaW1l # VHlwZVsncGF0Y2gnXSA9ICd0ZXh0L3gtcGF0Y2gnCiAgTWltZVR5cGVbJ3Bi # bSddID0gJ2ltYWdlL3gtcG9ydGFibGUtYml0bWFwJwogIE1pbWVUeXBlWydw # Y2QnXSA9ICdpbWFnZS94LXBob3RvLWNkJwogIE1pbWVUeXBlWydwY2YnXSA9 # ICdhcHBsaWNhdGlvbi94LWZvbnQtcGNmJwogIE1pbWVUeXBlWydwY3QnXSA9 # ICdpbWFnZS94LXBpY3QnCiAgTWltZVR5cGVbJ3BjeCddID0gJ2ltYWdlL3gt # cGN4JwogIE1pbWVUeXBlWydwZGInXSA9ICdhcHBsaWNhdGlvbi94LXBhbG0t # ZGF0YWJhc2UnCiAgTWltZVR5cGVbJ3BkZiddID0gJ2FwcGxpY2F0aW9uL3Bk # ZicKICBNaW1lVHlwZVsncGVybCddID0gJ3RleHQveC1wZXJsJwogIE1pbWVU # eXBlWydwZmEnXSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTEnCiAgTWlt # ZVR5cGVbJ3BmYiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScKICBN # aW1lVHlwZVsncGdtJ10gPSAnaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwJwog # IE1pbWVUeXBlWydwZ24nXSA9ICdhcHBsaWNhdGlvbi94LWNoZXNzLXBnbicK # ICBNaW1lVHlwZVsncGdwJ10gPSAnYXBwbGljYXRpb24vcGdwJwogIE1pbWVU # eXBlWydwaHAnXSA9ICdhcHBsaWNhdGlvbi94LXBocCcKICBNaW1lVHlwZVsn # cGhwMyddID0gJ2FwcGxpY2F0aW9uL3gtcGhwJwogIE1pbWVUeXBlWydwaHA0 # J10gPSAnYXBwbGljYXRpb24veC1waHAnCiAgTWltZVR5cGVbJ3BpY3QnXSA9 # ICdpbWFnZS94LXBpY3QnCiAgTWltZVR5cGVbJ3BsJ10gPSAndGV4dC94LXBl # cmwnCiAgTWltZVR5cGVbJ3BscyddID0gJ2F1ZGlvL3gtc2NwbHMnCiAgTWlt # ZVR5cGVbJ3BtJ10gPSAndGV4dC94LXBlcmwnCiAgTWltZVR5cGVbJ3BuZydd # ID0gJ2ltYWdlL3BuZycKICBNaW1lVHlwZVsncG5tJ10gPSAnaW1hZ2UveC1w # b3J0YWJsZS1hbnltYXAnCiAgTWltZVR5cGVbJ3BvJ10gPSAndGV4dC94LXBv # JwogIE1pbWVUeXBlWydwcCddID0gJ3RleHQveC1wYXNjYWwnCiAgTWltZVR5 # cGVbJ3BwbSddID0gJ2ltYWdlL3gtcG9ydGFibGUtcGl4bWFwJwogIE1pbWVU # eXBlWydwcHMnXSA9ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcK # ICBNaW1lVHlwZVsncHB0J10gPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2Vy # cG9pbnQnCiAgTWltZVR5cGVbJ3BzJ10gPSAnYXBwbGljYXRpb24vcG9zdHNj # cmlwdCcKICBNaW1lVHlwZVsncHNkJ10gPSAnaW1hZ2UveC1wc2QnCiAgTWlt # ZVR5cGVbJ3BzZiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2Yn # CiAgTWltZVR5cGVbJ3BzaWQnXSA9ICdhdWRpby9wcnMuc2lkJwogIE1pbWVU # eXBlWydweSddID0gJ3RleHQveC1weXRob24nCiAgTWltZVR5cGVbJ3B5Yydd # ID0gJ2FwcGxpY2F0aW9uL3gtcHl0aG9uLWJ5dGUtY29kZScKICBNaW1lVHlw # ZVsncWlmJ10gPSAnYXBwbGljYXRpb24vcWlmJwogIE1pbWVUeXBlWydxdCdd # ID0gJ3ZpZGVvL3F1aWNrdGltZScKICBNaW1lVHlwZVsncmEnXSA9ICdhdWRp # by94LXJlYWwtYXVkaW8nCiAgTWltZVR5cGVbJ3JhbSddID0gJ2F1ZGlvL3gt # cG4tcmVhbGF1ZGlvJwogIE1pbWVUeXBlWydyYXInXSA9ICdhcHBsaWNhdGlv # bi94LXJhcicKICBNaW1lVHlwZVsncmFzJ10gPSAnaW1hZ2UveC1jbXUtcmFz # dGVyJwogIE1pbWVUeXBlWydyYiddID0gJ3RleHQveC1ydWJ5JwogIE1pbWVU # eXBlWydyYmEnXSA9ICd0ZXh0L3gtcnVieScKICBNaW1lVHlwZVsncmJ3J10g # PSAndGV4dC94LXJ1YnknCiAgTWltZVR5cGVbJ3JlaiddID0gJ2FwcGxpY2F0 # aW9uL3gtcmVqZWN0JwogIE1pbWVUeXBlWydyZ2InXSA9ICdpbWFnZS94LXJn # YicKICBNaW1lVHlwZVsncm0nXSA9ICdhdWRpby94LXJlYWwtYXVkaW8nCiAg # TWltZVR5cGVbJ3JvZmYnXSA9ICd0ZXh0L3gtdHJvZmYnCiAgTWltZVR5cGVb # J3JwbSddID0gJ2FwcGxpY2F0aW9uL3gtcnBtJwogIE1pbWVUeXBlWydydGYn # XSA9ICdhcHBsaWNhdGlvbi9ydGYnCiAgTWltZVR5cGVbJ3J0eCddID0gJ3Rl # eHQvcmljaHRleHQnCiAgTWltZVR5cGVbJ3J1YnknXSA9ICd0ZXh0L3gtcnVi # eScKICBNaW1lVHlwZVsncnVieXcnXSA9ICd0ZXh0L3gtcnVieScKICBNaW1l # VHlwZVsncnYnXSA9ICdhdWRpby94LXJlYWwtYXVkaW8nCiAgTWltZVR5cGVb # J3MnXSA9ICd0ZXh0L3gtYXNtJwogIE1pbWVUeXBlWydzM20nXSA9ICdhdWRp # by94LXMzbScKICBNaW1lVHlwZVsnc2NtJ10gPSAndGV4dC94LXNjaGVtZScK # ICBNaW1lVHlwZVsnc2RhJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZp # c2lvbi5kcmF3JwogIE1pbWVUeXBlWydzZGMnXSA9ICdhcHBsaWNhdGlvbi92 # bmQuc3RhcmRpdmlzaW9uLmNhbGMnCiAgTWltZVR5cGVbJ3NkZCddID0gJ2Fw # cGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uaW1wcmVzcycKICBNaW1lVHlw # ZVsnc2RwJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5pbXBy # ZXNzJwogIE1pbWVUeXBlWydzZHMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3Rh # cmRpdmlzaW9uLmNoYXJ0JwogIE1pbWVUeXBlWydzZHcnXSA9ICdhcHBsaWNh # dGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlcicKICBNaW1lVHlwZVsnc2dp # J10gPSAnaW1hZ2UveC1zZ2knCiAgTWltZVR5cGVbJ3NnbCddID0gJ2FwcGxp # Y2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyJwogIE1pbWVUeXBlWydz # Z20nXSA9ICd0ZXh0L3NnbWwnCiAgTWltZVR5cGVbJ3NnbWwnXSA9ICd0ZXh0 # L3NnbWwnCiAgTWltZVR5cGVbJ3NoJ10gPSAndGV4dC94LXNoJwogIE1pbWVU # eXBlWydzaGFyJ10gPSAnYXBwbGljYXRpb24veC1zaGFyJwogIE1pbWVUeXBl # WydzaWQnXSA9ICdhdWRpby9wcnMuc2lkJwogIE1pbWVUeXBlWydzbGsnXSA9 # ICd0ZXh0L3NwcmVhZHNoZWV0JwogIE1pbWVUeXBlWydzbWQnXSA9ICdhcHBs # aWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1haWwnCiAgTWltZVR5cGVbJ3Nt # ZiddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aCcKICBN # aW1lVHlwZVsnc21pJ10gPSAnYXBwbGljYXRpb24veC1zbWlsJwogIE1pbWVU # eXBlWydzbWlsJ10gPSAnYXBwbGljYXRpb24veC1zbWlsJwogIE1pbWVUeXBl # WydzbWwnXSA9ICdhcHBsaWNhdGlvbi94LXNtaWwnCiAgTWltZVR5cGVbJ3Nt # cyddID0gJ2FwcGxpY2F0aW9uL3gtc21zLXJvbScKICBNaW1lVHlwZVsnc25k # J10gPSAnYXVkaW8vYmFzaWMnCiAgTWltZVR5cGVbJ3NvJ10gPSAnYXBwbGlj # YXRpb24veC1zaGFyZWQtbGlicmFyeScKICBNaW1lVHlwZVsnc3BkJ10gPSAn # YXBwbGljYXRpb24veC1mb250LXNwZWVkbycKICBNaW1lVHlwZVsnc3FsJ10g # PSAndGV4dC94LXNxbCcKICBNaW1lVHlwZVsnc3JjJ10gPSAnYXBwbGljYXRp # b24veC13YWlzLXNvdXJjZScKICBNaW1lVHlwZVsnc3RjJ10gPSAnYXBwbGlj # YXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZScKICBNaW1lVHlwZVsn # c3RkJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdy50ZW1wbGF0 # ZScKICBNaW1lVHlwZVsnc3RpJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54 # bWwuaW1wcmVzcy50ZW1wbGF0ZScKICBNaW1lVHlwZVsnc3RtJ10gPSAnYXVk # aW8veC1zdG0nCiAgTWltZVR5cGVbJ3N0dyddID0gJ2FwcGxpY2F0aW9uL3Zu # ZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZScKICBNaW1lVHlwZVsnc3R5J10g # PSAndGV4dC94LXRleCcKICBNaW1lVHlwZVsnc3VuJ10gPSAnaW1hZ2UveC1z # dW4tcmFzdGVyJwogIE1pbWVUeXBlWydzdjRjcGlvJ10gPSAnYXBwbGljYXRp # b24veC1zdjRjcGlvJwogIE1pbWVUeXBlWydzdjRjcmMnXSA9ICdhcHBsaWNh # dGlvbi94LXN2NGNyYycKICBNaW1lVHlwZVsnc3ZnJ10gPSAnaW1hZ2Uvc3Zn # K3htbCcKICBNaW1lVHlwZVsnc3ZneiddID0gJ2ltYWdlL3N2Zyt4bWwnCiAg # TWltZVR5cGVbJ3N3ZiddID0gJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZs # YXNoJwogIE1pbWVUeXBlWydzeGMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3Vu # LnhtbC5jYWxjJwogIE1pbWVUeXBlWydzeGQnXSA9ICdhcHBsaWNhdGlvbi92 # bmQuc3VuLnhtbC5kcmF3JwogIE1pbWVUeXBlWydzeGcnXSA9ICdhcHBsaWNh # dGlvbi92bmQuc3VuLnhtbC53cml0ZXIuZ2xvYmFsJwogIE1pbWVUeXBlWydz # eGknXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzJwogIE1p # bWVUeXBlWydzeG0nXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRo # JwogIE1pbWVUeXBlWydzeHcnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnht # bC53cml0ZXInCiAgTWltZVR5cGVbJ3N5bGsnXSA9ICd0ZXh0L3NwcmVhZHNo # ZWV0JwogIE1pbWVUeXBlWyd0J10gPSAndGV4dC94LXRyb2ZmJwogIE1pbWVU # eXBlWyd0YXInXSA9ICdhcHBsaWNhdGlvbi94LXRhcicKICBNaW1lVHlwZVsn # dGNsJ10gPSAndGV4dC94LXRjbCcKICBNaW1lVHlwZVsndGV4J10gPSAndGV4 # dC94LXRleCcKICBNaW1lVHlwZVsndGV4aSddID0gJ3RleHQveC10ZXhpbmZv # JwogIE1pbWVUeXBlWyd0ZXhpbmZvJ10gPSAndGV4dC94LXRleGluZm8nCiAg # TWltZVR5cGVbJ3RnYSddID0gJ2ltYWdlL3gtdGdhJwogIE1pbWVUeXBlWyd0 # Z3onXSA9ICdhcHBsaWNhdGlvbi94LWNvbXByZXNzZWQtdGFyJwogIE1pbWVU # eXBlWyd0aGVtZSddID0gJ2FwcGxpY2F0aW9uL3gtdGhlbWUnCiAgTWltZVR5 # cGVbJ3RpZiddID0gJ2ltYWdlL3RpZmYnCiAgTWltZVR5cGVbJ3RpZmYnXSA9 # ICdpbWFnZS90aWZmJwogIE1pbWVUeXBlWyd0b3JyZW50J10gPSAnYXBwbGlj # YXRpb24veC1iaXR0b3JyZW50JwogIE1pbWVUeXBlWyd0ciddID0gJ3RleHQv # eC10cm9mZicKICBNaW1lVHlwZVsndHN2J10gPSAndGV4dC90YWItc2VwYXJh # dGVkLXZhbHVlcycKICBNaW1lVHlwZVsndHRjJ10gPSAnYXBwbGljYXRpb24v # eC1mb250LXR0ZicKICBNaW1lVHlwZVsndHRmJ10gPSAnYXBwbGljYXRpb24v # eC1mb250LXR0ZicKICBNaW1lVHlwZVsndHh0J10gPSAndGV4dC9wbGFpbicK # ICBNaW1lVHlwZVsndXN0YXInXSA9ICdhcHBsaWNhdGlvbi94LXVzdGFyJwog # IE1pbWVUeXBlWyd2Y2YnXSA9ICd0ZXh0L3gtdmNhbGVuZGFyJwogIE1pbWVU # eXBlWyd2Y3MnXSA9ICd0ZXh0L3gtdmNhbGVuZGFyJwogIE1pbWVUeXBlWyd2 # aSddID0gJ3RleHQveC12aScKICBNaW1lVHlwZVsndmltJ10gPSAndGV4dC94 # LXZpJwogIE1pbWVUeXBlWyd2aXYnXSA9ICd2aWRlby92bmQudml2bycKICBN # aW1lVHlwZVsndml2byddID0gJ3ZpZGVvL3ZuZC52aXZvJwogIE1pbWVUeXBl # Wyd2b2InXSA9ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWyd2b2MnXSA9ICdh # dWRpby94LXZvYycKICBNaW1lVHlwZVsndm9yJ10gPSAnYXBwbGljYXRpb24v # dm5kLnN0YXJkaXZpc2lvbi53cml0ZXInCiAgTWltZVR5cGVbJ3dhdiddID0g # J2F1ZGlvL3gtd2F2JwogIE1pbWVUeXBlWyd3YXgnXSA9ICdhdWRpby94LW1z # LWFzeCcKICBNaW1lVHlwZVsnd2sxJ10gPSAnYXBwbGljYXRpb24vdm5kLmxv # dHVzLTEtMi0zJwogIE1pbWVUeXBlWyd3azMnXSA9ICdhcHBsaWNhdGlvbi92 # bmQubG90dXMtMS0yLTMnCiAgTWltZVR5cGVbJ3drNCddID0gJ2FwcGxpY2F0 # aW9uL3ZuZC5sb3R1cy0xLTItMycKICBNaW1lVHlwZVsnd2tzJ10gPSAnYXBw # bGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJwogIE1pbWVUeXBlWyd3bWYnXSA9 # ICdpbWFnZS94LXdtZicKICBNaW1lVHlwZVsnd212J10gPSAndmlkZW8veC1t # cy13bXYnCiAgTWltZVR5cGVbJ3dybCddID0gJ21vZGVsL3ZybWwnCiAgTWlt # ZVR5cGVbJ3d2eCddID0gJ3ZpZGVvL3gtbXMtd3Z4JwogIE1pbWVUeXBlWyd4 # YWMnXSA9ICdhcHBsaWNhdGlvbi94LWdudWNhc2gnCiAgTWltZVR5cGVbJ3hi # ZWwnXSA9ICdhcHBsaWNhdGlvbi94YmVsJwogIE1pbWVUeXBlWyd4Ym0nXSA9 # ICdpbWFnZS94LXhiaXRtYXAnCiAgTWltZVR5cGVbJ3hjZiddID0gJ2ltYWdl # L3gteGNmJwogIE1pbWVUeXBlWyd4aSddID0gJ2F1ZGlvL3gteGknCiAgTWlt # ZVR5cGVbJ3hsYSddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBN # aW1lVHlwZVsneGxjJ10gPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJwog # IE1pbWVUeXBlWyd4bGQnXSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwn # CiAgTWltZVR5cGVbJ3hscyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNl # bCcKICBNaW1lVHlwZVsneGx0J10gPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4 # Y2VsJwogIE1pbWVUeXBlWyd4bSddID0gJ2F1ZGlvL3gteG0nCiAgTWltZVR5 # cGVbJ3htbCddID0gJ3RleHQveG1sJwogIE1pbWVUeXBlWyd4cG0nXSA9ICdp # bWFnZS94LXhwaXhtYXAnCiAgTWltZVR5cGVbJ3h3ZCddID0gJ2ltYWdlL3gt # eHdpbmRvd2R1bXAnCiAgTWltZVR5cGVbJ3knXSA9ICd0ZXh0L3gteWFjYycK # ICBNaW1lVHlwZVsneWFjYyddID0gJ3RleHQveC15YWNjJwogIE1pbWVUeXBl # Wyd6J10gPSAnYXBwbGljYXRpb24veC1jb21wcmVzcycKICBNaW1lVHlwZVsn # emlwJ10gPSAnYXBwbGljYXRpb24vemlwJwogIE1pbWVUeXBlWyd6b28nXSA9 # ICdhcHBsaWNhdGlvbi94LXpvbycKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExNTk0LnRhci9ldi9icm93 # c2VyLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAw # MDAwNTIwNwAxMDI1MDMyMDYxMwAwMjA2NTcAIDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg # IABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYvcnVieSIKcmVx # dWlyZSAiZXYvbmV0IgoKYmVnaW4KICByZXF1aXJlICJ3aW4zMm9sZSIKICBy # ZXF1aXJlICJ3aW4zMi9yZWdpc3RyeSIKcmVzY3VlIExvYWRFcnJvcgogICQi # LnB1c2ggIndpbjMyb2xlLnNvIgogICQiLnB1c2ggIndpbjMyL3JlZ2lzdHJ5 # LnJiIgplbmQKCmRlZiB3aW5kb3dzYnJvd3NlcgogICRzdGRlcnIucHV0cyAi # TG9va2luZyBmb3IgZGVmYXVsdCBicm93c2VyLi4uIgoKICBmaWxldHlwZQk9 # ICJodG1sZmlsZSIKICBhcHBsaWNhdGlvbgk9IG5pbAoKICBiZWdpbgogICAg # V2luMzI6OlJlZ2lzdHJ5OjpIS0VZX0NMQVNTRVNfUk9PVC5vcGVuKCIuaHRt # bCIpIGRvIHxyZWd8CiAgICAgIGZpbGV0eXBlCQk9IHJlZ1siIl0KICAgIGVu # ZAoKICAgIFdpbjMyOjpSZWdpc3RyeTo6SEtFWV9DTEFTU0VTX1JPT1Qub3Bl # bihmaWxldHlwZSArICJcXHNoZWxsXFxvcGVuXFxjb21tYW5kIikgZG8gfHJl # Z3wKICAgICAgYXBwbGljYXRpb24JPSByZWdbIiJdCiAgICBlbmQKICByZXNj # dWUgTmFtZUVycm9yCiAgICAkc3RkZXJyLnB1dHMgIk9ubHkgYXZhaWxhYmxl # IGZvciBXaW5kb3dzIGFuZCBDeWd3aW4uIgogIGVuZAoKICBhcHBsaWNhdGlv # bgplbmQKCmRlZiBjeWd3aW5icm93c2VyCiAgYnJvd3NlciwgKmFyZ3MJPSB3 # aW5kb3dzYnJvd3Nlci5zcGxpdHdvcmRzCiAgYnJvd3NlcgkJPSBicm93c2Vy # LmdzdWIoL1xcLywgIi8iKQogICNicm93c2VyCQk9IGJyb3dzZXIKCiAgYXJn # cy5jb2xsZWN0IXt8YXwgYS5nc3ViKC9cXC8sICIvIil9CiAgI2FyZ3MuY29s # bGVjdCF7fGF8ICJcIiVzXCIiICUgW2EuZ3N1YigvXFwvLCAiLyIpXX0KICAj # YXJncy5jb2xsZWN0IXt8YXwgIlwiJXNcIiIgJSBbYV19CgogIHJlcwk9ICJc # IiVzXCIgJXMiICUgW2Jyb3dzZXIsIGFyZ3Muam9pbigiICIpXQogIHJlcwpl # bmQKCmRlZiBsaW51eGJyb3dzZXIKICBhcHBsaWNhdGlvbgk9ICIiCgogIGFw # cGxpY2F0aW9uCT0gYHdoaWNoIGdhbGVvbgkJMj4gL2Rldi9udWxsYC5jaG9t # cAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9IGB3aGlj # aCBtb3ppbGxhCTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24u # ZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggZmlyZWZveAkyPiAvZGV2 # L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5PwogIGFwcGxpY2F0 # aW9uCT0gYHdoaWNoIG9wZXJhCQkyPiAvZGV2L251bGxgLmNob21wCWlmIGFw # cGxpY2F0aW9uLmVtcHR5PwogIGFwcGxpY2F0aW9uCT0gYHdoaWNoIGtvbnF1 # ZXJvcgkyPiAvZGV2L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5 # PwogIGFwcGxpY2F0aW9uCT0gYHdoaWNoIGh0bWx2aWV3CTI+IC9kZXYvbnVs # bGAuY2hvbXAJaWYgYXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24J # PSBuaWwJCQkJCQlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KCiAgYXBwbGljYXRp # b24KZW5kCgpkZWYgZGVmYXVsdGJyb3dzZXIKICByZXMJPSBuaWwKICByZXMJ # PSB3aW5kb3dzYnJvd3NlcglpZiB3aW5kb3dzPwogIHJlcwk9IGN5Z3dpbmJy # b3dzZXIJCWlmIGN5Z3dpbj8KICByZXMJPSBsaW51eGJyb3dzZXIJCWlmIGxp # bnV4PwogIHJlcwplbmQKCmRlZiBzaG93dXJsaW5icm93c2VyKHVybCwgYnJv # d3Nlcj1kZWZhdWx0YnJvd3NlcikKICBjb21tYW5kCT0gIiN7YnJvd3Nlcn0g # XCIje3VybH1cIiIKCiAgc3lzdGVtKGNvbW1hbmQpCW9yICRzdGRlcnIucHV0 # cyAiU3RhcnRpbmcgb2YgdGhlIGJyb3dzZXIgZmFpbGVkLCBvciB0aGUgYnJv # d3NlciB0ZXJtaW5hdGVkIGFibm9ybWFsbHkuXG5Db21tYW5kID0+ICN7Y29t # bWFuZH0iCmVuZAoKZGVmIHNob3dpbmJyb3dzZXIoaHRtbCwgYnJvd3Nlcj1k # ZWZhdWx0YnJvd3NlcikKICBwb3J0LCBpbwk9IFRDUFNlcnZlci5mcmVlcG9y # dCg3NzAxLCA3NzA5KQoKICB1bmxlc3MgYnJvd3Nlci5uaWw/CiAgICBUaHJl # YWQubmV3IGRvCiAgICAgIGJlZ2luCglUaHJlYWQucGFzcwoKICAgICAgICBz # aG93dXJsaW5icm93c2VyKCJodHRwOi8vbG9jYWxob3N0OiN7cG9ydH0vIiwg # YnJvd3NlcikKICAgICAgcmVzY3VlCiAgICAgIGVuZAogICAgZW5kCiAgZW5k # CgogIEhUVFBTZXJ2ZXIuc2VydmUoW3BvcnQsIGlvXSkgZG8gfHJlcSwgcmVz # cHwKICAgIHJlc3AgPDwgaHRtbAoKICAgIHJlc3Auc3RvcAogIGVuZAplbmQK # CmRlZiB0YWIyaHRtbCh0YWIpCiAgcmVzCT0gIiIKCiAgdGFiCT0gdGFiLnRv # X2h0bWwoZmFsc2UpCgogIHJlcyA8PCAiPGh0bWw+XG4iCiAgcmVzIDw8ICI8 # Ym9keT5cbiIKICByZXMgPDwgIjx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3Jk # ZXI9JzEnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMyc+XG4iCiAg # cmVzIDw8ICI8dGJvZHk+XG4iCgogIHRhYi5zcGxpdCgvXHIqXG4vKS5lYWNo # IGRvIHxsaW5lfAogICAgcmVzIDw8ICI8dHI+XG4iCgogICAgbGluZS5zcGxp # dCgvXHQvLCAtMSkuZWFjaCBkbyB8dmVsZHwKICAgICAgdmVsZAk9ICImbmJz # cDsiCWlmIHZlbGQuY29tcHJlc3MuZW1wdHk/CgogICAgICByZXMgPDwgIjx0 # ZD4lczwvdGQ+XG4iICUgdmVsZAogICAgZW5kCgogICAgcmVzIDw8ICI8L3Ry # PlxuIgogIGVuZAoKICByZXMgPDwgIjwvdGJvZHk+XG4iCiAgcmVzIDw8ICI8 # L3RhYmxlPlxuIgogIHJlcyA8PCAiPC9ib2R5PlxuIgogIHJlcyA8PCAiPC9o # dG1sPlxuIgoKICByZXMKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJy # dWJ5c2NyaXB0LmYuMTE1OTQudGFyL2V2L3RocmVhZC5yYgAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAxNjQxADEwMjUwMzIw # NjEzADAyMDQ0MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAByZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJ0aHJlYWQiCgpj # bGFzcyBGYWtlVGhyZWFkCiAgZGVmIGluaXRpYWxpemUoKmFyZ3MpCiAgICB5 # aWVsZCgqYXJncykKICBlbmQKCiAgZGVmIGpvaW4KICBlbmQKZW5kCgpjbGFz # cyBUaHJlYWRMaW1pdGVyCiAgZGVmIGluaXRpYWxpemUobGltaXQpCiAgICBA # bGltaXQJPSBsaW1pdAogICAgQGNvdW50CT0gMAogICAgQHRocmVhZHMJPSBb # XQogICAgQG11dGV4CT0gTXV0ZXgubmV3CiAgICBAY3YJCT0gQ29uZGl0aW9u # VmFyaWFibGUubmV3CgogICAgZXZlcnkoMSkgZG8KICAgICAgQG11dGV4LnN5 # bmNocm9uaXplIGRvCiAgICAgICAgQHRocmVhZHMuZHVwLmVhY2ggZG8gfHR8 # CiAgICAgICAgICB1bmxlc3MgdC5hbGl2ZT8KICAgICAgICAgICAgJHN0ZGVy # ci5wdXRzICJGb3VuZCBkZWFkIHRocmVhZC4iCgogICAgICAgICAgICBAdGhy # ZWFkcy5kZWxldGUodCkKCiAgICAgICAgICAgIEBjb3VudCAtPSAxCgogICAg # ICAgICAgICBAY3Yuc2lnbmFsCiAgICAgICAgICBlbmQKICAgICAgICBlbmQK # ICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHdhaXQKICAgIGlmIGJs # b2NrX2dpdmVuPwogICAgICBzZWxmLndhaXQKICAgICAgeWllbGQKICAgICAg # c2VsZi5zaWduYWwKICAgIGVsc2UKICAgICAgQG11dGV4LnN5bmNocm9uaXpl # IGRvCiAgICAgICAgQHRocmVhZHMgPDwgVGhyZWFkLmN1cnJlbnQKCiAgICAg # ICAgQGNvdW50ICs9IDEKCiAgICAgICAgQGN2LndhaXQoQG11dGV4KQlpZiBA # Y291bnQgPiBAbGltaXQKICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVm # IHNpZ25hbAogICAgQG11dGV4LnN5bmNocm9uaXplIGRvCiAgICAgIEB0aHJl # YWRzLmRlbGV0ZShUaHJlYWQuY3VycmVudCkKCiAgICAgIEBjb3VudCAtPSAx # CgogICAgICBAY3Yuc2lnbmFsCiAgICBlbmQKICBlbmQKZW5kCgAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAA