diff --git a/src/buffer.go b/src/buffer.go index 9c6ae49..e1e9345 100644 --- a/src/buffer.go +++ b/src/buffer.go @@ -8,77 +8,60 @@ import ( "os" "github.com/avfs/avfs" - "github.com/avfs/avfs/vfs/memfs" - "github.com/avfs/avfs/vfs/osfs" ) -/* -InitBufferVFS will set the bufferVFS variable -*/ -func InitBufferVFS(virtual bool) { - - if virtual { - bufferVFS = memfs.New() - } else { - bufferVFS = osfs.New() +func (b *Buffer) StartBuffer(stream *Stream, errorChan chan ErrorInfo) { + if stream.UseBackup { + UpdateStreamURLForBackup(stream) } -} - -func StartBuffer(stream *Stream, useBackup bool, backupNumber int, errorChan chan ErrorInfo) *Buffer { - if useBackup { - UpdateStreamURLForBackup(stream, backupNumber) - } - - if err := PrepareBufferFolder(stream.Folder); err != nil { + var err error = nil + if err = PrepareBufferFolder(stream.Buffer.FileSystem, stream.Folder); err != nil { ShowError(err, 4008) - HandleBufferError(err, backupNumber, useBackup, stream, errorChan) - return nil + handleBufferError(err, stream, errorChan) + return } switch Settings.Buffer { case "ffmpeg", "vlc": - if buffer, err := StartThirdPartyBuffer(stream, useBackup, backupNumber, errorChan); err != nil { - return HandleBufferError(err, backupNumber, useBackup, stream, errorChan) - } else { - return buffer - } + err = StartThirdPartyBuffer(stream, errorChan) case "threadfin": - if buffer, err := StartThreadfinBuffer(stream, useBackup, backupNumber, errorChan); err != nil { - return HandleBufferError(err, backupNumber, useBackup, stream, errorChan) - } else { - return buffer - } + err = StartThreadfinBuffer(stream, errorChan) default: - return nil + return + } + if err != nil { + handleBufferError(err, stream, errorChan) } } /* HandleBufferError will retry running the Buffer function with the next backup number */ -func HandleBufferError(err error, backupNumber int, useBackup bool, stream *Stream, errorChan chan ErrorInfo) *Buffer { +func handleBufferError(err error, stream *Stream, errorChan chan ErrorInfo) { ShowError(err, 4011) - if !useBackup || (useBackup && backupNumber >= 0 && backupNumber <= 3) { - backupNumber++ + if !stream.UseBackup || (stream.UseBackup && stream.BackupNumber >= 0 && stream.BackupNumber <= 3) { + stream.BackupNumber++ if stream.BackupChannel1URL != "" || stream.BackupChannel2URL != "" || stream.BackupChannel3URL != "" { - return StartBuffer(stream, true, backupNumber, errorChan) + stream.UseBackup = true + stream.Buffer.StartBuffer(stream, errorChan) } } - return nil } /* HandleByteOutput save the byte ouptut of the command or http request as files */ func HandleByteOutput(stdOut io.ReadCloser, stream *Stream, errorChan chan ErrorInfo) { - bufferSize := Settings.BufferSize * 1024 // Puffergröße in Bytes + TS_PACKAGE_MIN_SIZE := 188 + bufferSize := Settings.BufferSize * 1024 // in bytes buffer := make([]byte, bufferSize) var fileSize int init := true tmpFolder := stream.Folder + string(os.PathSeparator) - tmpSegment := 1 + tmpSegment := stream.LatestSegment + var bufferVFS = stream.Buffer.FileSystem var f avfs.File var err error var tmpFile string @@ -89,7 +72,7 @@ func HandleByteOutput(stdOut io.ReadCloser, stream *Stream, errorChan chan Error f, err = bufferVFS.Create(tmpFile) if err != nil { f.Close() - ShowError(err, 4010) + ShowError(err, CreateFileError) errorChan <- ErrorInfo{CreateFileError, stream, ""} return } @@ -106,30 +89,33 @@ func HandleByteOutput(stdOut io.ReadCloser, stream *Stream, errorChan chan Error return } if err != nil { - if _, ok := err.(*net.OpError); !ok || stream.Buffer.isThirdPartyBuffer { - ShowError(err, 4012) + if _, ok := err.(*net.OpError); !ok || stream.Buffer.IsThirdPartyBuffer { + ShowError(err, ReadIntoBufferError) } f.Close() + bufferVFS.Remove(tmpFile) errorChan <- ErrorInfo{ReadIntoBufferError, stream, ""} return } if _, err := f.Write(buffer[:n]); err != nil { - ShowError(err, 4013) + ShowError(err, WriteToBufferError) f.Close() + bufferVFS.Remove(tmpFile) errorChan <- ErrorInfo{WriteToBufferError, stream, ""} return } fileSize += n - // Prüfen, ob Dateigröße den Puffer überschreitet - if fileSize >= bufferSize { + // Check if the file size exceeds the threshold + if fileSize >= TS_PACKAGE_MIN_SIZE * 1024 { tmpSegment++ tmpFile = fmt.Sprintf("%s%d.ts", tmpFolder, tmpSegment) - // Datei schließen und neue Datei öffnen + // Close the current file and create a new one f.Close() + stream.LatestSegment = tmpSegment f, err = bufferVFS.Create(tmpFile) if err != nil { f.Close() - ShowError(err, 4010) + ShowError(err, CreateFileError) errorChan <- ErrorInfo{CreateFileError, stream, ""} return } @@ -141,8 +127,8 @@ func HandleByteOutput(stdOut io.ReadCloser, stream *Stream, errorChan chan Error /* UpdateStreamURLForBackup will set the ther stream url when a backup will be used */ -func UpdateStreamURLForBackup(stream *Stream, backupNumber int) { - switch backupNumber { +func UpdateStreamURLForBackup(stream *Stream) { + switch stream.BackupNumber { case 1: stream.URL = stream.BackupChannel1URL ShowHighlight("START OF BACKUP 1 STREAM") @@ -161,7 +147,7 @@ func UpdateStreamURLForBackup(stream *Stream, backupNumber int) { /* PrepareBufferFolder will clean the buffer folder and check if the folder exists */ -func PrepareBufferFolder(folder string) error { +func PrepareBufferFolder(bufferVFS avfs.VFS, folder string) error { if err := bufferVFS.RemoveAll(getPlatformPath(folder)); err != nil { return fmt.Errorf("failed to remove buffer folder: %w", err) } diff --git a/src/config.go b/src/config.go index d237243..da8bfd5 100644 --- a/src/config.go +++ b/src/config.go @@ -7,7 +7,7 @@ import ( "strings" "sync" - "github.com/avfs/avfs" + //"github.com/avfs/avfs" "golang.org/x/text/cases" "golang.org/x/text/language" ) @@ -27,14 +27,8 @@ var Data DataStruct // SystemFiles : Alle Systemdateien var SystemFiles = []string{"authentication.json", "pms.json", "settings.json", "xepg.json", "urls.json"} -// BufferInformation : Informationen über den Buffer (aktive Streams, maximale Streams) -var BufferInformation sync.Map - // bufferVFS : Filesystem to use for the Buffer -var bufferVFS avfs.VFS - -// BufferClients : Anzahl der Clients die einen Stream über den Buffer abspielen -var BufferClients sync.Map +//var bufferVFS avfs.VFS // Lock : Lock Map var Lock = sync.RWMutex{} @@ -201,7 +195,7 @@ func Init() (err error) { // HTML Dateien erstellen, mit dev == true werden die lokalen HTML Dateien verwendet if System.Dev { - HTMLInit("webUI", "src", "html"+string(os.PathSeparator), "src"+string(os.PathSeparator)+"webUI.go") + HTMLInit("webUI", "src", strings.Join([]string{"web", "public"}, string(os.PathSeparator)), "src"+string(os.PathSeparator)+"webUI.go") err = BuildGoFile() if err != nil { return diff --git a/src/internal/imgcache/imagecache.go b/src/internal/imgcache/imagecache.go index f68ba04..c598bb6 100644 --- a/src/internal/imgcache/imagecache.go +++ b/src/internal/imgcache/imagecache.go @@ -60,6 +60,7 @@ func (ic *ImageCache) GetImageURL(url string) (string) { ic.mutex.Unlock() if ic.caching { + // Create the filename and path to the file filename := createFileNameFromURL(url, key) path_to_file := ic.basePath + filename url_to_file := ic.baseURL + "/images/" + filename @@ -67,14 +68,12 @@ func (ic *ImageCache) GetImageURL(url string) (string) { // Enqueue the Image for the download ic.EnqueueURL(url, path_to_file) - // Save file name in cache ic.mutex.Lock() - ic.cache[key] = url_to_file + ic.cache[key] = url_to_file // Save url to file in cache ic.mutex.Unlock() return url_to_file } else { - // Save original url in cache - return url + return url // Return original url if caching is disabled } } @@ -90,8 +89,7 @@ func (ic *ImageCache) DownloadImage(url string, filename string) (error) { // Download the image resp, err := client.Get(url) if err != nil { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("error when downloading the image") + return ic.handleDownloadError(url, "error when downloading the image") } defer resp.Body.Close() @@ -100,41 +98,38 @@ func (ic *ImageCache) DownloadImage(url string, filename string) (error) { url = "https://" + strings.Split(url, "//")[1] resp, err = client.Get(url) if err != nil { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("error when downloading the image") + return ic.handleDownloadError(url, "error when downloading the image") } if resp.StatusCode != http.StatusOK { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("received bad status code") + return ic.handleDownloadError(url, "received bad status code") } } else { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("received bad status code") + return ic.handleDownloadError(url, "received bad status code") } } // Save the image to disk file, err := os.Create(filename) if err != nil { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("unable to create the file") + return ic.handleDownloadError(url, "unable to create the file") } defer file.Close() _, err = io.Copy(file, resp.Body) if err != nil { - ic.ErrorHandlingWhenDownloading(url) - return errors.New("can't save the image to the file") + os.Remove(filename) + return ic.handleDownloadError(url, "can't save the image to the file") } return nil } return nil } -func (ic *ImageCache) ErrorHandlingWhenDownloading(url string) { +func (ic *ImageCache) handleDownloadError(url, message string) error { ic.mutex.Lock() defer ic.mutex.Unlock() - ic.cache[url]=url + ic.cache[url]=url // Save original url in cache + return errors.New(message) } // Block until downloads have been completed diff --git a/src/screen.go b/src/screen.go index e79957d..ab0d2df 100644 --- a/src/screen.go +++ b/src/screen.go @@ -383,6 +383,8 @@ func getErrMsg(errCode int) (errMsg string) { errMsg = "Could not read buffered file before sending to clients" case 4017: errMsg = "Cannot stream from M3U file, please use ffmpeg or VLC" + case 4018: + errMsg = "Error while reading thirdparty stdErr" // PID saving and deleting case 4040: diff --git a/src/serveStream.go b/src/serveStream.go index be8c2e0..ff445aa 100644 --- a/src/serveStream.go +++ b/src/serveStream.go @@ -15,6 +15,9 @@ import ( "time" "github.com/google/uuid" + "github.com/avfs/avfs" + "github.com/avfs/avfs/vfs/memfs" + "github.com/avfs/avfs/vfs/osfs" ) /* @@ -25,6 +28,7 @@ func NewStreamManager() *StreamManager { Playlists: map[string]*Playlist{}, errorChan: make(chan ErrorInfo), stopChan: make(chan bool), + FileSystem: InitBufferVFS(Settings.StoreBufferInRAM), } // Start a go routine that will check for the error channel @@ -38,8 +42,27 @@ func NewStreamManager() *StreamManager { // Client specifc errors sm.StopStream(playlistID, streamID, errorInfo.ClientID) } else { - for clientID := range errorInfo.Stream.Clients { - sm.StopStream(playlistID, streamID, clientID) + playlist := sm.Playlists[playlistID] + if playlist == nil{ + return + } + stream := playlist.Streams[streamID] + if stream == nil { + return + } + clients := stream.Clients + if errorInfo.ErrorCode == EndOfFileError { + // Buffer disconnect error + + if stream.DoAutoReconnect && len(clients) > 0 { + // Reconnect to stream + stream.Buffer.StartBuffer(stream, sm.errorChan) + } + }else if len(clients) > 0 { + // Stop the stream for all clients + for clientID := range errorInfo.Stream.Clients { + sm.StopStream(playlistID, streamID, clientID) + } } } } @@ -80,7 +103,7 @@ func (sm *StreamManager) StartStream(streamInfo StreamInfo, w http.ResponseWrite // check if a new stream is possible if IsNewStreamPossible(sm, streamInfo, w) { // create a new buffer and add the stream to the map within the new playlist - sm.Playlists[playlistID].Streams[streamID] = CreateStream(streamInfo, sm.errorChan) + sm.Playlists[playlistID].Streams[streamID] = CreateStream(streamInfo, sm.FileSystem, sm.errorChan) if sm.Playlists[playlistID].Streams[streamID] == nil { return "", "" } @@ -95,7 +118,7 @@ func (sm *StreamManager) StartStream(streamInfo StreamInfo, w http.ResponseWrite // check if a new stream is possible if IsNewStreamPossible(sm, streamInfo, w) { // create a new buffer and add the stream to the map within the existing playlist - sm.Playlists[playlistID].Streams[streamID] = CreateStream(streamInfo, sm.errorChan) + sm.Playlists[playlistID].Streams[streamID] = CreateStream(streamInfo, sm.FileSystem, sm.errorChan) ShowInfo(fmt.Sprintf("Streaming:Started streaming for %s", streamID)) } else { return "", "" @@ -108,15 +131,23 @@ func (sm *StreamManager) StartStream(streamInfo StreamInfo, w http.ResponseWrite return } +func InitBufferVFS(virtual bool) avfs.VFS { + if virtual { + return memfs.New() + } else { + return osfs.New() + } +} + /* CreateStream will create and return a new Stream struct, it will also start the new buffer. */ -func CreateStream(streamInfo StreamInfo, errorChan chan ErrorInfo) *Stream { +func CreateStream(streamInfo StreamInfo, fileSystem avfs.VFS, errorChan chan ErrorInfo) *Stream { ctx, cancel := context.WithCancel(context.Background()) folder := System.Folder.Temp + streamInfo.PlaylistID + string(os.PathSeparator) + streamInfo.URLid stream := &Stream{ Name: streamInfo.Name, - Buffer: nil, + Buffer: &Buffer{Config: &BufferConfig{}, FileSystem: fileSystem}, Ctx: ctx, Cancel: cancel, URL: streamInfo.URL, @@ -125,12 +156,14 @@ func CreateStream(streamInfo StreamInfo, errorChan chan ErrorInfo) *Stream { BackupChannel3URL: streamInfo.BackupChannel3URL, Folder: folder, Clients: make(map[string]Client), + BackupNumber: 0, + UseBackup: false, + DoAutoReconnect: Settings.BufferAutoReconnect, } - buffer := StartBuffer(stream, false, 0, errorChan) - if buffer == nil { + stream.Buffer.StartBuffer(stream, errorChan) + if stream.Buffer == nil { return nil } - stream.Buffer = buffer return stream } @@ -219,7 +252,7 @@ func ShouldCreateContent(fileList []fs.DirEntry) bool { return false default: for _, file := range fileList { - bufferVFS.Remove(System.Folder.Video + file.Name()) + os.Remove(System.Folder.Video + file.Name()) } return true } @@ -317,14 +350,14 @@ func (sm *StreamManager) StopStream(playlistID string, streamID string, clientID ShowInfo(fmt.Sprintf("Streaming:Client left %s, total: %d", streamID, len(stream.Clients))) if len(stream.Clients) == 0 { stream.Cancel() // Tell everyone about the ending of the stream - if stream.Buffer.isThirdPartyBuffer { - stream.Buffer.cmd.Process.Signal(syscall.SIGKILL) // Kill the third party tool process - stream.Buffer.cmd.Wait() - DeletPIDfromDisc(fmt.Sprintf("%d", stream.Buffer.cmd.Process.Pid)) // Delete the PID since the process has been terminated + if stream.Buffer.IsThirdPartyBuffer { + stream.Buffer.Cmd.Process.Signal(syscall.SIGKILL) // Kill the third party tool process + stream.Buffer.Cmd.Wait() + DeletPIDfromDisc(fmt.Sprintf("%d", stream.Buffer.Cmd.Process.Pid)) // Delete the PID since the process has been terminated } else { - close(stream.Buffer.stopChan) + close(stream.Buffer.StopChan) } - delete(sm.Playlists[playlistID].Streams, streamID) + ShowInfo(fmt.Sprintf("Streaming:Stopped streaming for %s", streamID)) var debug = fmt.Sprintf("Streaming:Remove temporary files (%s)", stream.Folder) ShowDebug(debug, 1) @@ -332,9 +365,10 @@ func (sm *StreamManager) StopStream(playlistID string, streamID string, clientID debug = fmt.Sprintf("Streaming:Remove tmp folder %s", stream.Folder) ShowDebug(debug, 1) - if err := bufferVFS.RemoveAll(stream.Folder); err != nil { + if err := sm.FileSystem.RemoveAll(stream.Folder); err != nil { ShowError(err, 4005) } + delete(sm.Playlists[playlistID].Streams, streamID) } } if len(sm.Playlists[playlistID].Streams) == 0 { @@ -411,7 +445,7 @@ func (sm *StreamManager) ServeStream(streamInfo StreamInfo, w http.ResponseWrite // If it was the first client start t if len(stream.Clients) == 1 { // Send Data to the clients, this should run only once per stream - go SendData(stream, sm.errorChan) + go stream.SendData(sm.errorChan) } // Wait for the client context to get closed @@ -437,45 +471,71 @@ func (sm *StreamManager) GetPlaylistIDandStreamID(stream *Stream) (string, strin SendData sends Data to the clients connected to the stream With errorChan it reports occuring errors to the StreamManager instance */ -func SendData(stream *Stream, errorChan chan ErrorInfo) { +func (s *Stream) SendData(errorChan chan ErrorInfo) { var oldSegments []string for { - tmpFiles := GetBufTmpFiles(stream) + tmpFiles := s.GetBufTmpFiles() for _, f := range tmpFiles { - if !CheckBufferFolder(stream) { - errorChan <- ErrorInfo{BufferFolderError, stream, ""} + if !s.CheckBufferFolder() { + errorChan <- ErrorInfo{BufferFolderError, s, ""} return } oldSegments = append(oldSegments, f) ShowDebug(fmt.Sprintf("Streaming:Sending file %s to clients", f), 1) - if !SendFileToClients(stream, f, errorChan) { - errorChan <- ErrorInfo{SendFileError, stream, ""} - return + if !s.SendFileToClients(f, errorChan) { + if !s.DoAutoReconnect { + errorChan <- ErrorInfo{SendFileError, s, ""} + return + } else { + continue + } } - if len(oldSegments) > 5 { - DeleteOldestSegment(stream, oldSegments[0]) + if s.GetBufferedSize() > Settings.BufferSize * 1024 { + s.DeleteOldestSegment(oldSegments[0]) oldSegments = oldSegments[1:] } } if len(tmpFiles) == 0 { - time.Sleep(10 * time.Millisecond) // This will ensure that streams will synchronize over the time + time.Sleep(5 * time.Millisecond) // This will ensure that streams will synchronize over the time + } + } +} + +func (s *Stream) GetBufferedSize() (size int) { + size = 0 + var tmpFolder = s.Folder + string(os.PathSeparator) + if _, err := s.Buffer.FileSystem.Stat(tmpFolder); !fsIsNotExistErr(err) { + + files, err := s.Buffer.FileSystem.ReadDir(getPlatformPath(tmpFolder)) + if err != nil { + ShowError(err, 000) + return + } + for _, file := range files { + if !file.IsDir() && filepath.Ext(file.Name()) == ".ts" { + file_info, err := s.Buffer.FileSystem.Stat(getPlatformFile(tmpFolder + file.Name())) + if err == nil { + size += int(file_info.Size()) + } + } } } + return size } /* GetBufTmpFiles retrieves the files within the buffer folder and returns a sorted list with the file names */ -func GetBufTmpFiles(stream *Stream) (tmpFiles []string) { +func (s *Stream) GetBufTmpFiles() (tmpFiles []string) { - var tmpFolder = stream.Folder + string(os.PathSeparator) + var tmpFolder = s.Folder + string(os.PathSeparator) var fileIDs []float64 - if _, err := bufferVFS.Stat(tmpFolder); !fsIsNotExistErr(err) { + if _, err := s.Buffer.FileSystem.Stat(tmpFolder); !fsIsNotExistErr(err) { - files, err := bufferVFS.ReadDir(getPlatformPath(tmpFolder)) + files, err := s.Buffer.FileSystem.ReadDir(getPlatformPath(tmpFolder)) if err != nil { ShowError(err, 000) return @@ -502,9 +562,9 @@ func GetBufTmpFiles(stream *Stream) (tmpFiles []string) { for _, file := range fileIDs { fileName := fmt.Sprintf("%.0f.ts", file) // Check if the file is already within old segments array - if !ContainsString(stream.OldSegments, fileName) { + if !ContainsString(s.OldSegments, fileName) { tmpFiles = append(tmpFiles, fileName) - stream.OldSegments = append(stream.OldSegments, fileName) + s.OldSegments = append(s.OldSegments, fileName) } } } @@ -515,9 +575,9 @@ func GetBufTmpFiles(stream *Stream) (tmpFiles []string) { /* DeleteOldesSegment will delete the file provided in the buffer */ -func DeleteOldestSegment(stream *Stream, oldSegment string) { - fileToRemove := stream.Folder + string(os.PathSeparator) + oldSegment - if err := bufferVFS.RemoveAll(getPlatformFile(fileToRemove)); err != nil { +func (s *Stream) DeleteOldestSegment(oldSegment string) { + fileToRemove := s.Folder + string(os.PathSeparator) + oldSegment + if err := s.Buffer.FileSystem.RemoveAll(getPlatformFile(fileToRemove)); err != nil { ShowError(err, 4007) } } @@ -525,8 +585,8 @@ func DeleteOldestSegment(stream *Stream, oldSegment string) { /* CheckBufferFolder reports whether the buffer folder exists. */ -func CheckBufferFolder(stream *Stream) bool { - if _, err := bufferVFS.Stat(stream.Folder); fsIsNotExistErr(err) { +func (s *Stream) CheckBufferFolder() bool { + if _, err := s.Buffer.FileSystem.Stat(s.Folder); fsIsNotExistErr(err) { return false } return true @@ -536,8 +596,8 @@ func CheckBufferFolder(stream *Stream) bool { SendFileToClients reports whether sending the File to the clients was successful It will also use the errorChan to report to the StreamManager if there is an error sending the file to a specifc client */ -func SendFileToClients(stream *Stream, fileName string, errorChan chan ErrorInfo) bool { - file, err := bufferVFS.Open(stream.Folder + string(os.PathSeparator) + fileName) +func (s *Stream) SendFileToClients(fileName string, errorChan chan ErrorInfo) bool { + file, err := s.Buffer.FileSystem.Open(s.Folder + string(os.PathSeparator) + fileName) if err != nil { ShowError(err, 4014) return false @@ -553,11 +613,11 @@ func SendFileToClients(stream *Stream, fileName string, errorChan chan ErrorInfo ShowError(err, 4016) return false } - for clientID, client := range stream.Clients { + for clientID, client := range s.Clients { ShowDebug(fmt.Sprintf("Streaming:Sending file %s to client %s", fileName, clientID), 3) if _, err := client.w.Write(buffer); err != nil { ShowDebug(fmt.Sprintf("Streaming:Error when trying to send file to client %s", clientID), 1) - errorChan <- ErrorInfo{SendFileError, stream, clientID} + errorChan <- ErrorInfo{SendFileError, s, clientID} } } return true diff --git a/src/struct-buffer.go b/src/struct-buffer.go index 04daddd..4f183fb 100644 --- a/src/struct-buffer.go +++ b/src/struct-buffer.go @@ -5,6 +5,8 @@ import ( "net/http" "os/exec" "sync" + + "github.com/avfs/avfs" ) // StreamManager verwaltet die Streams und ffmpeg-Prozesse @@ -12,6 +14,7 @@ type StreamManager struct { Playlists map[string]*Playlist errorChan chan ErrorInfo stopChan chan bool + FileSystem avfs.VFS mu sync.Mutex } @@ -29,17 +32,29 @@ type Stream struct { Cancel context.CancelFunc Folder string + LatestSegment int OldSegments []string URL string BackupChannel1URL string BackupChannel2URL string BackupChannel3URL string + UseBackup bool + BackupNumber int + DoAutoReconnect bool } type Buffer struct { - isThirdPartyBuffer bool - cmd *exec.Cmd - stopChan chan struct{} + FileSystem avfs.VFS + IsThirdPartyBuffer bool + Cmd *exec.Cmd + Config *BufferConfig + StopChan chan struct{} +} + +type BufferConfig struct { + BufferType string + Path string + Options string } type Client struct { diff --git a/src/struct-system.go b/src/struct-system.go index 2f3ecec..b8fb2c4 100644 --- a/src/struct-system.go +++ b/src/struct-system.go @@ -290,6 +290,7 @@ type SettingsStruct struct { Buffer string `json:"buffer"` BufferSize int `json:"buffer.size.kb"` BufferTimeout float64 `json:"buffer.timeout"` + BufferAutoReconnect bool `json:"buffer.autoReconnect"` CacheImages bool `json:"cache.images"` ChangeVersion bool `json:"changeVersion"` EpgSource string `json:"epgSource"` diff --git a/src/struct-webserver.go b/src/struct-webserver.go index 07774b5..abc39d9 100644 --- a/src/struct-webserver.go +++ b/src/struct-webserver.go @@ -36,6 +36,7 @@ type RequestStruct struct { Buffer *string `json:"buffer,omitempty"` BufferSize *int `json:"buffer.size.kb,omitempty"` BufferTimeout *float64 `json:"buffer.timeout,omitempty"` + BufferAutoReconnect *bool `json:"buffer.autoReconnect,omitempty"` CacheImages *bool `json:"cache.images,omitempty"` EpgSource *string `json:"epgSource,omitempty"` FFmpegOptions *string `json:"ffmpeg.options,omitempty"` diff --git a/src/system.go b/src/system.go index 4eff424..dd4b6b1 100644 --- a/src/system.go +++ b/src/system.go @@ -132,6 +132,7 @@ func loadSettings() (settings SettingsStruct, err error) { defaults["buffer"] = "-" defaults["buffer.size.kb"] = 1024 defaults["buffer.timeout"] = 500 + defaults["buffer.autoReconnect"] = false defaults["cache.images"] = false defaults["epgSource"] = "PMS" defaults["ffmpeg.options"] = System.FFmpeg.DefaultOptions diff --git a/src/thirdPartyBuffer.go b/src/thirdPartyBuffer.go index e3acdc9..f97d583 100644 --- a/src/thirdPartyBuffer.go +++ b/src/thirdPartyBuffer.go @@ -8,82 +8,87 @@ import ( "os" "os/exec" "strings" - "time" ) -/* -StartThirdPartyBuffer starts the third party tool and capture its output -*/ -func StartThirdPartyBuffer(stream *Stream, useBackup bool, backupNumber int, errorChan chan ErrorInfo) (*Buffer, error) { - if useBackup { - UpdateStreamURLForBackup(stream, backupNumber) +// StartThirdPartyBuffer starts the third party tool and capture its output for the given stream. +func StartThirdPartyBuffer(stream *Stream, errorChan chan ErrorInfo) error { + if stream.UseBackup { + UpdateStreamURLForBackup(stream) } - - bufferType, path, options := GetBufferConfig() - if bufferType == "" { - return nil, fmt.Errorf("could not get buffer config") + + SetBufferConfig(stream.Buffer.Config) + bufferConfig := stream.Buffer.Config + if bufferConfig.BufferType == "" { + return fmt.Errorf("could not set buffer config") } - ShowInfo(fmt.Sprintf("Streaming: Buffer:%s path:%s", bufferType, path)) + ShowInfo(fmt.Sprintf("Streaming: Buffer:%s path:%s", bufferConfig.BufferType, bufferConfig.Path)) ShowInfo("Streaming URL:" + stream.URL) - if buffer, err := RunBufferCommand(bufferType, path, options, stream, errorChan); err != nil { - return HandleBufferError(err, backupNumber, useBackup, stream, errorChan), err - } else { - return buffer, nil + err := RunBufferCommand(stream, errorChan) + if err != nil { + handleBufferError(err, stream, errorChan) } + return nil } -/* -GetBufferConfig reutrns the the arguments from the buffer settings -*/ -func GetBufferConfig() (bufferType, path, options string) { - bufferType = strings.ToUpper(Settings.Buffer) - switch bufferType { +// SetBufferConfig returns the the arguments from the buffer settings in the config file +func SetBufferConfig(config *BufferConfig) { + config.BufferType = strings.ToUpper(Settings.Buffer) + switch config.BufferType { case "FFMPEG": - return bufferType, Settings.FFmpegPath, Settings.FFmpegOptions + config.Options = Settings.FFmpegOptions + config.Path = Settings.FFmpegPath case "VLC": - return bufferType, Settings.VLCPath, Settings.VLCOptions + config.Options = Settings.VLCOptions + config.Path = Settings.VLCPath default: - return "", "", "" + config.BufferType = "" + config.Options = "" + config.Path = "" } } -/* -RunBufferCommand starts the third party tool process -*/ -func RunBufferCommand(bufferType string, path, options string, stream *Stream, errorChan chan ErrorInfo) (*Buffer, error) { - args := PrepareBufferArguments(options, stream.URL) - - cmd := exec.Command(path, args...) - debug := fmt.Sprintf("%s:%s %s", strings.ToUpper(Settings.Buffer), path, args) +// RunBufferCommand starts the third party tool process with the specified path and options, and captures its output. +// +// Parameters: +// - bufferType: A string specifying the type of buffer (e.g., "FFMPEG", "VLC"). +// - path: A string specifying the path to the buffer executable. +// - options: A string specifying the options to be passed to the buffer executable. +// - stream: A pointer to a Stream struct containing the stream information. +// - errorChan: A channel for sending error information. +// +// Returns: +// - *Buffer: A pointer to a Buffer struct representing the buffer process. +// - error: An error object if an error occurs, otherwise nil. +func RunBufferCommand(stream *Stream, errorChan chan ErrorInfo) error { + bufferConfig := stream.Buffer.Config + args := PrepareBufferArguments(bufferConfig.Options, stream.URL) + + cmd := exec.Command(bufferConfig.Path, args...) + debug := fmt.Sprintf("%s:%s %s", strings.ToUpper(Settings.Buffer), bufferConfig.Path, args) ShowDebug(debug, 1) - stdOut, logOut, err := GetCommandPipes(cmd) + stdOut, stdErr, err := GetCommandPipes(cmd) if err != nil { - return nil, err + return err } if err := cmd.Start(); err != nil { - return nil, fmt.Errorf("failed to start buffer command: %w", err) + return fmt.Errorf("failed to start buffer command: %w", err) } WritePIDtoDisk(fmt.Sprintf("%d", cmd.Process.Pid)) - var streamStatus = make(chan bool) - go ShowCommandLogOutputInConsole(bufferType, logOut, streamStatus) + go ShowCommandStdErrInConsole(bufferConfig.BufferType, stdErr) go HandleByteOutput(stdOut, stream, errorChan) - buffer := &Buffer{ - isThirdPartyBuffer: true, - cmd: cmd, - } + stream.Buffer.IsThirdPartyBuffer = true + stream.Buffer.Cmd = cmd - return buffer, nil + return nil } -/* -PrepareBufferArguments -*/ +// PrepareBufferArguments replaces the [URL] placeholder in the buffer options with the actual stream URL func PrepareBufferArguments(options, streamURL string) []string { args := []string{} u, err := url.Parse(streamURL) @@ -100,50 +105,56 @@ func PrepareBufferArguments(options, streamURL string) []string { return args } -/* -Get the output pipes of the given command -*/ +// GetCommandPipes retrieves the standard output and standard error pipes of the given command. +// It returns the stdout pipe, stderr pipe, and an error if any occurs. +// +// Parameters: +// - cmd: A pointer to an exec.Cmd struct representing the command to be executed. +// +// Returns: +// - io.ReadCloser: A ReadCloser for the standard output pipe. +// - io.ReadCloser: A ReadCloser for the standard error pipe. +// - error: An error object if an error occurs, otherwise nil. func GetCommandPipes(cmd *exec.Cmd) (io.ReadCloser, io.ReadCloser, error) { stdOut, err := cmd.StdoutPipe() if err != nil { return nil, nil, fmt.Errorf("failed to get stdout pipe: %w", err) } - logOut, err := cmd.StderrPipe() + stdErr, err := cmd.StderrPipe() if err != nil { return nil, nil, fmt.Errorf("failed to get stderr pipe: %w", err) } - return stdOut, logOut, nil + return stdOut, stdErr, nil } -/* -ShowCommandLogOutputInConsole prints the log output of the given pipe -*/ -func ShowCommandLogOutputInConsole(bufferType string, logOut io.ReadCloser, streamStatus chan bool) { - // Log Daten vom Prozess im Debug Mode 1 anzeigen. - scanner := bufio.NewScanner(logOut) +// ShowCommandStdErrInConsole reads from the provided io.ReadCloser (stdErr) line by line, +// and logs each line with the specified bufferType prefix. If an error occurs during scanning, +// it logs the error with a specific error code. +// +// Parameters: +// - bufferType: A string that specifies the type of buffer, used as a prefix in the log. +// - stdErr: An io.ReadCloser from which the function reads the standard error output. +// +// The function uses a bufio.Scanner to read the standard error output line by line, +// trims any leading or trailing whitespace from each line, and logs it using the ShowInfo function. +// If an error occurs during scanning, it logs the error using the ShowError function with error code 4018. +func ShowCommandStdErrInConsole(bufferType string, stdErr io.ReadCloser) { + scanner := bufio.NewScanner(stdErr) scanner.Split(bufio.ScanLines) for scanner.Scan() { - debug := fmt.Sprintf("%s log:%s", bufferType, strings.TrimSpace(scanner.Text())) + ShowInfo(debug) + } - select { - case <-streamStatus: - ShowDebug(debug, 1) - default: - ShowInfo(debug) - } - - time.Sleep(time.Duration(10) * time.Millisecond) - + if scanner.Err() != nil { + ShowError(scanner.Err(), 4018) } } -/* -WritePIDtoDisk saves the PID of the buffering process -*/ +// WritePIDtoDisk saves the PID of the buffering process to a file on disk func WritePIDtoDisk(pid string) { // Open the file in append mode (create it if it doesn't exist) file, err := os.OpenFile(System.Folder.Temp+"PIDs", os.O_RDWR|os.O_APPEND|os.O_CREATE, 0660) @@ -159,9 +170,18 @@ func WritePIDtoDisk(pid string) { } } -/* -DeletPIDfromDisc deletes the PID from the disk -*/ +// DeletPIDfromDisc deletes the PID from the disk +// DeletPIDfromDisc removes a specified PID from a file on disk. +// The file is expected to be located in the system's temporary folder and named "PIDs". +// Each line in the file represents a PID. +// +// Parameters: +// +// delete_pid (string): The PID to be removed from the file. +// +// Returns: +// +// error: An error object if an error occurs, otherwise nil. func DeletPIDfromDisc(delete_pid string) error { file, err := os.OpenFile(System.Folder.Temp+"PIDs", os.O_RDWR, 0660) if err != nil { diff --git a/src/threadfinBuffer.go b/src/threadfinBuffer.go index 5c21c19..e5e1080 100644 --- a/src/threadfinBuffer.go +++ b/src/threadfinBuffer.go @@ -4,12 +4,13 @@ import ( "bufio" "fmt" "io" + "mime" "net/http" "strings" "time" ) -func StartThreadfinBuffer(stream *Stream, useBackup bool, backupNumber int, errorChan chan ErrorInfo) (*Buffer, error) { +func StartThreadfinBuffer(stream *Stream, errorChan chan ErrorInfo) error { stopChan := make(chan struct{}) ShowInfo(fmt.Sprintf("Streaming:Buffer:%s", "Threadfin")) ShowInfo("Streaming URL:" + stream.URL) @@ -19,25 +20,39 @@ func StartThreadfinBuffer(stream *Stream, useBackup bool, backupNumber int, erro if err != nil { return } - //defer resp.Body.Close() - if contentType, exists := resp.Header["Content-Type"]; exists { - ShowDebug(fmt.Sprintf("Streaming:%s", contentType), 1) - if contentType[0] != "application/octet-stream" { - videoURL, audioURL, err := selectStreamFromMaster(resp.Body) + + if contentTypes, exists := resp.Header["Content-Type"]; exists { + ShowDebug(fmt.Sprintf("Streaming:%s", contentTypes), 1) + extensions := []string{} + for _, contentType := range contentTypes { + type_extensions, err := mime.ExtensionsByType(contentType) if err != nil { - ShowError(err, 0) return } + if type_extensions == nil { + continue + } + extensions = append(extensions, type_extensions...) + } + + for _, extension := range extensions { + if extension == ".m3u" || extension == ".m3u8" { + videoURL, audioURL, err := selectStreamFromMaster(resp.Body) + if err != nil { + ShowError(err, 0) + return + } - if videoURL != "" || audioURL != "" { - ShowInfo("Streaming: Can not stream from m3u file") - errorChan <- ErrorInfo{4017, stream, ""} - return + if videoURL != "" || audioURL != "" { + ShowInfo("Streaming:Can not stream from m3u file") + errorChan <- ErrorInfo{4017, stream, ""} + return + } } } } - go HandleByteOutput(resp.Body, stream, errorChan) + go HandleByteOutput(resp.Body, stream, errorChan) // Download the video file directly and save to disk for { select { @@ -50,7 +65,8 @@ func StartThreadfinBuffer(stream *Stream, useBackup bool, backupNumber int, erro } } }() - return &Buffer{isThirdPartyBuffer: false, stopChan: stopChan}, nil + stream.Buffer.StopChan = stopChan + return nil } func selectStreamFromMaster(resp io.ReadCloser) (string, string, error) { diff --git a/src/webUI.go b/src/webUI.go index 03cd3e8..4df669d 100644 --- a/src/webUI.go +++ b/src/webUI.go @@ -4,6 +4,7 @@ var webUI = make(map[string]interface{}) func loadHTMLMap() { +<<<<<<< HEAD webUI["html/configuration.html"] = "PCFkb2N0eXBlIGh0bWw+CjxodG1sPgoKPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIiAvPgogIDx0aXRsZT5UaHJlYWRmaW48L3RpdGxlPgogIDxsaW5rCiAgICByZWw9InN0eWxlc2hlZXQiCiAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNS4xNC4wL2Nzcy9hbGwubWluLmNzcyIKICAvPgogIDxsaW5rIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMi4wL2Rpc3QvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIGludGVncml0eT0ic2hhMzg0LWdIMnlJSnFLZE5IUEVxMG40TXFhL0hHS0loU2tJSGVMNUF5aGtZVjhpNTlVNUFSNmNzQnZBcEhITmwvdkkxQngiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3NjcmVlbi5jc3MiIHR5cGU9InRleHQvY3NzIj4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9iYXNlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8L2hlYWQ+Cgo8Ym9keSBvbmxvYWQ9ImphdmFzY3JpcHQ6IHJlYWR5Rm9yQ29uZmlndXJhdGlvbigwKTsiPgoKICA8ZGl2IGlkPSJsb2FkaW5nIiBjbGFzcz0ibW9kYWwgZmFkZSI+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbG9hZGVyIj48L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBpZD0icG9wdXAiIGNsYXNzPSJtb2RhbCBmYWRlIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC14bCI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciIgaWQ9InBvcHVwSGVhZGVyIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgPGRpdiBpZD0icG9wdXBDdXN0b20iPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGlkPSJoZWFkZXIiIGNsYXNzPSJpbWdDZW50ZXIiPjwvZGl2PgogIDxkaXYgaWQ9ImJveCI+CgogICAgPGRpdiBpZD0iaGVhZGxpbmUiPgogICAgICA8aDEgaWQ9ImhlYWQtdGV4dCIgY2xhc3M9ImNlbnRlciI+Q29uZmlndXJhdGlvbjwvaDE+CiAgICA8L2Rpdj4KICAgIDxwIGlkPSJlcnIiIGNsYXNzPSJlcnJvck1zZyBjZW50ZXIiPjwvcD4KICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgoKICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYm94LWZvb3RlciI+CiAgICAgIDxpbnB1dCBpZD0ibmV4dCIgY2xhc3M9IiIgdHlwZT0iYnV0dG9uIiBuYW1lPSJuZXh0IiB2YWx1ZT0iTmV4dCIgb25jbGljaz0iamF2YXNjcmlwdDogc2F2ZVdpemFyZCgpOyI+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjAvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEzODQtQTNySkQ4NTZLb3dTYjdkd2xaZFlFa08zOUdhZ2k3dklzRjBqclJBb1FtREtLdFFCSFV1TFo5QXNTdjRqRDRYYSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NsaXBib2FyZC5qcy8yLjAuMTAvY2xpcGJvYXJkLm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvbmZpZ3VyYXRpb25fdHMuanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9uZXR3b3JrX3RzLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvbWVudV90cy5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL3NldHRpbmdzX3RzLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvYmFzZV90cy5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KCjwvaHRtbD4=" webUI["html/img/logout.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0xMC0xM1QxMToxMDoxODwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cg27QeEAAANQSURBVGgF7Zk9aBRBGIZzSRSN8YdoCpEkghCCqK1o4g9IsBCCNmIniCAiWAhqI8G02qiIoqCCWggSEcFKEFPYpVAU8QdFUyiKRpRokBjP55OdZDLZvZnZ7N3Ngh887M7sN/O9797t7c5eTc3/8D8DxWKxGS5Ai//oAEYgvB4OwleQaAtAlp8ERG+Bp6Jei/wYQfRy6NfE67vhG0FtA/TBqK7c2A/bCGJ3wpAhOq4ZphGUroEHcYoT+sIygsgmOAu/EwQndYdhBHV1sB8+Jym19Lf6/faVIRuBG+GRRajtcPWMoKwFbtgUOh6vvBGEzYFj8MNRpEtaZY2gaAe8cVHmmXOc/K3QXIZv/+SUFFgJ96AS8ZwiZ6Ab6iZVzGCPiRbCKRiDasQHip6EdD/PDKyFvfAJQgg5kVfB/VoieT0MQojxE1G9UG/7otWS0A7pPkrb7DM/Ppcp+mAAM/bFGEmL4RL8gVDjI8JWOZ0bEjvhSahO0CXXsLMZWZYegREIMV4jaoHTJyNJJLfC7RCdoOm6sxGVyKAeeBegoU6l0XmLiXlwAqp1o4w7j3d1AwW9YdtnNrnQzkOXLddyfAPHv8Ey6ABpd8N88In2QqHwymfARC5mCrAH0i6qGDr9jk3fbNgFz8A1DkwIS7tDpSVwGdLcexIfPZhPHpf2wS+wRX9a/dPGUakLzBdwNgGJRlQBJtgMw5aJ3qr8TLYUmwVHwXXxZTUiwphvHYxDUnzPxIA5CdXa4E5SVa3fyUhkRtYqpSKbNYxpJiq+ncpDJar7GGlknvcl5mqM05BZH4Xl3iOLpLh7j7OR6MScSzAykplg20QIWA0PDSG+RuTdQVy8sNXP9DgK5N4jK9AvkRpfI4sYF/c2836mQl0nQ4zce66AfZFkTMqYl2DGaSMt/CYOHpsuaPco5bLUzUuMGkLHaQ+ovjwZUZrVdpAHRnnw/Bd5MrJCiY62t4x2+E2uBfkfRg95TdSkK8/LJ7JWF83+Nb5Ww0Zf+E3OviwXVMgT8dLwVRsKEd0A+uP8biMlH01MHAYVF/Oh2lCJenkDqpbUN9nPyzU91QnCRbyEPEXn1sQhxMv7tG1T7cW3rK/r44eVtxfxm6gwBh38zJqPJuUtXu3Z/wLwuBaBLgMkKwAAAABJRU5ErkJggg==" webUI["html/js/base.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxNQUFjLENBQUE7QUFDbEIsSUFBSSxTQUFTLEdBQVksS0FBSyxDQUFBO0FBQzlCLElBQUksY0FBc0IsQ0FBQTtBQUMxQixJQUFJLHVCQUErQixDQUFBO0FBQ25DLElBQUksY0FBYyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUE7QUFDakMsSUFBSSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQTtBQUN2QixJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQTtBQUM3QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUE7QUFJeEIsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtBQUNsRixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7QUFDNUcsZ0NBQWdDO0FBQ2hDLElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVMsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFFdEQsQ0FBQyxDQUFDLENBQUM7QUFDSCxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENB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" @@ -44,6 +45,49 @@ func loadHTMLMap() { webUI["html/js/logs.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2xvZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxHQUFHO0lBRVAsU0FBUyxDQUFDLEtBQVk7UUFFcEIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQTtRQUNsQyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUE7UUFDaEMsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUM7UUFFRCxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtRQUV6QixPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0NBRUY7QUFFRCxTQUFTLFFBQVEsQ0FBQyxNQUFjO0lBRTlCLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFFbkIsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFaEQsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFFbEIsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTNCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFFbkIsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUV0QyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRW5CLENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDO1FBRVQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFFbkIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFFM0MsQ0FBQztJQUVILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVULENBQUM7QUFFRCxTQUFTLFNBQVM7SUFFaEIsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFBO0lBQ3JCLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUE7SUFDdkIsSUFBSSxNQUFNLEdBQVUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUV0QixDQUFDIn0=" webUI["html/js/network.js"] = "Y2xhc3MgU2VydmVyIHsKICAgIGNvbnN0cnVjdG9yKGNtZCkgewogICAgICAgIHRoaXMuY21kID0gY21kOwogICAgfQogICAgcmVxdWVzdChkYXRhKSB7CiAgICAgICAgLy9pZiAoU0VSVkVSX0NPTk5FQ1RJT04gPT0gdHJ1ZSkgewogICAgICAgIC8vICByZXR1cm4KICAgICAgICAvL30KICAgICAgICBTRVJWRVJfQ09OTkVDVElPTiA9IHRydWU7CiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgICAgaWYgKHRoaXMuY21kICE9ICJ1cGRhdGVMb2ciKSB7CiAgICAgICAgICAgIC8vIHNob3dFbGVtZW50KCJsb2FkaW5nIiwgdHJ1ZSkKICAgICAgICAgICAgVU5ETyA9IG5ldyBPYmplY3QoKTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHsKICAgICAgICAgICAgY2FzZSAiaHR0cDoiOgogICAgICAgICAgICAgICAgdGhpcy5wcm90b2NvbCA9ICJ3czovLyI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaHR0cHM6IjoKICAgICAgICAgICAgICAgIHRoaXMucHJvdG9jb2wgPSAid3NzOi8vIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICB2YXIgdXJsID0gdGhpcy5wcm90b2NvbCArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICI6IiArIHdpbmRvdy5sb2NhdGlvbi5wb3J0ICsgIi93cy8iICsgIj9Ub2tlbj0iICsgZ2V0Q29va2llKCJUb2tlbiIpOwogICAgICAgIGRhdGFbImNtZCJdID0gdGhpcy5jbWQ7CiAgICAgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwogICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgV1NfQVZBSUxBQkxFID0gdHJ1ZTsKICAgICAgICAgICAgY29uc29sZS5sb2coIlJFUVVFU1QgKEpTKToiKTsKICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSRVFVRVNUOiAoSlNPTikiKTsKICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpOwogICAgICAgICAgICB0aGlzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpOwogICAgICAgIH07CiAgICAgICAgd3Mub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJObyB3ZWJzb2NrZXQgY29ubmVjdGlvbiB0byBUaHJlYWRmaW4gY291bGQgYmUgZXN0YWJsaXNoZWQuIENoZWNrIHlvdXIgbmV0d29yayBjb25maWd1cmF0aW9uLiIpOwogICAgICAgICAgICBTRVJWRVJfQ09OTkVDVElPTiA9IGZhbHNlOwogICAgICAgICAgICBpZiAoV1NfQVZBSUxBQkxFID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBhbGVydCgiTm8gd2Vic29ja2V0IGNvbm5lY3Rpb24gdG8gVGhyZWFkZmluIGNvdWxkIGJlIGVzdGFibGlzaGVkLiBDaGVjayB5b3VyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4iKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgU0VSVkVSX0NPTk5FQ1RJT04gPSBmYWxzZTsKICAgICAgICAgICAgc2hvd0VsZW1lbnQoImxvYWRpbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSRVNQT05TRToiKTsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZShlLmRhdGEpOwogICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgidG9rZW4iKSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gIlRva2VuPSIgKyByZXNwb25zZVsidG9rZW4iXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHsKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoImxvZ29VUkwiKSkgewogICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGFubmVsLWljb24iKTsKICAgICAgICAgICAgICAgIGRpdi52YWx1ZSA9IHJlc3BvbnNlWyJsb2dvVVJMIl07CiAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAoZGF0YVsiY21kIl0pIHsKICAgICAgICAgICAgICAgIGNhc2UgInVwZGF0ZUxvZyI6CiAgICAgICAgICAgICAgICAgICAgU0VSVkVSLmxvZyA9IHJlc3BvbnNlWyJsb2ciXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRfbG9nIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvZ3MoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIFNFUlZFUjogU2VydmVyOwogICAgICAgICAgICAgICAgICAgIFNFUlZFUiA9IHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgib3Blbk1lbnUiKSkgewogICAgICAgICAgICAgICAgdmFyIG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZXNwb25zZVsib3Blbk1lbnUiXSk7CiAgICAgICAgICAgICAgICBtZW51LmNsaWNrKCk7CiAgICAgICAgICAgICAgICBzaG93RWxlbWVudCgicG9wdXAiLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KCJvcGVuTGluayIpKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSByZXNwb25zZVsib3BlbkxpbmsiXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoImFsZXJ0IikpIHsKICAgICAgICAgICAgICAgIGFsZXJ0KHJlc3BvbnNlWyJhbGVydCJdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoInJlbG9hZCIpKSB7CiAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoIndpemFyZCIpKSB7CiAgICAgICAgICAgICAgICBjcmVhdGVMYXlvdXQoKTsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25XaXphcmRbcmVzcG9uc2VbIndpemFyZCJdXS5jcmVhdGVXaXphcmQoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjcmVhdGVMYXlvdXQoKTsKICAgICAgICB9OwogICAgfQp9CmZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7CiAgICB2YXIgdmFsdWUgPSAiOyAiICsgZG9jdW1lbnQuY29va2llOwogICAgdmFyIHBhcnRzID0gdmFsdWUuc3BsaXQoIjsgIiArIG5hbWUgKyAiPSIpOwogICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAyKQogICAgICAgIHJldHVybiBwYXJ0cy5wb3AoKS5zcGxpdCgiOyIpLnNoaWZ0KCk7Cn0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmV0d29yay5qcy5tYXA=" webUI["html/js/network.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNO0lBSVYsWUFBWSxHQUFXO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUVsQixrQ0FBa0M7UUFDbEMsVUFBVTtRQUNWLEdBQUc7UUFFSCxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDNUIsK0JBQStCO1lBQy9CLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxRQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxNQUFNLEdBQUc7WUFFVixZQUFZLEdBQUcsSUFBSSxDQUFD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" +======= + webUI["web/public/js/network.js"] = "Y2xhc3MgU2VydmVyIHsKICAgIGNvbnN0cnVjdG9yKGNtZCkgewogICAgICAgIHRoaXMuY21kID0gY21kOwogICAgfQogICAgcmVxdWVzdChkYXRhKSB7CiAgICAgICAgLy9pZiAoU0VSVkVSX0NPTk5FQ1RJT04gPT0gdHJ1ZSkgewogICAgICAgIC8vICByZXR1cm4KICAgICAgICAvL30KICAgICAgICBTRVJWRVJfQ09OTkVDVElPTiA9IHRydWU7CiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgICAgaWYgKHRoaXMuY21kICE9ICJ1cGRhdGVMb2ciKSB7CiAgICAgICAgICAgIC8vIHNob3dFbGVtZW50KCJsb2FkaW5nIiwgdHJ1ZSkKICAgICAgICAgICAgVU5ETyA9IG5ldyBPYmplY3QoKTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHsKICAgICAgICAgICAgY2FzZSAiaHR0cDoiOgogICAgICAgICAgICAgICAgdGhpcy5wcm90b2NvbCA9ICJ3czovLyI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaHR0cHM6IjoKICAgICAgICAgICAgICAgIHRoaXMucHJvdG9jb2wgPSAid3NzOi8vIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICB2YXIgdXJsID0gdGhpcy5wcm90b2NvbCArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICI6IiArIHdpbmRvdy5sb2NhdGlvbi5wb3J0ICsgIi93cy8iICsgIj9Ub2tlbj0iICsgZ2V0Q29va2llKCJUb2tlbiIpOwogICAgICAgIGRhdGFbImNtZCJdID0gdGhpcy5jbWQ7CiAgICAgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwogICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgV1NfQVZBSUxBQkxFID0gdHJ1ZTsKICAgICAgICAgICAgY29uc29sZS5sb2coIlJFUVVFU1QgKEpTKToiKTsKICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSRVFVRVNUOiAoSlNPTikiKTsKICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpOwogICAgICAgICAgICB0aGlzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpOwogICAgICAgIH07CiAgICAgICAgd3Mub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJObyB3ZWJzb2NrZXQgY29ubmVjdGlvbiB0byBUaHJlYWRmaW4gY291bGQgYmUgZXN0YWJsaXNoZWQuIENoZWNrIHlvdXIgbmV0d29yayBjb25maWd1cmF0aW9uLiIpOwogICAgICAgICAgICBTRVJWRVJfQ09OTkVDVElPTiA9IGZhbHNlOwogICAgICAgICAgICBpZiAoV1NfQVZBSUxBQkxFID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBhbGVydCgiTm8gd2Vic29ja2V0IGNvbm5lY3Rpb24gdG8gVGhyZWFkZmluIGNvdWxkIGJlIGVzdGFibGlzaGVkLiBDaGVjayB5b3VyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4iKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgU0VSVkVSX0NPTk5FQ1RJT04gPSBmYWxzZTsKICAgICAgICAgICAgc2hvd0VsZW1lbnQoImxvYWRpbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJSRVNQT05TRToiKTsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZShlLmRhdGEpOwogICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgidG9rZW4iKSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gIlRva2VuPSIgKyByZXNwb25zZVsidG9rZW4iXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHsKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoImxvZ29VUkwiKSkgewogICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGFubmVsLWljb24iKTsKICAgICAgICAgICAgICAgIGRpdi52YWx1ZSA9IHJlc3BvbnNlWyJsb2dvVVJMIl07CiAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAoZGF0YVsiY21kIl0pIHsKICAgICAgICAgICAgICAgIGNhc2UgInVwZGF0ZUxvZyI6CiAgICAgICAgICAgICAgICAgICAgU0VSVkVSLmxvZyA9IHJlc3BvbnNlWyJsb2ciXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRfbG9nIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvZ3MoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIFNFUlZFUjogU2VydmVyOwogICAgICAgICAgICAgICAgICAgIFNFUlZFUiA9IHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgib3Blbk1lbnUiKSkgewogICAgICAgICAgICAgICAgdmFyIG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZXNwb25zZVsib3Blbk1lbnUiXSk7CiAgICAgICAgICAgICAgICBtZW51LmNsaWNrKCk7CiAgICAgICAgICAgICAgICBzaG93RWxlbWVudCgicG9wdXAiLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KCJvcGVuTGluayIpKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSByZXNwb25zZVsib3BlbkxpbmsiXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoImFsZXJ0IikpIHsKICAgICAgICAgICAgICAgIGFsZXJ0KHJlc3BvbnNlWyJhbGVydCJdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoInJlbG9hZCIpKSB7CiAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoIndpemFyZCIpKSB7CiAgICAgICAgICAgICAgICBjcmVhdGVMYXlvdXQoKTsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25XaXphcmRbcmVzcG9uc2VbIndpemFyZCJdXS5jcmVhdGVXaXphcmQoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjcmVhdGVMYXlvdXQoKTsKICAgICAgICB9OwogICAgfQp9CmZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7CiAgICB2YXIgdmFsdWUgPSAiOyAiICsgZG9jdW1lbnQuY29va2llOwogICAgdmFyIHBhcnRzID0gdmFsdWUuc3BsaXQoIjsgIiArIG5hbWUgKyAiPSIpOwogICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAyKQogICAgICAgIHJldHVybiBwYXJ0cy5wb3AoKS5zcGxpdCgiOyIpLnNoaWZ0KCk7Cn0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmV0d29yay5qcy5tYXA=" + webUI["web/public/js/network.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sTUFBTTtJQUlWLFlBQVksR0FBVztRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFFbEIsa0NBQWtDO1FBQ2xDLFVBQVU7UUFDVixHQUFHO1FBRUgsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRXpCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzVCLCtCQUErQjtZQUMvQixJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBRUQsUUFBUSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDekIsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixFQUFFLENBQUMsTUFBTSxHQUFHO1lBRVYsWUFBWSxHQUFHLElBQUksQ0FBQztZQUVwQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWxDLENBQUMsQ0FBQTtRQUVELEVBQUUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1lBRXRCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEZBQThGLENBQUMsQ0FBQztZQUM1RyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFFMUIsSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyw4RkFBOEYsQ0FBQyxDQUFDO1lBQ3hHLENBQUM7UUFFSCxDQUFDLENBQUE7UUFHRCxFQUFFLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUV4QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDMUIsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU5QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEIsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1lBR0QsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksR0FBRyxHQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFzQixDQUFDO2dCQUN4RSxHQUFHLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1lBRUQsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxXQUFXO29CQUNkLE1BQU0sQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzt3QkFDM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQixDQUFDO29CQUNELE9BQU87Z0JBRVQ7b0JBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQztvQkFDZixNQUFNLEdBQUcsUUFBUSxDQUFDO29CQUNsQixNQUFNO1lBQ1YsQ0FBQztZQUVELElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFFRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFFRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFHRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsWUFBWSxFQUFFLENBQUM7Z0JBQ2YsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZELE9BQU87WUFDVCxDQUFDO1lBRUQsWUFBWSxFQUFFLENBQUM7UUFFakIsQ0FBQyxDQUFBO0lBRUgsQ0FBQztDQUVGO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBSTtJQUNyQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0QsQ0FBQyJ9" + webUI["web/public/login.html"] = "PCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCg0KPGhlYWQ+DQogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+DQogIDx0aXRsZT5UaHJlYWRmaW48L3RpdGxlPg0KICA8bGluaw0KICAgIHJlbD0ic3R5bGVzaGVldCINCiAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNS4xNC4wL2Nzcy9hbGwubWluLmNzcyINCiAgLz4NCiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjAvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgaW50ZWdyaXR5PSJzaGEzODQtZ0gyeUlKcUtkTkhQRXEwbjRNcWEvSEdLSWhTa0lIZUw1QXloa1lWOGk1OVU1QVI2Y3NCdkFwSEhObC92STFCeCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+DQogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3NjcmVlbi5jc3MiIHR5cGU9InRleHQvY3NzIj4NCiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvYmFzZS5jc3MiIHR5cGU9InRleHQvY3NzIj4NCjwvaGVhZD4NCg0KPGJvZHk+DQogIDxuYXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZXhwYW5kLWxnIHN0aWNreS10b3AgbmF2YmFyLWRhcmsgYmctYmxhY2siPg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+DQogICAgICA8YSBjbGFzcz0ibmF2YmFyLWJyYW5kIiBocmVmPSIvd2ViIj4NCiAgICAgICAgPHNwYW4gaWQ9ImxvZ28iPjwvc3Bhbj4NCiAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgPC9uYXY+DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+DQogICAgICAgIDxkaXYgY2xhc3M9InRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlIGNhcmQgdGV4dC1iZy1kYXJrIG1iLTMiPg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj4NCiAgICAgICAgICAgIDxoMz57ey5sb2dpbi5oZWFkbGluZX19PC9oMz4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPg0KICAgICAgICAgICAgPHAgaWQ9ImVyciIgY2xhc3M9ImVycm9yTXNnIGNlbnRlciI+e3suYXV0aGVudGljYXRpb25FcnJ9fTwvcD4NCiAgICAgICAgICAgIDxmb3JtIGlkPSJhdXRoZW50aWNhdGlvbiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgPGg1Pnt7LmxvZ2luLnVzZXJuYW1lLnRpdGxlfX06PC9oNT4NCiAgICAgICAgICAgICAgPGlucHV0IGlkPSJ1c2VybmFtZSIgdHlwZT0idGV4dCIgbmFtZT0idXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSIgdmFsdWU9IiI+DQogICAgICAgICAgICAgIDxoNT57ey5sb2dpbi5wYXNzd29yZC50aXRsZX19OjwvaDU+DQogICAgICAgICAgICAgIDxpbnB1dCBpZD0icGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIiB2YWx1ZT0iIj4NCiAgICAgICAgICAgICAgPGlucHV0IGlkPSJzdWJtaXQiIGNsYXNzPSIiIHR5cGU9InN1Ym1pdCIgb25zdWJtaXQ9ImphdmFzY3JpcHQ6bG9naW4oKTsiIHZhbHVlPSJ7ey5idXR0b24ubG9naW59fSI+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KDQogIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjIuMC9kaXN0L2pzL2Jvb3RzdHJhcC5idW5kbGUubWluLmpzIiBpbnRlZ3JpdHk9InNoYTM4NC1BM3JKRDg1Nktvd1NiN2R3bFpkWUVrTzM5R2FnaTd2SXNGMGpyUkFvUW1ES0t0UUJIVXVMWjlBc1N2NGpENFhhIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4NCiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NsaXBib2FyZC5qcy8yLjAuMTAvY2xpcGJvYXJkLm1pbi5qcyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9uZXR3b3JrX3RzLmpzIj48L3NjcmlwdD4NCiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2F1dGhlbnRpY2F0aW9uX3RzLmpzIj48L3NjcmlwdD4NCjwvYm9keT4NCg0KPC9odG1sPg==" + webUI["web/public/img/logo_b_880x200.png"] = "iVBORw0KGgoAAAANSUhEUgAAAyAAAADICAYAAAAQj4UaAAALTUlEQVR4nO3du45jSRkA4DNoX8ARCRLImxGQeLNNPeGGPUh07n6E7hcAdT9CO+9kHBKOMwKSsURAAlI7IEEk+BEGWapCtaVj+1zq+Pp9UksNY5f/Uz69+v9TtwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuHAffIFAKff39+fcl1+qqppWVbWoqurTGcTD5XutqmpWVdWqqqqPVVVtel7RXVVVk/ATrUP7iwLtH9Xb29slhQsc0Xc6G7gB0/BThSRv+/vSF08P41B8VKFg2P7+0rG57fs/hzZ3mRUqcgBOTgEClBQTsX2J1BDWIflb+zY5klL3+CyMpBwSR0YUzsDFU4AAJR16ijukbXL2g2+TC7L9W3nOwl2Gn3X49zgta6X4AK6FAgQoaXTC3jzlZ0MXj9l9+1QzjevQtK5xGEGZhulZ2zbmvg3gnClAgJI+1iRVTUyT12zC0942Nj3m38Op3CWfu+p4Dz8nfz+jUIxc3IJ14LYoQICSVh13mPqW/B53FIJrNskK9UXHa60r9q0VAc7aL3w9AHB0eeHQdtQvqhvp6NoWwFEoQADgcr0kBce2GHkw/Qo4d6ZgAcDlWtn9Dbg0RkAAAICjUYAAAABHowABAACORgEC8HOTcJbJ9udLOGfhMZzZUOKww1F27kmdeEL2e9iiOP68Z2dHNDULp9T/N2svtvkaXjOkUejHQ3Hsu75xaKPEafujA/3yNTng79zNwjW8t+ibJvfhJNyHX2v651v4++hy7g9w4z7cegcA5dzf33dtKz0HZDnAOSDTkCxFH2vOSZg1TG7nYeehdYc4RiGZGyfnnWyyf4/Fzz5N/9v92DJBjAc6zgvupDRK+rZpHOtwond+NkaaYH/f4ztoG88y9Et6z+T3VN0p5tFzSObzONL/b7Wnzw/tbpX2yzy8dp9D9+E09E/T4iveNz+7/re3t4ZvB26NXbCAWzcJT8GbPjmehaf0TyHZa2OSfM4kOzBuHOLIE9Vck8KgaVu5UUiWZ+FAyb7nSbTt2yjGPw/9vAnJcNrOXYeTw7vGMw0/LyGetu89VFBWDb6r9Z7PHu/4fd9n7boPnxvGm4r3zbhB8QOgAAFu2ixMs8nloyP5k+BR8r62RUid+EQ6PpFfh3YX4fdxMgXs0InZk/BkPn+6v0naW4V/H4fXT7PXj0MbXYqsaBaS0kNxVEksd1kiPgv/u8SIWNN+2RdPHDVpk2R3GaWpM/TZHqOaKXBt+qYK39e6Q2EI3BgFCHCr8uJjmST9deqmaD2H9/VNMtPEuG4qT9Okri7JXifTqnYZhYQyLRhiQrquKcgOmdYUdpsGBc1Lsv4lJsKT0FafQq+uX7rGE9fKHCoEo3UooPJkfZytu5kfuI+GTurT4qPJPfOSfM/538SiYOEFXCEFCHCL4uLaKplffyihjMXJlySZjFNPPvXow8ekvYceifYoTC9Kk+x0CtM+m+T68qfgn8N6i6ZP4GMcqWXooyZtrMNr0wKxy8L7NJ68+Khb99AknudkDUmbhdfLHaNqaQGy6FDolZKu91i0OE19GQ5B/FIzUmQqFrCTXbCAWxSLj3iKdNOn2ZuaxPWux65M4ySWPsVHVTM6M2+RSEabkGyncYx2TFPb5bWmCGqa7KfyxdRdi5B8GlhMmrvEk04F61MUnZtYfMxbFIrRpqbYuKa+AQagAAFuVSwm2k4V2dQsBu6acMUn4PMCU4zShcPLnk+gH7Kn8XcNd0SaZn2x6rBoOzXv+f58lGHdc7Sq7/Wcsz73zKqmaL2E7YuBE1GAALeq7ehAKh8x6ZpsTXYUNG3lZ3iUmP7S5al2vntSk+lfh+Tb37ZR1y+njOec9b1n8j5puwMbcEOsAQGK+dWvf3MpnblqMe2qziYkXLHw6JNsvfRMikctFzM3FXfiim3fHUhSx1khVrfuoauXDkXeKCuaTh3POSuxaDzv2xKHRQJXSgECFPPT7/9wKZ3Zp/iIVkkS2uck6L7b+OYjEyW2BY6WSQESp9XsSuKHjmPVstA7t3jOWd/zXqqaInr88qc/Xkn3AKUpQIBifvzdby+lM4dIuCYd2l0UmBKUJsHrQtcW5W1N9hQgaRybQkVeatEy4c9fe+p4zlnJewbgIAUIUM7m37fcmV1GQUokfnkS3PYU6zb2XWMaxxAJbds203iGWLMhaQfoSAEClPMPOVlLpQuQdFvfIex74p/O+R8i4W/b5tAF0TUuRAc4CgUIUM7f/qIzr9ulnm7dd5obAAUpQIBy/v5XnXlaqwGT7fUVn4EBwBEpQIBy/vVPnXlai7BFLACcLQcRAgAAR6MAAbgepzz8LV0fMsT2tG3bTKeiDRGPg/YAOlKAAFy2dDemU55LcW4FSLrz1RDxXNNJ6ABHpQABuGx5on2qJ/NpITQeIOlv214eT+l+uZZDCAGOTgECcNnyMy7uTnQ1+bkYJePYHoA46xlP2/cfiudU/Qxw8RQgAJdtkU1/eux4KntfqyyOWcE4uhQPQ8dzij4GuAoKEIDLN0+uYJsYvxa8omkoappMYUq3AB6F9/U17tHOucUDcPMqBQjAVZhnT/vvCk052hYfX6qqem5Y1ORxPPaMY1s0fO4x2lA6nqpnPAA3r1KAAFyF7ZazD9mFvPZ8Un8Xku2o6SLuuji6JP1xJCcu9u56wvtQ8awPvB6AHRQgANdhu+j6KbuS51BEtNkBKk5VSp/0b5P/Tw3fv6w5jb1tMTQJIy9xofem5tqaKhHPOMQTC5d1j3gAbp4CBOB6vGTrQaqQxL+HpHvfzk1xbcN7KFyibfL/sWa3rX2eauJ4Dm3vW8A9CXF+zUY+PvYccdgXz771LTGe9yyeTz1GZABu3ne33gEAV+YhFAvPWaI/S57gr2pOCq8rClZJe23FqU/pdKdxSOhfQ0GRFhV1B/ulxU/fg/8eQnvpyMc49NNzw3jWofgoEQ/AzVKAAOdgcwULe89pTcA8TD163ZEoNzlEL44a9HnS/5DEkX+/hw4HXIb3x37N+7dLXE9JcZZ/9qF4FkkRUyqeUtK/n1Peh6sCa3aAG2AKFnAOnkLC0meu/z7L5GC6ec0hdV2k7bw0TPyGiGOXdRg9+KFFIbEJr/0+XFOJJHIR2ntq2EeLEHc+7WqdrOVYhtd1jeeHDvHk0676xrNMpoUte94L8e9nXTPVbNdnD3EfzpM48nU3AP/3QVcApXz76Zf68rxNDky3GrIginbFsA6ff+wn5+cWz9X48Of/3HoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAEVVV9T9F6EFEQy0K6gAAAABJRU5ErkJggg==" + webUI["web/public/img/users.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wOC0zMFQxNzowODozODwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CjU01MMAAANJSURBVGgF1ZnLaxNRFMYz2rpoFbW+SCsihaJQRMT6rPhAXAq6c+HChSguRFd1oRtd+A/oWhQ3oiiWFB91UbqRqlXXgoIIQhFbQTTQao2/GzLDZEjIPefO7SQHPjJz55zzfd/MZCa5N8h5ilKptJvWp8FekAed4Bv4Cj6Dh2A4CIJZPpszMHEV2MQ0SZdB0DROENMHjoEzQBoFCpZnbgYR58E/qfpE/kv2F2dmBvJ94G9ClHb3SiZGUBuASa3qGnVzjG3RmFmkKYrVHGB7e2zfdbOdBhc1TVyNnNSQNqg5wVURf/FdjRxpIEpzuIOio9JCtRHO2hrINkgJLfPFt6vaCII2WYrSpPVJi1RGuBrmTbxeSibIX5j3CUauAfOo9BXzNH4nMJ5TXREI1gHzqPQVRtc2zCyxJdAaGbclcMj7zi/jOdt6rZFhCH7akijznknqVEY4U78heSAhUuTekNSojFQIChIiYe57TtZrSY2LkecQzUjIBLljglz3VJ4qg+AXSDNGabbWXZ2wA6Qjabqg136hhHK6y60V8o2EGyl8/qHHpKZPGkYeQzyvIa9RM86XvFhjvOGQsxGIp2B50ZDJLuG2XZqnLO5rM3viGh9o0OZJon1bRLxxdHLcns1jJiYOAu2U0D2P0uStMXJdcVU+UdMlZ/NYgaA28ERg5ge5/R4l6VsjrANMWJiZJWeXnqm60vnxW90ul6u8ByaS4zX2i+S+qjGuGkrdSEWFzT1vlhlSC19Gui0UtnNriSfi6vX1ZWRjPcLEeGrzYqkb4SyvQGxvQnC93cF6BzIfx8gpYBsfSdycuei4AAR1ggugCCRh1lbugIF4vwXbhtisjfSDc+ARSOOf4lv6mNWv1VIj1ouQNF9K851gDzArtWbV1uYxS5o4zB+sp+AuKPC+cVv5RXwPuATMmUpreY1Wopgh+ybYKj4dFHWB+8DMwTZTjCHmsJUhEgfAF9DMcQtx9V8dHMyDqWZ2ENM2FL8yVV92kkY56GM5Lc6Z1vY0jbp5EJQnuqPLg4kdLWTCnIxVIJoDi4wweNYcbbGIfuLEjRxqMRNGbvTvsmyE22oZg70taKQn1BxekXw40GKfK0O9oZHsJ8ZCRbLPaI3xP7YzeQoHxWckAAAAAElFTkSuQmCC" + webUI["web/public/js/base.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksTUFBYyxDQUFBO0FBQ2xCLElBQUksU0FBUyxHQUFZLEtBQUssQ0FBQTtBQUM5QixJQUFJLGNBQXNCLENBQUE7QUFDMUIsSUFBSSx1QkFBK0IsQ0FBQTtBQUNuQyxJQUFJLGNBQWMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFBO0FBQ2pDLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUE7QUFDdkIsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUE7QUFDN0IsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0FBSXhCLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLENBQUE7QUFDbEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO0FBQzVHLGdDQUFnQztBQUNoQyxJQUFJLFNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3QyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFTLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRXRELENBQUMsQ0FBQyxDQUFDO0FBQ0gsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDO0lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FB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" + webUI["web/public/js/menu.js"] = "dmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7CiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0KICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH0KICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9CiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0KICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7CiAgICB9KTsKfTsKY2xhc3MgTWFpbk1lbnUgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgdGhpcy5Eb2N1bWVudElEID0gIm1haW4tbWVudSI7CiAgICAgICAgdGhpcy5IVE1MVGFnID0gIkxJIjsKICAgICAgICB0aGlzLkltYWdlUGF0aCA9ICJpbWcvIjsKICAgIH0KICAgIGNyZWF0ZUlNRyhzcmMpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklNRyIpOwogICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMiLCB0aGlzLkltYWdlUGF0aCArIHNyYyk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9CiAgICBjcmVhdGVWYWx1ZSh2YWx1ZSkgewogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiUCIpOwogICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9Cn0KY2xhc3MgTWFpbk1lbnVJdGVtIGV4dGVuZHMgTWFpbk1lbnUgewogICAgY29uc3RydWN0b3IobWVudUtleSwgdmFsdWUsIGltYWdlLCBoZWFkbGluZSkgewogICAgICAgIHN1cGVyKCk7CiAgICAgICAgdGhpcy5tZW51S2V5ID0gbWVudUtleTsKICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgICAgdGhpcy5pbWdTcmMgPSBpbWFnZTsKICAgICAgICB0aGlzLmhlYWRsaW5lID0gaGVhZGxpbmU7CiAgICB9CiAgICBjcmVhdGVJdGVtKCkgewogICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiTEkiKTsKICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgib25jbGljayIsICJqYXZhc2NyaXB0OiBvcGVuVGhpc01lbnUodGhpcykiKTsKICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiaWQiLCB0aGlzLmlkKTsKICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAibmF2LWl0ZW0iKTsKICAgICAgICB2YXIgaW1nID0gdGhpcy5jcmVhdGVJTUcodGhpcy5pbWdTcmMpOwogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuY3JlYXRlVmFsdWUodGhpcy52YWx1ZSk7CiAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChpbWcpOwogICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQodmFsdWUpOwogICAgICAgIHZhciBkb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkRvY3VtZW50SUQpOwogICAgICAgIGRvYy5hcHBlbmRDaGlsZChpdGVtKTsKICAgICAgICBzd2l0Y2ggKHRoaXMubWVudUtleSkgewogICAgICAgICAgICBjYXNlICJwbGF5bGlzdCI6CiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlSGVhZGVyID0gWyJ7ey5wbGF5bGlzdC50YWJsZS5wbGF5bGlzdH19IiwgInt7LnBsYXlsaXN0LnRhYmxlLnR1bmVyfX0iLCAie3sucGxheWxpc3QudGFibGUubGFzdFVwZGF0ZX19IiwgInt7LnBsYXlsaXN0LnRhYmxlLmF2YWlsYWJpbGl0eX19ICUiLCAie3sucGxheWxpc3QudGFibGUudHlwZX19IiwgInt7LnBsYXlsaXN0LnRhYmxlLnN0cmVhbXN9fSIsICJ7ey5wbGF5bGlzdC50YWJsZS5ncm91cFRpdGxlfX0gJSIsICJ7ey5wbGF5bGlzdC50YWJsZS50dmdJRH19ICUiLCAie3sucGxheWxpc3QudGFibGUudW5pcXVlSUR9fSAlIl07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAieG1sdHYiOgogICAgICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRlciA9IFsie3sueG1sdHYudGFibGUuZ3VpZGV9fSIsICJ7ey54bWx0di50YWJsZS5sYXN0VXBkYXRlfX0iLCAie3sueG1sdHYudGFibGUuYXZhaWxhYmlsaXR5fX0gJSIsICJ7ey54bWx0di50YWJsZS5jaGFubmVsc319IiwgInt7LnhtbHR2LnRhYmxlLnByb2dyYW1zfX0iXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJmaWx0ZXIiOgogICAgICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRlciA9IFsie3suZmlsdGVyLnRhYmxlLm5hbWV9fSIsICJ7ey5maWx0ZXIudGFibGUudHlwZX19IiwgInt7LmZpbHRlci50YWJsZS5maWx0ZXJ9fSJdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInVzZXJzIjoKICAgICAgICAgICAgICAgIHRoaXMudGFibGVIZWFkZXIgPSBbInt7LnVzZXJzLnRhYmxlLnVzZXJuYW1lfX0iLCAie3sudXNlcnMudGFibGUucGFzc3dvcmR9fSIsICJ7ey51c2Vycy50YWJsZS53ZWJ9fSIsICJ7ey51c2Vycy50YWJsZS5wbXN9fSIsICJ7ey51c2Vycy50YWJsZS5tM3V9fSIsICJ7ey51c2Vycy50YWJsZS54bWx9fSIsICJ7ey51c2Vycy50YWJsZS5hcGl9fSJdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm1hcHBpbmciOgogICAgICAgICAgICAgICAgdGhpcy50YWJsZUhlYWRlciA9IFsiQlVMSyIsICJ7ey5tYXBwaW5nLnRhYmxlLmNoTm99fSIsICJ7ey5tYXBwaW5nLnRhYmxlLmxvZ299fSIsICJ7ey5tYXBwaW5nLnRhYmxlLmNoYW5uZWxOYW1lfX0iLCAie3subWFwcGluZy50YWJsZS5wbGF5bGlzdH19IiwgInt7Lm1hcHBpbmcudGFibGUuZ3JvdXBUaXRsZX19IiwgInt7Lm1hcHBpbmcudGFibGUueG1sdHZGaWxlfX0iLCAie3subWFwcGluZy50YWJsZS54bWx0dklEfX0iXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMubWVudUtleSwgdGhpcy50YWJsZUhlYWRlcik7CiAgICB9Cn0KY2xhc3MgQ29udGVudCB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICB0aGlzLkRvY3VtZW50SUQgPSAiY29udGVudCI7CiAgICAgICAgdGhpcy5IZWFkZXJJRCA9ICJwb3B1cEhlYWRlciI7CiAgICAgICAgdGhpcy5UYWJsZUlEID0gImNvbnRlbnRUYWJsZSI7CiAgICAgICAgdGhpcy5JbmFjdGl2ZVRhYmxlSUQgPSAiaW5hY3RpdmVDb250ZW50VGFibGUiOwogICAgICAgIHRoaXMuaGVhZGVyQ2xhc3MgPSAiY29udGVudFRhYmxlSGVhZGVyIjsKICAgICAgICB0aGlzLmhlYWRlckNsYXNzSW5hY3RpdmUgPSAiaW5hY3RpdmVDb250ZW50VGFibGVIZWFkZXIiOwogICAgICAgIHRoaXMuaW50ZXJhY3Rpb25JRCA9ICJjb250ZW50LWludGVyYWN0aW9uIjsKICAgIH0KICAgIGNyZWF0ZUhlYWRsaW5lKHZhbHVlKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJIMyIpOwogICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9CiAgICBjcmVhdGVIUigpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkhSIik7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9CiAgICBjcmVhdGVCUigpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkJSIik7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9CiAgICBjcmVhdGVJbnRlcmFjdGlvbigpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOwogICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsIHRoaXMuaW50ZXJhY3Rpb25JRCk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9CiAgICBjcmVhdGVESVYoKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKICAgICAgICBlbGVtZW50LmlkID0gdGhpcy5EaXZJRDsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KICAgIGNyZWF0ZVRBQkxFKCkgewogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKTsKICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndGFibGUnKTsKICAgICAgICBlbGVtZW50LmlkID0gdGhpcy5UYWJsZUlEOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgfQogICAgY3JlYXRlVGFibGVSb3coKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOwogICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5oZWFkZXJDbGFzczsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KICAgIGNyZWF0ZUluYWN0aXZlVEFCTEUoKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpOwogICAgICAgIGVsZW1lbnQuaWQgPSB0aGlzLkluYWN0aXZlVGFibGVJRDsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KICAgIGNyZWF0ZUluYWN0aXZlVGFibGVSb3coKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOwogICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5oZWFkZXJDbGFzc0luYWN0aXZlOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgfQogICAgY3JlYXRlVGFibGVDb250ZW50KG1lbnVLZXkpIHsKICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgICAgICB2YXIgcm93cyA9IG5ldyBBcnJheSgpOwogICAgICAgIHN3aXRjaCAobWVudUtleSkgewogICAgICAgICAgICBjYXNlICJwbGF5bGlzdCI6CiAgICAgICAgICAgICAgICB2YXIgZmlsZVR5cGVzID0gbmV3IEFycmF5KCJtM3UiLCAiaGRociIpOwogICAgICAgICAgICAgICAgZmlsZVR5cGVzLmZvckVhY2goZmlsZVR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBTRVJWRVJbInNldHRpbmdzIl1bImZpbGVzIl1bZmlsZVR5cGVdOwogICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhkYXRhKTsKICAgICAgICAgICAgICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIicgKyBmaWxlVHlwZSArICciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsibmFtZSJdOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoU0VSVkVSWyJzZXR0aW5ncyJdWyJidWZmZXIiXSAhPSAiLSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bInR1bmVyIl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gIi0iOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bImxhc3QudXBkYXRlIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bInByb3ZpZGVyLmF2YWlsYWJpbGl0eSJdOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJ0eXBlIl0udG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiY29tcGF0aWJpbGl0eSJdWyJzdHJlYW1zIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bImNvbXBhdGliaWxpdHkiXVsiZ3JvdXAudGl0bGUiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiY29tcGF0aWJpbGl0eSJdWyJ0dmcuaWQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiY29tcGF0aWJpbGl0eSJdWyJzdHJlYW0uaWQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2godHIpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZmlsdGVyIjoKICAgICAgICAgICAgICAgIGRlbGV0ZSBTRVJWRVJbInNldHRpbmdzIl1bImZpbHRlciJdWy0xXTsKICAgICAgICAgICAgICAgIGRhdGEgPSBTRVJWRVJbInNldHRpbmdzIl1bImZpbHRlciJdOwogICAgICAgICAgICAgICAgdmFyIGtleXMgPSBnZXRPYmpLZXlzKGRhdGEpOwogICAgICAgICAgICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsKICAgICAgICAgICAgICAgICAgICB0ci5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICB0ci5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCInICsgZGF0YVtrZXldWyJ0eXBlIl0gKyAnIiwgdGhpcyknKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsibmFtZSJdOwogICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhW2tleV1bInR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjdXN0b20tZmlsdGVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSAie3suZmlsdGVyLmN1c3RvbX19IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJncm91cC10aXRsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gInt7LmZpbHRlci5ncm91cH19IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiZmlsdGVyIl07CiAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaCh0cik7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ4bWx0diI6CiAgICAgICAgICAgICAgICB2YXIgZmlsZVR5cGVzID0gbmV3IEFycmF5KCJ4bWx0diIpOwogICAgICAgICAgICAgICAgZmlsZVR5cGVzLmZvckVhY2goZmlsZVR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBTRVJWRVJbInNldHRpbmdzIl1bImZpbGVzIl1bZmlsZVR5cGVdOwogICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhkYXRhKTsKICAgICAgICAgICAgICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIicgKyBmaWxlVHlwZSArICciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsibmFtZSJdOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJsYXN0LnVwZGF0ZSJdOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJwcm92aWRlci5hdmFpbGFiaWxpdHkiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiY29tcGF0aWJpbGl0eSJdWyJ4bWx0di5jaGFubmVscyJdOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJjb21wYXRpYmlsaXR5Il1bInhtbHR2LnByb2dyYW1zIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHRyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInVzZXJzIjoKICAgICAgICAgICAgICAgIHZhciBmaWxlVHlwZXMgPSBuZXcgQXJyYXkoInVzZXJzIik7CiAgICAgICAgICAgICAgICBmaWxlVHlwZXMuZm9yRWFjaChmaWxlVHlwZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFNFUlZFUltmaWxlVHlwZV07CiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBnZXRPYmpLZXlzKGRhdGEpOwogICAgICAgICAgICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgiJyArIGZpbGVUeXBlICsgJyIsIHRoaXMpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJkYXRhIl1bInVzZXJuYW1lIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSAiKioqKioqIjsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba2V5XVsiZGF0YSJdWyJhdXRoZW50aWNhdGlvbi53ZWIiXSA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gIuKckyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gIi0iOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bImRhdGEiXVsiYXV0aGVudGljYXRpb24ucG1zIl0gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9ICLinJMiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9ICItIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtrZXldWyJkYXRhIl1bImF1dGhlbnRpY2F0aW9uLm0zdSJdID09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSAi4pyTIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSAiLSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba2V5XVsiZGF0YSJdWyJhdXRoZW50aWNhdGlvbi54bWwiXSA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gIuKckyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gIi0iOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bImRhdGEiXVsiYXV0aGVudGljYXRpb24uYXBpIl0gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9ICLinJMiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9ICItIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaCh0cik7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtYXBwaW5nIjoKICAgICAgICAgICAgICAgIEJVTEtfRURJVCA9IGZhbHNlOwogICAgICAgICAgICAgICAgY3JlYXRlU2VhcmNoT2JqKCk7CiAgICAgICAgICAgICAgICBjaGVja1VuZG8oImVwZ01hcHBpbmciKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJNQVBQSU5HIik7CiAgICAgICAgICAgICAgICBkYXRhID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXTsKICAgICAgICAgICAgICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhkYXRhKTsKICAgICAgICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bIngtYWN0aXZlIl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmNsYXNzTmFtZSA9ICJhY3RpdmVFUEciOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBCdWxrCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIkJVTEsiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gS2FuYWxudW1tZXIKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiSU5QVVRDSEFOTkVMIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsieC1jaGFubmVsSUQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgLy90ZC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogY2hhbmdlQ2hhbm5lbE51bWJlcigiJyArIGtleSArICciLCB0aGlzKScpCiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9nbwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJJTUciOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmltYWdlVVJMID0gZGF0YVtrZXldWyJ0dmctbG9nbyJdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGQgPSBjZWxsLmNyZWF0ZUNlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgibWFwcGluZyIsIHRoaXMpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmlkID0ga2V5OwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEthbmFsbmFtZQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYXRzID0gZGF0YVtrZXldWyJ4LWNhdGVnb3J5Il0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJjYXRlZ29yeSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYXRDb2xvclNldHRpbmdzID0gU0VSVkVSWyJzZXR0aW5ncyJdWyJlcGdDYXRlZ29yaWVzQ29sb3JzIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2xvcnNfc3BsaXQgPSBjYXRDb2xvclNldHRpbmdzLnNwbGl0KCJ8Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sb3JzX3NwbGl0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2F0c0NvbG9yX3NwbGl0ID0gY29sb3JzX3NwbGl0W2ldLnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2F0c0NvbG9yX3NwbGl0WzBdID09IGNhdHNbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNsYXNzQ29sb3IgPSBjYXRzQ29sb3Jfc3BsaXRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsieC1uYW1lIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZCA9IGNlbGwuY3JlYXRlQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJtYXBwaW5nIiwgdGhpcyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGxheWxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsiX2ZpbGUubTN1Lm5hbWUiXSAKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGdldFZhbHVlRnJvbVByb3ZpZGVyRmlsZShkYXRhW2tleV1bIl9maWxlLm0zdS5pZCJdLCAibTN1IiwgIm5hbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRkID0gY2VsbC5jcmVhdGVDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIm1hcHBpbmciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBHcnVwcGUgKGdyb3VwLXRpdGxlKQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsieC1ncm91cC10aXRsZSJdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGQgPSBjZWxsLmNyZWF0ZUNlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgibWFwcGluZyIsIHRoaXMpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmlkID0ga2V5OwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhNTFRWIERhdGVpCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtrZXldWyJ4LXhtbHR2LWZpbGUiXSAhPSAiLSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBnZXRWYWx1ZUZyb21Qcm92aWRlckZpbGUoZGF0YVtrZXldWyJ4LXhtbHR2LWZpbGUiXSwgInhtbHR2IiwgIm5hbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bIngteG1sdHYtZmlsZSJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZCA9IGNlbGwuY3JlYXRlQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJtYXBwaW5nIiwgdGhpcyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gWE1MVFYgS2FuYWwKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIHZhbHVlID0gc3RyLnN1YnN0cmluZygxLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YVtrZXldWyJ4LW1hcHBpbmciXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGFba2V5XVsieC1tYXBwaW5nIl0uc3Vic3RyaW5nKDAsIDIwKSArICIuLi4iOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRkID0gY2VsbC5jcmVhdGVDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIm1hcHBpbmciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2godHIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNldHRpbmdzIjoKICAgICAgICAgICAgICAgIGFsZXJ0KCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJUYWJsZSBjb250ZW50IChtZW51S2V5KToiLCBtZW51S2V5KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcm93czsKICAgIH0KICAgIGNyZWF0ZUluYWN0aXZlVGFibGVDb250ZW50KG1lbnVLZXkpIHsKICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgICAgICB2YXIgcm93cyA9IG5ldyBBcnJheSgpOwogICAgICAgIHN3aXRjaCAobWVudUtleSkgewogICAgICAgICAgICBjYXNlICJtYXBwaW5nIjoKICAgICAgICAgICAgICAgIEJVTEtfRURJVCA9IGZhbHNlOwogICAgICAgICAgICAgICAgY3JlYXRlU2VhcmNoT2JqKCk7CiAgICAgICAgICAgICAgICBjaGVja1VuZG8oImVwZ01hcHBpbmciKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJNQVBQSU5HIik7CiAgICAgICAgICAgICAgICBkYXRhID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXTsKICAgICAgICAgICAgICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhkYXRhKTsKICAgICAgICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bIngtYWN0aXZlIl0gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmlkID0ga2V5OwogICAgICAgICAgICAgICAgICAgICAgICB0ci5jbGFzc05hbWUgPSAibm90QWN0aXZlRVBHIjsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVsawogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJCVUxLIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEthbmFsbnVtbWVyCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIklOUFVUQ0hBTk5FTCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bIngtYWN0aXZlIl0gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsieC1jaGFubmVsSUQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBkYXRhW2tleV1bIngtY2hhbm5lbElEIl0gKiAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvL3RkLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBjaGFuZ2VDaGFubmVsTnVtYmVyKCInICsga2V5ICsgJyIsIHRoaXMpJykKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbC5jcmVhdGVDZWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBMb2dvCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIklNRyI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaW1hZ2VVUkwgPSBkYXRhW2tleV1bInR2Zy1sb2dvIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZCA9IGNlbGwuY3JlYXRlQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJtYXBwaW5nIiwgdGhpcyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gS2FuYWxuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhdHMgPSBkYXRhW2tleV1bIngtY2F0ZWdvcnkiXS5zcGxpdCgiOiIpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2xhc3NOYW1lID0gImNhdGVnb3J5IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhdENvbG9yU2V0dGluZ3MgPSBTRVJWRVJbInNldHRpbmdzIl1bImVwZ0NhdGVnb3JpZXNDb2xvcnMiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yc19zcGxpdCA9IGNhdENvbG9yU2V0dGluZ3Muc3BsaXQoInwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xvcnNfc3BsaXQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYXRzQ29sb3Jfc3BsaXQgPSBjb2xvcnNfc3BsaXRbaV0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXRzQ29sb3Jfc3BsaXRbMF0gPT0gY2F0c1swXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2xhc3NDb2xvciA9IGNhdHNDb2xvcl9zcGxpdFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJ4LW5hbWUiXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRkID0gY2VsbC5jcmVhdGVDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIm1hcHBpbmciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF5bGlzdAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgLy9jZWxsLnZhbHVlID0gZGF0YVtrZXldWyJfZmlsZS5tM3UubmFtZSJdIAogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZ2V0VmFsdWVGcm9tUHJvdmlkZXJGaWxlKGRhdGFba2V5XVsiX2ZpbGUubTN1LmlkIl0sICJtM3UiLCAibmFtZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGQgPSBjZWxsLmNyZWF0ZUNlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgibWFwcGluZyIsIHRoaXMpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmlkID0ga2V5OwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdydXBwZSAoZ3JvdXAtdGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsID0gbmV3IENlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZGF0YVtrZXldWyJ4LWdyb3VwLXRpdGxlIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZCA9IGNlbGwuY3JlYXRlQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJtYXBwaW5nIiwgdGhpcyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gWE1MVFYgRGF0ZWkKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwgPSBuZXcgQ2VsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tleV1bIngteG1sdHYtZmlsZSJdICE9ICItIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGdldFZhbHVlRnJvbVByb3ZpZGVyRmlsZShkYXRhW2tleV1bIngteG1sdHYtZmlsZSJdLCAieG1sdHYiLCAibmFtZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGRhdGFba2V5XVsieC14bWx0di1maWxlIl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRkID0gY2VsbC5jcmVhdGVDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIm1hcHBpbmciLCB0aGlzKScpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZC5pZCA9IGtleTsKICAgICAgICAgICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBYTUxUViBLYW5hbAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJQIjsKICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgdmFsdWUgPSBzdHIuc3Vic3RyaW5nKDEsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBkYXRhW2tleV1bIngtbWFwcGluZyJdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGF0YVtrZXldWyJ4LW1hcHBpbmciXS5zdWJzdHJpbmcoMCwgMjApICsgIi4uLiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGQgPSBjZWxsLmNyZWF0ZUNlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgibWFwcGluZyIsIHRoaXMpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmlkID0ga2V5OwogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaCh0cik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAic2V0dGluZ3MiOgogICAgICAgICAgICAgICAgYWxlcnQoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlRhYmxlIGNvbnRlbnQgKG1lbnVLZXkpOiIsIG1lbnVLZXkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiByb3dzOwogICAgfQp9CmNsYXNzIENlbGwgewogICAgY3JlYXRlQ2VsbCgpIHsKICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgIGlmICh0aGlzLmNoaWxkID09IHRydWUpIHsKICAgICAgICAgICAgdmFyIGVsZW1lbnQ7CiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jaGlsZFR5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgIlAiOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY2hpbGRUeXBlKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHRoaXMudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGFzc0NvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYm9yZGVyQ29sb3IgPSB0aGlzLmNsYXNzQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiSU5QVVQiOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY2hpbGRUeXBlKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnR5cGUgPSAidGV4dCI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJJTlBVVENIQU5ORUwiOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZzY3JpcHQ6IGNoYW5nZUNoYW5uZWxOdW1iZXIodGhpcykiKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnR5cGUgPSAidGV4dCI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJCVUxLIjoKICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSB0aGlzLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiYnVsayBoaWRlQnVsayI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJCVUxLX0hFQUQiOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRoaXMudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJidWxrIGhpZGVCdWxrIjsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAiamF2YXNjcmlwdDogc2VsZWN0QWxsQ2hhbm5lbHMoKSIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAiamF2YXNjcmlwdDogc2VsZWN0QWxsQ2hhbm5lbHMoJ2luYWN0aXZlQ29udGVudFRhYmxlJykiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJJTUciOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY2hpbGRUeXBlKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgdGhpcy5pbWFnZVVSTCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VVUkwgIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIm9uZXJyb3IiLCAiamF2YXNjcmlwdDogdGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9JyciKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9vbmVycm9yPSJ0aGlzLm9uZXJyb3I9bnVsbDt0aGlzLnNyYz0nbWlzc2luZy5naWYnOyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSB0aGlzLnZhbHVlOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5vbmNsaWNrID09IHRydWUpIHsKICAgICAgICAgICAgdGQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgdGhpcy5vbmNsaWNrRnVua3Rpb24pOwogICAgICAgICAgICB0ZC5jbGFzc05hbWUgPSAicG9pbnRlciI7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnRkQ2xhc3NOYW1lICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICB0ZC5jbGFzc05hbWUgPSB0aGlzLnRkQ2xhc3NOYW1lOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGQ7CiAgICB9Cn0KY2xhc3MgU2hvd0NvbnRlbnQgZXh0ZW5kcyBDb250ZW50IHsKICAgIGNvbnN0cnVjdG9yKG1lbnVJRCkgewogICAgICAgIHN1cGVyKCk7CiAgICAgICAgdGhpcy5tZW51SUQgPSBtZW51SUQ7CiAgICB9CiAgICBjcmVhdGVJbnB1dCh0eXBlLCBuYW1lLCB2YWx1ZSkgewogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIik7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgdHlwZSk7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJuYW1lIiwgbmFtZSk7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIHZhbHVlKTsKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICB9CiAgICBzaG93KCkgewogICAgICAgIENPTFVNTl9UT19TT1JUID0gLTE7CiAgICAgICAgLy8gQWx0ZW4gSW5oYWx0IGzDtnNjaGVuCiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRG9jdW1lbnRJRCk7CiAgICAgICAgZG9jLmlubmVySFRNTCA9ICIiOwogICAgICAgIHNob3dQcmV2aWV3KGZhbHNlKTsKICAgICAgICAvLyDDnGJlcnNjaHJpZnQKICAgICAgICB2YXIgcG9wdXBIZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkhlYWRlcklEKTsKICAgICAgICB2YXIgaGVhZGxpbmUgPSBtZW51SXRlbXNbdGhpcy5tZW51SURdLmhlYWRsaW5lOwogICAgICAgIHZhciBtZW51S2V5ID0gbWVudUl0ZW1zW3RoaXMubWVudUlEXS5tZW51S2V5OwogICAgICAgIHZhciBoID0gdGhpcy5jcmVhdGVIZWFkbGluZShoZWFkbGluZSk7CiAgICAgICAgdmFyIGV4aXN0aW5nSGVhZGVyID0gcG9wdXBIZWFkZXIucXVlcnlTZWxlY3RvcignaDMnKTsKICAgICAgICBpZiAoZXhpc3RpbmdIZWFkZXIpIHsKICAgICAgICAgICAgcG9wdXBIZWFkZXIucmVwbGFjZUNoaWxkKGgsIGV4aXN0aW5nSGVhZGVyKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHBvcHVwSGVhZGVyLmFwcGVuZENoaWxkKGgpOwogICAgICAgIH0KICAgICAgICB2YXIgaHIgPSB0aGlzLmNyZWF0ZUhSKCk7CiAgICAgICAgZG9jLmFwcGVuZENoaWxkKGhyKTsKICAgICAgICAvLyBJbnRlcmFrdGlvbgogICAgICAgIHZhciBkaXYgPSB0aGlzLmNyZWF0ZUludGVyYWN0aW9uKCk7CiAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgdmFyIGludGVyYWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pbnRlcmFjdGlvbklEKTsKICAgICAgICBzd2l0Y2ggKG1lbnVLZXkpIHsKICAgICAgICAgICAgY2FzZSAicGxheWxpc3QiOgogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gdGhpcy5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgbWVudUtleSwgInt7LmJ1dHRvbi5uZXd9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsICItIik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJwbGF5bGlzdCIpJyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZmlsdGVyIjoKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IHRoaXMuY3JlYXRlSW5wdXQoImJ1dHRvbiIsIG1lbnVLZXksICJ7ey5idXR0b24ubmV3fX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCAtMSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJmaWx0ZXIiLCB0aGlzKScpOwogICAgICAgICAgICAgICAgaW50ZXJhY3Rpb24uYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInhtbHR2IjoKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IHRoaXMuY3JlYXRlSW5wdXQoImJ1dHRvbiIsIG1lbnVLZXksICJ7ey5idXR0b24ubmV3fX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCAieG1sdHYiKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoInhtbHR2IiknKTsKICAgICAgICAgICAgICAgIGludGVyYWN0aW9uLmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ1c2VycyI6CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUlucHV0KCJidXR0b24iLCBtZW51S2V5LCAie3suYnV0dG9uLm5ld319Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImlkIiwgInVzZXJzIik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJ1c2VycyIpJyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAibWFwcGluZyI6CiAgICAgICAgICAgICAgICAvLyBzaG93RWxlbWVudCgibG9hZGluZyIsIHRydWUpCiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUlucHV0KCJidXR0b24iLCBtZW51S2V5LCAie3suYnV0dG9uLnNhdmV9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IHNhdmVQb3B1cERhdGEoIm1hcHBpbmciLCAiIiwgIiIpJyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUlucHV0KCJidXR0b24iLCBtZW51S2V5LCAie3suYnV0dG9uLmJ1bGtFZGl0fX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBidWxrRWRpdCgpJyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUlucHV0KCJzZWFyY2giLCAic2VhcmNoIiwgIiIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsICJzZWFyY2hNYXBwaW5nIik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LmJ1dHRvbi5zZWFyY2h9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuY2xhc3NOYW1lID0gInNlYXJjaCI7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgJ2phdmFzY3JpcHQ6IHNlYXJjaEluTWFwcGluZygpJyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAic2V0dGluZ3MiOgogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gdGhpcy5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgbWVudUtleSwgInt7LmJ1dHRvbi5zYXZlfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBzYXZlU2V0dGluZ3MoKTsnKTsKICAgICAgICAgICAgICAgIGludGVyYWN0aW9uLmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IHRoaXMuY3JlYXRlSW5wdXQoImJ1dHRvbiIsIG1lbnVLZXksICJ7ey5idXR0b24uYmFja3VwfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBiYWNrdXAoKTsnKTsKICAgICAgICAgICAgICAgIGludGVyYWN0aW9uLmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IHRoaXMuY3JlYXRlSW5wdXQoImJ1dHRvbiIsIG1lbnVLZXksICJ7ey5idXR0b24ucmVzdG9yZX19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogcmVzdG9yZSgpOycpOwogICAgICAgICAgICAgICAgaW50ZXJhY3Rpb24uYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKICAgICAgICAgICAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKCJpZCIsICJib3gtd3JhcHBlciIpOwogICAgICAgICAgICAgICAgZG9jLmFwcGVuZENoaWxkKHdyYXBwZXIpOwogICAgICAgICAgICAgICAgdGhpcy5EaXZJRCA9ICJjb250ZW50X3NldHRpbmdzIjsKICAgICAgICAgICAgICAgIHZhciBzZXR0aW5ncyA9IHRoaXMuY3JlYXRlRElWKCk7CiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHNldHRpbmdzKTsKICAgICAgICAgICAgICAgIHNob3dTZXR0aW5ncygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImxvZyI6CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUlucHV0KCJidXR0b24iLCBtZW51S2V5LCAie3suYnV0dG9uLnJlc2V0TG9nc319Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogcmVzZXRMb2dzKCk7Jyk7CiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbi5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOwogICAgICAgICAgICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoImlkIiwgImJveC13cmFwcGVyIik7CiAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQod3JhcHBlcik7CiAgICAgICAgICAgICAgICB0aGlzLkRpdklEID0gImNvbnRlbnRfbG9nIjsKICAgICAgICAgICAgICAgIHZhciBsb2dzID0gdGhpcy5jcmVhdGVESVYoKTsKICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQobG9ncyk7CiAgICAgICAgICAgICAgICBzaG93TG9ncyh0cnVlKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJsb2dvdXQiOgogICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSAiVG9rZW49IDsgZXhwaXJlcyA9IFRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlNob3cgY29udGVudCAobWVudUtleSk6IiwgbWVudUtleSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy8gVGFiZWxsZSBlcnN0ZWxsZW4gKGZhbGxzIGJlbsO2dGlndCkKICAgICAgICB2YXIgdGFibGVIZWFkZXIgPSBtZW51SXRlbXNbdGhpcy5tZW51SURdLnRhYmxlSGVhZGVyOwogICAgICAgIGlmICh0YWJsZUhlYWRlci5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7CiAgICAgICAgICAgIGRvYy5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKICAgICAgICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoImlkIiwgImJveC13cmFwcGVyIik7CiAgICAgICAgICAgIHZhciB0YWJsZSA9IHRoaXMuY3JlYXRlVEFCTEUoKTsKICAgICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZCh0YWJsZSk7CiAgICAgICAgICAgIHZhciBoZWFkZXIgPSB0aGlzLmNyZWF0ZVRhYmxlUm93KCk7CiAgICAgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKGhlYWRlcik7CiAgICAgICAgICAgIC8vIEtvcGZ6ZWlsZSBkZXIgVGFibGxlCiAgICAgICAgICAgIHRhYmxlSGVhZGVyLmZvckVhY2goZWxlbWVudCA9PiB7CiAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICBjZWxsLmNoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIlAiOwogICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAiQlVMSyIpIHsKICAgICAgICAgICAgICAgICAgICBjZWxsLmNoaWxkVHlwZSA9ICJCVUxLX0hFQUQiOwogICAgICAgICAgICAgICAgICAgIGNlbGwuYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobWVudUtleSA9PSAibWFwcGluZyIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAie3subWFwcGluZy50YWJsZS5jaE5vfX0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGlja0Z1bmt0aW9uID0gImphdmFzY3JpcHQ6IHNvcnRUYWJsZSgxKTsiOwogICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnRkQ2xhc3NOYW1lID0gInNvcnRUaGlzIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gInt7Lm1hcHBpbmcudGFibGUuY2hhbm5lbE5hbWV9fSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5vbmNsaWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5vbmNsaWNrRnVua3Rpb24gPSAiamF2YXNjcmlwdDogc29ydFRhYmxlKDMpOyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09ICJ7ey5tYXBwaW5nLnRhYmxlLnBsYXlsaXN0fX0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGlja0Z1bmt0aW9uID0gImphdmFzY3JpcHQ6IHNvcnRUYWJsZSg0KTsiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAie3subWFwcGluZy50YWJsZS5ncm91cFRpdGxlfX0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGlja0Z1bmt0aW9uID0gImphdmFzY3JpcHQ6IHNvcnRUYWJsZSg1KTsiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChjZWxsLmNyZWF0ZUNlbGwoKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZChoZWFkZXIpOwogICAgICAgICAgICAvLyBJbmhhbHQgZGVyIFRhYmVsbGUKICAgICAgICAgICAgdmFyIHJvd3MgPSB0aGlzLmNyZWF0ZVRhYmxlQ29udGVudChtZW51S2V5KTsKICAgICAgICAgICAgcm93cy5mb3JFYWNoKHRyID0+IHsKICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBiciA9IHRoaXMuY3JlYXRlQlIoKTsKICAgICAgICAgICAgZG9jLmFwcGVuZENoaWxkKGJyKTsKICAgICAgICAgICAgLy8gQ3JlYXRlIGluYWN0aXZlIGNoYW5uZWxzIGZvciBtYXBwaW5nCiAgICAgICAgICAgIGlmIChtZW51S2V5ID09ICJtYXBwaW5nIikgewogICAgICAgICAgICAgICAgdmFyIGluYWN0aXZldGFibGUgPSB0aGlzLmNyZWF0ZUluYWN0aXZlVEFCTEUoKTsKICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoaW5hY3RpdmV0YWJsZSk7CiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyID0gdGhpcy5jcmVhdGVJbmFjdGl2ZVRhYmxlUm93KCk7CiAgICAgICAgICAgICAgICBpbmFjdGl2ZXRhYmxlLmFwcGVuZENoaWxkKGhlYWRlcik7CiAgICAgICAgICAgICAgICAvLyBLb3BmemVpbGUgZGVyIFRhYmxsZQogICAgICAgICAgICAgICAgdGFibGVIZWFkZXIuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbCA9IG5ldyBDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgY2VsbC5jaGlsZFR5cGUgPSAiUCI7CiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gIkJVTEsiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY2hpbGRUeXBlID0gIkJVTEtfSEVBRCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnVLZXkgPT0gIm1hcHBpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09ICJ7ey5tYXBwaW5nLnRhYmxlLmNoTm99fSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLm9uY2xpY2tGdW5rdGlvbiA9ICJqYXZhc2NyaXB0OiBzb3J0VGFibGUoMSwgJ2luYWN0aXZlQ29udGVudFRhYmxlJyk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudGRDbGFzc05hbWUgPSAic29ydFRoaXMiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09ICJ7ey5tYXBwaW5nLnRhYmxlLmNoYW5uZWxOYW1lfX0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLm9uY2xpY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5vbmNsaWNrRnVua3Rpb24gPSAiamF2YXNjcmlwdDogc29ydFRhYmxlKDMsICdpbmFjdGl2ZUNvbnRlbnRUYWJsZScpOyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gInt7Lm1hcHBpbmcudGFibGUucGxheWxpc3R9fSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwub25jbGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLm9uY2xpY2tGdW5rdGlvbiA9ICJqYXZhc2NyaXB0OiBzb3J0VGFibGUoNCwgJ2luYWN0aXZlQ29udGVudFRhYmxlJyk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAie3subWFwcGluZy50YWJsZS5ncm91cFRpdGxlfX0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLm9uY2xpY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5vbmNsaWNrRnVua3Rpb24gPSAiamF2YXNjcmlwdDogc29ydFRhYmxlKDUsICdpbmFjdGl2ZUNvbnRlbnRUYWJsZScpOyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKGNlbGwuY3JlYXRlQ2VsbCgpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaW5hY3RpdmV0YWJsZS5hcHBlbmRDaGlsZChoZWFkZXIpOwogICAgICAgICAgICAgICAgLy8gSW5oYWx0IGRlciBUYWJlbGxlCiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHRoaXMuY3JlYXRlSW5hY3RpdmVUYWJsZUNvbnRlbnQobWVudUtleSk7CiAgICAgICAgICAgICAgICByb3dzLmZvckVhY2godHIgPT4gewogICAgICAgICAgICAgICAgICAgIGluYWN0aXZldGFibGUuYXBwZW5kQ2hpbGQodHIpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzYXZlUG9wdXBEYXRhKCJtYXBwaW5nIiwgIiIsIGZhbHNlLCAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKG1lbnVLZXkpIHsKICAgICAgICAgICAgY2FzZSAibWFwcGluZyI6CiAgICAgICAgICAgICAgICBzb3J0VGFibGUoMSk7CiAgICAgICAgICAgICAgICBzb3J0VGFibGUoMSwgImluYWN0aXZlQ29udGVudFRhYmxlIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZmlsdGVyIjoKICAgICAgICAgICAgICAgIHNob3dQcmV2aWV3KHRydWUpOwogICAgICAgICAgICAgICAgc29ydFRhYmxlKDApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBDT0xVTU5fVE9fU09SVCA9IC0xOwogICAgICAgICAgICAgICAgc29ydFRhYmxlKDApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHNob3dFbGVtZW50KCJsb2FkaW5nIiwgZmFsc2UpOwogICAgfQp9CmZ1bmN0aW9uIFBhZ2VSZWFkeSgpIHsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKCJnZXRTZXJ2ZXJDb25maWciKTsKICAgIHNlcnZlci5yZXF1ZXN0KG5ldyBPYmplY3QoKSk7CiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgdXBkYXRlTG9nKCk7CiAgICB9LCAxMDAwMCk7CiAgICBnZXROZXdlc3RSZWxlYXNlRnJvbUdpdGh1YigpOwogICAgLy9jcmVhdGVPcHRpb25EaWFsb2d1ZUNvbnRhaW5lcigpCiAgICByZXR1cm47Cn0KdmFyIGNoZWNrYm94ZXNJbml0aWFsU3RhdGUgPSBbXTsKZnVuY3Rpb24gc2V0Q2hlY2tib3hlcygpIHsKICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7CiAgICAgICAgY29uc3QgY29udGVudCA9IG5ldyBQb3B1cENvbnRlbnQoKTsKICAgICAgICBjb25zdCB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVja2JveFRhYmxlIik7CiAgICAgICAgeWllbGQgbmV3IFByb21pc2UoZiA9PiBzZXRUaW1lb3V0KGYsIDEwMDApKTsKICAgICAgICBpZiAoImNsaWVudEluZm8iIGluIFNFUlZFUikgewogICAgICAgICAgICBjb25zdCBiaW5kaW5nSVBzID0gU0VSVkVSWydzZXR0aW5ncyddWydiaW5kaW5nSVBzJ107CiAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdJUHNwQXJyYXkgPSBiaW5kaW5nSVBzLnNwbGl0KCI7Iik7CiAgICAgICAgICAgIGNvbnN0IHN5c3RlbW5JUHMgPSBTRVJWRVJbImNsaWVudEluZm8iXVsic3lzdGVtSVBzIl07CiAgICAgICAgICAgIHN5c3RlbW5JUHMuZm9yRWFjaCgoaXBBZGRyZXNzLCBpbmRleCkgPT4gewogICAgICAgICAgICAgICAgaWYgKCFpcEFkZHJlc3MuaW5jbHVkZXMoJzE2OS4yNTQnKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94ID0gY29udGVudC5jcmVhdGVDaGVja2JveChpcEFkZHJlc3MsICdpcENoZWNrYm94JyArIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0gYmluZGluZ0lQc3BBcnJheS5pbmNsdWRlcyhpcEFkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKICAgICAgICAgICAgICAgICAgICBsYWJlbC5zZXRBdHRyaWJ1dGUoImZvciIsICJpcENoZWNrYm94IiArIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICBsYWJlbC5pbm5lckhUTUwgPSBpcEFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgdGRMZWZ0LmFwcGVuZENoaWxkKGNoZWNrYm94KTsKICAgICAgICAgICAgICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94X2NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVja2JveF9jb250YWluZXIiKTsKICAgICAgICAgICAgY29uc3Qgc2F2ZUJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbihjb250ZW50LCAiYnV0dG9uVXBkYXRlIiwgInt7LmJ1dHRvbi51cGRhdGV9fSIsICdqYXZzcmNpcHQ6IHVwZGF0ZUJpbmRpbmdJUHMoKScpOwogICAgICAgICAgICBjb25zdCBjYW5jZWxCdXR0b24gPSBjcmVhdGVCdXR0b24oY29udGVudCwgImJ1dHRvbkNhbmNlbCIsICJ7ey5idXR0b24uY2FuY2VsfX0iKTsKICAgICAgICAgICAgY2hlY2tib3hfY29udGFpbmVyLmFwcGVuZENoaWxkKHNhdmVCdXR0b24pOwogICAgICAgICAgICBjaGVja2JveF9jb250YWluZXIuYXBwZW5kQ2hpbGQoY2FuY2VsQnV0dG9uKTsKICAgICAgICAgICAgY29uc3QgY2hlY2tib3hlcyA9IGNoZWNrYm94X2NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyk7CiAgICAgICAgICAgIGNoZWNrYm94ZXNJbml0aWFsU3RhdGUgPSBBcnJheS5mcm9tKGNoZWNrYm94ZXMpLm1hcChjaGVja2JveCA9PiBjaGVja2JveC5jaGVja2VkKTsKICAgICAgICAgICAgY29uc3QgaXBTZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXBfc2VsZWN0aW9uJyk7CiAgICAgICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaXBTZWxlY3Rpb24ucXVlcnlTZWxlY3RvcignYnV0dG9uLmJ0bi1jbG9zZScpOwogICAgICAgICAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHJlc2V0Q2hlY2tib3hlcyhjaGVja2JveGVzLCBjaGVja2JveGVzSW5pdGlhbFN0YXRlKSk7CiAgICAgICAgICAgIGNhbmNlbEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHJlc2V0Q2hlY2tib3hlcyhjaGVja2JveGVzLCBjaGVja2JveGVzSW5pdGlhbFN0YXRlKSk7CiAgICAgICAgfQogICAgfSk7Cn0KZnVuY3Rpb24gcmVzZXRDaGVja2JveGVzKGNoZWNrYm94ZXMsIGluaXRpYWxTdGF0ZXMpIHsKICAgIGNoZWNrYm94ZXMuZm9yRWFjaCgoY2hlY2tib3gsIGluZGV4KSA9PiB7CiAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IGluaXRpYWxTdGF0ZXNbaW5kZXhdOwogICAgfSk7Cn0KZnVuY3Rpb24gY3JlYXRlTGF5b3V0KCkgewogICAgLy8gQ2xpZW50IEluZm8gKFNlcnZlciBJbmZvcm1hdGlvbikKICAgIHZhciBvYmogPSBTRVJWRVJbImNsaWVudEluZm8iXTsKICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhvYmopOwogICAgY29uc3QgY2hhbmdlVmVyc2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGFuZ2VWZXJzaW9uIik7CiAgICBjaGFuZ2VWZXJzaW9uLnZhbHVlID0gIkNoYW5nZSB0byBiZXRhIHZlcnNpb24iOwogICAgY2hhbmdlVmVyc2lvbi5vbmNsaWNrID0gKCkgPT4gewogICAgICAgIGNoYW5nZVZlcnNpb24udmFsdWUgPSAiQ2hhbmdpbmcuLi4iOwogICAgICAgIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoImNoYW5nZVZlcnNpb24iKTsKICAgICAgICBzZXJ2ZXIucmVxdWVzdChuZXcgT2JqZWN0KCkpOwogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICB9LCAyMDAwMCk7CiAgICB9OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGtleXNbaV0pKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGtleXNbaV0pLnZhbHVlID0gb2JqW2tleXNbaV1dOwogICAgICAgICAgICBpZiAoa2V5c1tpXSA9PT0gInZlcnNpb24iKSB7CiAgICAgICAgICAgICAgICBpZiAob2JqWyJiZXRhIl0pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoa2V5c1tpXSk7CiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi52YWx1ZSArPSAiIEJldGEiOwogICAgICAgICAgICAgICAgICAgIGNoYW5nZVZlcnNpb24udmFsdWUgPSAiQ2hhbmdlIHRvIHJlbGVhc2UgdmVyc2lvbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluLW1lbnUiKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIE1lbsO8IGVyc3RlbGxlbgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tbWVudSIpLmlubmVySFRNTCA9ICIiOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBtZW51SXRlbXNbaV0uaWQgPSBpOwogICAgICAgIHN3aXRjaCAobWVudUl0ZW1zW2ldWyJtZW51S2V5Il0pIHsKICAgICAgICAgICAgY2FzZSAidXNlcnMiOgogICAgICAgICAgICBjYXNlICJsb2dvdXQiOgogICAgICAgICAgICAgICAgaWYgKFNFUlZFUlsic2V0dGluZ3MiXVsiYXV0aGVudGljYXRpb24ud2ViIl0gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtc1tpXS5jcmVhdGVJdGVtKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAibWFwcGluZyI6CiAgICAgICAgICAgIGNhc2UgInhtbHR2IjoKICAgICAgICAgICAgICAgIG1lbnVJdGVtc1tpXS5jcmVhdGVJdGVtKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIG1lbnVJdGVtc1tpXS5jcmVhdGVJdGVtKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KZnVuY3Rpb24gb3BlblRoaXNNZW51KGVsZW1lbnQpIHsKICAgIHZhciBpZCA9IGVsZW1lbnQuaWQ7CiAgICB2YXIgY29udGVudCA9IG5ldyBTaG93Q29udGVudChpZCk7CiAgICBjb250ZW50LnNob3coKTsKICAgIGVuYWJsZUdyb3VwU2VsZWN0aW9uKCIuYnVsayIpOwogICAgcmV0dXJuOwp9CmNsYXNzIFBvcHVwV2luZG93IHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgIHRoaXMuRG9jdW1lbnRJRCA9ICJwb3B1cEN1c3RvbSI7CiAgICAgICAgdGhpcy5JbnRlcmFjdGlvbklEID0gImludGVyYWN0aW9uIjsKICAgICAgICB0aGlzLmRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRG9jdW1lbnRJRCk7CiAgICB9CiAgICBjcmVhdGVUaXRsZSh0aXRsZSkgewogICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgdGQuY2xhc3NOYW1lID0gImxlZnQiOwogICAgICAgIHRkLmlubmVySFRNTCA9IHRpdGxlICsgIjoiOwogICAgICAgIHJldHVybiB0ZDsKICAgIH0KICAgIGNyZWF0ZUNvbnRlbnQoZWxlbWVudCkgewogICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgdGQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgcmV0dXJuIHRkOwogICAgfQogICAgY3JlYXRlSW50ZXJhY3Rpb24oKSB7CiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoImlkIiwgInBvcHVwSW50ZXJhY3Rpb24iKTsKICAgICAgICBkaXYuY2xhc3NOYW1lID0gImludGVyYWN0aW9uIjsKICAgICAgICB0aGlzLmRvYy5hcHBlbmRDaGlsZChkaXYpOwogICAgfQp9CmNsYXNzIFBvcHVwQ29udGVudCBleHRlbmRzIFBvcHVwV2luZG93IHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7CiAgICAgICAgdGhpcy50YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRBQkxFIik7CiAgICB9CiAgICBjcmVhdGVIZWFkbGluZShoZWFkbGluZSkgewogICAgICAgIHRoaXMuZG9jLmlubmVySFRNTCA9ICIiOwogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSDMiKTsKICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGhlYWRsaW5lLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgdGhpcy5kb2MuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgLy8gVGFiZWxsZSBlcnN0ZWxsZW4KICAgICAgICB0aGlzLnRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKTsKICAgICAgICB0aGlzLmRvYy5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlKTsKICAgIH0KICAgIGFwcGVuZFJvdyh0aXRsZSwgZWxlbWVudCkgewogICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7CiAgICAgICAgLy8gQmV6ZWljaG51bmcKICAgICAgICBpZiAodGl0bGUubGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVUaXRsZSh0aXRsZSkpOwogICAgICAgIH0KICAgICAgICAvLyBDb250ZW50CiAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb250ZW50KGVsZW1lbnQpKTsKICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZENoaWxkKHRyKTsKICAgIH0KICAgIGNyZWF0ZUlucHV0KHR5cGUsIG5hbWUsIHZhbHVlKSB7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKTsKICAgICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHZhbHVlID0gIiI7CiAgICAgICAgfQogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsIHR5cGUpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsIG5hbWUpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgidmFsdWUiLCB2YWx1ZSk7CiAgICAgICAgcmV0dXJuIGlucHV0OwogICAgfQogICAgY3JlYXRlQ2hlY2tib3gobmFtZSwgaWQgPSAnJykgewogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIik7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImNoZWNrYm94Iik7CiAgICAgICAgaWYgKGlkICE9ICcnKSB7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCBpZCk7CiAgICAgICAgfQogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsIG5hbWUpOwogICAgICAgIHJldHVybiBpbnB1dDsKICAgIH0KICAgIGNyZWF0ZVNlbGVjdCh0ZXh0LCB2YWx1ZXMsIHNldCwgZGJLZXkpIHsKICAgICAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU0VMRUNUIik7CiAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgibmFtZSIsIGRiS2V5KTsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIk9QVElPTiIpOwogICAgICAgICAgICBvcHRpb24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIHZhbHVlc1tpXSk7CiAgICAgICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSB0ZXh0W2ldOwogICAgICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICB9CiAgICAgICAgaWYgKHNldCAhPSAiIikgewogICAgICAgICAgICBzZWxlY3QudmFsdWUgPSBzZXQ7CiAgICAgICAgfQogICAgICAgIGlmIChzZXQgPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHNlbGVjdC52YWx1ZSA9IHZhbHVlc1swXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNlbGVjdDsKICAgIH0KICAgIHNlbGVjdE9wdGlvbihzZWxlY3QsIHZhbHVlKSB7CiAgICAgICAgLy9zZWxlY3Quc2VsZWN0ZWRPcHRpb25zID0gdmFsdWUKICAgICAgICB2YXIgcyA9IHNlbGVjdDsKICAgICAgICBzLm9wdGlvbnNbcy5zZWxlY3RlZEluZGV4XS52YWx1ZSA9IHZhbHVlOwogICAgICAgIHJldHVybiBzZWxlY3Q7CiAgICB9CiAgICBkZXNjcmlwdGlvbih2YWx1ZSkgewogICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7CiAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlBSRSIpOwogICAgICAgIHNwYW4uaW5uZXJIVE1MID0gdmFsdWU7CiAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICAgIHRyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29udGVudChzcGFuKSk7CiAgICAgICAgdGhpcy50YWJsZS5hcHBlbmRDaGlsZCh0cik7CiAgICB9CiAgICAvLyBJbnRlcmFrdGlvbgogICAgYWRkSW50ZXJhY3Rpb24oZWxlbWVudCkgewogICAgICAgIHZhciBpbnRlcmFjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cEludGVyYWN0aW9uIik7CiAgICAgICAgaW50ZXJhY3Rpb24uYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICB9Cn0KZnVuY3Rpb24gb3BlblBvcFVwKGRhdGFUeXBlLCBlbGVtZW50KSB7CiAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgIHZhciBpZDsKICAgIHN3aXRjaCAoZWxlbWVudCkgewogICAgICAgIGNhc2UgdW5kZWZpbmVkOgogICAgICAgICAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJncm91cC10aXRsZSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKGlkID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZCA9IC0xOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxEYXRhKCJmaWx0ZXIiLCBpZCk7CiAgICAgICAgICAgICAgICAgICAgZGF0YVsidHlwZSJdID0gImdyb3VwLXRpdGxlIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImN1c3RvbS1maWx0ZXIiOgogICAgICAgICAgICAgICAgICAgIGlmIChpZCA9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSAtMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGdldExvY2FsRGF0YSgiZmlsdGVyIiwgaWQpOwogICAgICAgICAgICAgICAgICAgIGRhdGFbInR5cGUiXSA9ICJjdXN0b20tZmlsdGVyIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgZGF0YVsiaWQucHJvdmlkZXIiXSA9ICItIjsKICAgICAgICAgICAgICAgICAgICBkYXRhWyJ0eXBlIl0gPSBkYXRhVHlwZTsKICAgICAgICAgICAgICAgICAgICBpZCA9ICItIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBpZCA9IGVsZW1lbnQuaWQ7CiAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbERhdGEoZGF0YVR5cGUsIGlkKTsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICB2YXIgY29udGVudCA9IG5ldyBQb3B1cENvbnRlbnQoKTsKICAgIHN3aXRjaCAoZGF0YVR5cGUpIHsKICAgICAgICBjYXNlICJwbGF5bGlzdCI6CiAgICAgICAgICAgIGNvbnRlbnQuY3JlYXRlSGVhZGxpbmUoInt7LnBsYXlsaXN0LnBsYXlsaXN0VHlwZS50aXRsZX19Iik7CiAgICAgICAgICAgIC8vIFR5cGUKICAgICAgICAgICAgdmFyIHRleHQgPSBbIk0zVSIsICJIREhvbWVSdW4iXTsKICAgICAgICAgICAgdmFyIHZhbHVlcyA9IFsiamF2YXNjcmlwdDogb3BlblBvcFVwKCdtM3UnKSIsICJqYXZhc2NyaXB0OiBvcGVuUG9wVXAoJ2hkaHInKSJdOwogICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCAiIiwgInR5cGUiKTsKICAgICAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAidHlwZSIpOwogICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICdqYXZhc2NyaXB0OiBjaGFuZ2VCdXR0b25BY3Rpb24odGhpcywgIm5leHQiLCAib25jbGljayIpJyk7IC8vIGNoYW5nZUJ1dHRvbkFjdGlvbgogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sucGxheWxpc3QudHlwZS50aXRsZX19Iiwgc2VsZWN0KTsKICAgICAgICAgICAgLy8gSW50ZXJha3Rpb24KICAgICAgICAgICAgY29udGVudC5jcmVhdGVJbnRlcmFjdGlvbigpOwogICAgICAgICAgICAvLyBBYmJyZWNoZW4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImNhbmNlbCIsICJ7ey5idXR0b24uY2FuY2VsfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IHNob3dFbGVtZW50KCJwb3B1cCIsIGZhbHNlKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIC8vIFdlaXRlcgogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAibmV4dCIsICJ7ey5idXR0b24ubmV4dH19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoIm0zdSIpJyk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCAnbmV4dCcpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibTN1IjoKICAgICAgICAgICAgY29udGVudC5jcmVhdGVIZWFkbGluZShkYXRhVHlwZSk7CiAgICAgICAgICAgIC8vIE5hbWUKICAgICAgICAgICAgdmFyIGRiS2V5ID0gIm5hbWUiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5wbGF5bGlzdC5uYW1lLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnBsYXlsaXN0Lm5hbWUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gQmVzY2hyZWlidW5nCiAgICAgICAgICAgIHZhciBkYktleSA9ICJkZXNjcmlwdGlvbiI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnBsYXlsaXN0LmRlc2NyaXB0aW9uLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnBsYXlsaXN0LmRlc2NyaXB0aW9uLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIFVSTAogICAgICAgICAgICB2YXIgZGJLZXkgPSAiZmlsZS5zb3VyY2UiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5wbGF5bGlzdC5maWxlTTNVLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnBsYXlsaXN0LmZpbGVNM1UudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gVHVuZXIKICAgICAgICAgICAgaWYgKFNFUlZFUlsic2V0dGluZ3MiXVsiYnVmZmVyIl0gIT0gIi0iKSB7CiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMTAwOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB0ZXh0LnB1c2goaS50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gInR1bmVyIjsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3QgPSBjb250ZW50LmNyZWF0ZVNlbGVjdCh0ZXh0LCB2YWx1ZXMsIGRhdGFbZGJLZXldLCBkYktleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmZvY3VzIiwgImphdmFzY3JpcHQ6IHJldHVybjsiKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC50dW5lci50aXRsZX19Iiwgc2VsZWN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBkYktleSA9ICJ0dW5lciI7CiAgICAgICAgICAgICAgICBpZiAoZGF0YVtkYktleV0gPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YVtkYktleV0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgInRydWUiKTsKICAgICAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJub3RBdmFpbGFibGUiOwogICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnBsYXlsaXN0LnR1bmVyLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3sucGxheWxpc3QudHVuZXIuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICB2YXIgZGJLZXkgPSAiaHR0cF9wcm94eS5pcCI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnBsYXlsaXN0Lmh0dHBfcHJveHlfaXAucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sucGxheWxpc3QuaHR0cF9wcm94eV9pcC50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKCJ7ey5wbGF5bGlzdC5odHRwX3Byb3h5X2lwLmRlc2NyaXB0aW9ufX0iKTsKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImh0dHBfcHJveHkucG9ydCI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnBsYXlsaXN0Lmh0dHBfcHJveHlfcG9ydC5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC5odHRwX3Byb3h5X3BvcnQudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3sucGxheWxpc3QuaHR0cF9wcm94eV9wb3J0LmRlc2NyaXB0aW9ufX0iKTsKICAgICAgICAgICAgLy8gSW50ZXJha3Rpb24KICAgICAgICAgICAgY29udGVudC5jcmVhdGVJbnRlcmFjdGlvbigpOwogICAgICAgICAgICAvLyBMw7ZzY2hlbgogICAgICAgICAgICBpZiAoZGF0YVsiaWQucHJvdmlkZXIiXSAhPSAiLSIpIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJkZWxldGUiLCAie3suYnV0dG9uLmRlbGV0ZX19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5jbGFzc05hbWUgPSAiZGVsZXRlIjsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCJtM3UiLCAiJyArIGlkICsgJyIsIHRydWUsIDApJyk7CiAgICAgICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJiYWNrIiwgInt7LmJ1dHRvbi5iYWNrfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBvcGVuUG9wVXAoInBsYXlsaXN0IiknKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQuYWRkSW50ZXJhY3Rpb24oaW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEFiYnJlY2hlbgogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAiY2FuY2VsIiwgInt7LmJ1dHRvbi5jYW5jZWx9fSIpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogc2hvd0VsZW1lbnQoInBvcHVwIiwgZmFsc2UpOycpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgLy8gQWt0dWFsaXNpZXJlbgogICAgICAgICAgICBpZiAoZGF0YVsiaWQucHJvdmlkZXIiXSAhPSAiLSIpIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJ1cGRhdGUiLCAie3suYnV0dG9uLnVwZGF0ZX19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogc2F2ZVBvcHVwRGF0YSgibTN1IiwgIicgKyBpZCArICciLCBmYWxzZSwgMSknKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQuYWRkSW50ZXJhY3Rpb24oaW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFNwZWljaGVybgogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAic2F2ZSIsICJ7ey5idXR0b24uc2F2ZX19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCJtM3UiLCAiJyArIGlkICsgJyIsIGZhbHNlLCAwKScpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiaGRociI6CiAgICAgICAgICAgIGNvbnRlbnQuY3JlYXRlSGVhZGxpbmUoZGF0YVR5cGUpOwogICAgICAgICAgICAvLyBOYW1lCiAgICAgICAgICAgIHZhciBkYktleSA9ICJuYW1lIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sucGxheWxpc3QubmFtZS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC5uYW1lLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEJlc2NocmVpYnVuZwogICAgICAgICAgICB2YXIgZGJLZXkgPSAiZGVzY3JpcHRpb24iOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5wbGF5bGlzdC5kZXNjcmlwdGlvbi5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC5kZXNjcmlwdGlvbi5wbGFjZWhvbGRlcn19IiwgaW5wdXQpOwogICAgICAgICAgICAvLyBVUkwKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImZpbGUuc291cmNlIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sucGxheWxpc3QuZmlsZUhESFIucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sucGxheWxpc3QuZmlsZUhESFIudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gVHVuZXIKICAgICAgICAgICAgaWYgKFNFUlZFUlsic2V0dGluZ3MiXVsiYnVmZmVyIl0gIT0gIi0iKSB7CiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMTAwOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB0ZXh0LnB1c2goaS50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gInR1bmVyIjsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3QgPSBjb250ZW50LmNyZWF0ZVNlbGVjdCh0ZXh0LCB2YWx1ZXMsIGRhdGFbZGJLZXldLCBkYktleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmZvY3VzIiwgImphdmFzY3JpcHQ6IHJldHVybjsiKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC50dW5lci50aXRsZX19Iiwgc2VsZWN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBkYktleSA9ICJ0dW5lciI7CiAgICAgICAgICAgICAgICBpZiAoZGF0YVtkYktleV0gPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YVtkYktleV0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgInRydWUiKTsKICAgICAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJub3RBdmFpbGFibGUiOwogICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnBsYXlsaXN0LnR1bmVyLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3sucGxheWxpc3QudHVuZXIuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICB2YXIgZGJLZXkgPSAiaHR0cF9wcm94eS5pcCI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnBsYXlsaXN0Lmh0dHBfcHJveHlfaXAucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sucGxheWxpc3QuaHR0cF9wcm94eV9pcC50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKCJ7ey5wbGF5bGlzdC5odHRwX3Byb3h5X2lwLmRlc2NyaXB0aW9ufX0iKTsKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImh0dHBfcHJveHkucG9ydCI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnBsYXlsaXN0Lmh0dHBfcHJveHlfcG9ydC5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5wbGF5bGlzdC5odHRwX3Byb3h5X3BvcnQudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3sucGxheWxpc3QuaHR0cF9wcm94eV9wb3J0LmRlc2NyaXB0aW9ufX0iKTsKICAgICAgICAgICAgLy8gSW50ZXJha3Rpb24KICAgICAgICAgICAgY29udGVudC5jcmVhdGVJbnRlcmFjdGlvbigpOwogICAgICAgICAgICAvLyBMw7ZzY2hlbgogICAgICAgICAgICBpZiAoZGF0YVsiaWQucHJvdmlkZXIiXSAhPSAiLSIpIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJkZWxldGUiLCAie3suYnV0dG9uLmRlbGV0ZX19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogc2F2ZVBvcHVwRGF0YSgiaGRociIsICInICsgaWQgKyAnIiwgdHJ1ZSwgMCknKTsKICAgICAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJkZWxldGUiOwogICAgICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAiYmFjayIsICJ7ey5idXR0b24uYmFja319Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogb3BlblBvcFVwKCJwbGF5bGlzdCIpJyk7CiAgICAgICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBBYmJyZWNoZW4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImNhbmNlbCIsICJ7ey5idXR0b24uY2FuY2VsfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IHNob3dFbGVtZW50KCJwb3B1cCIsIGZhbHNlKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIC8vIEFrdHVhbGlzaWVyZW4KICAgICAgICAgICAgaWYgKGRhdGFbImlkLnByb3ZpZGVyIl0gIT0gIi0iKSB7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAidXBkYXRlIiwgInt7LmJ1dHRvbi51cGRhdGV9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IHNhdmVQb3B1cERhdGEoImhkaHIiLCAiJyArIGlkICsgJyIsIGZhbHNlLCAxKScpOwogICAgICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gU3BlaWNoZXJuCiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJzYXZlIiwgInt7LmJ1dHRvbi5zYXZlfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IHNhdmVQb3B1cERhdGEoImhkaHIiLCAiJyArIGlkICsgJyIsIGZhbHNlLCAwKScpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiZmlsdGVyIjoKICAgICAgICAgICAgY29udGVudC5jcmVhdGVIZWFkbGluZShkYXRhVHlwZSk7CiAgICAgICAgICAgIC8vIFR5cGUKICAgICAgICAgICAgdmFyIGRiS2V5ID0gInR5cGUiOwogICAgICAgICAgICB2YXIgdGV4dCA9IFsiTTNVOiAiICsgInt7LmZpbHRlci50eXBlLmdyb3VwVGl0bGV9fSIsICJUaHJlYWRmaW46ICIgKyAie3suZmlsdGVyLnR5cGUuY3VzdG9tRmlsdGVyfX0iXTsKICAgICAgICAgICAgdmFyIHZhbHVlcyA9IFsiamF2YXNjcmlwdDogb3BlblBvcFVwKCdncm91cC10aXRsZScpIiwgImphdmFzY3JpcHQ6IG9wZW5Qb3BVcCgnY3VzdG9tLWZpbHRlcicpIl07CiAgICAgICAgICAgIHZhciBzZWxlY3QgPSBjb250ZW50LmNyZWF0ZVNlbGVjdCh0ZXh0LCB2YWx1ZXMsICJqYXZhc2NyaXB0OiBvcGVuUG9wVXAoJ2dyb3VwLXRpdGxlJykiLCBkYktleSk7CiAgICAgICAgICAgIHNlbGVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgaWQpOwogICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICdqYXZhc2NyaXB0OiBjaGFuZ2VCdXR0b25BY3Rpb24odGhpcywgIm5leHQiLCAib25jbGljayIpOycpOyAvLyBjaGFuZ2VCdXR0b25BY3Rpb24KICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LmZpbHRlci50eXBlLnRpdGxlfX0iLCBzZWxlY3QpOwogICAgICAgICAgICAvLyBJbnRlcmFrdGlvbgogICAgICAgICAgICBjb250ZW50LmNyZWF0ZUludGVyYWN0aW9uKCk7CiAgICAgICAgICAgIC8vIEFiYnJlY2hlbgogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAiY2FuY2VsIiwgInt7LmJ1dHRvbi5jYW5jZWx9fSIpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAnamF2YXNjcmlwdDogc2hvd0VsZW1lbnQoInBvcHVwIiwgZmFsc2UpOycpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgLy8gV2VpdGVyCiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJuZXh0IiwgInt7LmJ1dHRvbi5uZXh0fX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IG9wZW5Qb3BVcCgiZ3JvdXAtdGl0bGUiKScpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImlkIiwgJ25leHQnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgImN1c3RvbS1maWx0ZXIiOgogICAgICAgIGNhc2UgImdyb3VwLXRpdGxlIjoKICAgICAgICAgICAgc3dpdGNoIChkYXRhVHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAiY3VzdG9tLWZpbHRlciI6CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5jcmVhdGVIZWFkbGluZSgie3suZmlsdGVyLmN1c3RvbX19Iik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJncm91cC10aXRsZSI6CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5jcmVhdGVIZWFkbGluZSgie3suZmlsdGVyLmdyb3VwfX0iKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBOYW1lICAgICAgCiAgICAgICAgICAgIHZhciBkYktleSA9ICJuYW1lIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suZmlsdGVyLm5hbWUucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3suZmlsdGVyLm5hbWUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gQmVzY2hyZWlidW5nCiAgICAgICAgICAgIHZhciBkYktleSA9ICJkZXNjcmlwdGlvbiI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LmZpbHRlci5kZXNjcmlwdGlvbi5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5maWx0ZXIuZGVzY3JpcHRpb24udGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gVHlwCiAgICAgICAgICAgIHZhciBkYktleSA9ICJ0eXBlIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiaGlkZGVuIiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coIiIsIGlucHV0KTsKICAgICAgICAgICAgdmFyIGZpbHRlclR5cGUgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJjdXN0b20tZmlsdGVyIjoKICAgICAgICAgICAgICAgICAgICAvLyBHcm/Dny0gS2xlaW5zY2hyZWlidW5nIGJlYWNodGVuCiAgICAgICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gImNhc2VTZW5zaXRpdmUiOwogICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goZGJLZXkpOwogICAgICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3suZmlsdGVyLmNhc2VTZW5zaXRpdmUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgICAgICAgICAvLyBGaWx0ZXJyZWdlbCAoQmVudXR6ZXJkZWZpbmllcnQpCiAgICAgICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gImZpbHRlciI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5maWx0ZXIuZmlsdGVyUnVsZS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LmZpbHRlci5maWx0ZXJSdWxlLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJncm91cC10aXRsZSI6CiAgICAgICAgICAgICAgICAgICAgLy9hbGVydChkYktleSArICIgIiArIGZpbHRlclR5cGUpCiAgICAgICAgICAgICAgICAgICAgLy8gRmlsdGVyIGJhc2llcmVuZCBhdWYgZGVuIEdydXBwZW4gaW4gZGVyIE0zVQogICAgICAgICAgICAgICAgICAgIHZhciBkYktleSA9ICJmaWx0ZXIiOwogICAgICAgICAgICAgICAgICAgIHZhciBncm91cHNNM1UgPSBnZXRMb2NhbERhdGEoIm0zdUdyb3VwcyIsICIiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGdyb3Vwc00zVVsidGV4dCJdOwogICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBncm91cHNNM1VbInZhbHVlIl07CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdCA9IGNvbnRlbnQuY3JlYXRlU2VsZWN0KHRleHQsIHZhbHVlcywgZGF0YVtkYktleV0sIGRiS2V5KTsKICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5maWx0ZXIuZmlsdGVyR3JvdXAudGl0bGV9fSIsIHNlbGVjdCk7CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3suZmlsdGVyLmZpbHRlckdyb3VwLmRlc2NyaXB0aW9ufX0iKTsKICAgICAgICAgICAgICAgICAgICAvLyBHcm/Dny0gS2xlaW5zY2hyZWlidW5nIGJlYWNodGVuCiAgICAgICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gImNhc2VTZW5zaXRpdmUiOwogICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goZGJLZXkpOwogICAgICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3suZmlsdGVyLmNhc2VTZW5zaXRpdmUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgZGJLZXkgPSAiaW5jbHVkZSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5maWx0ZXIuaW5jbHVkZS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LmZpbHRlci5pbmNsdWRlLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgICAgICAgICAgY29udGVudC5kZXNjcmlwdGlvbigie3suZmlsdGVyLmluY2x1ZGUuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICAgICAgICAgIHZhciBkYktleSA9ICJleGNsdWRlIjsKICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LmZpbHRlci5leGNsdWRlLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3suZmlsdGVyLmV4Y2x1ZGUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKCJ7ey5maWx0ZXIuZXhjbHVkZS5kZXNjcmlwdGlvbn19Iik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIE5hbWUgICAgICAKICAgICAgICAgICAgdmFyIGRiS2V5ID0gInN0YXJ0aW5nTnVtYmVyIjsKICAgICAgICAgICAgaWYgKGRhdGFbZGJLZXldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCAiMTAwMCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suZmlsdGVyLnN0YXJ0aW5nbnVtYmVyLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LmZpbHRlci5zdGFydGluZ251bWJlci50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKCJ7ey5maWx0ZXIuc3RhcnRpbmdudW1iZXIuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1jYXRlZ29yeSI7CiAgICAgICAgICAgIHZhciB0ZXh0ID0gWyItIl07CiAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbIiJdOwogICAgICAgICAgICB2YXIgZXBnQ2F0ZWdvcmllcyA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZXBnQ2F0ZWdvcmllcyJdOwogICAgICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IGVwZ0NhdGVnb3JpZXMuc3BsaXQoInwiKTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgY2F0ID0gY2F0ZWdvcmllc1tpXTsKICAgICAgICAgICAgICAgIGlmIChjYXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY2F0X3NwbGl0ID0gY2F0LnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICAgICAgdGV4dC5wdXNoKGNhdF9zcGxpdFswXSk7CiAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goY2F0X3NwbGl0WzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhW2RiS2V5XSwgZGJLZXkpOwogICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3suZmlsdGVyLmNhdGVnb3J5LnRpdGxlfX0iLCBzZWxlY3QpOwogICAgICAgICAgICAvLyBJbnRlcmFrdGlvbgogICAgICAgICAgICBjb250ZW50LmNyZWF0ZUludGVyYWN0aW9uKCk7CiAgICAgICAgICAgIC8vIEzDtnNjaGVuCiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJkZWxldGUiLCAie3suYnV0dG9uLmRlbGV0ZX19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCJmaWx0ZXIiLCAiJyArIGlkICsgJyIsIHRydWUsIDApJyk7CiAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJkZWxldGUiOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgLy8gQWJicmVjaGVuCiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJjYW5jZWwiLCAie3suYnV0dG9uLmNhbmNlbH19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBzaG93RWxlbWVudCgicG9wdXAiLCBmYWxzZSk7Jyk7CiAgICAgICAgICAgIGNvbnRlbnQuYWRkSW50ZXJhY3Rpb24oaW5wdXQpOwogICAgICAgICAgICAvLyBTcGVpY2hlcm4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgInNhdmUiLCAie3suYnV0dG9uLnNhdmV9fSIpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogc2F2ZVBvcHVwRGF0YSgiZmlsdGVyIiwgIicgKyBpZCArICciLCBmYWxzZSwgMCknKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInhtbHR2IjoKICAgICAgICAgICAgY29udGVudC5jcmVhdGVIZWFkbGluZShkYXRhVHlwZSk7CiAgICAgICAgICAgIC8vIE5hbWUKICAgICAgICAgICAgdmFyIGRiS2V5ID0gIm5hbWUiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey54bWx0di5uYW1lLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnhtbHR2Lm5hbWUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gQmVzY2hyZWlidW5nCiAgICAgICAgICAgIHZhciBkYktleSA9ICJkZXNjcmlwdGlvbiI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnhtbHR2LmRlc2NyaXB0aW9uLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnhtbHR2LmRlc2NyaXB0aW9uLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIFVSTAogICAgICAgICAgICB2YXIgZGJLZXkgPSAiZmlsZS5zb3VyY2UiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey54bWx0di5maWxlWE1MVFYucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sueG1sdHYuZmlsZVhNTFRWLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIHZhciBkYktleSA9ICJodHRwX3Byb3h5LmlwIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sueG1sdHYuaHR0cF9wcm94eV9pcC5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey54bWx0di5odHRwX3Byb3h5X2lwLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIGNvbnRlbnQuZGVzY3JpcHRpb24oInt7LnhtbHR2Lmh0dHBfcHJveHlfaXAuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICB2YXIgZGJLZXkgPSAiaHR0cF9wcm94eS5wb3J0IjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sueG1sdHYuaHR0cF9wcm94eV9wb3J0LnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnhtbHR2Lmh0dHBfcHJveHlfcG9ydC50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKCJ7ey54bWx0di5odHRwX3Byb3h5X3BvcnQuZGVzY3JpcHRpb259fSIpOwogICAgICAgICAgICAvLyBJbnRlcmFrdGlvbgogICAgICAgICAgICBjb250ZW50LmNyZWF0ZUludGVyYWN0aW9uKCk7CiAgICAgICAgICAgIC8vIEzDtnNjaGVuCiAgICAgICAgICAgIGlmIChkYXRhWyJpZC5wcm92aWRlciJdICE9ICItIikgewogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImRlbGV0ZSIsICJ7ey5idXR0b24uZGVsZXRlfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCJ4bWx0diIsICInICsgaWQgKyAnIiwgdHJ1ZSwgMCknKTsKICAgICAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJkZWxldGUiOwogICAgICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gQWJicmVjaGVuCiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJjYW5jZWwiLCAie3suYnV0dG9uLmNhbmNlbH19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBzaG93RWxlbWVudCgicG9wdXAiLCBmYWxzZSk7Jyk7CiAgICAgICAgICAgIGNvbnRlbnQuYWRkSW50ZXJhY3Rpb24oaW5wdXQpOwogICAgICAgICAgICAvLyBBa3R1YWxpc2llcmVuCiAgICAgICAgICAgIGlmIChkYXRhWyJpZC5wcm92aWRlciJdICE9ICItIikgewogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgInVwZGF0ZSIsICJ7ey5idXR0b24udXBkYXRlfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCJ4bWx0diIsICInICsgaWQgKyAnIiwgZmFsc2UsIDEpJyk7CiAgICAgICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBTcGVpY2hlcm4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgInNhdmUiLCAie3suYnV0dG9uLnNhdmV9fSIpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogc2F2ZVBvcHVwRGF0YSgieG1sdHYiLCAiJyArIGlkICsgJyIsIGZhbHNlLCAwKScpOwogICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAidXNlcnMiOgogICAgICAgICAgICBjb250ZW50LmNyZWF0ZUhlYWRsaW5lKCJ7ey5tYWluTWVudS5pdGVtLnVzZXJzfX0iKTsKICAgICAgICAgICAgLy8gQmVudXR6ZXJuYW1lIAogICAgICAgICAgICB2YXIgZGJLZXkgPSAidXNlcm5hbWUiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgZGJLZXksIGRhdGFbZGJLZXldKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey51c2Vycy51c2VybmFtZS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey51c2Vycy51c2VybmFtZS50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICAvLyBOZXVlcyBQYXNzd29ydCAKICAgICAgICAgICAgdmFyIGRiS2V5ID0gInBhc3N3b3JkIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgicGFzc3dvcmQiLCBkYktleSwgIiIpOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnVzZXJzLnBhc3N3b3JkLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnVzZXJzLnBhc3N3b3JkLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEJlc3TDpHRpZ3VuZyAKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImNvbmZpcm0iOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJwYXNzd29yZCIsIGRiS2V5LCAiIik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sudXNlcnMuY29uZmlybS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey51c2Vycy5jb25maXJtLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEJlcmVjaHRpZ3VuZyBXRUIKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImF1dGhlbnRpY2F0aW9uLndlYiI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goZGJLZXkpOwogICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZGF0YVtkYktleV07CiAgICAgICAgICAgIGlmIChkYXRhWyJkZWZhdWx0VXNlciJdID09IHRydWUpIHsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICJqYXZhc2NyaXB0OiByZXR1cm4gZmFsc2UiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sudXNlcnMud2ViLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEJlcmVjaHRpZ3VuZyBQTVMKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImF1dGhlbnRpY2F0aW9uLnBtcyI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goZGJLZXkpOwogICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZGF0YVtkYktleV07CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey51c2Vycy5wbXMudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gQmVyZWNodGlndW5nIE0zVQogICAgICAgICAgICB2YXIgZGJLZXkgPSAiYXV0aGVudGljYXRpb24ubTN1IjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVDaGVja2JveChkYktleSk7CiAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7LnVzZXJzLm0zdS50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICAvLyBCZXJlY2h0aWd1bmcgWE1MCiAgICAgICAgICAgIHZhciBkYktleSA9ICJhdXRoZW50aWNhdGlvbi54bWwiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUNoZWNrYm94KGRiS2V5KTsKICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGRhdGFbZGJLZXldOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3sudXNlcnMueG1sLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEJlcmVjaHRpZ3VuZyBBUEkKICAgICAgICAgICAgdmFyIGRiS2V5ID0gImF1dGhlbnRpY2F0aW9uLmFwaSI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goZGJLZXkpOwogICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZGF0YVtkYktleV07CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey51c2Vycy5hcGkudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gSW50ZXJha3Rpb24KICAgICAgICAgICAgY29udGVudC5jcmVhdGVJbnRlcmFjdGlvbigpOwogICAgICAgICAgICAvLyBMw7ZzY2hlbgogICAgICAgICAgICBpZiAoZGF0YVsiZGVmYXVsdFVzZXIiXSAhPSB0cnVlICYmIGlkICE9ICItIikgewogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImRlbGV0ZSIsICJ7ey5idXR0b24uZGVsZXRlfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LmNsYXNzTmFtZSA9ICJkZWxldGUiOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ2phdmFzY3JpcHQ6IHNhdmVQb3B1cERhdGEoIicgKyBkYXRhVHlwZSArICciLCAiJyArIGlkICsgJyIsIHRydWUsIDApJyk7CiAgICAgICAgICAgICAgICBjb250ZW50LmFkZEludGVyYWN0aW9uKGlucHV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBBYmJyZWNoZW4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImNhbmNlbCIsICJ7ey5idXR0b24uY2FuY2VsfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IHNob3dFbGVtZW50KCJwb3B1cCIsIGZhbHNlKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIC8vIFNwZWljaGVybgogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJidXR0b24iLCAic2F2ZSIsICJ7ey5idXR0b24uc2F2ZX19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiBzYXZlUG9wdXBEYXRhKCInICsgZGF0YVR5cGUgKyAnIiwgIicgKyBpZCArICciLCAiZmFsc2UiKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIm1hcHBpbmciOgogICAgICAgICAgICBjb250ZW50LmNyZWF0ZUhlYWRsaW5lKCJ7ey5tYWluTWVudS5pdGVtLm1hcHBpbmd9fSIpOwogICAgICAgICAgICBpZiAoQlVMS19FRElUID09IHRydWUpIHsKICAgICAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LWNoYW5uZWxzLXN0YXJ0IjsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICAgICAgLy8gU2V0IHRoZSB2YWx1ZSB0byB0aGUgZmlyc3Qgc2VsZWN0ZWQgY2hhbm5lbAogICAgICAgICAgICAgICAgdmFyIGNoYW5uZWxzID0gZ2V0QWxsU2VsZWN0ZWRDaGFubmVscygpOwogICAgICAgICAgICAgICAgdmFyIGNoYW5uZWwgPSBTRVJWRVJbInhlcGciXVsiZXBnTWFwcGluZyJdW2NoYW5uZWxzWzBdXTsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2hhbm5lbCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgY2hhbm5lbFsieC1jaGFubmVsSUQiXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgJ2phdmFzY3JpcHQ6IGNoYW5nZUNoYW5uZWxOdW1iZXJzKCInICsgY2hhbm5lbHMgKyAnIik7Jyk7CiAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3subWFwcGluZy5jaGFubmVsR3JvdXBTdGFydC50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEFrdGl2IAogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1hY3RpdmUiOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUNoZWNrYm94KGRiS2V5KTsKICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGRhdGFbZGJLZXldOwogICAgICAgICAgICBpbnB1dC5pZCA9ICJhY3RpdmUiOwogICAgICAgICAgICAvL2lucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKQogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRvZ2dsZUNoYW5uZWxTdGF0dXMoJyIgKyBpZCArICInLCB0aGlzKSIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3subWFwcGluZy5hY3RpdmUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gS2FuYWxuYW1lIAogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1uYW1lIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgaWYgKEJVTEtfRURJVCA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBpbnB1dC5zdHlsZS5ib3JkZXIgPSAic29saWQgMXB4IHJlZCI7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgInRydWUiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3subWFwcGluZy5jaGFubmVsTmFtZS50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICAiPHNwYW4gY2xhc3M9J3RleHQtZGFuZ2VyJz4iICsgZGF0YVsidHZnLWlkIl0gKyAiPC9zcGFuPiA8c3BhbiBjbGFzcz0ndGV4dC1wcmltYXJ5Jz4oIiArIGRhdGFbIngtZXBnIl0gKyAiKTwvc3Bhbj4iOwogICAgICAgICAgICAvLyBCZXNjaHJlaWJ1bmcgCiAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LWRlc2NyaXB0aW9uIjsKICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsIGRiS2V5LCBkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3subWFwcGluZy5kZXNjcmlwdGlvbi5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRSb3coInt7Lm1hcHBpbmcuZGVzY3JpcHRpb24udGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgLy8gQWt0dWFsaXNpZXJ1bmcgZGVzIEthbmFsbmFtZW5zCiAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KCJfdXVpZC5rZXkiKSkgewogICAgICAgICAgICAgICAgaWYgKGRhdGFbIl91dWlkLmtleSJdICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gIngtdXBkYXRlLWNoYW5uZWwtbmFtZSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVDaGVja2JveChkYktleSk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3subWFwcGluZy51cGRhdGVDaGFubmVsTmFtZS50aXRsZX19IiwgaW5wdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIExvZ28gVVJMIChLYW5hbCkgCiAgICAgICAgICAgIHZhciBkYktleSA9ICJ0dmctbG9nbyI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCAiY2hhbm5lbC1pY29uIik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLmNoYW5uZWxMb2dvLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEFrdHVhbGlzaWVydW5nIGRlcyBLYW5hbGxvZ29zCiAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LXVwZGF0ZS1jaGFubmVsLWljb24iOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUNoZWNrYm94KGRiS2V5KTsKICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGRhdGFbZGJLZXldOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImlkIiwgInVwZGF0ZS1pY29uIik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCc7IGNoYW5nZUNoYW5uZWxMb2dvKCciICsgaWQgKyAiJyk7Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLnVwZGF0ZUNoYW5uZWxMb2dvLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIC8vIEVyd2VpdGVybiBkZXIgRVBHIEthdGVnb3JpZQogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1jYXRlZ29yeSI7CiAgICAgICAgICAgIHZhciB0ZXh0ID0gWyItIl07CiAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbIiJdOwogICAgICAgICAgICB2YXIgZXBnQ2F0ZWdvcmllcyA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZXBnQ2F0ZWdvcmllcyJdOwogICAgICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IGVwZ0NhdGVnb3JpZXMuc3BsaXQoInwiKTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgY2F0ID0gY2F0ZWdvcmllc1tpXTsKICAgICAgICAgICAgICAgIGlmIChjYXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY2F0X3NwbGl0ID0gY2F0LnNwbGl0KCI6Iik7CiAgICAgICAgICAgICAgICAgICAgdGV4dC5wdXNoKGNhdF9zcGxpdFswXSk7CiAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goY2F0X3NwbGl0WzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhW2RiS2V5XSwgZGJLZXkpOwogICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZFJvdygie3subWFwcGluZy5lcGdDYXRlZ29yeS50aXRsZX19Iiwgc2VsZWN0KTsKICAgICAgICAgICAgLy8gTTNVIEdydXBwZW50aXRlbAogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1ncm91cC10aXRsZSI7CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLm0zdUdyb3VwVGl0bGUudGl0bGV9fSIsIGlucHV0KTsKICAgICAgICAgICAgaWYgKGRhdGFbImdyb3VwLXRpdGxlIl0gIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBjb250ZW50LmRlc2NyaXB0aW9uKGRhdGFbImdyb3VwLXRpdGxlIl0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFhNTFRWIERhdGVpCiAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LXhtbHR2LWZpbGUiOwogICAgICAgICAgICB2YXIgeG1sRmlsZSA9IGRhdGFbZGJLZXldOwogICAgICAgICAgICB2YXIgeG1sdHYgPSBuZXcgWE1MVFZGaWxlKCk7CiAgICAgICAgICAgIHZhciBzZWxlY3QgPSB4bWx0di5nZXRGaWxlcyhkYXRhW2RiS2V5XSk7CiAgICAgICAgICAgIHNlbGVjdC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBkYktleSk7CiAgICAgICAgICAgIHNlbGVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgInBvcHVwLXhtbHR2Iik7CiAgICAgICAgICAgIHNlbGVjdC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnOyBzZXRYbWx0dkNoYW5uZWwoJyIgKyBpZCArICInLHRoaXMsICciICsgZGF0YVsieC1tYXBwaW5nIl0gKyAiJyk7Iik7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLnhtbHR2RmlsZS50aXRsZX19Iiwgc2VsZWN0KTsKICAgICAgICAgICAgdmFyIGZpbGUgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgLy8gWE1MVFYgTWFwcGluZwogICAgICAgICAgICB2YXIgZGJLZXkgPSAieC1tYXBwaW5nIjsKICAgICAgICAgICAgdmFyIHhtbHR2ID0gbmV3IFhNTFRWRmlsZSgpOwogICAgICAgICAgICBjb25zdCBjdXJyZW50WG1sVHZJZCA9IGRhdGFbZGJLZXldOwogICAgICAgICAgICBjb25zdCBbeG1sVHZJZENvbnRhaW5lciwgeG1sVHZJZElucHV0LCB4bWxUdklkRGF0YWxpc3RdID0geG1sdHYubmV3WG1sVHZJZFBpY2tlcih4bWxGaWxlLCBjdXJyZW50WG1sVHZJZCk7CiAgICAgICAgICAgIHhtbFR2SWRDb250YWluZXIuc2V0QXR0cmlidXRlKCdpZCcsICd4bWx0di1pZC1waWNrZXItY29udGFpbmVyJyk7CiAgICAgICAgICAgIHhtbFR2SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2xpc3QnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0Jyk7CiAgICAgICAgICAgIHhtbFR2SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAneC1tYXBwaW5nJyk7IC8vIFNob3VsZCBzdGF5IHgtbWFwcGluZyBhcyBpdCB3aWxsIGJlIHVzZWQgaW4gZG9uZVBvcHVwRGF0YSB0byBtYWtlIGEgc2VydmVyIHJlcXVlc3QKICAgICAgICAgICAgeG1sVHZJZElucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCAneG1sdHYtaWQtcGlja2VyLWlucHV0Jyk7CiAgICAgICAgICAgIHhtbFR2SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2hhbmdlJywgYGphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnOyBjaGVja1htbHR2Q2hhbm5lbCgnJHtpZH0nLCB0aGlzLCAnJHt4bWxGaWxlfScpO2ApOwogICAgICAgICAgICB4bWxUdklkRGF0YWxpc3Quc2V0QXR0cmlidXRlKCdpZCcsICd4bWx0di1pZC1waWNrZXItZGF0YWxpc3QnKTsKICAgICAgICAgICAgLy8gc29ydFNlbGVjdCh4bWxUdklkRGF0YWxpc3QpOyAvLyBUT0RPOiBCZXR0ZXIgc29ydCBiZWZvcmUgYWRkaW5nCiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCd7ey5tYXBwaW5nLnhtbHR2Q2hhbm5lbC50aXRsZX19JywgeG1sVHZJZENvbnRhaW5lcik7CiAgICAgICAgICAgIC8vIEV4dHJhIFBQViBEYXRhCiAgICAgICAgICAgIGlmIChjdXJyZW50WG1sVHZJZCA9PSAiUFBWIikgewogICAgICAgICAgICAgICAgdmFyIGRiS2V5ID0gIngtcHB2LWV4dHJhIjsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBkYktleSwgZGF0YVtkYktleV0pOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsICJwcHYtZXh0cmEiKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLnBwdmV4dHJhLnRpdGxlfX0iLCBpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGRiS2V5ID0gIngtYmFja3VwLWNoYW5uZWwtMSI7CiAgICAgICAgICAgIHZhciB4bWx0diA9IG5ldyBYTUxUVkZpbGUoKTsKICAgICAgICAgICAgY29uc3QgYmFja3VwMVhtbFR2SWQgPSBkYXRhW2RiS2V5XTsKICAgICAgICAgICAgY29uc3QgW3htbFR2QmFja3VwMUlkQ29udGFpbmVyLCB4bWxUdkJhY2t1cDFJZElucHV0LCB4bWxUdkJhY2t1cDFJZERhdGFsaXN0XSA9IHhtbHR2Lm5ld1htbFR2SWRQaWNrZXIoeG1sRmlsZSwgYmFja3VwMVhtbFR2SWQpOwogICAgICAgICAgICB4bWxUdkJhY2t1cDFJZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3htbHR2LWlkLXBpY2tlci1jb250YWluZXItMScpOwogICAgICAgICAgICB4bWxUdkJhY2t1cDFJZElucHV0LnNldEF0dHJpYnV0ZSgnbGlzdCcsICd4bWx0di1pZC1waWNrZXItZGF0YWxpc3QnKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAxSWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYktleSk7IC8vIFNob3VsZCBzdGF5IHgtbWFwcGluZyBhcyBpdCB3aWxsIGJlIHVzZWQgaW4gZG9uZVBvcHVwRGF0YSB0byBtYWtlIGEgc2VydmVyIHJlcXVlc3QKICAgICAgICAgICAgeG1sVHZCYWNrdXAxSWRJbnB1dC5zZXRBdHRyaWJ1dGUoImlkIiwgImJhY2t1cC1jaGFubmVsLTEiKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAxSWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2hhbmdlJywgYGphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnOyBjaGVja1htbHR2Q2hhbm5lbCgnJHtpZH0nLCB0aGlzLCAnJHt4bWxGaWxlfScpO2ApOwogICAgICAgICAgICB4bWxUdkJhY2t1cDFJZERhdGFsaXN0LnNldEF0dHJpYnV0ZSgnaWQnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0LWJhY2t1cDEnKTsKICAgICAgICAgICAgLy8gc29ydFNlbGVjdCh4bWxUdklkRGF0YWxpc3QpOyAvLyBUT0RPOiBCZXR0ZXIgc29ydCBiZWZvcmUgYWRkaW5nCiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCd7ey5tYXBwaW5nLmJhY2t1cENoYW5uZWwxLnRpdGxlfX0nLCB4bWxUdkJhY2t1cDFJZENvbnRhaW5lcik7CiAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LWJhY2t1cC1jaGFubmVsLTIiOwogICAgICAgICAgICB2YXIgeG1sdHYgPSBuZXcgWE1MVFZGaWxlKCk7CiAgICAgICAgICAgIGNvbnN0IGJhY2t1cDJYbWxUdklkID0gZGF0YVtkYktleV07CiAgICAgICAgICAgIGNvbnN0IFt4bWxUdkJhY2t1cDJJZENvbnRhaW5lciwgeG1sVHZCYWNrdXAySWRJbnB1dCwgeG1sVHZCYWNrdXAySWREYXRhbGlzdF0gPSB4bWx0di5uZXdYbWxUdklkUGlja2VyKHhtbEZpbGUsIGJhY2t1cDJYbWxUdklkKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAySWRDb250YWluZXIuc2V0QXR0cmlidXRlKCdpZCcsICd4bWx0di1pZC1waWNrZXItY29udGFpbmVyLTInKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAySWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2xpc3QnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0Jyk7CiAgICAgICAgICAgIHhtbFR2QmFja3VwMklkSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgZGJLZXkpOyAvLyBTaG91bGQgc3RheSB4LW1hcHBpbmcgYXMgaXQgd2lsbCBiZSB1c2VkIGluIGRvbmVQb3B1cERhdGEgdG8gbWFrZSBhIHNlcnZlciByZXF1ZXN0CiAgICAgICAgICAgIHhtbFR2QmFja3VwMklkSW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsICJiYWNrdXAtY2hhbm5lbC0yIik7CiAgICAgICAgICAgIHhtbFR2QmFja3VwMklkSW5wdXQuc2V0QXR0cmlidXRlKCdvbmNoYW5nZScsIGBqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJzsgY2hlY2tYbWx0dkNoYW5uZWwoJyR7aWR9JywgdGhpcywgJyR7eG1sRmlsZX0nKTtgKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAySWREYXRhbGlzdC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3htbHR2LWlkLXBpY2tlci1kYXRhbGlzdC1iYWNrdXAyJyk7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLmJhY2t1cENoYW5uZWwyLnRpdGxlfX0iLCB4bWxUdkJhY2t1cDJJZENvbnRhaW5lcik7CiAgICAgICAgICAgIHZhciBkYktleSA9ICJ4LWJhY2t1cC1jaGFubmVsLTMiOwogICAgICAgICAgICB2YXIgeG1sdHYgPSBuZXcgWE1MVFZGaWxlKCk7CiAgICAgICAgICAgIGNvbnN0IGJhY2t1cDNYbWxUdklkID0gZGF0YVtkYktleV07CiAgICAgICAgICAgIGNvbnN0IFt4bWxUdkJhY2t1cDNJZENvbnRhaW5lciwgeG1sVHZCYWNrdXAzSWRJbnB1dCwgeG1sVHZCYWNrdXAzSWREYXRhbGlzdF0gPSB4bWx0di5uZXdYbWxUdklkUGlja2VyKHhtbEZpbGUsIGJhY2t1cDNYbWxUdklkKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAzSWRDb250YWluZXIuc2V0QXR0cmlidXRlKCdpZCcsICd4bWx0di1pZC1waWNrZXItY29udGFpbmVyLTMnKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAzSWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2xpc3QnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0Jyk7CiAgICAgICAgICAgIHhtbFR2QmFja3VwM0lkSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgZGJLZXkpOyAvLyBTaG91bGQgc3RheSB4LW1hcHBpbmcgYXMgaXQgd2lsbCBiZSB1c2VkIGluIGRvbmVQb3B1cERhdGEgdG8gbWFrZSBhIHNlcnZlciByZXF1ZXN0CiAgICAgICAgICAgIHhtbFR2QmFja3VwM0lkSW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsICJiYWNrdXAtY2hhbm5lbC0zIik7CiAgICAgICAgICAgIHhtbFR2QmFja3VwM0lkSW5wdXQuc2V0QXR0cmlidXRlKCdvbmNoYW5nZScsIGBqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJzsgY2hlY2tYbWx0dkNoYW5uZWwoJyR7aWR9JywgdGhpcywgJyR7eG1sRmlsZX0nKTtgKTsKICAgICAgICAgICAgeG1sVHZCYWNrdXAzSWREYXRhbGlzdC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3htbHR2LWlkLXBpY2tlci1kYXRhbGlzdC1iYWNrdXAzJyk7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kUm93KCJ7ey5tYXBwaW5nLmJhY2t1cENoYW5uZWwzLnRpdGxlfX0iLCB4bWxUdkJhY2t1cDNJZENvbnRhaW5lcik7CiAgICAgICAgICAgIC8vIEludGVyYWt0aW9uCiAgICAgICAgICAgIGNvbnRlbnQuY3JlYXRlSW50ZXJhY3Rpb24oKTsKICAgICAgICAgICAgLy8gTG9nbyBob2NobGFkZW4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgInVwbG9hZCIsICJ7ey5idXR0b24udXBsb2FkTG9nb319Iik7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICdqYXZhc2NyaXB0OiB1cGxvYWRMb2dvKCk7Jyk7CiAgICAgICAgICAgIGNvbnRlbnQuYWRkSW50ZXJhY3Rpb24oaW5wdXQpOwogICAgICAgICAgICAvLyBBYmJyZWNoZW4KICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgiYnV0dG9uIiwgImNhbmNlbCIsICJ7ey5idXR0b24uY2FuY2VsfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IHNob3dFbGVtZW50KCJwb3B1cCIsIGZhbHNlKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIC8vIEZlcnRpZwogICAgICAgICAgICB2YXIgaWRzID0gbmV3IEFycmF5KCk7CiAgICAgICAgICAgIGlkcyA9IGdldEFsbFNlbGVjdGVkQ2hhbm5lbHMoKTsKICAgICAgICAgICAgaWYgKGlkcy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgaWRzLnB1c2goaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJzYXZlIiwgInt7LmJ1dHRvbi5kb25lfX0iKTsKICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgJ2phdmFzY3JpcHQ6IGRvbmVQb3B1cERhdGEoIicgKyBkYXRhVHlwZSArICciLCAiJyArIGlkcyArICciLCAiZmFsc2UiKTsnKTsKICAgICAgICAgICAgY29udGVudC5hZGRJbnRlcmFjdGlvbihpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgc2hvd0VsZW1lbnQoJ3BvcHVwQ3VzdG9tJywgdHJ1ZSk7Cn0KY2xhc3MgWE1MVFZGaWxlIHsKICAgIGdldEZpbGVzKHNldCkgewogICAgICAgIHZhciBmaWxlSURzID0gZ2V0T2JqS2V5cyhTRVJWRVJbInhlcGciXVsieG1sdHZNYXAiXSk7CiAgICAgICAgdmFyIHZhbHVlcyA9IG5ldyBBcnJheSgiLSIpOwogICAgICAgIHZhciB0ZXh0ID0gbmV3IEFycmF5KCItIik7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlSURzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChmaWxlSURzW2ldICE9ICJUaHJlYWRmaW4gRHVtbXkiKSB7CiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChnZXRWYWx1ZUZyb21Qcm92aWRlckZpbGUoZmlsZUlEc1tpXSwgInhtbHR2IiwgImZpbGUudGhyZWFkZmluIikpOwogICAgICAgICAgICAgICAgdGV4dC5wdXNoKGdldFZhbHVlRnJvbVByb3ZpZGVyRmlsZShmaWxlSURzW2ldLCAieG1sdHYiLCAibmFtZSIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGZpbGVJRHNbaV0pOwogICAgICAgICAgICAgICAgdGV4dC5wdXNoKGZpbGVJRHNbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJTRUxFQ1QiKTsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIk9QVElPTiIpOwogICAgICAgICAgICBvcHRpb24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIHZhbHVlc1tpXSk7CiAgICAgICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSB0ZXh0W2ldOwogICAgICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICB9CiAgICAgICAgaWYgKHNldCAhPSAiIikgewogICAgICAgICAgICBzZWxlY3QudmFsdWUgPSBzZXQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzZWxlY3Q7CiAgICB9CiAgICAvKioKICAgKiBAcGFyYW0geG1sVHZGaWxlIFhNTCBmaWxlIHBhdGggdG8gZ2V0IEVQRyBmcm9tLgogICAqIEBwYXJhbSBjdXJyZW50WG1sVHZJZCBDdXJyZW50IFhNTFRWIElEIHRvIHNldCBpbml0aWFsIGlucHV0IHZhbHVlIHRvLgogICAqIEByZXR1cm5zIEFycmF5IG9mLCBzZXF1ZW50aWFsbHk6CiAgICogMSkgQ29udGFpbmVyIG9mIHRoZSBwaWNrZXIuCiAgICogMikgSW5wdXQgZmllbGQgdG8gdHlwZSBhdCBhbmQgZ2V0IGNob2ljZSBmcm9tLgogICAqIDMpIERhdGFsaXN0IGNvbnRhaW5pbmcgZXZlcnkgb3B0aW9uLgogICAqLwogICAgbmV3WG1sVHZJZFBpY2tlcih4bWxUdkZpbGUsIGN1cnJlbnRYbWxUdklkKSB7CiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7CiAgICAgICAgLy8gSW5pdGlhbGx5LCBzZXQgdmFsdWUgdG8gJy0nIGlmIGlucHV0IGlzIGVtcHR5CiAgICAgICAgaW5wdXQudmFsdWUgPSAoY3VycmVudFhtbFR2SWQpID8gY3VycmVudFhtbFR2SWQgOiAnLSc7CiAgICAgICAgLy8gV2hlbiBpbnB1dCBpcyBmb2N1c2VkLCByZW1vdmUgJy0nIGZyb20gaXQKICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIChldnQpID0+IHsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZ0LnRhcmdldDsKICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gKHRhcmdldC52YWx1ZSA9PT0gJy0nKSA/ICcnIDogdGFyZ2V0LnZhbHVlOwogICAgICAgIH0pOwogICAgICAgIC8vIFdoZW4gaW5wdXQgbG9zZSBmb2N1cyBvciB0YWtlIGEgdmFsdWUsIGlmIGl0J3MgZW1wdHksIHNldCB2YWx1ZSB0byAnLScKICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgc2V0RmFsbGJhY2tWYWx1ZSk7CiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgc2V0RmFsbGJhY2tWYWx1ZSk7CiAgICAgICAgZnVuY3Rpb24gc2V0RmFsbGJhY2tWYWx1ZShldnQpIHsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZ0LnRhcmdldDsKICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gKHRhcmdldC52YWx1ZSkgPyB0YXJnZXQudmFsdWUgOiAnLSc7CiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgY29uc3QgZGF0YWxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkYXRhbGlzdCcpOwogICAgICAgIGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJy0nKTsKICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0gJy0nOwogICAgICAgIGRhdGFsaXN0LmFwcGVuZENoaWxkKG9wdGlvbik7CiAgICAgICAgY29uc3QgZXBnID0gU0VSVkVSWyd4ZXBnJ11bJ3htbHR2TWFwJ11beG1sVHZGaWxlXTsKICAgICAgICBpZiAoZXBnKSB7CiAgICAgICAgICAgIGNvbnN0IHByb2dyYW1JZHMgPSBnZXRPd25PYmpQcm9wcyhlcGcpOwogICAgICAgICAgICBwcm9ncmFtSWRzLmZvckVhY2goKHByb2dyYW1JZCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgcHJvZ3JhbSA9IGVwZ1twcm9ncmFtSWRdOwogICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXktbmFtZScpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9ncmFtSWQpOwogICAgICAgICAgICAgICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSBwcm9ncmFtWyJkaXNwbGF5LW5hbWUiXTsKICAgICAgICAgICAgICAgICAgICBkYXRhbGlzdC5hcHBlbmRDaGlsZChvcHRpb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9ncmFtSWQpOwogICAgICAgICAgICAgICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSAnLSc7CiAgICAgICAgICAgICAgICAgICAgZGF0YWxpc3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkYXRhbGlzdCk7CiAgICAgICAgcmV0dXJuIFtjb250YWluZXIsIGlucHV0LCBkYXRhbGlzdF07CiAgICB9CiAgICBnZXRQcm9ncmFtcyhmaWxlLCBzZXQsIGFjdGl2ZSkgewogICAgICAgIC8vdmFyIGZpbGVJRHM6c3RyaW5nW10gPSBnZXRPYmpLZXlzKFNFUlZFUlsieGVwZyJdWyJ4bWx0dk1hcCJdKQogICAgICAgIHZhciB2YWx1ZXMgPSBnZXRPYmpLZXlzKFNFUlZFUlsieGVwZyJdWyJ4bWx0dk1hcCJdW2ZpbGVdKTsKICAgICAgICB2YXIgdGV4dCA9IG5ldyBBcnJheSgpOwogICAgICAgIHZhciBkaXNwbGF5TmFtZTsKICAgICAgICB2YXIgYWN0aXZlcyA9IGdldE9iaktleXMoU0VSVkVSWyJkYXRhIl1bIlN0cmVhbVByZXZpZXdVSSJdWyJhY3RpdmVTdHJlYW1zIl0pOwogICAgICAgIHZhciBhY3RpdmVfbGlzdCA9IG5ldyBBcnJheSgpOwogICAgICAgIGlmIChhY3RpdmUgPT0gdHJ1ZSkgewogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBuYW1lc19zcGxpdCA9IFNFUlZFUlsiZGF0YSJdWyJTdHJlYW1QcmV2aWV3VUkiXVsiYWN0aXZlU3RyZWFtcyJdW2FjdGl2ZXNbaV1dLnNwbGl0KCJbIik7CiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IG5hbWVzX3NwbGl0WzBdLnRyaW0oKTsKICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5TmFtZSAhPSAiIikgewogICAgICAgICAgICAgICAgICAgIHZhciBvYmplY3QgPSB7ICJ2YWx1ZSI6IGRpc3BsYXlOYW1lLCAiZGlzcGxheSI6IGRpc3BsYXlOYW1lIH07CiAgICAgICAgICAgICAgICAgICAgYWN0aXZlX2xpc3QucHVzaChvYmplY3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKFNFUlZFUlsieGVwZyJdWyJ4bWx0dk1hcCJdW2ZpbGVdW3ZhbHVlc1tpXV0uaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXktbmFtZScpID09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFNFUlZFUlsieGVwZyJdWyJ4bWx0dk1hcCJdW2ZpbGVdW3ZhbHVlc1tpXV1bImRpc3BsYXktbmFtZSJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSAiLSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ZXh0W2ldID0gZGlzcGxheU5hbWUgKyAiICgiICsgdmFsdWVzW2ldICsgIikiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRleHQudW5zaGlmdCgiLSIpOwogICAgICAgIHZhbHVlcy51bnNoaWZ0KCItIik7CiAgICAgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNFTEVDVCIpOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiT1BUSU9OIik7CiAgICAgICAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgdmFsdWVzW2ldKTsKICAgICAgICAgICAgb3B0aW9uLmlubmVyVGV4dCA9IHRleHRbaV07CiAgICAgICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChvcHRpb24pOwogICAgICAgIH0KICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZV9saXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJPUFRJT04iKTsKICAgICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgidmFsdWUiLCBhY3RpdmVfbGlzdFtpXVsidmFsdWUiXSk7CiAgICAgICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSBhY3RpdmVfbGlzdFtpXVsiZGlzcGxheSJdOwogICAgICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICB9CiAgICAgICAgaWYgKHNldCAhPSAiIikgewogICAgICAgICAgICBzZWxlY3QudmFsdWUgPSBzZXQ7CiAgICAgICAgfQogICAgICAgIGlmIChzZWxlY3QudmFsdWUgIT0gc2V0KSB7CiAgICAgICAgICAgIHNlbGVjdC52YWx1ZSA9ICItIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNlbGVjdDsKICAgIH0KfQpmdW5jdGlvbiBnZXRWYWx1ZUZyb21Qcm92aWRlckZpbGUoZmlsZSwgZmlsZVR5cGUsIGtleSkgewogICAgaWYgKGZpbGUgPT0gIlRocmVhZGZpbiBEdW1teSIpIHsKICAgICAgICByZXR1cm4gZmlsZTsKICAgIH0KICAgIHZhciBmaWxlSUQ7CiAgICB2YXIgaW5kaWNhdG9yID0gZmlsZS5jaGFyQXQoMCk7CiAgICBzd2l0Y2ggKGluZGljYXRvcikgewogICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICBmaWxlVHlwZSA9ICJtM3UiOwogICAgICAgICAgICBmaWxlSUQgPSBmaWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgZmlsZVR5cGUgPSAiaGRociI7CiAgICAgICAgICAgIGZpbGVJRCA9IGZpbGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIlgiOgogICAgICAgICAgICBmaWxlVHlwZSA9ICJ4bWx0diI7CiAgICAgICAgICAgIGZpbGVJRCA9IGZpbGUuc3Vic3RyaW5nKDAsIGZpbGUubGFzdEluZGV4T2YoJy4nKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgaWYgKFNFUlZFUlsic2V0dGluZ3MiXVsiZmlsZXMiXVtmaWxlVHlwZV0uaGFzT3duUHJvcGVydHkoZmlsZUlEKSA9PSB0cnVlKSB7CiAgICAgICAgdmFyIGRhdGEgPSBTRVJWRVJbInNldHRpbmdzIl1bImZpbGVzIl1bZmlsZVR5cGVdW2ZpbGVJRF07CiAgICAgICAgcmV0dXJuIGRhdGFba2V5XTsKICAgIH0KICAgIHJldHVybjsKfQpmdW5jdGlvbiBzZXRYbWx0dkNoYW5uZWwoZXBnTWFwSWQsIHhtbFR2RmlsZVNlbGVjdCkgewogICAgY29uc3QgeG1sVHYgPSBuZXcgWE1MVFZGaWxlKCk7CiAgICBjb25zdCBuZXdYbWxUdkZpbGUgPSB4bWxUdkZpbGVTZWxlY3QudmFsdWU7CiAgICAvLyBSZW1vdmUgb2xkIFhNTFRWIElEIHNlbGVjdGlvbiBib3gKICAgIGNvbnN0IHhtbFR2SWRQaWNrZXJQYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneG1sdHYtaWQtcGlja2VyLWNvbnRhaW5lcicpLnBhcmVudEVsZW1lbnQ7CiAgICB4bWxUdklkUGlja2VyUGFyZW50LmlubmVySFRNTCA9ICcnOwogICAgLy8gQ3JlYXRlIG5ldyBYTUxUViBJRCBzZWxlY3Rpb24gYm94CiAgICBjb25zdCB0dmdJZCA9IFNFUlZFUlsneGVwZyddWydlcGdNYXBwaW5nJ11bZXBnTWFwSWRdWyd0dmctaWQnXTsKICAgIGNvbnN0IFt4bWxUdklkQ29udGFpbmVyLCB4bWxUdklkSW5wdXQsIHhtbFR2SWREYXRhbGlzdF0gPSB4bWxUdi5uZXdYbWxUdklkUGlja2VyKG5ld1htbFR2RmlsZSwgdHZnSWQpOwogICAgeG1sVHZJZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3htbHR2LWlkLXBpY2tlci1jb250YWluZXInKTsKICAgIHhtbFR2SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ2xpc3QnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0Jyk7CiAgICB4bWxUdklkSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ3gtbWFwcGluZycpOyAvLyBTaG91bGQgc3RheSB4LW1hcHBpbmcgYXMgaXQgd2lsbCBiZSB1c2VkIGluIGRvbmVQb3B1cERhdGEgdG8gbWFrZSBhIHNlcnZlciByZXF1ZXN0CiAgICB4bWxUdklkSW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsICd4bWx0di1pZC1waWNrZXItaW5wdXQnKTsKICAgIHhtbFR2SWRJbnB1dC5zZXRBdHRyaWJ1dGUoJ29uY2hhbmdlJywgYGphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnOyBjaGVja1htbHR2Q2hhbm5lbCgnJHtlcGdNYXBJZH0nLCB0aGlzLnZhbHVlLCAnJHtuZXdYbWxUdkZpbGV9Jyk7YCk7CiAgICB4bWxUdklkSW5wdXQuY2xhc3NMaXN0LmFkZCgnY2hhbmdlZCcpOwogICAgeG1sVHZJZERhdGFsaXN0LnNldEF0dHJpYnV0ZSgnaWQnLCAneG1sdHYtaWQtcGlja2VyLWRhdGFsaXN0Jyk7CiAgICAvLyBBZGQgbmV3IFhNTFRWIElEIHNlbGVjdGlvbiBib3ggdG8gaXQncyBwYXJlbnQKICAgIHhtbFR2SWRQaWNrZXJQYXJlbnQuYXBwZW5kQ2hpbGQoeG1sVHZJZENvbnRhaW5lcik7CiAgICBjaGVja1htbHR2Q2hhbm5lbChlcGdNYXBJZCwgeG1sVHZJZElucHV0LnZhbHVlLCBuZXdYbWxUdkZpbGUpOwp9CmZ1bmN0aW9uIGNoZWNrUFBWKHRpdGxlLCBlbGVtZW50KSB7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlOwogICAgY29uc29sZS5sb2coIkRVTU1ZIFRZUEU6ICIgKyB2YWx1ZSk7CiAgICBpZiAodmFsdWUgPT0gIlBQViIpIHsKICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieC1wcHYtZXh0cmEiKS5wYXJlbnRFbGVtZW50OwogICAgICAgIHRkLmlubmVySFRNTCA9ICIiOwogICAgICAgIHZhciBkYktleSA9ICJ4LXBwdi1leHRyYSI7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKTsKICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsIGRiS2V5KTsKICAgICAgICAvLyBpbnB1dC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgdmFsdWUpCiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCAicHB2LWV4dHJhIik7CiAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVFIiKTsKICAgICAgICAvLyBCZXplaWNobnVuZwogICAgICAgIGlmICh0aXRsZS5sZW5ndGggIT0gMCkgewogICAgICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICB0ZC5jbGFzc05hbWUgPSAibGVmdCI7CiAgICAgICAgICAgIHRkLmlubmVySFRNTCA9IHRpdGxlICsgIjoiOwogICAgICAgIH0KICAgICAgICAvLyBDb250ZW50CiAgICAgICAgdGQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgdGhpcy50YWJsZS5hcHBlbmRDaGlsZCh0cik7CiAgICB9Cn0KZnVuY3Rpb24gY2hlY2tYbWx0dkNoYW5uZWwoaWQsIGVsZW1lbnQsIHhtbEZpbGUpIHsKICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7CiAgICB2YXIgYm9vbDsKICAgIHZhciBjaGVja2JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmUnKTsKICAgIHZhciBjaGFubmVsID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXVtpZF07CiAgICB2YXIgdXBkYXRlTG9nbzsKICAgIGlmICh2YWx1ZSA9PSAiLSIpIHsKICAgICAgICBib29sID0gZmFsc2U7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBib29sID0gdHJ1ZTsKICAgIH0KICAgIGNoZWNrYm94LmNoZWNrZWQgPSBib29sOwogICAgY2hlY2tib3guY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgY29uc29sZS5sb2coeG1sRmlsZSk7CiAgICAvLyBLYW5hbGxvZ28gYWt0dWFsaXNpZXJlbgogICAgLyoKICAgIHVwZGF0ZUxvZ28gPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwZGF0ZS1pY29uIikgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZAogICAgY29uc29sZS5sb2codXBkYXRlTG9nbyk7CiAgICAqLwogICAgaWYgKHhtbEZpbGUgIT0gIlRocmVhZGZpbiBEdW1teSIgJiYgYm9vbCA9PSB0cnVlKSB7CiAgICAgICAgLy8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwZGF0ZS1pY29uIikgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZCA9IHRydWU7CiAgICAgICAgLy8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwZGF0ZS1pY29uIikgYXMgSFRNTElucHV0RWxlbWVudCkuY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgICAgIGNvbnNvbGUubG9nKCJJRCIsIGlkKTsKICAgICAgICBjaGFuZ2VDaGFubmVsTG9nbyhpZCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHhtbEZpbGUgPT0gIlRocmVhZGZpbiBEdW1teSIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBkYXRlLWljb24iKS5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwZGF0ZS1pY29uIikuY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgfQogICAgcmV0dXJuOwp9CmZ1bmN0aW9uIGNoYW5nZUNoYW5uZWxMb2dvKGVwZ01hcElkKSB7CiAgICBjb25zdCBjaGFubmVsID0gU0VSVkVSWyd4ZXBnJ11bJ2VwZ01hcHBpbmcnXVtlcGdNYXBJZF07CiAgICBjb25zdCB4bWxUdkZpbGVTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAteG1sdHYnKTsKICAgIGNvbnN0IHhtbFR2RmlsZSA9IHhtbFR2RmlsZVNlbGVjdC5vcHRpb25zW3htbFR2RmlsZVNlbGVjdC5zZWxlY3RlZEluZGV4XS52YWx1ZTsKICAgIGNvbnN0IHhtbFR2SWRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4bWx0di1pZC1waWNrZXItaW5wdXQnKTsKICAgIGNvbnN0IG5ld1htbFR2SWQgPSB4bWxUdklkSW5wdXQudmFsdWU7CiAgICBjb25zdCB1cGRhdGVMb2dvID0gIUJVTEtfRURJVCB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBkYXRlLWljb24nKS5jaGVja2VkOwogICAgbGV0IGxvZ287CiAgICBpZiAodXBkYXRlTG9nbyA9PSB0cnVlICYmIHhtbFR2RmlsZSAhPSAnVGhyZWFkZmluIER1bW15JykgewogICAgICAgIGlmIChTRVJWRVJbJ3hlcGcnXVsneG1sdHZNYXAnXVt4bWxUdkZpbGVdLmhhc093blByb3BlcnR5KG5ld1htbFR2SWQpKSB7CiAgICAgICAgICAgIGxvZ28gPSBTRVJWRVJbJ3hlcGcnXVsneG1sdHZNYXAnXVt4bWxUdkZpbGVdW25ld1htbFR2SWRdWydpY29uJ107CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBsb2dvID0gY2hhbm5lbFsndHZnLWxvZ28nXTsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2F2ZVBvcHVwRGF0YShkYXRhVHlwZSwgaWQsIHJlbW92ZSwgb3B0aW9uKSB7CiAgICBzaG93RWxlbWVudCgncG9wdXAnLCBmYWxzZSk7CiAgICBzaG93RWxlbWVudCgibG9hZGluZyIsIHRydWUpOwogICAgaWYgKGRhdGFUeXBlID09ICJtYXBwaW5nIikgewogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOwogICAgICAgIGNvbnNvbGUubG9nKCJTYXZlIG1hcHBpbmcgZGF0YSIpOwogICAgICAgIGNtZCA9ICJzYXZlRXBnTWFwcGluZyI7CiAgICAgICAgZGF0YVsiZXBnTWFwcGluZyJdID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXTsKICAgICAgICBjb25zb2xlLmxvZygiU0VORCBUTyBTRVJWRVIiKTsKICAgICAgICB2YXIgc2VydmVyID0gbmV3IFNlcnZlcihjbWQpOwogICAgICAgIHNlcnZlci5yZXF1ZXN0KGRhdGEpOwogICAgICAgIGRlbGV0ZSBVTkRPWyJlcGdNYXBwaW5nIl07CiAgICAgICAgc2hvd0VsZW1lbnQoImxvYWRpbmciLCBmYWxzZSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc29sZS5sb2coIlNhdmUgcG9wdXAgZGF0YSIpOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cEN1c3RvbSIpOwogICAgdmFyIGlucHV0cyA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEFCTEUiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU5QVVQiKTsKICAgIHZhciBzZWxlY3RzID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQUJMRSIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJTRUxFQ1QiKTsKICAgIHZhciBpbnB1dCA9IG5ldyBPYmplY3QoKTsKICAgIHZhciBjb25maXJtTXNnOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgbmFtZSA9IHNlbGVjdHNbaV0ubmFtZTsKICAgICAgICB2YXIgdmFsdWUgPSBzZWxlY3RzW2ldLnZhbHVlOwogICAgICAgIHN3aXRjaCAobmFtZSkgewogICAgICAgICAgICBjYXNlICJ0dW5lciI6CiAgICAgICAgICAgICAgICBpbnB1dFtuYW1lXSA9IHBhcnNlSW50KHZhbHVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaW5wdXRbbmFtZV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgc3dpdGNoIChpbnB1dHNbaV0udHlwZSkgewogICAgICAgICAgICBjYXNlICJjaGVja2JveCI6CiAgICAgICAgICAgICAgICBuYW1lID0gaW5wdXRzW2ldLm5hbWU7CiAgICAgICAgICAgICAgICBpbnB1dFtuYW1lXSA9IGlucHV0c1tpXS5jaGVja2VkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRleHQiOgogICAgICAgICAgICBjYXNlICJoaWRkZW4iOgogICAgICAgICAgICBjYXNlICJwYXNzd29yZCI6CiAgICAgICAgICAgICAgICBuYW1lID0gaW5wdXRzW2ldLm5hbWU7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0dW5lciI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0W25hbWVdID0gcGFyc2VJbnQoaW5wdXRzW2ldLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRbbmFtZV0gPSBpbnB1dHNbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7CiAgICB2YXIgY21kOwogICAgaWYgKHJlbW92ZSA9PSB0cnVlKSB7CiAgICAgICAgaW5wdXRbImRlbGV0ZSJdID0gdHJ1ZTsKICAgIH0KICAgIHN3aXRjaCAoZGF0YVR5cGUpIHsKICAgICAgICBjYXNlICJ1c2VycyI6CiAgICAgICAgICAgIGNvbmZpcm1Nc2cgPSAiRGVsZXRlIHRoaXMgdXNlcj8iOwogICAgICAgICAgICBpZiAoaWQgPT0gIi0iKSB7CiAgICAgICAgICAgICAgICBjbWQgPSAic2F2ZU5ld1VzZXIiOwogICAgICAgICAgICAgICAgZGF0YVsidXNlckRhdGEiXSA9IGlucHV0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY21kID0gInNhdmVVc2VyRGF0YSI7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBPYmplY3QoKTsKICAgICAgICAgICAgICAgIGRbaWRdID0gaW5wdXQ7CiAgICAgICAgICAgICAgICBkYXRhWyJ1c2VyRGF0YSJdID0gZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJtM3UiOgogICAgICAgICAgICBjb25maXJtTXNnID0gIkRlbGV0ZSB0aGlzIHBsYXlsaXN0PyI7CiAgICAgICAgICAgIHN3aXRjaCAob3B0aW9uKSB7CiAgICAgICAgICAgICAgICAvLyBQb3B1cDogU2F2ZQogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgIGNtZCA9ICJzYXZlRmlsZXNNM1UiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgLy8gUG9wdXA6IFVwZGF0ZQogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ1cGRhdGVGaWxlTTNVIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBkYXRhWyJmaWxlcyJdID0gbmV3IE9iamVjdDsKICAgICAgICAgICAgZGF0YVsiZmlsZXMiXVtkYXRhVHlwZV0gPSBuZXcgT2JqZWN0OwogICAgICAgICAgICBkYXRhWyJmaWxlcyJdW2RhdGFUeXBlXVtpZF0gPSBpbnB1dDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiaGRociI6CiAgICAgICAgICAgIGNvbmZpcm1Nc2cgPSAiRGVsZXRlIHRoaXMgSERIb21lUnVuIHR1bmVyPyI7CiAgICAgICAgICAgIHN3aXRjaCAob3B0aW9uKSB7CiAgICAgICAgICAgICAgICAvLyBQb3B1cDogU2F2ZQogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgIGNtZCA9ICJzYXZlRmlsZXNIREhSIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIC8vIFBvcHVwOiBVcGRhdGUKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBjbWQgPSAidXBkYXRlRmlsZUhESFIiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRhdGFbImZpbGVzIl0gPSBuZXcgT2JqZWN0OwogICAgICAgICAgICBkYXRhWyJmaWxlcyJdW2RhdGFUeXBlXSA9IG5ldyBPYmplY3Q7CiAgICAgICAgICAgIGRhdGFbImZpbGVzIl1bZGF0YVR5cGVdW2lkXSA9IGlucHV0OwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJ4bWx0diI6CiAgICAgICAgICAgIGNvbmZpcm1Nc2cgPSAiRGVsZXRlIHRoaXMgWE1MVFYgZmlsZT8iOwogICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbikgewogICAgICAgICAgICAgICAgLy8gUG9wdXA6IFNhdmUKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICBjbWQgPSAic2F2ZUZpbGVzWE1MVFYiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgLy8gUG9wdXA6IFVwZGF0ZQogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ1cGRhdGVGaWxlWE1MVFYiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRhdGFbImZpbGVzIl0gPSBuZXcgT2JqZWN0OwogICAgICAgICAgICBkYXRhWyJmaWxlcyJdW2RhdGFUeXBlXSA9IG5ldyBPYmplY3Q7CiAgICAgICAgICAgIGRhdGFbImZpbGVzIl1bZGF0YVR5cGVdW2lkXSA9IGlucHV0OwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJmaWx0ZXIiOgogICAgICAgICAgICBjb25maXJtTXNnID0gIkRlbGV0ZSB0aGlzIGZpbHRlcj8iOwogICAgICAgICAgICBjbWQgPSAic2F2ZUZpbHRlciI7CiAgICAgICAgICAgIGRhdGFbImZpbHRlciJdID0gbmV3IE9iamVjdDsKICAgICAgICAgICAgZGF0YVsiZmlsdGVyIl1baWRdID0gaW5wdXQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGFUeXBlLCBpZCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICBpZiAocmVtb3ZlID09IHRydWUpIHsKICAgICAgICBpZiAoIWNvbmZpcm0oY29uZmlybU1zZykpIHsKICAgICAgICAgICAgc2hvd0VsZW1lbnQoInBvcHVwIiwgZmFsc2UpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgY29uc29sZS5sb2coIlNFTkQgVE8gU0VSVkVSIik7CiAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKICAgIHNob3dFbGVtZW50KCJsb2FkaW5nIiwgZmFsc2UpOwp9CmZ1bmN0aW9uIGRvbmVQb3B1cERhdGEoZGF0YVR5cGUsIGlkc1N0cikgewogICAgdmFyIGlkcyA9IGlkc1N0ci5zcGxpdCgnLCcpOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cEN1c3RvbSIpOwogICAgdmFyIGlucHV0cyA9IGRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJjaGFuZ2VkIik7CiAgICBpZHMuZm9yRWFjaChpZCA9PiB7CiAgICAgICAgdmFyIGlucHV0ID0gbmV3IE9iamVjdCgpOwogICAgICAgIGlucHV0ID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXVtpZF07CiAgICAgICAgY29uc29sZS5sb2coIklOUFVUOiAiICsgaW5wdXQpOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBuYW1lOwogICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgIHN3aXRjaCAoaW5wdXRzW2ldLnRhZ05hbWUpIHsKICAgICAgICAgICAgICAgIGNhc2UgIklOUFVUIjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0c1tpXS50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNoZWNrYm94IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbnB1dHNbaV0ubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW5wdXRzW2ldLmNoZWNrZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFtuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRleHQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlucHV0c1tpXS5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnB1dHNbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFtuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiU0VMRUNUIjoKICAgICAgICAgICAgICAgICAgICBuYW1lID0gaW5wdXRzW2ldLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnB1dHNbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaW5wdXRbbmFtZV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKICAgICAgICAgICAgICAgIGNhc2UgInR2Zy1sb2dvIjoKICAgICAgICAgICAgICAgICAgICAvLyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hpbGROb2Rlc1syXS5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50KS5zZXRBdHRyaWJ1dGUoInNyYyIsIHZhbHVlKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1jaGFubmVsLXN0YXJ0IjoKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hpbGROb2Rlc1szXS5maXJzdENoaWxkLmlubmVySFRNTCA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1uYW1lIjoKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hpbGROb2Rlc1szXS5maXJzdENoaWxkLmlubmVySFRNTCA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1jYXRlZ29yeSI6CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gIndoaXRlIjsKICAgICAgICAgICAgICAgICAgICB2YXIgY2F0Q29sb3JTZXR0aW5ncyA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZXBnQ2F0ZWdvcmllc0NvbG9ycyJdOwogICAgICAgICAgICAgICAgICAgIHZhciBjb2xvcnNfc3BsaXQgPSBjYXRDb2xvclNldHRpbmdzLnNwbGl0KCJ8Iik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9yc19zcGxpdC5sZW5ndGg7IGlpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNhdHNDb2xvcl9zcGxpdCA9IGNvbG9yc19zcGxpdFtpaV0uc3BsaXQoIjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhdHNDb2xvcl9zcGxpdFswXSA9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBjYXRzQ29sb3Jfc3BsaXRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoaWxkTm9kZXNbM10uZmlyc3RDaGlsZC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1ncm91cC10aXRsZSI6CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoaWxkTm9kZXNbNV0uZmlyc3RDaGlsZC5pbm5lckhUTUwgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIngteG1sdHYtZmlsZSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9ICJUaHJlYWRmaW4gRHVtbXkiICYmIHZhbHVlICE9ICItIikgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFZhbHVlRnJvbVByb3ZpZGVyRmlsZSh2YWx1ZSwgInhtbHR2IiwgIm5hbWUiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09ICItIikgewogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFsieC1hY3RpdmUiXSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hpbGROb2Rlc1s2XS5maXJzdENoaWxkLmlubmVySFRNTCA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1tYXBwaW5nIjoKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIi0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0WyJ4LWFjdGl2ZSJdID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGlsZE5vZGVzWzddLmZpcnN0Q2hpbGQuaW5uZXJIVE1MID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJ4LWJhY2t1cC1jaGFubmVsIjoKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hpbGROb2Rlc1s3XS5maXJzdENoaWxkLmlubmVySFRNTCA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAieC1oaWRlLWNoYW5uZWwiOgogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGlsZE5vZGVzWzddLmZpcnN0Q2hpbGQuaW5uZXJIVE1MID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB9CiAgICAgICAgICAgIGNyZWF0ZVNlYXJjaE9iaigpOwogICAgICAgICAgICBzZWFyY2hJbk1hcHBpbmcoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlucHV0WyJ4LWFjdGl2ZSJdID09IGZhbHNlKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc05hbWUgPSAibm90QWN0aXZlRVBHIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc05hbWUgPSAiYWN0aXZlRVBHIjsKICAgICAgICB9CiAgICAgICAgY29uc29sZS5sb2coaW5wdXRbInR2Zy1sb2dvIl0pOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGlsZE5vZGVzWzJdLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJzcmMiLCBpbnB1dFsidHZnLWxvZ28iXSk7CiAgICB9KTsKICAgIHNob3dFbGVtZW50KCJwb3B1cCIsIGZhbHNlKTsKICAgIHJldHVybjsKfQpmdW5jdGlvbiBzaG93UHJldmlldyhlbGVtZW50KSB7CiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15U3RyZWFtc0JveCIpOwogICAgc3dpdGNoIChlbGVtZW50KSB7CiAgICAgICAgY2FzZSBmYWxzZToKICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICJub3RWaXNpYmxlIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBicmVhazsKICAgIH0KICAgIHZhciBzdHJlYW1zID0gWyJhY3RpdmVTdHJlYW1zIiwgImluYWN0aXZlU3RyZWFtcyJdOwogICAgc3RyZWFtcy5mb3JFYWNoKHByZXZpZXcgPT4gewogICAgICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZXZpZXcpOwogICAgICAgIHRhYmxlLmlubmVySFRNTCA9ICIiOwogICAgICAgIHZhciBvYmogPSBTRVJWRVJbImRhdGEiXVsiU3RyZWFtUHJldmlld1VJIl1bcHJldmlld107CiAgICAgICAgdmFyIGNhcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJDQVBUSU9OIik7CiAgICAgICAgdmFyIHJlc3VsdCA9IHByZXZpZXcucmVwbGFjZSgvKFtBLVpdKS9nLCAiICQxIik7CiAgICAgICAgdmFyIGZpbmFsUmVzdWx0ID0gcmVzdWx0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmVzdWx0LnNsaWNlKDEpOwogICAgICAgIGNhcHRpb24uaW5uZXJIVE1MID0gZmluYWxSZXN1bHQ7CiAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoY2FwdGlvbik7CiAgICAgICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEJPRFkiKTsKICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZCh0Ym9keSk7CiAgICAgICAgb2JqLnNsaWNlKDAsIDEwMDApLmZvckVhY2goY2hhbm5lbCA9PiB7CiAgICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7CiAgICAgICAgICAgIHZhciB0ZEtleSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgIHZhciB0ZFZhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgIHRkS2V5LmNsYXNzTmFtZSA9ICJ0ZEtleSI7CiAgICAgICAgICAgIHRkVmFsLmNsYXNzTmFtZSA9ICJ0ZFZhbCI7CiAgICAgICAgICAgIHN3aXRjaCAocHJldmlldykgewogICAgICAgICAgICAgICAgY2FzZSAiYWN0aXZlU3RyZWFtcyI6CiAgICAgICAgICAgICAgICAgICAgdGRLZXkuaW5uZXJUZXh0ID0gIkNoYW5uZWw6ICgrKSI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJpbmFjdGl2ZVN0cmVhbXMiOgogICAgICAgICAgICAgICAgICAgIHRkS2V5LmlubmVyVGV4dCA9ICJDaGFubmVsOiAoLSkiOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRkVmFsLmlubmVyVGV4dCA9IGNoYW5uZWw7CiAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkS2V5KTsKICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGRWYWwpOwogICAgICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZCh0cik7CiAgICAgICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyKTsKICAgICAgICB9KTsKICAgIH0pOwogICAgLy8gc2hvd0VsZW1lbnQoImxvYWRpbmciLCBmYWxzZSkKICAgIGRpdi5jbGFzc05hbWUgPSAidmlzaWJsZSI7CiAgICByZXR1cm47Cn0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVudS5qcy5tYXA=" + webUI["web/public/video/stream-limit.ts"] = "R0AREABC8CUAAcEAAP8B/wAB/IAUSBIBBkZGbXBlZwlTZXJ2aWNlMDF3fEPK//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HQAAQAACwDQABwQAAAAHwACqxBLL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dQABAAArASAAHBAADhAPAAG+EA8AAVvU1W////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0EAMAdQAAB7DH4AAAAB4AAAgMAKMQAJEKERAAfYYQAAAAEJ8AAAAAFnZAAorNlAeAIn5YpQAAADABAAAAMDIPGDGWAAAAABaOvjyyLAAAABBgX//6vcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3dHAQARd3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2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30X9oT0SBBZCI3AtJaE1scGsmpXrX+6L7ECx+XYakivHzMbORwEAFX6jycIYObFMA8cO1RQbKqBjRSwmV6s3Bvymh1Uy2Q4NYGetxxqA4TS9AAsfEnTWSPnioguTXby9YCaR4TjGhn8NBtHaAqal7fT8Mi6Fx48bLZLUw8vE0oyOXRPPZ7YEaZ8VtCcKvfPmIXDe+CICjSg/14litlDqWjesyqV20kGkxEXxFBxQ6opg8rJ5nrXpJ7Yg7f1kVB6kfioI546wX4WiVIHMnIjolv1sVV16hPOoaheE0P72F7ZHAQAW7HIsDRCfdXPaYJO+kI1KnbprbBU8l9EpUeesa13zPgeLsD/2jy8om6zqqaZBpDO3+joQU+lzMfu74FIaVthokTCHq+okILC+gMpWqJ9gii24CxJR1eAEEaVrQma2Vqt0eRRTQKRgUz3U+yFZEROE+9eX4DBqMlOFD6/RPC32sesdhyOVL9peV/fimBhb4rcmjAOm79hlThrtz/TWGfACtvoNRAwACV66tkmnc4GPMdLg0xEkq+1LSEcBADcNAP///////////////5trYpfJL+GISCBj9FiUkOtbkee6L9I58mjnY1y/WDNqht+Qw3+9i+KfyBbjdz/46xUXVuCItwfw/gdYKyy+IjRZiv53kEqW+PD7lPLLRgAAL2BITMTuwQL79Q01wkomp2ZPIBYiBP6WREAZAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAW9R0EAGAAAAeAAAIDACjEACYEhEQAH9IEAAAABCfAAAAABQZokbEO//qmWAAADAAADAAADAAADAAADAAADAAADAhPyO6dd23w9DkWWQJotXSbxVzBxaMjhfbwK5hWmvMGszdWhoszx1x0hDXN8c9BgYxwvxRZXkmrTPV9ZQAAAAwAAAwAAAwAAAwAKyANRq59GNuA0ghi7BmsDn4KOtIcIHn/KA8ZjXdDU0cUWk7qRZwNMMelaC07cZyBZW9BHAQA5EgD//////////////////////472Ji2hDXNKdWiA/xvCwGEXvTeFAvXO+jhlL6AOli2RGJa+ncBbXMf/Fv/nG9TOUvI8v62JTNsuhHbKPEq9HPF4/Uizrx3rjCTMC69d6+VoYrKv6XxKyvGcL7/QDEDKbwk4eCFgJZJEAlH+N25TWR6KYwzkYYgGuXdrBv3UkeA7VHwdf9Xzh5cuSg4ngVmnfeIpA9JsLqp2wIu9AAADAAADAAAIuEdBADoHEAAAiRx+AAAAAeAAAIDACjEACUjhEQAJEKEAAAABCfAAAAABQZ5CeIX/AAADAAADAAADAAADAAADAAADAAADAnzE28Zci1VBf0H4k1nWmJ0ogyjKdI6LAY1zorGVIRF7G8uwAAADAAADAAADAAADAAADAqrZOCXhGzA4u24KPtb92mgjNUnlvc9Xhr0gBo7u2GDR+aPxP9hnLhhlBtu4gqLkmscLxiv7oXnm033sXadVffC0UcIARwEAO64A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAwAAAwAAM+FHQAARAACwDQABwQAAAAHwACqxBLL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dQABEAArASAAHBAADhAPAAG+EA8AAVvU1W////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0EAPCUA////////////////////////////////////////////////AAAB4AAAgIAFIQAJLMEAAAABCfAAAAABAZ5hdEK/AAADAAADAAADAAADAAADAAADAAADA1/+i67DypGtrhJHPx4hDO6/W1t2QWamAxImT0NjhBVoAAADAAADAAADAAADAAAFMUbvocN9sGd3vACpQrs5+mzAC6i5WG4adCZ7bcVeOzo7AFpOoAAAAwAAAwAAMqBHQQA9QhAAAJcsfgD//////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEACWUBEQAJSOEAAAABCfAAAAABAZ5jakK/AAADAAADAAADAAADAAADAAADAAADAAGmdIUc+K9+mAAAAwAAAwAAAwAAAwAAF+YuLcI2IxJ27WrhAZp7Yh4CElw5RRRGjq0bAAADAAADAABEwUdBAD4uAP///////////////////////////////////////////////////////////wAAAeAAAIDACjEACfGhEQAJZQEAAAABCfAAAAABQZpoSahBaJlMCHf//qmWAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAK78A5Ntd6FmvObqU2qkO9/nBjO187SEClZ2zAWMgqZxWCxcqvQx+wgAAADAAADAAU1R0AAEgAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HUAASAAKwEgABwQAA4QDwABvhAPAAFb1NVv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dBAD86EAAApTx+AP///////////////////////////////////////////////////////////////////wAAAeAAAIDACjEACblhEQAJgSEAAAABCfAAAAABQZ6GRREsL/8AAAMAAAMAAAMAAAMAAAMAAAMAAAMAATXzj2orOqHVgAAAAwAAAwAAAwAAAwAB1LjAMsF1v3AJeffDUP0gAbzkVi7LRpW7+1eciThATL+0AAADAAADAAIPR0EAMEYA////////////////////////////////////////////////////////////////////////////////////////////AAAB4AAAgIAFIQAJnUEAAAABCfAAAAABAZ6ldEK/AAADAAADAAADAAADAAADAAADAAADAAGl/nWxWSXisAAAAwAAAwAAAwAAAwAAOo9u4wKtZ9mouspMor7zADZAcKEUQKmIGN/qFqwAAAMAAAMAA1NHQQAxURAAALNMfgD//////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEACdWBEQAJuWEAAAABCfAAAAABAZ6nakK/AAADAAADAAADAAADAAADAAADAAADAAGmdIUc+K9+mAAAAwAAAwAAAwAAAwAADiqA6Jzb5eUjXnNhAAADAAADAAAdMEdAABMAALANAAHBAAAAAfAAKrEEsv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R1AAEwACsBIAAcEAAOEA8AAb4QDwABW9TVb///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HQQAyTgD//////////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEAC2IhEQAJ1YEAAAABCfAAAAABQZqsSahBbJlMCHf//qmWAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAF4+AbzVAAAAwAAAwAAAwBAwEdBADNKEAAAwVx+AP////////////////////////////////////////////////////////////////////////////////////////8AAAHgAACAwAoxAAsp4REACfGhAAAAAQnwAAAAAUGeykUVLC//AAADAAADAAADAAADAAADAAADAAADAAE1849qKzqh1YAAAAMAAAMAAAMAAAMAAPrcuImYkdwSCsiv8h6ss58AAAMAAAMAAM+BR0EANFUA////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAB4AAAgIAFIQALDcEAAAABCfAAAAABAZ7pdEK/AAADAAADAAADAAADAAADAAADAAADAAGl/nWxWSXisAAAAwAAAwAAAwAAAwAAH1fABVCgbyQRhNELHHAAAAMAAAMACyhHQAAUAACwDQABwQAAAAHwACqxBLL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dQABQAArASAAHBAADhAPAAG+EA8AAVvU1W////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0EANVEQAADPbH4A//////////////////////////////////////////////////////////////////////////////////////////////////8AAAHgAACAwAoxAAtGAREACynhAAAAAQnwAAAAAQGe62pCvwAAAwAAAwAAAwAAAwAAAwAAAwAAAwABpnSFHPivfpgAAAMAAAMAAAMAAAMAAA4qgOic2+XlI15zYQAAAwAAAwAAHTBHQBERAELwJQABwQAA/wH/AAH8gBRIEgEGRkZtcGVnCVNlcnZpY2UwMXd8Q8r//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dBADZOAP//////////////////////////////////////////////////////////////////////////////////////////////////////AAAB4AAAgMAKMQAL0qERAAtGAQAAAAEJ8AAAAAFBmvBJqEFsmUwIb//+p4QAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAv/sqEpwAAADAAADAAADAMCBR0EAN0oQAADdfH4A/////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEAC5phEQALYiEAAAABCfAAAAABQZ8ORRUsL/8AAAMAAAMAAAMAAAMAAAMAAAMAAAMAATXzj2orOqHVgAAAAwAAAwAAAwAAAwABAV2OiZ9R3aIKyK/yHqyznwAAAwAAAwAAz4FHQAAVAACwDQABwQAAAAHwACqxBLL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dQABUAArASAAHBAADhAPAAG+EA8AAVvU1W////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0EAOFUA////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAB4AAAgIAFIQALfkEAAAABCfAAAAABAZ8tdEK/AAADAAADAAADAAADAAADAAADAAADAAGl/nWxWSXisAAAAwAAAwAAAwAAAwAAICUVFVNgckQRhNELHHAAAAMAAAMACylHQQA5URAAAOuMfgD//////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEAC7aBEQALmmEAAAABCfAAAAABAZ8vakK/AAADAAADAAADAAADAAADAAADAAADAAGmdIUc+K9+mAAAAwAAAwAAAwAAAwAADiqA6Jzb5eUjXnNhAAADAAADAAAdMEdBADpRAP//////////////////////////////////////////////////////////////////////////////////////////////////////////AAAB4AAAgMAKMQANQyERAAu2gQAAAAEJ8AAAAAFBmzRJqEFsmUwIZ//+nhAAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAGVAR0AAFgAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HUAAWAAKwEgABwQAA4QDwABvhAPAAFb1NVv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dBADtMEAAA+Zx+AP///////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEADQrhEQAL0qEAAAABCfAAAAABQZ9SRRUsL/8AAAMAAAMAAAMAAAMAAAMAAAMAAAMAATXzj2orOqHVgAAAAwAAAwAAAwAAAwAAt+76q5wtAchcd/IOszwAAAMAAAMAAAe1R0EAPFYA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAICABSEAC+7BAAAAAQnwAAAAAQGfcXRCvwAAAwAAAwAAAwAAAwAAAwAAAwAAAwABpf51sVkl4rAAAAMAAAMAAAMAAAMAABbufc2kxdx/pBxb4AAAAwAAAwAAU0BHQQA9URAAAQesfgD//////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEADScBEQANCuEAAAABCfAAAAABAZ9zakK/AAADAAADAAADAAADAAADAAADAAADAAGmdIUc+K9+mAAAAwAAAwAAAwAAAwAADiqA6Jzb5eUjXnNhAAADAAADAAAdMEdAABcAALANAAHBAAAAAfAAKrEEsv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R1AAFwACsBIAAcEAAOEA8AAb4QDwABW9TVb///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HQQA+UgD///////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAHgAACAwAoxAA2zoREADScBAAAAAQnwAAAAAUGbeEmoQWyZTAhX//44QAAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwAAAwABi0dBAD9MEAABFbx+AP///////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAIDACjEADXthEQANQyEAAAABCfAAAAABQZ+WRRUsL/8AAAMAAAMAAAMAAAMAAAMAAAMAAAMAATXzj2orOqHVgAAAAwAAAwAAAwAAAwAAt+76q5wtAchcd/IOszwAAAMAAAMAAAe0R0EAMFYA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAeAAAICABSEADV9BAAAAAQnwAAAAAQGftXRCvwAAAwAAAwAAAwAAAwAAAwAAAwAAAwABpf51sVkl4rAAAAMAAAMAAAMAAAMAABbufc2kxdx/pBxb4AAAAwAAAwAAU0FHQAAYAACwDQABwQAAAAHwACqxBLL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0dQABgAArASAAHBAADhAPAAG+EA8AAVvU1W////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////R0EAMVEQAAEjzH4A//////////////////////////////////////////////////////////////////////////////////////////////////8AAAHgAACAwAoxAA2XgREADXthAAAAAQnwAAAAAQGft2pCvwAAAwAAAwAAAwAAAwAAAwAAAwAAAwABpnSFHPivfpgAAAMAAAMAAAMAAAMAAA4qgOic2+XlI15zYQAAAwAAAwAAHTE=" + webUI["web/public/css/screen.css"] = "bmF2IGltZyB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBtYXgtaGVpZ2h0OiAyMHB4Ow0KICBtYXgtd2lkdGg6IDIwcHg7DQogIGZsb2F0OiBsZWZ0Ow0KfQ0KDQpuYXYgcCB7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIHBhZGRpbmc6IDBweCAzMHB4Ow0KfQ0KDQojbGF5b3V0IHsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogMTAwJTsNCn0NCg0KLmZvcm0tY29udHJvbDpkaXNhYmxlZCB7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KfQ0KDQoubGF5b3V0LWxlZnQgew0KICBkaXNwbGF5OiBibG9jazsNCiAgbWluLXdpZHRoOiAxNTBweDsNCiAgbWF4LXdpZHRoOiAyMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMxMTE7DQogIGhlaWdodDogaW5oZXJpdDsNCiAgZmxvYXQ6IGxlZnQ7DQp9DQoNCi5sYXlvdXQtcmlnaHQgew0KICBkaXNwbGF5OiBibG9jazsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0NDsNCn0NCg0KI21lbnUtd3JhcHBlciB7DQogIGhlaWdodDogMTAwJTsNCn0NCg0KDQojbG9nbyB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBtaW4td2lkdGg6IDE4MHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgaGVpZ2h0OiAxMDBweDsNCiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWcvdGhyZWFkZmluLnBuZyIpOw0KICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7DQogIGJhY2tncm91bmQtc2l6ZTogMTAwJTsNCn0NCg0KDQojcGFnZSB7DQogIG1heC13aWR0aDogOTUwcHg7DQogIG1hcmdpbjogYXV0bzsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0NDsNCg0KICAvKg0KICBoZWlnaHQ6IC13ZWJraXQtY2FsYygxMDAlIC0gMTMwcHgpOw0KICBoZWlnaHQ6IC1tb3otY2FsYygxMDAlIC0gMTMwcHgpOw0KICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEzMHB4KTsNCiAgKi8NCg0KICBtaW4taGVpZ2h0OiAtd2Via2l0LWNhbGMoMTAwJSAtIDEyMHB4KTsNCiAgbWluLWhlaWdodDogLW1vei1jYWxjKDEwMCUgLSAxMjBweCk7DQogIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtIDEyMHB4KTsNCg0KDQogIGJveC1zaGFkb3c6IDBweCA1cHggNXB4ICMyMjI7DQoNCn0NCg0KI3VpU2V0dGluZyB7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLXJpZ2h0OiAyNXB4Ow0KfQ0KDQojYm94IGlucHV0W3R5cGU9dGV4dF0sDQojYm94IGlucHV0W3R5cGU9cGFzc3dvcmRdIHsNCiAgd2lkdGg6IC13ZWJraXQtY2FsYygxMDAlIC0gMjBweCk7DQogIHdpZHRoOiAtbW96LWNhbGMoMTAwJSAtIDIwcHgpOw0KICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7DQp9DQoNCiNib3ggaW5wdXRbdHlwZT1zdWJtaXRdIHsNCiAgbWFyZ2luOiA1MHB4IGF1dG87DQp9DQoNCiNzZXR0aW5ncyB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBwYWRkaW5nOiAxMHB4IDEwcHg7DQp9DQoNCiNzZXR0aW5ncyBoNSB7DQogIG1hcmdpbjogNTBweCAwcHggMTBweCAwcHg7DQp9DQoNCiNjb250ZW50LWludGVyYWN0aW9uIC5zZWFyY2ggew0KICB3aWR0aDogMjAwcHg7DQogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7DQogIHBhZGRpbmc6IDlweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsNCiAgbWFyZ2luOiAxMHB4Ow0KICBmbG9hdDogcmlnaHQ7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCg0KfQ0KDQojbXlTdHJlYW1zIHsNCiAgcG9zaXRpb246IGZpeGVkOw0KICBib3R0b206IDBweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzExMTsNCiAgd2lkdGg6IDEwMCU7DQogIG1heC13aWR0aDogOTUwcHg7DQoNCiAgLyoNCiAgbWF4LWhlaWdodDogMTAwcHg7DQogICovDQogIG1hcmdpbi1ib3R0b206IDBweDsNCn0NCg0KI215U3RyZWFtcyBpbWcgew0KICB3aWR0aDogNCU7DQogIHBhZGRpbmc6IDJweCA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZmxvYXQ6IHJpZ2h0Ow0KfQ0KDQovKiBXaXphcmQqLw0KI2JveCB7DQogIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQogIG1pbi1oZWlnaHQ6IDQwMHB4Ow0KDQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCn0NCg0KI2JveCBwIHsNCiAgcGFkZGluZzogMTBweCAwcHg7DQp9DQoNCiNib3gtZm9vdGVyIHsNCiAgbWFyZ2luLXRvcDogYXV0bzsNCn0NCg0KI2JveC1mb290ZXIgew0KICBtYXJnaW46IGF1dG87DQogIHBhZGRpbmc6IDEwcHg7DQp9DQoNCiNoZWFkbGluZSB7DQogIGJhY2tncm91bmQtY29sb3I6ICMyMjI7DQogIGJvcmRlci1ib3R0b206IHNvbGlkIDJweCAjMjIyOw0KICB0cmFuc2l0aW9uOiBhbGwgMC41czsNCiAgcGFkZGluZzogMTBweCAwcHg7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQojY29udGVudCB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBvdmVyZmxvdzogYXV0bzsNCiAgcGFkZGluZzogMTBweDsNCn0NCg0KLyogLS0tICovDQoNCg0KI2NsaWVudEluZm8sDQojYWN0aXZlU3RyZWFtcywNCiNpbmFjdGl2ZVN0cmVhbXMgew0KICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICBkaXNwbGF5OiBibG9jazsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBjb2xvcjogIzAwRTZGRjsNCiAgcGFkZGluZzogMHB4Ow0KfQ0KDQojYWN0aXZlU3RyZWFtcyB0aGVhZCwNCiNpbmFjdGl2ZVN0cmVhbXMgdGhlYWQgew0KICBmb250LXNpemU6IDJlbTsNCn0NCg0KI29wZW5TdHJlYW1zIHsNCiAgd2lkdGg6IDIwcHg7DQogIGhlaWdodDogMjAwcHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHJpZ2h0OiAwcHg7DQogIGJvdHRvbTogMHB4Ow0KICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltZy90b3VjaC5wbmciKTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzExMTsNCg0KICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b20gcmlnaHQ7DQp9DQoNCiNhbGxTdHJlYW1zIHsNCiAgcGFkZGluZzogMnB4Ow0KfQ0KDQojYWN0aXZlU3RyZWFtcyAudGRLZXksDQojaW5hY3RpdmVTdHJlYW1zIC50ZEtleSB7DQogIHdpZHRoOiAxMTVweDsNCiAgbGV0dGVyLXNwYWNpbmc6IDBweDsNCn0NCg0KY2FwdGlvbiB7DQogIGNvbG9yOiAjRkZGOw0KICBmb250LXNpemU6IDJlbTsNCn0NCg0KLnRkS2V5IHsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLnRkVmFsIHsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLm1vZGFsLWhlYWRlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7DQp9DQoubW9kYWwtYm9keSB7DQogIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQp9DQoNCiNpbmFjdGl2ZVN0cmVhbXMgLnRkS2V5IHsNCiAgY29sb3I6IHJlZDsNCn0NCg0KI2NsaWVudEluZm8gLnRkVmFsLA0KI2xvZ0luZm8gLnRkVmFsLA0KI2FjdGl2ZVN0cmVhbXMgLnRkVmFsLA0KI2luYWN0aXZlU3RyZWFtcyAudGRWYWwsDQojbWFwcGluZ0luZm8gLnRkVmFsIHsNCiAgY29sb3I6ICNhYWE7DQogIHdoaXRlLXNwYWNlOiBpbmhlcml0Ow0KfQ0KDQojYm94LXdyYXBwZXIgew0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIHdpZHRoOiAxMDAlOw0KDQogIG92ZXJmbG93LXk6IHNjcm9sbDsNCn0NCg0KI2NvbnRlbnRUYWJsZSwNCiNpbmFjdGl2ZUNvbnRlbnRUYWJsZSwNCiNtYXBwaW5nLWRldGFpbC10YWJsZSwNCiNjb250ZW50VGFibGUgew0KICBkaXNwbGF5OiB0YWJsZTsNCiAgLS1icy10YWJsZS1jb2xvcjogbm9uZTsNCiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsNCiAgb3ZlcmZsb3cteTogc2Nyb2xsOw0KfQ0KDQojaW5hY3RpdmVDb250ZW50VGFibGUgew0KICBtYXJnaW4tdG9wOiAyJTsNCn0NCg0KDQojY29udGVudFRhYmxlIC5jb250ZW50VGFibGVIZWFkZXIsDQojaW5hY3RpdmVDb250ZW50VGFibGUgLmluYWN0aXZlQ29udGVudFRhYmxlSGVhZGVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsNCiAgaGVpZ2h0OiA1MHB4Ow0KICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggIzExMTsNCiAgYm9yZGVyLWxlZnQ6IHNvbGlkIDNweCAjMzMzOw0KICBjdXJzb3I6IGF1dG87DQoNCn0NCg0KDQp0Ym9keSB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQoNCi50YWJsZUVsbGlwc2lzIHsNCiAgd2lkdGg6IDE1MHB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsNCiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsNCn0NCg0KI2NvbnRlbnRUYWJsZSBpbWcsDQojaW5hY3RpdmVDb250ZW50VGFibGUgaW1nIHsNCiAgZGlzcGxheTogYmxvY2s7DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQogIG1heC13aWR0aDogNjBweDsNCn0NCg0KI2NvbnRlbnRUYWJsZSB0ciwNCiNpbmFjdGl2ZUNvbnRlbnRUYWJsZSB0ciB7DQogIGJvcmRlci1sZWZ0OiBzb2xpZCAzcHggNDQ0Ow0KICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggIzMzMzsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQojY29udGVudFRhYmxlIHRyOmhvdmVyLA0KI2luYWN0aXZlQ29udGVudFRhYmxlIHRyOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsNCn0NCg0KI2NvbnRlbnRUYWJsZSB0ZCwNCiNpbmFjdGl2ZUNvbnRlbnRUYWJsZSB0ZCB7DQoNCiAgcGFkZGluZzogMHB4IDJweDsNCn0NCg0KI2NvbnRlbnRUYWJsZSBpbnB1dFt0eXBlPXRleHRdLA0KI2luYWN0aXZlQ29udGVudFRhYmxlIGlucHV0W3R5cGU9dGV4dF0gew0KICB3aWR0aDogODAlOw0KICBtaW4td2lkdGg6IDM1cHg7DQogIG1heC13aWR0aDogNjBweDsNCiAgYm9yZGVyOiAwcHg7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCiNjb250ZW50VGFibGUgaW5wdXRbdHlwZT1jaGVja2JveF0sDQojaW5hY3RpdmVDb250ZW50VGFibGUgaW5wdXRbdHlwZT1jaGVja2JveF0gew0KICBtYXgtd2lkdGg6IDI1cHg7DQogIG1hcmdpbjogYXV0bzsNCn0NCg0KDQouc2hvd0J1bGsgew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLmhpZGVCdWxrIHsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KI2NvbnRlbnRUYWJsZSB0ci5hY3RpdmVFUEcsDQojaW5hY3RpdmVDb250ZW50VGFibGUgdHIuYWN0aXZlRVBHIHsNCiAgYm9yZGVyLWxlZnQ6IHNvbGlkIDNweCBsYXduZ3JlZW47DQp9DQoNCiNjb250ZW50VGFibGUgdHIubm90QWN0aXZlRVBHLA0KI2luYWN0aXZlQ29udGVudFRhYmxlIHRyLm5vdEFjdGl2ZUVQRyB7DQogIGJvcmRlci1sZWZ0OiBzb2xpZCAzcHggcmVkOw0KfQ0KDQoNCiNsb2dTY3JlZW4gcCB7DQogIHdoaXRlLXNwYWNlOiBwcmU7DQogIGZvbnQtc2l6ZTogMTBweDsNCiAgLyoNCiAgbGluZS1oZWlnaHQ6IDEuNmVtOw0KICBmb250LWZhbWlseTogIkFyaWFsIiwgc2Fucy1zZXJpZjsNCiAgKi8NCiAgbGV0dGVyLXNwYWNpbmc6IDFweDsNCiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBmb250LXN0eWxlOiBub3JtYWw7DQogIGZvbnQtdmFyaWFudDogbm9ybWFsOw0KICBsaW5lLWhlaWdodDogMS42ZW07DQp9DQoNCiNtYXBwaW5nLWRldGFpbCwNCiN1c2VyLWRldGFpbCwNCiNmaWxlLWRldGFpbCB7DQogIGJveC1zaGFkb3c6IDBweCA1cHggNDBweCAjMDAwOw0KICBtYXJnaW4tdG9wOiAyMHB4Ow0KICBtYXJnaW4tbGVmdDogYXV0bzsNCiAgbWFyZ2luLXJpZ2h0OiBhdXRvOw0KDQogIG1heC13aWR0aDogNjAwcHg7DQogIGJhY2tncm91bmQtY29sb3I6ICMyMjI7DQogIHBhZGRpbmc6IDEwcHg7DQogIG92ZXJmbG93OiBhdXRvOw0KfQ0KDQojZmlsZS1kZXRhaWwgaW5wdXRbdHlwZT10ZXh0XSB7DQogIHdpZHRoOiAtd2Via2l0LWNhbGMoMTAwJSAtIDIwcHgpOw0KICB3aWR0aDogLW1vei1jYWxjKDEwMCUgLSAyMHB4KTsNCiAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOw0KfQ0KDQojbWFwcGluZy1kZXRhaWwgaW1nIHsNCiAgZGlzcGxheTogYmxvY2s7DQogIG1heC1oZWlnaHQ6IDMwcHg7DQogIG1hcmdpbi1ib3R0b206IDIwcHg7DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQp9DQoNCiNtYXBwaW5nLWRldGFpbCBpbnB1dFt0eXBlPXRleHRdLA0KI2NvbnRlbnRfc2V0dGluZ3MgaW5wdXRbdHlwZT10ZXh0XSwNCiNjb250ZW50X3NldHRpbmdzIGlucHV0W3R5cGU9cGFzc3dvcmRdIHsNCiAgYm9yZGVyOiBzb2xpZCAxcHg7DQogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIHdpZHRoOiAtd2Via2l0LWNhbGMoMTAwJSAtIDIwcHgpOw0KICB3aWR0aDogLW1vei1jYWxjKDEwMCUgLSAyMHB4KTsNCiAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOw0KfQ0KDQojbWFwcGluZy1kZXRhaWwtdGFibGUsDQojdXNlci1kZXRhaWwtdGFibGUgew0KICBkaXNwbGF5OiBpbmxpbmUtdGFibGU7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQojY29udGVudF9zZXR0aW5ncyB0YWJsZSB7DQogIGRpc3BsYXk6IGlubGluZS10YWJsZTsNCiAgdGFibGUtbGF5b3V0OiBmaXhlZDsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCg0KI21hcHBpbmctZGV0YWlsLXRhYmxlIHRkLA0KI3VzZXItZGV0YWlsLXRhYmxlIHRkIHsNCiAgcGFkZGluZzogMTBweCAwcHg7DQoNCn0NCg0KI21hcHBpbmctZGV0YWlsLXRhYmxlIHRkLmxlZnQsDQojdXNlci1kZXRhaWwtdGFibGUgdGQubGVmdCB7DQogIHdpZHRoOiAzOCU7DQp9DQoNCi5pbnRlcmFjdGlvbiwNCiNpbnRlcmFjdGlvbiB7DQogIG1hcmdpbi10b3A6IDIwcHg7DQogIGRpc3BsYXk6IGlubGluZS1mbGV4Ow0KICBmbG9hdDogcmlnaHQ7DQp9DQoNCi5pbnRlcmFjdGlvbiBpbnB1dFt0eXBlPWJ1dHRvbl0sDQouaW50ZXJhY3Rpb24gaW5wdXRbdHlwZT1zdWJtaXRdIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsNCiAgbWluLXdpZHRoOiAxMDBweDsNCiAgbWFyZ2luOiAwcHggMTBweDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQojbm90aWZpY2F0aW9uIHsNCiAgZGlzcGxheTogYmxvY2s7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgcmlnaHQ6IDBweDsNCiAgaGVpZ2h0OiAxMDAlOw0KICB3aWR0aDogMjUwcHg7DQoNCiAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjsNCiAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4ICMwMDA7DQp9DQoNCiNub3RpZmljYXRpb24gaDUgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTIxMjEyOw0KICBwYWRkaW5nOiA1cHggMTBweCA1cHggMTBweDsNCn0NCg0KI25vdGlmaWNhdGlvbiBwcmUgew0KICBwYWRkaW5nOiAwcHggMTBweCAwcHggMTBweDsNCn0NCg0KI25vdGlmaWNhdGlvbiBwIHsNCiAgZm9udC1zaXplOiAxMCBweDsNCiAgbWFyZ2luOiAwcHg7DQogIHBhZGRpbmc6IDBweCAxMHB4IDVweCAxMHB4Ow0KfQ0KDQojbm90aWZpY2F0aW9uIC5lbGVtZW50IHsNCiAgLypwYWRkaW5nOiAwcHggNXB4OyovDQogIG1hcmdpbjogNXB4IDVweDsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgxODE4Ow0KICBib3JkZXItbGVmdDogMTBweCBzb2xpZCBncmVlbjsNCn0NCg0KDQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYyMHB4KSB7DQogIGJvZHkgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQogIH0NCg0KICBoMSB7DQogICAgZm9udC1zaXplOiAyNnB4Ow0KICAgIGxldHRlci1zcGFjaW5nOiAzcHg7DQogIH0NCg0KICBuYXYgcCB7DQogICAgZGlzcGxheTogYmxvY2s7DQogIH0NCg0KDQoNCiAgI2hlYWRlcl9jb25maWcgew0KICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgIGhlaWdodDogMTAwcHg7DQogICAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWcvbG9nb193XzYwMHgyMDAucG5nIik7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCg0KICAgIGJhY2tncm91bmQtc2l6ZTogMzAwcHggMTAwcHg7DQogIH0NCg0KICAjc2NyZWVuTG9nIHsNCiAgICBtYXJnaW4tbGVmdDogMzAwcHg7DQoNCiAgICB0cmFuc2l0aW9uOiBub25lOw0KICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCB0cmFuc3BhcmVudDsNCiAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMjIyOw0KICB9DQoNCiAgI3NldHRpbmdzIHsNCiAgICAvKg0KICAgIGhlaWdodDogLXdlYmtpdC1jYWxjKDEwMCUgLSAxMDBweCk7DQogICAgaGVpZ2h0OiAtbW96LWNhbGMoMTAwJSAtIDEwMHB4KTsNCiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEwMHB4KTsNCiAgICAqLw0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBvdmVyZmxvdzogYXV0bzsNCiAgfQ0KDQoNCiAgLnNjcmVlbkxvZ0hpZGRlbiB7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAwcHgpOw0KICB9DQoNCg0KICAjYm94IHsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgICBtaW4taGVpZ2h0OiA1MDBweDsNCiAgICBtYXgtd2lkdGg6IDUwMHB4Ow0KICAgIG1hcmdpbjogMTBweCBhdXRvOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQogICAgYm94LXNoYWRvdzogMHB4IDVweCA1cHggIzIyMjsNCg0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgfQ0KfQ0KDQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYyMHB4KSB7DQogIGJvZHkgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7IC8qIEVuc3VyZSB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBjb25zaXN0ZW50ICovDQogIH0NCg0KICAvKiBBZGQgYW55IG90aGVyIHN0eWxlcyBzcGVjaWZpYyB0byBzbWFsbCBkZXZpY2VzIGhlcmUgKi8NCn0NCg0KDQovKg0KPT09PT09PT09PT09PT09IA0KU2lkZWJhcg0KPT09PT09PT09PT09PT09DQoqLw0KOnJvb3Qgew0KICAvKiBkYXJrIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9yKi8NCiAgLS1jbHItcHJpbWFyeS0xOiBoc2woMjA1LCA4NiUsIDE3JSk7DQogIC0tY2xyLXByaW1hcnktMjogaHNsKDIwNSwgNzclLCAyNyUpOw0KICAtLWNsci1wcmltYXJ5LTM6IGhzbCgyMDUsIDcyJSwgMzclKTsNCiAgLS1jbHItcHJpbWFyeS00OiBoc2woMjA1LCA2MyUsIDQ4JSk7DQogIC8qIHByaW1hcnkvbWFpbiBjb2xvciAqLw0KICAtLWNsci1wcmltYXJ5LTU6IGhzbCgyMDUsIDc4JSwgNjAlKTsNCiAgLyogbGlnaHRlciBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvciAqLw0KICAtLWNsci1wcmltYXJ5LTY6IGhzbCgyMDUsIDg5JSwgNzAlKTsNCiAgLS1jbHItcHJpbWFyeS03OiBoc2woMjA1LCA5MCUsIDc2JSk7DQogIC0tY2xyLXByaW1hcnktODogaHNsKDIwNSwgODYlLCA4MSUpOw0KICAtLWNsci1wcmltYXJ5LTk6IGhzbCgyMDUsIDkwJSwgODglKTsNCiAgLS1jbHItcHJpbWFyeS0xMDogaHNsKDIwNSwgMTAwJSwgOTYlKTsNCiAgLyogZGFya2VzdCBncmV5IC0gdXNlZCBmb3IgaGVhZGluZ3MgKi8NCiAgLS1jbHItZ3JleS0xOiBoc2woMjA5LCA2MSUsIDE2JSk7DQogIC0tY2xyLWdyZXktMjogaHNsKDIxMSwgMzklLCAyMyUpOw0KICAtLWNsci1ncmV5LTM6IGhzbCgyMDksIDM0JSwgMzAlKTsNCiAgLS1jbHItZ3JleS00OiBoc2woMjA5LCAyOCUsIDM5JSk7DQogIC8qIGdyZXkgdXNlZCBmb3IgcGFyYWdyYXBocyAqLw0KICAtLWNsci1ncmV5LTU6IGhzbCgyMTAsIDIyJSwgNDklKTsNCiAgLS1jbHItZ3JleS02OiBoc2woMjA5LCAyMyUsIDYwJSk7DQogIC0tY2xyLWdyZXktNzogaHNsKDIxMSwgMjclLCA3MCUpOw0KICAtLWNsci1ncmV5LTg6IGhzbCgyMTAsIDMxJSwgODAlKTsNCiAgLS1jbHItZ3JleS05OiBoc2woMjEyLCAzMyUsIDg5JSk7DQogIC0tY2xyLWdyZXktMTA6IGhzbCgyMTAsIDM2JSwgOTYlKTsNCiAgLS1jbHItd2hpdGU6ICNmZmY7DQogIC0tY2xyLXJlZC1kYXJrOiBoc2woMzYwLCA2NyUsIDQ0JSk7DQogIC0tY2xyLXJlZC1saWdodDogaHNsKDM2MCwgNzElLCA2NiUpOw0KICAtLWNsci1ncmVlbi1kYXJrOiBoc2woMTI1LCA2NyUsIDQ0JSk7DQogIC0tY2xyLWdyZWVuLWxpZ2h0OiBoc2woMTI1LCA3MSUsIDY2JSk7DQogIC0tY2xyLW9yYW5nZTogaHNsKDE0LDkzJSw1MyUpOw0KICAtLWNsci1ibGFjazogIzIyMjsNCiAgLS1mZi1wcmltYXJ5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjsNCiAgLS1mZi1zZWNvbmRhcnk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmOw0KICAtLXRyYW5zaXRpb246IGFsbCAwLjNzIGxpbmVhcjsNCiAgLS1zcGFjaW5nOiAwLjFyZW07DQogIC0tcmFkaXVzOiAwLjI1cmVtOw0KICAtLWxpZ2h0LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMSk7DQogIC0tZGFyay1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpOw0KICAtLW1heC13aWR0aDogMTE3MHB4Ow0KICAtLWZpeGVkLXdpZHRoOiA2MjBweDsNCn0NCg0KLnNpZGViYXItdG9nZ2xlIHsNCiAgcG9zaXRpb246IGZpeGVkOw0KICB0b3A6IDQ0cmVtOw0KICBsZWZ0OiAxMXJlbTsNCiAgZm9udC1zaXplOiAycmVtOw0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgY29sb3I6IHZhcigtLWNsci1vcmFuZ2UpOw0KICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICAvKiBhbmltYXRpb246IGJvdW5jZSAxMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7ICovDQp9DQouc2lkZWJhci10b2dnbGU6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tY2xyLW9yYW5nZSk7DQogIGFuaW1hdGlvbjogZXhwYW5kIC41cyBlYXNlLWluIGZvcndhcmRzOw0KfQ0KLnNpZGViYXItdG9nZ2xlOm5vdCg6aG92ZXIpIHsNCiAgY29sb3I6IHZhcigtLWNsci1vcmFuZ2UpOw0KICBhbmltYXRpb246IGNvbGxhcHNlIC41cyBlYXNlLW91dCBmb3J3YXJkczsNCn0NCkBrZXlmcmFtZXMgZXhwYW5kIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7DQogIH0NCiAgNTAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7DQogIH0NCiAgMTAwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsNCiAgfQ0KfQ0KQGtleWZyYW1lcyBjb2xsYXBzZSB7DQogIDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMjUpOw0KICB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7DQogIH0NCn0NCg0KLnNpZGViYXItaGVhZGVyIHsNCiAgZGlzcGxheTogZmxleDsNCiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsNCn0NCi5jbG9zZS1idG4gew0KICBwb3NpdGlvbjogZml4ZWQ7DQogIHRvcDogNDRyZW07DQogIGxlZnQ6IDcwcmVtOw0KICBmb250LXNpemU6IDJyZW07DQogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Ow0KICBjb2xvcjogdmFyKC0tY2xyLW9yYW5nZSk7DQogIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGRpc3BsYXk6IG5vbmU7DQp9DQouY2xvc2UtYnRuOmhvdmVyIHsNCiAgY29sb3I6IHZhcigtLWNsci1vcmFuZ2UpOw0KICBhbmltYXRpb246IGV4cGFuZCAuNXMgZWFzZS1pbiBmb3J3YXJkczsNCn0NCi5jbG9zZS1idG46bm90KDpob3Zlcikgew0KICBjb2xvcjogdmFyKC0tY2xyLW9yYW5nZSk7DQogIGFuaW1hdGlvbjogY29sbGFwc2UgLjVzIGVhc2Utb3V0IGZvcndhcmRzOw0KfQ0KLmxvZ28gew0KICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjsNCiAgaGVpZ2h0OiA0MHB4Ow0KfQ0KDQoubGlua3MgYSB7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBmb250LXNpemU6IDEuNXJlbTsNCiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7DQogIHBhZGRpbmc6IDFyZW0gMS41cmVtOw0KICBjb2xvcjogdmFyKC0tY2xyLWdyZXktNSk7DQogIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pOw0KfQ0KLmxpbmtzIGE6aG92ZXIgew0KICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeS04KTsNCiAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5LTUpOw0KICBwYWRkaW5nLWxlZnQ6IDEuNzVyZW07DQp9DQouc29jaWFsLWljb25zIHsNCiAganVzdGlmeS1zZWxmOiBjZW50ZXI7DQogIGRpc3BsYXk6IGZsZXg7DQogIHBhZGRpbmctYm90dG9tOiAycmVtOw0KfQ0KLnNvY2lhbC1pY29ucyBhIHsNCiAgZm9udC1zaXplOiAxLjVyZW07DQogIG1hcmdpbjogMCAwLjVyZW07DQogIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeS01KTsNCiAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbik7DQp9DQouc29jaWFsLWljb25zIGE6aG92ZXIgew0KICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnktMSk7DQp9DQoNCi5zaWRlYmFyIHsNCiAgcG9zaXRpb246IGZpeGVkOw0KICB0b3A6IDA7DQogIGxlZnQ6IDA7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGJhY2tncm91bmQ6IHZhcigtLWNsci1ibGFjayk7DQogIGRpc3BsYXk6IGdyaWQ7DQogIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnIgYXV0bzsNCiAgcm93LWdhcDogMXJlbTsNCiAgYm94LXNoYWRvdzogdmFyKC0tY2xyLXJlZC1kYXJrKTsNCiAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbik7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlKTsNCn0NCi5zaG93LXNpZGViYXIgew0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTsNCn0NCi5zaG93LXNpZGViYXIgLmNsb3NlLWJ0biB7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQouc2lkZWJhciAuY2FyZCB7DQogIHdpZHRoOiA0NGVtOw0KICBtYXJnaW46IDNlbTsNCn0NCi5jYXJkIHsNCiAgLyogY29sb3I6IHZhcigtLWNsci1ibGFjayk7ICovDQogIGJvcmRlcjogNXB4IHNvbGlkIHZhcigtLWNsci1vcmFuZ2UpOw0KfQ0KLyogLmNhcmQgaW5wdXRbdHlwZT10ZXh0XSB7DQogIGNvbG9yOiB2YXIoLS1jbHItYmxhY2spOw0KICBvdXRsaW5lOiB2YXIoLS1jbHItYmxhY2spOw0KICBib3JkZXI6IHNvbGlkIDFweCB2YXIoLS1jbHItYmxhY2spOw0KfSAqLw0KLmNhcmQgbGFiZWwgew0KICBtYXJnaW4tdG9wOiAyZW07DQp9DQouY2FyZCBsYWJlbDpmaXJzdC1vZi10eXBlIHsNCiAgbWFyZ2luLXRvcDogMWVtOw0KfQ==" + webUI["web/public/img/logout.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0xMC0xM1QxMToxMDoxODwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cg27QeEAAANQSURBVGgF7Zk9aBRBGIZzSRSN8YdoCpEkghCCqK1o4g9IsBCCNmIniCAiWAhqI8G02qiIoqCCWggSEcFKEFPYpVAU8QdFUyiKRpRokBjP55OdZDLZvZnZ7N3Ngh887M7sN/O9797t7c5eTc3/8D8DxWKxGS5Ai//oAEYgvB4OwleQaAtAlp8ERG+Bp6Jei/wYQfRy6NfE67vhG0FtA/TBqK7c2A/bCGJ3wpAhOq4ZphGUroEHcYoT+sIygsgmOAu/EwQndYdhBHV1sB8+Jym19Lf6/faVIRuBG+GRRajtcPWMoKwFbtgUOh6vvBGEzYFj8MNRpEtaZY2gaAe8cVHmmXOc/K3QXIZv/+SUFFgJ96AS8ZwiZ6Ab6iZVzGCPiRbCKRiDasQHip6EdD/PDKyFvfAJQgg5kVfB/VoieT0MQojxE1G9UG/7otWS0A7pPkrb7DM/Ppcp+mAAM/bFGEmL4RL8gVDjI8JWOZ0bEjvhSahO0CXXsLMZWZYegREIMV4jaoHTJyNJJLfC7RCdoOm6sxGVyKAeeBegoU6l0XmLiXlwAqp1o4w7j3d1AwW9YdtnNrnQzkOXLddyfAPHv8Ey6ABpd8N88In2QqHwymfARC5mCrAH0i6qGDr9jk3fbNgFz8A1DkwIS7tDpSVwGdLcexIfPZhPHpf2wS+wRX9a/dPGUakLzBdwNgGJRlQBJtgMw5aJ3qr8TLYUmwVHwXXxZTUiwphvHYxDUnzPxIA5CdXa4E5SVa3fyUhkRtYqpSKbNYxpJiq+ncpDJar7GGlknvcl5mqM05BZH4Xl3iOLpLh7j7OR6MScSzAykplg20QIWA0PDSG+RuTdQVy8sNXP9DgK5N4jK9AvkRpfI4sYF/c2836mQl0nQ4zce66AfZFkTMqYl2DGaSMt/CYOHpsuaPco5bLUzUuMGkLHaQ+ovjwZUZrVdpAHRnnw/Bd5MrJCiY62t4x2+E2uBfkfRg95TdSkK8/LJ7JWF83+Nb5Ww0Zf+E3OviwXVMgT8dLwVRsKEd0A+uP8biMlH01MHAYVF/Oh2lCJenkDqpbUN9nPyzU91QnCRbyEPEXn1sQhxMv7tG1T7cW3rK/r44eVtxfxm6gwBh38zJqPJuUtXu3Z/wLwuBaBLgMkKwAAAABJRU5ErkJggg==" + webUI["web/public/img/mapping.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wOC0wMlQxMjowODo5NzwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CpRxQsEAAAJLSURBVGgF7VoxTgMxEMwBHWlAaeABVCEtBcoD+EBewCdCyQsQtLyAPCBvCBSRIBUPCF1ogqBJjlkrezGr6HTrO98lhy1Z9trr2VmvnbMNjUadUhzHLeQB8hw5LS3QOUbubvIf7X3kKXIZibgS51bCZdWgMT6D8nECgArkngagQN0B8dhbkblalVmLIyheCGUthhjuLBq77MihA0xTjHHBEBBOorHLjjghbNOg4Mg2RYO4hIiEiHiaAV5aSwf8hRgjZdHtTTTc2ZFXpZkY+hMx5k3IZYlr7jgudJHp2JElLaF0K1mirYn8nAWgQB3ibM59ERNCA52d6Nghv9isQiUtn0kURe92I9eBcYA6YZxym8dyDuwRuMw82gjQYQbsPdLDdNCROO0US3uEfp3usTZpjf5J2CNtNFwjl7FHvmBnCB5PCQkQoJudJtGvE23sJEFuI39rQArS7dskXK6nlwkAKiB1VxAxLcyUePAH8cQmlbEul4+UM8LkVjPc2ZHcaFUDBEeqjoC0HyIiZ6RqOUSk6ghI+xyRD9mRQTYfIktPylaX16rhzo48KE29QH8kxjxC/hFtZYiGe70OjWVMW7Dx32bA3iO7//iAC8DOPweZFQhH6O+CmkRvW2f28oV8owEoUHdMPPg70rFJZajTkqT7uZ3ObaHEuuHOjnCpsb8vlKUsur2JhruLA94Y5QEOjuSZPR9jQ0R8zGoezNpFhN5RtUm+/bpgaG1u0jd2OSLDTRopbZ/okxcrLUYKvKprbRfHhXr8m5PK/y1V/gWRKLfiNSmxEAAAAABJRU5ErkJggg==" + webUI["web/public/img/xmltv.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wNy0yOFQyMDowNzozMzwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Co6j9bsAAAGgSURBVGgF7VqxTsNADL0gYGEon8DOwsbAAH8BYmJn6cYIn8DC3h0+oixISFRiYYCJL0AwMMBAeK5w2rpV6uikxHfYknW98+vds18TK21DWGBlWR7CH+BfcEv2AzLP8HP42gLqkyUATuEp2PWEdQjF9ATs1zF/g29Mrxt+vVcUxR3xWxEktzFPJQmivsv8ZSI9DiQyVnxlIonwn6fpiczXpNuVVXH8O+a3Ys3y9NUyuf/NTTbEHZTjUlGSRzSiPhroUIENwB4AS/vS/susDwDhTpYBER9g7wHh5DWyibV9CiitCZbIafDEYUuJHQI3Nr/9ciWsjK6IFSWYhyvClbAyZqOIlYJG84jq7E1Ot97Zm+TinV1TrWwudk9EI3ebGFekzWprzspGEU2ySWCiOrs/s9dr7M/s9fVJJJrNXcsTsfaJc0WsKZINH+/sf1Jqvl1n1f2ZnStRN/pdq646XcSkIh9dkIg4s+IrE3nCpp8RG7f91ns+cCYR/LD4jcAZB42PN+A7/mcQ8ZxJhBYQvMJwBB/BKTFLVoLMC/wCfgyv7BesTKUC2LKM3wAAAABJRU5ErkJggg==" + webUI["web/public/js/version_check.js"] = "dmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7CiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0KICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH0KICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9CiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0KICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7CiAgICB9KTsKfTsKZnVuY3Rpb24gZ2V0TmV3ZXN0UmVsZWFzZUZyb21HaXRodWIoKSB7CiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgewogICAgICAgIHlpZWxkIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7CiAgICAgICAgaWYgKFNFUlZFUi5jbGllbnRJbmZvKSB7CiAgICAgICAgICAgIC8qaWYgKFNFUlZFUi5jbGllbnRJbmZvLmJldGEpIHsKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9Ki8KICAgICAgICAgICAgY29uc3QgcmVsZWFzZXNEYXRhID0geWllbGQgZ2V0UmVsZWFzZXMoKTsKICAgICAgICAgICAgaWYgKHJlbGVhc2VzRGF0YSkgewogICAgICAgICAgICAgICAgY29uc3QgcmVsZWFzZXMgPSByZWxlYXNlc0RhdGEubWFwKChyZWxlYXNlKSA9PiAoewogICAgICAgICAgICAgICAgICAgIHRhZ19uYW1lOiByZWxlYXNlLnRhZ19uYW1lLAogICAgICAgICAgICAgICAgICAgIHByZXJlbGVhc2U6IHJlbGVhc2UucHJlcmVsZWFzZSwKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gcGFyc2VWZXJzaW9uKFNFUlZFUi5jbGllbnRJbmZvLnZlcnNpb24pOwogICAgICAgICAgICAgICAgdmFyIGxhdGVzdEF2YWlsYWJsZVZlcnNpb247CiAgICAgICAgICAgICAgICBpZiAoU0VSVkVSLmNsaWVudEluZm8uYmV0YSkgewogICAgICAgICAgICAgICAgICAgIGxhdGVzdEF2YWlsYWJsZVZlcnNpb24gPSByZWxlYXNlcy5maW5kKHJlbGVhc2UgPT4gcmVsZWFzZS5wcmVyZWxlYXNlID09IHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGF0ZXN0QXZhaWxhYmxlVmVyc2lvbiA9IHJlbGVhc2VzLmZpbmQocmVsZWFzZSA9PiByZWxlYXNlLnByZXJlbGVhc2UgPT0gZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgbGF0ZXN0UmVsZWFzZVZlcnNpb24gPSBwYXJzZVZlcnNpb24obGF0ZXN0QXZhaWxhYmxlVmVyc2lvbi50YWdfbmFtZSk7CiAgICAgICAgICAgICAgICBpZiAoaXNOZXdlclZlcnNpb24obGF0ZXN0UmVsZWFzZVZlcnNpb24sIGN1cnJlbnRWZXJzaW9uKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3RpZmljYXRpb25fY29udGFpbnRlcicpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhbm5lclRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9uX3RleHQnKTsKICAgICAgICAgICAgICAgICAgICBiYW5uZXJUZXh0LmlubmVySFRNTCA9ICd7ey5ub3RpZmljYXRpb24udXBkYXRlQXZhaWxhYmxlfX0nOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nsb3NlTm90aWZpY2F0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwZGF0ZU5vd0J1dHRvbicpOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1dHRvbi52YWx1ZSA9ICd7ey5idXR0b24udXBkYXRlfX0nOwogICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhbm5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1dHRvbi52YWx1ZSA9ICd7ey5idXR0b24udXBkYXRpbmd9fSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoInVwZGF0ZVRocmVhZGZpbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVxdWVzdChuZXcgT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwMCk7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBiYW5uZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgZmV0Y2hpbmcgcmVsZWFzZXMgb3Igbm8gcmVsZWFzZXMgZm91bmQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfQpmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbikgewogICAgLy8gVE9ETzogSW1wcm92ZSB2ZXJzaW9uIHBhcnNpbmcKICAgIGNvbnN0IHJlZ2V4ID0gL152PyhcZCspXC4oXGQrKSg/OlwuKFxkKykpPyg/OlwuKFxkKykpPyg/OiBcKChcZCspKD86LShcdyspKT9cKSk/KD86LShcdyspKT8kLzsKICAgIGNvbnN0IG1hdGNoID0gdmVyc2lvbi5tYXRjaChyZWdleCk7CiAgICBpZiAobWF0Y2gpIHsKICAgICAgICBjb25zdCBtYWpvciA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7CiAgICAgICAgY29uc3QgbWlub3IgPSBwYXJzZUludChtYXRjaFsyXSwgMTApOwogICAgICAgIGNvbnN0IHBhdGNoID0gbWF0Y2hbM10gPyBwYXJzZUludChtYXRjaFszXSwgMTApIDogKG1hdGNoWzRdID8gcGFyc2VJbnQobWF0Y2hbNF0sIDEwKSA6IDApOyAvLyBEZWZhdWx0IHRvIDAgaWYgcGF0Y2ggaXMgbm90IHByZXNlbnQKICAgICAgICBjb25zdCBidWlsZCA9IG1hdGNoWzRdID8gcGFyc2VJbnQobWF0Y2hbNF0sIDEwKSA6IChtYXRjaFs1XSA/IHBhcnNlSW50KG1hdGNoWzVdLCAxMCkgOiAwKTsgLy8gRGVmYXVsdCB0byAwIGlmIHBhdGNoIGlzIG5vdCBwcmVzZW50CiAgICAgICAgcmV0dXJuIFttYWpvciwgbWlub3IsIHBhdGNoLCBidWlsZF07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmVyc2lvbiBmb3JtYXQiKTsKICAgIH0KfQpmdW5jdGlvbiBpc05ld2VyVmVyc2lvbihsYXRlc3QsIGN1cnJlbnQpIHsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGF0ZXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGxhdGVzdFtpXSA+IGN1cnJlbnRbaV0pCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGlmIChsYXRlc3RbaV0gPCBjdXJyZW50W2ldKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KZnVuY3Rpb24gZ2V0UmVsZWFzZXMoKSB7CiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZmV0Y2goJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvbWFyY2VsR29lcmVudHovVGhyZWFkZmluL3JlbGVhc2VzJyk7CiAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZmV0Y2hpbmcgcmVsZWFzZXMuIFN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgcmVsZWFzZXMgPSB5aWVsZCByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIHJldHVybiByZWxlYXNlczsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlbGVhc2VzOicsIGVycm9yKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfSk7Cn0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbl9jaGVjay5qcy5tYXA=" + webUI["web/public/js/version_check.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbl9jaGVjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy92ZXJzaW9uX2NoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQWUsMEJBQTBCOztRQUVyQyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCOztlQUVHO1lBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztZQUN6QyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNmLE1BQU0sUUFBUSxHQUFjLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzVELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDMUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2lCQUNqQyxDQUFDLENBQUMsQ0FBQztnQkFFSixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxzQkFBK0IsQ0FBQztnQkFDcEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN6QixzQkFBc0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDbEYsQ0FBQztxQkFBTSxDQUFDO29CQUNKLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDO2dCQUNuRixDQUFDO2dCQUNELE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDLHNC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" + webUI["web/public/lang/en.json"] = "ew0KICAibWFpbk1lbnUiOiB7DQogICAgIml0ZW0iOiB7DQogICAgICAicGxheWxpc3QiOiAiUGxheWxpc3QiLA0KICAgICAgInBtc0lEIjogIlBNUyBJRCIsDQogICAgICAiZmlsdGVyIjogIkZpbHRlciIsDQogICAgICAieG1sdHYiOiAiWE1MVFYiLA0KICAgICAgIm1hcHBpbmciOiAiTWFwcGluZyIsDQogICAgICAidXNlcnMiOiAiVXNlcnMiLA0KICAgICAgInNldHRpbmdzIjogIlNldHRpbmdzIiwNCiAgICAgICJsb2ciOiAiTG9nIiwNCiAgICAgICJsb2dvdXQiOiAiTG9nb3V0Ig0KICAgIH0sDQogICAgImhlYWRsaW5lIjogew0KICAgICAgInBsYXlsaXN0IjogIkxvY2FsIG9yIHJlbW90ZSBwbGF5bGlzdHMiLA0KICAgICAgImZpbHRlciI6ICJGaWx0ZXIgcGxheWxpc3QiLA0KICAgICAgInhtbHR2IjogIkxvY2FsIG9yIHJlbW90ZSBYTUxUViBmaWxlcyIsDQogICAgICAibWFwcGluZyI6ICJNYXAgcGxheWxpc3QgY2hhbm5lbHMgdG8gRVBHIGNoYW5uZWxzIiwNCiAgICAgICJ1c2VycyI6ICJVc2VyIG1hbmFnZW1lbnQiLA0KICAgICAgInNldHRpbmdzIjogIlNldHRpbmdzIiwNCiAgICAgICJsb2ciOiAiTG9nIiwNCiAgICAgICJsb2dvdXQiOiAiTG9nb3V0Ig0KICAgIH0NCiAgfSwNCiAgImNvbmZpcm0iOiB7DQogICAgInJlc3RvcmUiOiAiQWxsIGRhdGEgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRob3NlIGZyb20gdGhlIGJhY2t1cC4gU2hvdWxkIHRoZSBmaWxlcyBiZSByZXN0b3JlZD8iDQogIH0sDQogICJhbGVydCI6IHsNCiAgICAiZmlsZUxvYWRpbmdFcnJvciI6ICJGaWxlIGNvdWxkbid0IGJlIGxvYWRlZCIsDQogICAgImludmFsaWRDaGFubmVsTnVtYmVyIjogIkludmFsaWQgY2hhbm5lbCBudW1iZXIiLA0KICAgICJtaXNzaW5nSW5wdXQiOiAiTWlzc2luZyBpbnB1dCINCiAgfSwNCiAgImJ1dHRvbiI6IHsNCiAgICAiYmFjayI6ICJCYWNrIiwNCiAgICAiYmFja3VwIjogIkJhY2t1cCIsDQogICAgImJ1bGtFZGl0IjogIkJ1bGsgRWRpdCIsDQogICAgImNhbmNlbCI6ICJDYW5jZWwiLA0KICAgICJkZWxldGUiOiAiRGVsZXRlIiwNCiAgICAiZG9uZSI6ICJEb25lIiwNCiAgICAibG9naW4iOiAiTG9naW4iLA0KICAgICJuZXciOiAiTmV3IiwNCiAgICAibmV4dCI6ICJOZXh0IiwNCiAgICAicmVzdG9yZSI6ICJSZXN0b3JlIiwNCiAgICAic2F2ZSI6ICJTYXZlIiwNCiAgICAic2VhcmNoIjogIlNlYXJjaCIsDQogICAgInVwZGF0ZSI6ICJVcGRhdGUiLA0KICAgICJ1cGRhdGluZyI6ICJVcGRhdGluZy4uLiIsDQogICAgImNyYWV0ZUFjY291bnQiOiAiQ3JlYXRlIEFjY291bnQiLA0KICAgICJyZXNldExvZ3MiOiAiUmVzZXQgTG9ncyIsDQogICAgInVwbG9hZExvZ28iOiAiVXBsb2FkIExvZ28iLA0KICAgICJ1cGxvYWRDdXN0b21JbWFnZSI6ICJVcGxvYWQgY3VzdG9tIGltYWdlIiwNCiAgICAic29ydENoYW5uZWxzQWxwaGEiOiAiU29ydCBDaGFubmVscyBBbHBoYWJldGljYWxseSIsDQogICAgInNvcnRDaGFubmVsTnVtYmVycyI6ICJTb3J0IENoYW5uZWxzIg0KICB9LA0KICAiZmlsdGVyIjogew0KICAgICJ0YWJsZSI6IHsNCiAgICAgICJuYW1lIjogIkZpbHRlciBOYW1lIiwNCiAgICAgICJ0eXBlIjogIkZpbHRlciBUeXBlIiwNCiAgICAgICJmaWx0ZXIiOiAiRmlsdGVyIg0KICAgIH0sDQogICAgImN1c3RvbSI6ICJDdXN0b20iLA0KICAgICJncm91cCI6ICJHcm91cCIsDQogICAgIm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiRmlsdGVyIE5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZpbHRlciBuYW1lIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAic3RhcnRpbmdudW1iZXIiOiB7DQogICAgICAidGl0bGUiOiAiRmlsdGVyIFN0YXJ0aW5nIE51bWJlciIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiRmlsdGVyIFN0YXJ0aW5nIE51bWJlciIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiU3RhcnRpbmcgQ2hhbm5lbCBOdW1iZXIgdG8gdXNlIGZvciB0aGlzIEdyb3VwIEZpbHRlciAoRGVmYXVsdCBpcyAxMDAwKSINCiAgICB9LA0KICAgICJjYXRlZ29yeSI6IHsNCiAgICAgICJ0aXRsZSI6ICJGaWx0ZXIgQ2F0ZWdvcnkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZpbHRlciBDYXRlZ29yeSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRmlsdGVyIENhdGVnb3J5IHNldHMgYWxsIGNoYW5uZWxzIGluIHRoZSBmaWx0ZXIgdG8gYSBzcGVjaWZpYyBjYXRlZ29yeSAobmV3cywgc3BvcnRzLCBldGMpIg0KICAgIH0sDQogICAgImRlc2NyaXB0aW9uIjogew0KICAgICAgInRpdGxlIjogIkRlc2NyaXB0aW9uIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJEZXNjcmlwdGlvbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInR5cGUiOiB7DQogICAgICAidGl0bGUiOiAiVHlwZSIsDQogICAgICAiZ3JvdXBUaXRsZSI6ICJHcm91cCBUaXRsZSIsDQogICAgICAiY3VzdG9tRmlsdGVyIjogIkN1c3RvbSBGaWx0ZXIiDQogICAgfSwNCiAgICAiY2FzZVNlbnNpdGl2ZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJDYXNlIFNlbnNpdGl2ZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiZmlsdGVyUnVsZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJGaWx0ZXIgUnVsZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiU3BvcnQge0hEfSAhe0VTLElUfSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImZpbHRlckdyb3VwIjogew0KICAgICAgInRpdGxlIjogIkdyb3VwIFRpdGxlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlNlbGVjdCBhIE0zVSBncm91cC4gKENvdW50ZXIpPGJyPkNoYW5naW5nIHRoZSBncm91cCB0aXRsZSBpbiB0aGUgTTNVIGludmFsaWRhdGVzIHRoZSBmaWx0ZXIuIg0KICAgIH0sDQogICAgImluY2x1ZGUiOiB7DQogICAgICAidGl0bGUiOiAiSW5jbHVkZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiRkhELFVIRCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQ2hhbm5lbCBuYW1lIG11c3QgaW5jbHVkZS48YnI+KENvbW1hIHNlcGFyYXRlZCkgQ29tbWEgbWVhbnMgb3IiDQogICAgfSwNCiAgICAiZXhjbHVkZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJFeGNsdWRlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJFUyxJVCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQ2hhbm5lbCBuYW1lIG11c3Qgbm90IGNvbnRhaW4uPGJyPihDb21tYSBzZXBhcmF0ZWQpIENvbW1hIG1lYW5zIG9yIg0KICAgIH0NCiAgfSwNCiAgInBsYXlsaXN0Ijogew0KICAgICJ0YWJsZSI6IHsNCiAgICAgICJwbGF5bGlzdCI6ICJQbGF5bGlzdCIsDQogICAgICAidHVuZXIiOiAiVHVuZXIiLA0KICAgICAgImxhc3RVcGRhdGUiOiAiTGFzdCBVcGRhdGUiLA0KICAgICAgImF2YWlsYWJpbGl0eSI6ICJBdmFpbGFiaWxpdHkiLA0KICAgICAgInR5cGUiOiAiVHlwZSIsDQogICAgICAic3RyZWFtcyI6ICJTdHJlYW1zIiwNCiAgICAgICJncm91cFRpdGxlIjogImdyb3VwLXRpdGxlIiwNCiAgICAgICJ0dmdJRCI6ICJ0dmctaWQiLA0KICAgICAgInVuaXF1ZUlEIjogIlVuaXF1ZSBJRCINCiAgICB9LA0KICAgICJwbGF5bGlzdFR5cGUiOiB7DQogICAgICAidGl0bGUiOiAiUGxheWxpc3QgdHlwZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAidHlwZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJUeXBlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJuYW1lIjogew0KICAgICAgInRpdGxlIjogIk5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIlBsYXlsaXN0IG5hbWUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJkZXNjcmlwdGlvbiI6IHsNCiAgICAgICJ0aXRsZSI6ICJEZXNjcmlwdGlvbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiRGVzY3JpcHRpb24iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJmaWxlTTNVIjogew0KICAgICAgInRpdGxlIjogIk0zVSBGaWxlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJGaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBNM1UiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJmaWxlSERIUiI6IHsNCiAgICAgICJ0aXRsZSI6ICJIREhvbWVSdW4gSVAiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIklQIGFkZHJlc3MgYW5kIHBvcnQgKDE5Mi4xNjguMS4xMDo1MDA0KSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInR1bmVyIjogew0KICAgICAgInRpdGxlIjogIlR1bmVyIC8gU3RyZWFtcyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgcGFyYWxsZWwgY29ubmVjdGlvbnMgdGhhdCBjYW4gYmUgZXN0YWJsaXNoZWQgdG8gdGhlIHByb3ZpZGVyLiA8YnI+T25seSBhdmFpbGFibGUgd2l0aCBhY3RpdmF0ZWQgYnVmZmVyLjxicj5OZXcgc2V0dGluZ3Mgd2lsbCBvbmx5IGJlIGFwcGxpZWQgYWZ0ZXIgcXVpdHRpbmcgYWxsIHN0cmVhbXMuIg0KICAgIH0sDQogICAgImh0dHBfcHJveHlfaXAiOiB7DQogICAgICAidGl0bGUiOiAiSFRUUCBQcm94eSBJUCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiMTkyLjE2OC4wLjIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIklQIGFkZHJlc3MgdG8gYmUgdXNlZCBieSBIVFRQIFByb3h5Ig0KICAgIH0sDQogICAgImh0dHBfcHJveHlfcG9ydCI6IHsNCiAgICAgICJ0aXRsZSI6ICJIVFRQIFByb3h5IFBvcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjg4ODgiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnQgdG8gYmUgdXNlZCBieSBIVFRQIFByb3h5Ig0KICAgIH0NCiAgfSwNCiAgInhtbHR2Ijogew0KICAgICJ0YWJsZSI6IHsNCiAgICAgICJndWlkZSI6ICJHdWlkZSIsDQogICAgICAibGFzdFVwZGF0ZSI6ICJMYXN0IFVwZGF0ZSIsDQogICAgICAiYXZhaWxhYmlsaXR5IjogIkF2YWlsYWJpbGl0eSIsDQogICAgICAiY2hhbm5lbHMiOiAiQ2hhbm5lbHMiLA0KICAgICAgInByb2dyYW1zIjogIlByb2dyYW1zIg0KICAgIH0sDQogICAgIm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiTmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiR3VpZGUgbmFtZSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImRlc2NyaXB0aW9uIjogew0KICAgICAgInRpdGxlIjogIkRlc2NyaXB0aW9uIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJEZXNjcmlwdGlvbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImZpbGVYTUxUViI6IHsNCiAgICAgICJ0aXRsZSI6ICJYTUxUViBGaWxlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJGaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBYTUxUViIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImh0dHBfcHJveHlfaXAiOiB7DQogICAgICAidGl0bGUiOiAiSFRUUCBQcm94eSBJUCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiMTkyLjE2OC4wLjIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIklQIGFkZHJlc3MgdG8gYmUgdXNlZCBieSBIVFRQIFByb3h5Ig0KICAgIH0sDQogICAgImh0dHBfcHJveHlfcG9ydCI6IHsNCiAgICAgICJ0aXRsZSI6ICJIVFRQIFByb3h5IFBvcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjg4ODgiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnQgdG8gYmUgdXNlZCBieSBIVFRQIFByb3h5Ig0KICAgIH0NCiAgfSwNCiAgIm1hcHBpbmciOiB7DQogICAgInRhYmxlIjogew0KICAgICAgImNoTm8iOiAiQ2guIE5vLiIsDQogICAgICAibG9nbyI6ICJMb2dvIiwNCiAgICAgICJjaGFubmVsTmFtZSI6ICJDaGFubmVsIE5hbWUiLA0KICAgICAgInBsYXlsaXN0IjogIlBsYXlsaXN0IiwNCiAgICAgICJncm91cFRpdGxlIjogIkdyb3VwIFRpdGxlIiwNCiAgICAgICJ4bWx0dkZpbGUiOiAiWE1MVFYgRmlsZSIsDQogICAgICAieG1sdHZJRCI6ICJYTUxUViBJRCINCiAgICB9LA0KICAgICJhY3RpdmUiOiB7DQogICAgICAidGl0bGUiOiAiQWN0aXZlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJjaGFubmVsTmFtZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJDaGFubmVsIE5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImNoYW5uZWxHcm91cFN0YXJ0Ijogew0KICAgICAgInRpdGxlIjogIkNoYW5uZWwgR3JvdXAgU3RhcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInNvcnRDaGFubmVsc0FscGhhIjogew0KICAgICAgInRpdGxlIjogIlNvcnQgQWxwaGFiZXRpY2FsbHkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInNvcnRDaGFubmVscyI6IHsNCiAgICAgICJ0aXRsZSI6ICJTb3J0IENoYW5uZWxzIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJkZXNjcmlwdGlvbiI6IHsNCiAgICAgICJ0aXRsZSI6ICJDaGFubmVsIERlc2NyaXB0aW9uIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJVc2VkIGJ5IHRoZSBEdW1teSBhcyBhbiBYTUwgZGVzY3JpcHRpb24iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJ1cGRhdGVDaGFubmVsTmFtZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJVcGRhdGUgQ2hhbm5lbCBOYW1lIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJjaGFubmVsTG9nbyI6IHsNCiAgICAgICJ0aXRsZSI6ICJMb2dvIFVSTCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAidXBkYXRlQ2hhbm5lbExvZ28iOiB7DQogICAgICAidGl0bGUiOiAiVXBkYXRlIENoYW5uZWwgTG9nbyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiZXBnQ2F0ZWdvcnkiOiB7DQogICAgICAidGl0bGUiOiAiRVBHIENhdGVnb3J5IiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJtM3VHcm91cFRpdGxlIjogew0KICAgICAgInRpdGxlIjogIkdyb3VwIFRpdGxlICh0aHJlYWRmaW4ubTN1KSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAieG1sdHZGaWxlIjogew0KICAgICAgInRpdGxlIjogIlhNTFRWIEZpbGUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInhtbHR2Q2hhbm5lbCI6IHsNCiAgICAgICJ0aXRsZSI6ICJYTUxUViBDaGFubmVsIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJwcHZleHRyYSI6IHsNCiAgICAgICJ0aXRsZSI6ICJQUFYgRXh0cmEgVGl0bGUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyB3aWxsIGFkZCBjdXN0b20gdGV4dCB0byB0aGUgUHJvZ3JhbW1lIGRhdGEiDQogICAgfSwNCiAgICAiYmFja3VwQ2hhbm5lbDEiOiB7DQogICAgICAidGl0bGUiOiAiQmFja3VwIENoYW5uZWwgMSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiYmFja3VwQ2hhbm5lbDIiOiB7DQogICAgICAidGl0bGUiOiAiQmFja3VwIENoYW5uZWwgMiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiYmFja3VwQ2hhbm5lbDMiOiB7DQogICAgICAidGl0bGUiOiAiQmFja3VwIENoYW5uZWwgMyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiaGlkZUNoYW5uZWwiOiB7DQogICAgICAidGl0bGUiOiAiSGlkZSBCYWNrdXAgQ2hhbm5lbCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfQ0KICB9LA0KICAidXNlcnMiOiB7DQogICAgInRhYmxlIjogew0KICAgICAgInVzZXJuYW1lIjogIlVzZXJuYW1lIiwNCiAgICAgICJwYXNzd29yZCI6ICJQYXNzd29yZCIsDQogICAgICAid2ViIjogIldFQiIsDQogICAgICAicG1zIjogIlBNUyIsDQogICAgICAibTN1IjogIk0zVSIsDQogICAgICAieG1sIjogIlhNTCIsDQogICAgICAiYXBpIjogIkFQSSINCiAgICB9LA0KICAgICJ1c2VybmFtZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJVc2VybmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiVXNlcm5hbWUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJwYXNzd29yZCI6IHsNCiAgICAgICJ0aXRsZSI6ICJQYXNzd29yZCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiUGFzc3dvcmQiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJjb25maXJtIjogew0KICAgICAgInRpdGxlIjogIkNvbmZpcm0iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIlBhc3N3b3JkIGNvbmZpcm0iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJ3ZWIiOiB7DQogICAgICAidGl0bGUiOiAiV2ViIEFjY2VzcyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAicG1zIjogew0KICAgICAgInRpdGxlIjogIlBNUyBBY2Nlc3MiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgIm0zdSI6IHsNCiAgICAgICJ0aXRsZSI6ICJNM1UgQWNjZXNzIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJ4bWwiOiB7DQogICAgICAidGl0bGUiOiAiWE1MIEFjY2VzcyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiYXBpIjogew0KICAgICAgInRpdGxlIjogIkFQSSBBY2Nlc3MiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0NCiAgfSwNCiAgInNldHRpbmdzIjogew0KICAgICJjYXRlZ29yeSI6IHsNCiAgICAgICJnZW5lcmFsIjogIkdlbmVyYWwiLA0KICAgICAgImN1c3RvbWl6YXRpb24iOiAiQ3VzdG9taXphdGlvbiIsDQogICAgICAiZmlsZXMiOiAiRmlsZXMiLA0KICAgICAgIm5ldHdvcmsiOiAiTmV0d29yayIsDQogICAgICAic3RyZWFtaW5nIjogIlN0cmVhbWluZyIsDQogICAgICAiYmFja3VwIjogIkJhY2t1cCIsDQogICAgICAiYXV0aGVudGljYXRpb24iOiAiQXV0aGVudGljYXRpb24iDQogICAgfSwNCiAgICAidXBsb2FkQ3VzdG9tSW1hZ2UiOiB7DQogICAgICAidGl0bGUiOiAiQ3VzdG9tIEltYWdlIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJIZXJlIHlvdSBjYW4gdXBsb2FkIGFuIGltYWdlIHRoYXQgd2lsbCBiZSBzaG93biB0byB1c2VycyB3aGVuIG5vIG1vcmUgdHVuZXJzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHBsYXlsaXN0ISINCiAgICB9LA0KICAgICJ1cGRhdGUiOiB7DQogICAgICAidGl0bGUiOiAiU2NoZWR1bGUgZm9yIHVwZGF0aW5nIChQbGF5bGlzdCwgWE1MVFYsIEJhY2t1cCkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjAwMDAsMTAwMCwyMDAwIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaW1lIGluIDI0IGhvdXIgZm9ybWF0ICgwODAwID0gODowMCBhbSkuIE1vcmUgdGltZXMgY2FuIGJlIGVudGVyZWQgY29tbWEgc2VwYXJhdGVkLiBMZWF2ZSB0aGlzIGZpZWxkIGVtcHR5IGlmIG5vIHVwZGF0ZXMgYXJlIHRvIGJlIGNhcnJpZWQgb3V0LiINCiAgICB9LA0KICAgICJhcGkiOiB7DQogICAgICAidGl0bGUiOiAiQVBJIEludGVyZmFjZSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVmlhIEFQSSBpbnRlcmZhY2UgaXQgaXMgcG9zc2libGUgdG8gc2VuZCBjb21tYW5kcyB0byBUaHJlYWRmaW4uIEFQSSBkb2N1bWVudGF0aW9uIGlzIDxhIGhyZWY9J2h0dHBzOi8vZ2l0aHViLmNvbS9tYXJjZWxHb2VyZW50ei9UaHJlYWRmaW4vd2lraS9BUEknPmhlcmU8L2E+Ig0KICAgIH0sDQogICAgInNzZHAiOiB7DQogICAgICAidGl0bGUiOiAiU1NEUCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiU1NEUCBpcyBhIG5ldHdvcmsgcHJvdG9jb2wgZm9yIHNlcnZpY2UgZGlzY292ZXJ5LiBJdCBpcyB1c2VkIGZvciB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBvZiBUaHJlYWRmaW4gaW4gdGhlIG5ldHdvcmsuIg0KICAgIH0sDQogICAgImR1bW15Ijogew0KICAgICAgInRpdGxlIjogIkVuYWJsZSBEZWZhdWx0IER1bW15IERhdGEiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIldoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgbWFwIGluYWN0aXZlIGNoYW5uZWxzIHRvIHRoZSBkdW1teSBkYXRhIGNoYW5uZWwgYmVsb3cuIFVzZSB0aGlzIHRvIGtlZXAgTGl2ZSBFdmVudCBjaGFubmVscyBhY3RpdmUuIg0KICAgIH0sDQogICAgImR1bW15Q2hhbm5lbCI6IHsNCiAgICAgICJ0aXRsZSI6ICJEdW1teSBEYXRhIENoYW5uZWwiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlNlbGVjdCB0aGUgZGVmYXVsdCBjaGFubmVsIHRvIHVzZSB3aGVuIG1hcHBpbmcgaW5hY3RpdmUgY2hhbm5lbHMgdG8gdGhlIGR1bW15IGRhdGEuIg0KICAgIH0sDQogICAgImlnbm9yZUZpbHRlcnMiOiB7DQogICAgICAidGl0bGUiOiAiSWdub3JlIEZpbHRlcnMiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIklmIGNoZWNrZWQsIGZpbHRlcmluZyBpcyBjb21wbGV0ZWx5IGlnbm9yZWQuIg0KICAgIH0sDQogICAgImVwZ1NvdXJjZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJFUEcgU291cmNlIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQTVM6PGJyPi0gVXNlIEVQRyBkYXRhIGZyb20gUGxleCwgRW1ieSBvciBKZWxseWZpbiA8YnI+PGJyPlhFUEc6PGJyPi0gVXNlIG9mIG9uZSBvciBtb3JlIFhNTFRWIGZpbGVzPGJyPi0gQ2hhbm5lbCBtYW5hZ2VtZW50PGJyPi0gTTNVIC8gWE1MVFYgZXhwb3J0IChIVFRQIGxpbmsgZm9yIElQVFYgYXBwcykiDQogICAgfSwNCiAgICAidHVuZXIiOiB7DQogICAgICAidGl0bGUiOiAiTnVtYmVyIG9mIFR1bmVycyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHBhcmFsbGVsIGNvbm5lY3Rpb25zIHRoYXQgY2FuIGJlIGVzdGFibGlzaGVkIHRvIHRoZSBwcm92aWRlci48YnI+QXZhaWxhYmxlIGZvcjogUGxleCwgRW1ieSwgSmVsbHlmaW4sIE0zVSAod2l0aCBhY3RpdmUgYnVmZmVyKS48YnI+QWZ0ZXIgYSBjaGFuZ2UsIFRocmVhZGZpbiBtdXN0IGJlIGRlbGV0ZSBpbiB0aGUgUGxleCAvIEVtYnkgLyBKZWxseWZpbiBEVlIgc2V0dGluZ3MgYW5kIHNldCB1cCBhZ2Fpbi4iDQogICAgfSwNCiAgICAiZmlsZXNVcGRhdGUiOiB7DQogICAgICAidGl0bGUiOiAiVXBkYXRlcyBhbGwgZmlsZXMgYXQgc3RhcnR1cCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVXBkYXRlcyBhbGwgcGxheWxpc3RzLCB0dW5lciBhbmQgWE1MVFYgZmlsZXMgYXQgc3RhcnR1cC4iDQogICAgfSwNCiAgICAiY2FjaGVJbWFnZXMiOiB7DQogICAgICAidGl0bGUiOiAiSW1hZ2UgQ2FjaGluZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBvcHRpb24gd2lsbCByZXdyaXRlIHRoZSBtM3UgZmlsZSB0byBsb2NhbCBpbWFnZSBjYWNoZSBmb3IgdHYgbG9nb3MuPGJyPkFsbCBpbWFnZXMgZnJvbSB0aGUgWE1MVFYgZmlsZSBhcmUgY2FjaGVkLCBhbGxvd2luZyBmYXN0ZXIgcmVuZGVyaW5nIG9mIHRoZSBncmlkIGluIHRoZSBjbGllbnQuPGJyPkRvd25sb2FkaW5nIHRoZSBpbWFnZXMgbWF5IHRha2UgYSB3aGlsZSBhbmQgd2lsbCBiZSBkb25lIGluIHRoZSBiYWNrZ3JvdW5kLjxicj4iDQogICAgfSwNCiAgICAicmVwbGFjZUVtcHR5SW1hZ2VzIjogew0KICAgICAgInRpdGxlIjogIlJlcGxhY2UgbWlzc2luZyBwcm9ncmFtIGltYWdlcyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIHBvc3RlciBpbiB0aGUgWE1MVFYgcHJvZ3JhbSBpcyBtaXNzaW5nLCB0aGUgY2hhbm5lbCBsb2dvIHdpbGwgYmUgdXNlZC4iDQogICAgfSwNCiAgICAicmVwbGFjZUNoYW5uZWxUaXRsZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJSZXBsYWNlIFBQViBjaGFubmVscyB0aXRsZS9kZXNjIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJVc2UgdGhpcyBpZiB5b3VyIHByb3ZpZGVyIG1hcHMgdGhlIFBQViBldmVudCBuYW1lIHRvIHRoZSBjaGFubmVsIG5hbWUiDQogICAgfSwNCiAgICAiVGhyZWFkZmluQXV0b1VwZGF0ZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJBdXRvbWF0aWMgdXBkYXRlIG9mIFRocmVhZGZpbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiSWYgYSBuZXcgdmVyc2lvbiBvZiBUaHJlYWRmaW4gaXMgYXZhaWxhYmxlLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLiBUaGUgdXBkYXRlcyBhcmUgZG93bmxvYWRlZCBmcm9tIEdpdEh1Yi4iDQogICAgfSwNCiAgICAic3RyZWFtQnVmZmVyaW5nIjogew0KICAgICAgInRpdGxlIjogIlN0cmVhbSBCdWZmZXIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkZ1bmN0aW9ucyBvZiB0aGUgYnVmZmVyOjxicj4tIFRoZSBzdHJlYW0gaXMgcGFzc2VkIGZyb20gRkZtcGVnLCBWTEMgb3IgVGhyZWFkZmluIHRvIFBsZXgsIEVtYnksIEplbGx5ZmluIG9yIE0zVSBQbGF5ZXI8YnI+LSBTbWFsbCBqZXJraW5nIG9mIHRoZSBzdHJlYW1zIGNhbiBiZSBjb21wZW5zYXRlZDxicj4tIEhMUyAvIE0zVTggc3VwcG9ydDxicj4tIFJUUCAvIFJUUFMgc3VwcG9ydDxicj4tIFJlLXN0cmVhbWluZzxicj4tIFNlcGFyYXRlIHR1bmVyIGxpbWl0IGZvciBlYWNoIHBsYXlsaXN0IiwNCiAgICAgICJpbmZvX2ZhbHNlIjogIk5vIEJ1ZmZlciAoQ2xpZW50IGNvbm5lY3RzIGRpcmVjdGx5IHRvIHRoZSBzdHJlYW1pbmcgc2VydmVyKSIsDQogICAgICAiaW5mb19mZm1wZWciOiAiRkZtcGVnIGNvbm5lY3RzIHRvIHRoZSBzdHJlYW1pbmcgc2VydmVyIiwNCiAgICAgICJpbmZvX3ZsYyI6ICJWTEMgY29ubmVjdHMgdG8gdGhlIHN0cmVhbWluZyBzZXJ2ZXIiLA0KICAgICAgImluZm9fdGhyZWFkZmluIjogIlRocmVhZGZpbiBjb25uZWN0cyB0byB0aGUgc3RyZWFtaW5nIHNlcnZlciINCiAgICB9LA0KICAgICJ1ZHB4eSI6IHsNCiAgICAgICJ0aXRsZSI6ICJVRFB4eSBhZGRyZXNzIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgYWRkcmVzcyBvZiB5b3VyIFVEUHh5IHNlcnZlci4gSWYgc2V0LCBhbmQgdGhlIGNoYW5uZWwgVVJMcyBpbiB0aGUgbTN1IGlzIG11bHRpY2FzdCwgVGhyZWFkZmluIHdpbGwgcmV3cml0ZSBpdCBzbyB0aGF0IGl0IGlzIGFjY2Vzc2VkIHZpYSB0aGUgVURQeHkgc2VydmljZS4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogImhvc3Q6cG9ydCINCiAgICB9LA0KICAgICJmZm1wZWdQYXRoIjogew0KICAgICAgInRpdGxlIjogIkZGbXBlZyBCaW5hcnkgUGF0aCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiUGF0aCB0byBGRm1wZWcgYmluYXJ5LiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3BhdGgvdG8vZmZtcGVnIg0KICAgIH0sDQogICAgImZmbXBlZ09wdGlvbnMiOiB7DQogICAgICAidGl0bGUiOiAiRkZtcGVnIE9wdGlvbnMiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkZGbXBlZyBvcHRpb25zLjxicj5Pbmx5IGNoYW5nZSBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuPGJyPkxlYXZlIGJsYW5rIHRvIHNldCBkZWZhdWx0IHNldHRpbmdzLiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiTGVhdmUgYmxhbmsgdG8gc2V0IGRlZmF1bHQgc2V0dGluZ3MiDQogICAgfSwNCiAgICAidmxjUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJWTEMgLyBDVkxDIEJpbmFyeSBQYXRoIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQYXRoIHRvIFZMQyAvIENWTEMgYmluYXJ5LiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3BhdGgvdG8vY3ZsYyINCiAgICB9LA0KICAgICJ2bGNPcHRpb25zIjogew0KICAgICAgInRpdGxlIjogIlZMQyAvIENWTEMgT3B0aW9ucyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVkxDIC8gQ1ZMQyBvcHRpb25zLjxicj5Pbmx5IGNoYW5nZSBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuPGJyPkxlYXZlIGJsYW5rIHRvIHNldCBkZWZhdWx0IHNldHRpbmdzLiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiTGVhdmUgYmxhbmsgdG8gc2V0IGRlZmF1bHQgc2V0dGluZ3MiDQogICAgfSwNCiAgICAiYnVmZmVyU2l6ZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJCdWZmZXIgU2l6ZSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQnVmZmVyIHNpemUgaW4gTUIuPGJyPk0zVTg6IElmIHRoZSBUUyBzZWdtZW50IHNtYWxsZXIgdGhlbiB0aGUgYnVmZmVyIHNpemUsIHRoZSBmaWxlIHNpemUgb2YgdGhlIHNlZ21lbnQgaXMgdXNlZC4iDQogICAgfSwNCiAgICAic3RvcmVCdWZmZXJJblJBTSI6DQogICAgew0KICAgICAgInRpdGxlIjogIlN0b3JlIGJ1ZmZlciBpbiBSQU0iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIklmIGNoZWNrZWQsIHdyaXRlIGJ1ZmZlciB0byBSQU0gaW5zdGVhZCBvZiB3cml0aW5nIHRvIGRpc2siDQogICAgfSwNCiAgICAiYXV0b1JlY29ubmVjdCI6ew0KICAgICAgInRpdGxlIjogIkF1dG9tYXRpYyByZWNvbm5lY3QgdG8gc3RyZWFtIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJJZiBjaGVja2VkLCB0aGUgYnVmZmVyIHdpbGwgYXV0b21hdGljYWxseSByZWNvbm5lY3QgdG8gc3RyZWFtIg0KICAgIH0sDQogICAgIm9taXRQb3J0cyI6DQogICAgew0KICAgICAgInRpdGxlIjogIk9taXQgcG9ydCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQnkgYWN0aXZhdGluZyB0aGlzIGNoZWNrYm94IHRoZSBtM3UgZmlsZSB3aWxsIG5vdCBjb250YWluIHRoZSBwb3J0IGluIHRoZSB1cmwiDQogICAgfSwNCiAgICAiYmluZGluZ0lQcyIgOg0KICAgIHsNCiAgICAgICJ0aXRsZSI6ICJCaW5kaW5nIElQKHMpIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJCeSBjbGlja2luZyBvbiB0aGUgaW5wdXQgYSBkaWFsb2d1ZSB3aWxsIG9wZW4gd2hlcmUgeW91IGNhbiBzZWxlY3QgdGhlIElQKHMpPGJyPlBsZWFzZSBub3RlIHRoYXQgdGhlc2UgYXJlIGFsc28gdGhlIERWUiBJUHM8YnI+Q2hhbmdpbmcgdGhpcyBvcHRpb24gYW5kIHNhdmluZyB0aGUgc2V0dGluZ3Mgd2lsbCBleGl0IHRoZSBwcm9ncmFtITxicj5Zb3UgbmVlZCB0byByZXN0YXJ0IGl0IGlmIHlvdSBkaWRuJ3QgY29uZmlndXJlZCBhbiBhdXRvbWF0aWNhbCByZXN0YXJ0ISINCiAgICB9LA0KICAgICJmb3JjZUh0dHBzIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiRm9yY2UgSFRUUFMgdG8gVXBzdHJlYW0gc2VydmVyIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJXaGVuIHRoaXMgY2hlY2tib3ggaXMgYWN0aXZhdGVkIFRocmVhZGZpbiB3aWxsIGJlIGZvcmNlZCB0byB1c2UgSFRUUFMgY29ubmVjdGlvbiB0byB1cHN0cmVhbSBzZXJ2ZXIgPGJyPlRoaXMgaXMgbm90IHJlY29tbWVuZGVkIGFzIHRoZSBnaXZlbiB1cmxzIHdpbGwgYmUgcmV3cml0dGVuIHRvIGh0dHBzIHVybHMsIHRoaXMgY2FuIGxlYWQgdG8gNDA0IEhUVFAgRXJyb3IgQ29kZXM8L2JyPiINCiAgICB9LA0KICAgICJ1c2VIdHRwcyI6DQogICAgew0KICAgICAgInRpdGxlIjogIlVzZSBIVFRQUyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlIEhUVFBTIHByb3RvY29sIGZvciBUaHJlYWRmaW4sIEhUVFBTIFBvcnQgbmVlZHMgdG8gYmUgc2V0LCBvdGhlcndpc2UgdGhlIDQ0MyB3aWxsIGJlIHVzZWQhPGJyPkFsc28gbWFrZSBzdXJlIHRoYXQgc2VydmVyLmNydCBhbmQgc2VydmVyLmtleSBhcmUgcGxhY2VkIGluIHRoZSBjb25maWcgZm9sZGVyITxicj5UaGUga2V5IGZpbGUgbmVlZHMgdG8gYmUgdW5lbmNyeXB0ZWQhIg0KICAgIH0sDQogICAgImZvcmNlQ2xpZW50SHR0cHMiOg0KICAgIHsNCiAgICAgICJ0aXRsZSI6ICJGb3JjZSBjbGllbnQgdG8gdXNlIGh0dHBzIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJBbGwgVVJMcyB0byB0aGlzIHRocmVhZGZpbiBpbnN0YW5jZSB3aWxsIGJlIHN0YXJ0aW5nIHdpdGggaHR0cHMiDQogICAgfSwNCiAgICAidGhyZWFkZmluRG9tYWluIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiVGhyZWFkZmluIERvbWFpbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2hlbiBub3QgZW1wdHksIHRoaXMgd2lsbCByZXdyaXRlIHRoZSBVUkxzIGluIHRoZSBuZXcgbTN1IHRvIGEgRlFETi48YnI+SXQgd2lsbCBhbHNvIHJld3JpdGUgdGhlIHNob3duIERWUiBJUCBpbiB0aGUgc2VydmVyIGluZm8gZGlhbG9ndWUuPGJyPkRvIE5PVCBpbmNsdWRlIGh0dHAgKGV4OiBzb21lZG9tYWluLmNvbSk8L2JyPiINCiAgICB9LA0KICAgICJlbmFibGVOb25Bc2NpaSI6DQogICAgew0KICAgICAgInRpdGxlIjogIkVuYWJsZSBOb24tQVNDSUkiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIklmIGNoZWNrZWQsIHdpbGwgYWxsb3cgc3BlY2lhbCBub24gYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgTTNVIGFuZCBFUEcuIERlZmF1bHQgaXMgZGlzYWJsZWQiDQogICAgfSwNCiAgICAiZXBnQ2F0ZWdvcmllcyI6DQogICAgew0KICAgICAgInRpdGxlIjogIkVQRyBDYXRlZ29yaWVzIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJDdXN0b21pemUgdGhlIEVQRyBDYXRlZ29yaWVzLiBUaGUgZm9ybWF0IGlzIGtleTp2YWx1ZXxrZXk6dmFsdWUsIHNvIE5ld3M6bmV3c3xTcG9ydHM6c3BvcnRzfE1vdmllczptb3ZpZXMiDQogICAgfSwNCiAgICAiZXBnQ2F0ZWdvcmllc0NvbG9ycyI6DQogICAgew0KICAgICAgInRpdGxlIjogIkVQRyBDYXRlZ29yaWVzIENvbG9ycyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQ3VzdG9taXplIHRoZSBFUEcgQ2F0ZWdvcnkgY29sb3JzLiBUaGUgZm9ybWF0IGlzIHZhbHVlOmNvbG9yfHZhbHVlOmNvbG9yLCBzbyBuZXdzOnRvbWF0b3xzcG9ydHM6eWVsbG93Z3JlZW58bW92aWVzOnJveWFsYmx1ZSINCiAgICB9LA0KICAgICJidWZmZXJUaW1lb3V0Ijogew0KICAgICAgInRpdGxlIjogIlRpbWVvdXQgZm9yIG5ldyBjbGllbnQgY29ubmVjdGlvbnMiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBUaHJlYWRmaW4gYnVmZmVyIHdhaXRzIHVudGlsIG5ldyBjbGllbnQgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkLiBIZWxwZnVsIGZvciBmYXN0IGNoYW5uZWwgc3dpdGNoaW5nLiBWYWx1ZSBpbiBtaWxsaXNlY29uZHMuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIxMDAiDQogICAgfSwNCiAgICAidXNlckFnZW50Ijogew0KICAgICAgInRpdGxlIjogIlVzZXIgQWdlbnQiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlVzZXIgQWdlbnQgZm9yIEhUVFAgcmVxdWVzdHMuIEZvciBldmVyeSBIVFRQIGNvbm5lY3Rpb24sIHRoaXMgdmFsdWUgaXMgdXNlZCBmb3IgdGhlIHVzZXIgYWdlbnQuIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgaWYgVGhyZWFkZmluIGlzIGJsb2NrZWQuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJUaHJlYWRmaW4iDQogICAgfSwNCiAgICAiYmFja3VwUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJMb2NhdGlvbiBmb3IgYXV0b21hdGljIGJhY2t1cHMiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIi9tbnQvZGF0YS9iYWNrdXAvdGhyZWFkZmluLyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQmVmb3JlIGFueSB1cGRhdGUgb2YgdGhlIHByb3ZpZGVyIGRhdGEgYnkgdGhlIHNjaGVkdWxlLCBUaHJlYWRmaW4gY3JlYXRlcyBhIGJhY2t1cC4gVGhlIHBhdGggZm9yIHRoZSBhdXRvbWF0aWMgYmFja3VwcyBjYW4gYmUgY2hhbmdlZC4gVGhyZWFkZmluIHJlcXVpcmVzIHdyaXRlIHBlcm1pc3Npb24gZm9yIHRoaXMgZm9sZGVyLiINCiAgICB9LA0KICAgICJ0ZW1wUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJMb2NhdGlvbiBmb3IgdGhlIHRlbXBvcmFyeSBmaWxlcyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3RtcC90aHJlYWRmaW4vIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJMb2NhdGlvbiBmb3IgdGhlIGJ1ZmZlciBmaWxlcy4iDQogICAgfSwNCiAgICAiYmFja3VwS2VlcCI6IHsNCiAgICAgICJ0aXRsZSI6ICJOdW1iZXIgb2YgYmFja3VwcyB0byBrZWVwIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgYmFja3VwcyB0byBrZWVwLiBPbGRlciBiYWNrdXBzIGFyZSBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQuIg0KICAgIH0sDQogICAgImF1dGhlbnRpY2F0aW9uV0VCIjogew0KICAgICAgInRpdGxlIjogIldFQiBBdXRoZW50aWNhdGlvbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQWNjZXNzIHRvIHRoZSB3ZWIgaW50ZXJmYWNlIG9ubHkgcG9zc2libGUgd2l0aCBjcmVkZW50aWFscy4iDQogICAgfSwNCiAgICAiYXV0aGVudGljYXRpb25QTVMiOiB7DQogICAgICAidGl0bGUiOiAiUE1TIEF1dGhlbnRpY2F0aW9uIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQbGV4IHJlcXVlc3RzIGFyZSBvbmx5IHBvc3NpYmxlIHdpdGggYXV0aGVudGljYXRpb24uIDxicj48Yj5XYXJuaW5nISEhPC9iPiBBZnRlciBhY3RpdmF0aW5nIHRoaXMgZnVuY3Rpb24gVGhyZWFkZmluIG11c3QgYmUgZGVsZXRlIGluIHRoZSBQTVMgRFZSIHNldHRpbmdzIGFuZCBzZXQgdXAgYWdhaW4uIg0KICAgIH0sDQogICAgImF1dGhlbnRpY2F0aW9uTTNVIjogew0KICAgICAgInRpdGxlIjogIk0zVSBBdXRoZW50aWNhdGlvbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRG93bmxvYWRpbmcgdGhlIHRocmVhZGZpbi5tM3UgZmlsZSB2aWEgYW4gSFRUUCByZXF1ZXN0IGlzIG9ubHkgcG9zc2libGUgd2l0aCBhdXRoZW50aWNhdGlvbi4iDQogICAgfSwNCiAgICAiYXV0aGVudGljYXRpb25YTUwiOiB7DQogICAgICAidGl0bGUiOiAiWE1MIEF1dGhlbnRpY2F0aW9uIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJEb3dubG9hZGluZyB0aGUgdGhyZWFkZmluLnhtbCBmaWxlIHZpYSBhbiBIVFRQIHJlcXVlc3QgaXMgb25seSBwb3NzaWJsZSB3aXRoIGF1dGhlbnRpY2F0aW9uIg0KICAgIH0sDQogICAgImF1dGhlbnRpY2F0aW9uQVBJIjogew0KICAgICAgInRpdGxlIjogIkFQSSBBdXRoZW50aWNhdGlvbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQWNjZXNzIHRvIHRoZSBBUEkgaW50ZXJmYWNlIGlzIG9ubHkgcG9zc2libGUgd2l0aCBhdXRoZW50aWNhdGlvbi4iDQogICAgfQ0KICB9LA0KICAid2l6YXJkIjogew0KICAgICJlcGdTb3VyY2UiOiB7DQogICAgICAidGl0bGUiOiAiRVBHIFNvdXJjZSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiUE1TOjxicj4tIFVzZSBFUEcgZGF0YSBmcm9tIFBsZXgsIEVtYnkgb3IgSmVsbHlmaW4gPGJyPjxicj5YRVBHOjxicj4tIFVzZSBvZiBvbmUgb3IgbW9yZSBYTUxUViBmaWxlczxicj4tIENoYW5uZWwgbWFuYWdlbWVudDxicj4tIE0zVSAvIFhNTFRWIGV4cG9ydCAoSFRUUCBsaW5rIGZvciBJUFRWIGFwcHMpIg0KICAgIH0sDQogICAgInR1bmVyIjogew0KICAgICAgInRpdGxlIjogIk51bWJlciBvZiB0dW5lcnMiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiBwYXJhbGxlbCBjb25uZWN0aW9ucyB0aGF0IGNhbiBiZSBlc3RhYmxpc2hlZCB0byB0aGUgcHJvdmlkZXIuPGJyPkF2YWlsYWJsZSBmb3I6IFBsZXgsIEVtYnksIEplbGx5ZmluLCBNM1UgKHdpdGggYWN0aXZlIGJ1ZmZlcikuPGJyPkFmdGVyIGEgY2hhbmdlLCBUaHJlYWRmaW4gbXVzdCBiZSBkZWxldGUgaW4gdGhlIFBsZXggLyBFbWJ5IC8gSmVsbHlmaW4gRFZSIHNldHRpbmdzIGFuZCBzZXQgdXAgYWdhaW4uIg0KICAgIH0sDQogICAgIm0zdSI6IHsNCiAgICAgICJ0aXRsZSI6ICJNM1UgUGxheWxpc3QiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZpbGUgcGF0aCBvciBVUkwgb2YgdGhlIE0zVSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiTG9jYWwgb3IgcmVtb3RlIHBsYXlsaXN0cyINCiAgICB9LA0KICAgICJ4bWx0diI6IHsNCiAgICAgICJ0aXRsZSI6ICJYTUxUViBGaWxlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJGaWxlIHBhdGggb3IgVVJMIG9mIHRoZSBYTUxUViIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiTG9jYWwgb3IgcmVtb3RlIFhNTFRWIGZpbGUiDQogICAgfQ0KICB9LA0KICAibG9naW4iOiB7DQogICAgImZhaWxlZCI6ICJVc2VyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCIsDQogICAgImhlYWRsaW5lIjogIkxvZ2luIiwNCiAgICAidXNlcm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiVXNlcm5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIlVzZXJuYW1lIg0KICAgIH0sDQogICAgInBhc3N3b3JkIjogew0KICAgICAgInRpdGxlIjogIlBhc3N3b3JkIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJQYXNzd29yZCINCiAgICB9DQogIH0sDQogICJhY2NvdW50Ijogew0KICAgICJmYWlsZWQiOiAiUGFzc3dvcmQgZG9lcyBub3QgbWF0Y2giLA0KICAgICJoZWFkbGluZSI6ICJDcmVhdGUgdXNlciBhY2NvdW50IiwNCiAgICAidXNlcm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiVXNlcm5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIlVzZXJuYW1lIg0KICAgIH0sDQogICAgInBhc3N3b3JkIjogew0KICAgICAgInRpdGxlIjogIlBhc3N3b3JkIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJQYXNzd29yZCINCiAgICB9LA0KICAgICJjb25maXJtIjogew0KICAgICAgInRpdGxlIjogIkNvbmZpcm0iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkNvbmZpcm0iDQogICAgfQ0KICB9LA0KICAibm90aWZpY2F0aW9uIiA6IHsNCiAgICAidXBkYXRlQXZhaWxhYmxlIjogIkEgbmV3ZXIgdmVyc2lvbiBvZiBUaHJlYWRmaW4gaXMgYXZhaWxhYmxlLiBQbGVhc2UgdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4iDQogIH0NCn0=" + webUI["web/public/maintenance.html"] = "PCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCg0KPGhlYWQ+DQogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+DQogIDx0aXRsZT5UaHJlYWRmaW48L3RpdGxlPg0KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9zY3JlZW4uY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+DQogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL2Jhc2UuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KDQogIDxkaXYgaWQ9ImhlYWRlciIgY2xhc3M9ImltZ0NlbnRlciI+PC9kaXY+DQoNCiAgPGRpdiBpZD0iYm94Ij4NCg0KICAgIDxkaXYgaWQ9ImhlYWRsaW5lIj4NCiAgICAgIDxoMSBpZD0iaGVhZC10ZXh0IiBjbGFzcz0iY2VudGVyIj5NYWludGVuYW5jZTwvaDE+DQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGlkPSJjb250ZW50Ij4NCiAgICAgIFRocmVhZGZpbiBpcyB1cGRhdGluZyB0aGUgZGF0YWJhc2UsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuDQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGlkPSJib3gtZm9vdGVyIj48L2Rpdj4NCg0KICA8L2Rpdj4NCg0KPC9ib2R5Pg0KDQo8L2h0bWw+" + webUI["web/public/img/log.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0xMC0xNFQxMToxMDo0MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CkP32mEAAANASURBVGgF7ZlPiE1RHMffw1AYhiL5k1HEijJiYaFZiHoyFspW2RFRkkSZGgtFWJIwi9FYmo0VOywkKTbKgjSlWcifRCPX51dv6s2d33md77vvXjfmV9859/7u93x/v98959x73p1KRbAkSargAhgDH0E/qIYkuHYEvAPGvwbmNOEerXM/0Q6BRSFuZj/ix0DaDnvCkGppIucDAe4OhzvkcUO+GaELAf8ux7/b8Zlrr+Pvc3zm6nX8NccXdKmFLHaUPJ/Ruhyu5zNap8Nd6PiCLrUQTyi0Rjy/5/M0Zd+smB7M32XwtgBr07aC6yfSTs7XO77OALfH4VbgHsD/HLytVquJx4nyIdQFBsHftscksK5Z0sGhpuN8Or4Aa5sJFHjtO7G2MjKvvZjN1sglOpSlCMt9LrDZ4S4Hd0Qg24vrK+gAZbPtjMqTdFKhEdkIsYxFWP720JlioUK6pzDL41jtpRIqxOOWxecuB3fhRGT8E85YBK8VygI6GSRTCxlH3TaJgyw4O2678aCxO94LbNPovYDdmOrUukIBN/MqwjJEOwGPOHR31W4VONVCLEBR9lAJpBbSrYhn5K5R+quFnGUOr1ICtMIlxjz6XVb6qot9JeKvCPSAdlQJJHDtd8hOIN0wtRDLxx6Ntr0ulalTq1TJNyYzXUjj3SjD8X87Iva7uR8s5+2bi6FtX1oOgi8g2tSn1g2yPx+t3gIR/c90s1+C1vuO/YkxdWrdjxFtE2dE0VELWaqIZ+QuUfqrhZxmyKUvgEoyE1xizOR4YOI8plXXyAZEbYsyTJvXFsUW+x6wGUSbWogJ237rZHSEgojq1CooLT3MdCH6Pcu3xz8zIq0s9lvc2+sgz6dWH/rnQPB/jlybZGoh99hCHJqk0P6TD0jaI/4b7dVYeXVq2bemokyKpRZiHwWKMimWWshxhryjoEpOKXHUNbIN8WcUc5s2r8Vue7l9oAaiTS3EhDeB6EUYnUlGojq1MobLr3uokB/5hcys7OYWKuRl5nD5Cbi5uYXw0ntPHoay2S8Seuol5RZSJ0r/n/DEc/BdrN9kTZrH7BkwDspgwyQxW6uggU3nHnAXvAG/QZE2SrARsL8hJffwDxM0mNDPvT8IAAAAAElFTkSuQmCC" + webUI["web/public/js/base.js"] = "dmFyIFNFUlZFUjsKdmFyIEJVTEtfRURJVCA9IGZhbHNlOwp2YXIgQ09MVU1OX1RPX1NPUlQ7CnZhciBJTkFDVElWRV9DT0xVTU5fVE9fU09SVDsKdmFyIFNFQVJDSF9NQVBQSU5HID0gbmV3IE9iamVjdCgpOwp2YXIgVU5ETyA9IG5ldyBPYmplY3QoKTsKdmFyIFNFUlZFUl9DT05ORUNUSU9OID0gZmFsc2U7CnZhciBXU19BVkFJTEFCTEUgPSBmYWxzZTsKY29uc3QgdG9vbHRpcFRyaWdnZXJMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYnMtdG9nZ2xlPSJ0b29sdGlwIl0nKTsKY29uc3QgdG9vbHRpcExpc3QgPSBbLi4udG9vbHRpcFRyaWdnZXJMaXN0XS5tYXAodG9vbHRpcFRyaWdnZXJFbCA9PiBuZXcgYm9vdHN0cmFwLlRvb2x0aXAodG9vbHRpcFRyaWdnZXJFbCkpOwovLyBuZXcgQ2xpcGJvYXJkSlMoJy5jb3B5LWJ0bicpOwp2YXIgY2xpcGJvYXJkID0gbmV3IENsaXBib2FyZEpTKCcuY29weS1idG4nKTsKY2xpcGJvYXJkLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKGUpIHsKICAgIGNvbnN0IHRvb2x0aXAgPSBib290c3RyYXAuVG9vbHRpcC5nZXRJbnN0YW5jZShlLnRyaWdnZXIpOwogICAgdG9vbHRpcC5zZXRDb250ZW50KHsgJy50b29sdGlwLWlubmVyJzogJ0NvcGllZCEnIH0pOwp9KTsKY2xpcGJvYXJkLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlKSB7CiAgICBjb25zb2xlLmxvZyhlKTsKfSk7CnZhciBwb3B1cE1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9wdXAiKSwgewogICAga2V5Ym9hcmQ6IHRydWUsCiAgICBmb2N1czogdHJ1ZSwKICAgIGJhY2tkcm9wOiAnc3RhdGljJwp9KTsKdmFyIGxvYWRpbmdNb2RhbCA9IG5ldyBib290c3RyYXAuTW9kYWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmciKSwgewogICAga2V5Ym9hcmQ6IHRydWUsCiAgICBmb2N1czogdHJ1ZQp9KTsKLy8gTWVuw7wKdmFyIG1lbnVJdGVtcyA9IG5ldyBBcnJheSgpOwptZW51SXRlbXMucHVzaChuZXcgTWFpbk1lbnVJdGVtKCJwbGF5bGlzdCIsICJ7ey5tYWluTWVudS5pdGVtLnBsYXlsaXN0fX0iLCAibTN1LnBuZyIsICJ7ey5tYWluTWVudS5oZWFkbGluZS5wbGF5bGlzdH19IikpOwptZW51SXRlbXMucHVzaChuZXcgTWFpbk1lbnVJdGVtKCJ4bWx0diIsICJ7ey5tYWluTWVudS5pdGVtLnhtbHR2fX0iLCAieG1sdHYucG5nIiwgInt7Lm1haW5NZW51LmhlYWRsaW5lLnhtbHR2fX0iKSk7Cm1lbnVJdGVtcy5wdXNoKG5ldyBNYWluTWVudUl0ZW0oImZpbHRlciIsICJ7ey5tYWluTWVudS5pdGVtLmZpbHRlcn19IiwgImZpbHRlci5wbmciLCAie3subWFpbk1lbnUuaGVhZGxpbmUuZmlsdGVyfX0iKSk7Cm1lbnVJdGVtcy5wdXNoKG5ldyBNYWluTWVudUl0ZW0oIm1hcHBpbmciLCAie3subWFpbk1lbnUuaXRlbS5tYXBwaW5nfX0iLCAibWFwcGluZy5wbmciLCAie3subWFpbk1lbnUuaGVhZGxpbmUubWFwcGluZ319IikpOwptZW51SXRlbXMucHVzaChuZXcgTWFpbk1lbnVJdGVtKCJ1c2VycyIsICJ7ey5tYWluTWVudS5pdGVtLnVzZXJzfX0iLCAidXNlcnMucG5nIiwgInt7Lm1haW5NZW51LmhlYWRsaW5lLnVzZXJzfX0iKSk7Cm1lbnVJdGVtcy5wdXNoKG5ldyBNYWluTWVudUl0ZW0oInNldHRpbmdzIiwgInt7Lm1haW5NZW51Lml0ZW0uc2V0dGluZ3N9fSIsICJzZXR0aW5ncy5wbmciLCAie3subWFpbk1lbnUuaGVhZGxpbmUuc2V0dGluZ3N9fSIpKTsKbWVudUl0ZW1zLnB1c2gobmV3IE1haW5NZW51SXRlbSgibG9nIiwgInt7Lm1haW5NZW51Lml0ZW0ubG9nfX0iLCAibG9nLnBuZyIsICJ7ey5tYWluTWVudS5oZWFkbGluZS5sb2d9fSIpKTsKbWVudUl0ZW1zLnB1c2gobmV3IE1haW5NZW51SXRlbSgibG9nb3V0IiwgInt7Lm1haW5NZW51Lml0ZW0ubG9nb3V0fX0iLCAibG9nb3V0LnBuZyIsICJ7ey5tYWluTWVudS5oZWFkbGluZS5sb2dvdXR9fSIpKTsKLy8gS2F0ZWdvcmllbiBmw7xyIGRpZSBFaW5zdGVsbHVuZ2VuCnZhciBzZXR0aW5nc0NhdGVnb3J5ID0gbmV3IEFycmF5KCk7CnNldHRpbmdzQ2F0ZWdvcnkucHVzaChuZXcgU2V0dGluZ3NDYXRlZ29yeUl0ZW0oInt7LnNldHRpbmdzLmNhdGVnb3J5LmdlbmVyYWx9fSIsICJUaHJlYWRmaW5BdXRvVXBkYXRlLHNzZHAsdHVuZXIsZXBnU291cmNlLGVwZ0NhdGVnb3JpZXMsZXBnQ2F0ZWdvcmllc0NvbG9ycyxkdW1teSxkdW1teUNoYW5uZWwsaWdub3JlRmlsdGVycyxhcGkiKSk7CnNldHRpbmdzQ2F0ZWdvcnkucHVzaChuZXcgU2V0dGluZ3NDYXRlZ29yeUl0ZW0oInt7LnNldHRpbmdzLmNhdGVnb3J5LmN1c3RvbWl6YXRpb259fSIsICJ1cGxvYWRDdXN0b21JbWFnZSIpKTsKc2V0dGluZ3NDYXRlZ29yeS5wdXNoKG5ldyBTZXR0aW5nc0NhdGVnb3J5SXRlbSgie3suc2V0dGluZ3MuY2F0ZWdvcnkuZmlsZXN9fSIsICJ1cGRhdGUsZmlsZXMudXBkYXRlLHRlbXAucGF0aCxjYWNoZS5pbWFnZXMsb21pdFBvcnRzLHhlcGcucmVwbGFjZS5taXNzaW5nLmltYWdlcyx4ZXBnLnJlcGxhY2UuY2hhbm5lbC50aXRsZSxlbmFibGVOb25Bc2NpaSIpKTsKc2V0dGluZ3NDYXRlZ29yeS5wdXNoKG5ldyBTZXR0aW5nc0NhdGVnb3J5SXRlbSgie3suc2V0dGluZ3MuY2F0ZWdvcnkubmV0d29ya319IiwgImJpbmRpbmdJUHMsdGhyZWFkZmluRG9tYWluLHVzZUh0dHBzLGZvcmNlQ2xpZW50SHR0cHMsZm9yY2VIdHRwcyIpKTsKc2V0dGluZ3NDYXRlZ29yeS5wdXNoKG5ldyBTZXR0aW5nc0NhdGVnb3J5SXRlbSgie3suc2V0dGluZ3MuY2F0ZWdvcnkuc3RyZWFtaW5nfX0iLCAiYnVmZmVyLHVkcHh5LGJ1ZmZlci5zaXplLmtiLHN0b3JlQnVmZmVySW5SQU0sYnVmZmVyLnRpbWVvdXQsYnVmZmVyLmF1dG9SZWNvbm5lY3QsdXNlci5hZ2VudCxmZm1wZWcucGF0aCxmZm1wZWcub3B0aW9ucyx2bGMucGF0aCx2bGMub3B0aW9ucyIpKTsKc2V0dGluZ3NDYXRlZ29yeS5wdXNoKG5ldyBTZXR0aW5nc0NhdGVnb3J5SXRlbSgie3suc2V0dGluZ3MuY2F0ZWdvcnkuYmFja3VwfX0iLCAiYmFja3VwLnBhdGgsYmFja3VwLmtlZXAiKSk7CnNldHRpbmdzQ2F0ZWdvcnkucHVzaChuZXcgU2V0dGluZ3NDYXRlZ29yeUl0ZW0oInt7LnNldHRpbmdzLmNhdGVnb3J5LmF1dGhlbnRpY2F0aW9ufX0iLCAiYXV0aGVudGljYXRpb24ud2ViLGF1dGhlbnRpY2F0aW9uLnBtcyxhdXRoZW50aWNhdGlvbi5tM3UsYXV0aGVudGljYXRpb24ueG1sLGF1dGhlbnRpY2F0aW9uLmFwaSIpKTsKZnVuY3Rpb24gc2hvd0VsZW1lbnQoZWxtSUQsIHNob3cpIHsKICAgIGlmIChlbG1JRCA9PSAicG9wdXBDdXN0b20iIHx8IGVsbUlEID09ICJwb3B1cCIpIHsKICAgICAgICBzd2l0Y2ggKHNob3cpIHsKICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgcG9wdXBNb2RhbC5zaG93KCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBmYWxzZToKICAgICAgICAgICAgICAgIHBvcHVwTW9kYWwuaGlkZSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgaWYgKGVsbUlEID09ICJsb2FkaW5nIikgewogICAgICAgIHN3aXRjaCAoc2hvdykgewogICAgICAgICAgICBjYXNlIHRydWU6CiAgICAgICAgICAgICAgICBsb2FkaW5nTW9kYWwuc2hvdygpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgICAgICBsb2FkaW5nTW9kYWwuaGlkZSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIGNoYW5nZUJ1dHRvbkFjdGlvbihlbGVtZW50LCBidXR0b25JRCwgYXR0cmlidXRlKSB7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50Lm9wdGlvbnNbZWxlbWVudC5zZWxlY3RlZEluZGV4XS52YWx1ZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJ1dHRvbklEKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7Cn0KZnVuY3Rpb24gZ2V0TG9jYWxEYXRhKGRhdGFUeXBlLCBpZCkgewogICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7CiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7CiAgICAgICAgY2FzZSAibTN1IjoKICAgICAgICAgICAgZGF0YSA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZmlsZXMiXVtkYXRhVHlwZV1baWRdOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJoZGhyIjoKICAgICAgICAgICAgZGF0YSA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZmlsZXMiXVtkYXRhVHlwZV1baWRdOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJmaWx0ZXIiOgogICAgICAgIGNhc2UgImN1c3RvbS1maWx0ZXIiOgogICAgICAgIGNhc2UgImdyb3VwLXRpdGxlIjoKICAgICAgICAgICAgaWYgKGlkID09IC0xKSB7CiAgICAgICAgICAgICAgICBkYXRhWyJhY3RpdmUiXSA9IHRydWU7CiAgICAgICAgICAgICAgICBkYXRhWyJjYXNlU2Vuc2l0aXZlIl0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGRhdGFbImRlc2NyaXB0aW9uIl0gPSAiIjsKICAgICAgICAgICAgICAgIGRhdGFbImV4Y2x1ZGUiXSA9ICIiOwogICAgICAgICAgICAgICAgZGF0YVsiZmlsdGVyIl0gPSAiIjsKICAgICAgICAgICAgICAgIGRhdGFbImluY2x1ZGUiXSA9ICIiOwogICAgICAgICAgICAgICAgZGF0YVsibmFtZSJdID0gIiI7CiAgICAgICAgICAgICAgICBkYXRhWyJ0eXBlIl0gPSAiZ3JvdXAtdGl0bGUiOwogICAgICAgICAgICAgICAgZGF0YVsieC1jYXRlZ29yeSJdID0gIiI7CiAgICAgICAgICAgICAgICBTRVJWRVJbInNldHRpbmdzIl1bImZpbHRlciJdW2lkXSA9IGRhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGF0YSA9IFNFUlZFUlsic2V0dGluZ3MiXVsiZmlsdGVyIl1baWRdOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJ4bWx0diI6CiAgICAgICAgICAgIGRhdGEgPSBTRVJWRVJbInNldHRpbmdzIl1bImZpbGVzIl1bZGF0YVR5cGVdW2lkXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAidXNlcnMiOgogICAgICAgICAgICBkYXRhID0gU0VSVkVSWyJ1c2VycyJdW2lkXVsiZGF0YSJdOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJtYXBwaW5nIjoKICAgICAgICAgICAgZGF0YSA9IFNFUlZFUlsieGVwZyJdWyJlcGdNYXBwaW5nIl1baWRdOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJtM3VHcm91cHMiOgogICAgICAgICAgICBkYXRhID0gU0VSVkVSWyJkYXRhIl1bInBsYXlsaXN0Il1bIm0zdSJdWyJncm91cHMiXTsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gZGF0YTsKfQpmdW5jdGlvbiBnZXRPYmpLZXlzKG9iaikgewogICAgdmFyIGtleXMgPSBuZXcgQXJyYXkoKTsKICAgIGZvciAodmFyIGkgaW4gb2JqKSB7CiAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShpKSkgewogICAgICAgICAgICBrZXlzLnB1c2goaSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGtleXM7Cn0KZnVuY3Rpb24gZ2V0T3duT2JqUHJvcHMob2JqZWN0KSB7CiAgICByZXR1cm4gb2JqZWN0ID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KSA6IFtdOwp9CmZ1bmN0aW9uIGdldEFsbFNlbGVjdGVkQ2hhbm5lbHMoKSB7CiAgICB2YXIgY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTsKICAgIGlmIChCVUxLX0VESVQgPT0gZmFsc2UpIHsKICAgICAgICByZXR1cm4gY2hhbm5lbHM7CiAgICB9CiAgICB2YXIgdHJzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRUYWJsZSIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUUiIpOwogICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0cnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAodHJzW2ldLnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSB7CiAgICAgICAgICAgIGlmICh0cnNbaV0uZmlyc3RDaGlsZC5maXJzdENoaWxkLmNoZWNrZWQgPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgY2hhbm5lbHMucHVzaCh0cnNbaV0uaWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmFyIHRyc19pbmFjdGl2ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbmFjdGl2ZUNvbnRlbnRUYWJsZSIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUUiIpOwogICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0cnNfaW5hY3RpdmUubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAodHJzX2luYWN0aXZlW2ldLnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSB7CiAgICAgICAgICAgIGlmICh0cnNfaW5hY3RpdmVbaV0uZmlyc3RDaGlsZC5maXJzdENoaWxkLmNoZWNrZWQgPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgY2hhbm5lbHMucHVzaCh0cnNfaW5hY3RpdmVbaV0uaWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGNoYW5uZWxzOwp9CmZ1bmN0aW9uIHNlbGVjdEFsbENoYW5uZWxzKHRhYmxlX25hbWUgPSAiY29udGVudFRhYmxlIikgewogICAgdmFyIGJ1bGsgPSBmYWxzZTsKICAgIHZhciB0cnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZV9uYW1lKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVFIiKTsKICAgIGlmICh0cnNbMF0uZmlyc3RDaGlsZC5maXJzdENoaWxkLmNoZWNrZWQgPT0gdHJ1ZSkgewogICAgICAgIGJ1bGsgPSB0cnVlOwogICAgfQogICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0cnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAodHJzW2ldLnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSB7CiAgICAgICAgICAgIHN3aXRjaCAoYnVsaykgewogICAgICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgICAgIHRyc1tpXS5maXJzdENoaWxkLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIGZhbHNlOgogICAgICAgICAgICAgICAgICAgIHRyc1tpXS5maXJzdENoaWxkLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CmZ1bmN0aW9uIGJ1bGtFZGl0KCkgewogICAgQlVMS19FRElUID0gIUJVTEtfRURJVDsKICAgIHZhciBjbGFzc05hbWU7CiAgICB2YXIgcm93cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImJ1bGsiKTsKICAgIHN3aXRjaCAoQlVMS19FRElUKSB7CiAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICBjbGFzc05hbWUgPSAiYnVsayBzaG93QnVsayI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgIGNsYXNzTmFtZSA9ICJidWxrIGhpZGVCdWxrIjsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICByb3dzW2ldLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICByb3dzW2ldLmNoZWNrZWQgPSBmYWxzZTsKICAgIH0KICAgIHJldHVybjsKfQpmdW5jdGlvbiBzb3J0VGFibGUoY29sdW1uLCB0YWJsZV9uYW1lID0gImNvbnRlbnRUYWJsZSIpIHsKICAgIC8vIGNvbnNvbGUubG9nKCJDT0xVTU46ICIgKyBjb2x1bW4pOwogICAgaWYgKChjb2x1bW4gPT0gQ09MVU1OX1RPX1NPUlQgJiYgdGFibGVfbmFtZSA9PSAiY29udGVudFRhYmxlIikgfHwgKGNvbHVtbiA9PSBJTkFDVElWRV9DT0xVTU5fVE9fU09SVCAmJiB0YWJsZV9uYW1lID09ICJpbmFjdGl2ZUNvbnRlbnRUYWJsZSIpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVfbmFtZSk7CiAgICB2YXIgdGFibGVIZWFkID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRSIilbMF07CiAgICB2YXIgdGFibGVJdGVtcyA9IHRhYmxlSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEQiKTsKICAgIHZhciBzb3J0T2JqID0gbmV3IE9iamVjdCgpOwogICAgdmFyIHgsIHhWYWx1ZTsKICAgIHZhciB0YWJsZUhlYWRlcjsKICAgIHZhciBzb3J0QnlTdHJpbmcgPSBmYWxzZTsKICAgIGlmIChjb2x1bW4gPiAwICYmIENPTFVNTl9UT19TT1JUID4gMCAmJiB0YWJsZV9uYW1lID09ICJjb250ZW50VGFibGUiKSB7CiAgICAgICAgdGFibGVJdGVtc1tDT0xVTU5fVE9fU09SVF0uY2xhc3NOYW1lID0gInBvaW50ZXIiOwogICAgICAgIHRhYmxlSXRlbXNbY29sdW1uXS5jbGFzc05hbWUgPSAic29ydFRoaXMiOwogICAgfQogICAgZWxzZSBpZiAoY29sdW1uID4gMCAmJiBJTkFDVElWRV9DT0xVTU5fVE9fU09SVCA+IDAgJiYgdGFibGVfbmFtZSA9PSAiaW5hY3RpdmVDb250ZW50VGFibGUiKSB7CiAgICAgICAgdGFibGVJdGVtc1tJTkFDVElWRV9DT0xVTU5fVE9fU09SVF0uY2xhc3NOYW1lID0gInBvaW50ZXIiOwogICAgICAgIHRhYmxlSXRlbXNbY29sdW1uXS5jbGFzc05hbWUgPSAic29ydFRoaXMiOwogICAgfQogICAgaWYgKHRhYmxlX25hbWUgPT0gImNvbnRlbnRUYWJsZSIpIHsKICAgICAgICBDT0xVTU5fVE9fU09SVCA9IGNvbHVtbjsKICAgIH0KICAgIGVsc2UgaWYgKHRhYmxlX25hbWUgPT0gImluYWN0aXZlQ29udGVudFRhYmxlIikgewogICAgICAgIElOQUNUSVZFX0NPTFVNTl9UT19TT1JUID0gY29sdW1uOwogICAgfQogICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzOwogICAgaWYgKHJvd3NbMV0gIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGFibGVIZWFkZXIgPSByb3dzWzBdOwogICAgICAgIHggPSByb3dzWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJURCIpW2NvbHVtbl07CiAgICAgICAgZm9yIChpID0gMTsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgeCA9IHJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlREIilbY29sdW1uXTsKICAgICAgICAgICAgc3dpdGNoICh4LmNoaWxkTm9kZXNbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgICAgICAgICBjYXNlICJpbnB1dCI6CiAgICAgICAgICAgICAgICAgICAgeFZhbHVlID0geC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSU5QVVQiKVswXS52YWx1ZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAicCI6CiAgICAgICAgICAgICAgICAgICAgeFZhbHVlID0geC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiUCIpWzBdLmlubmVyVGV4dC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDogY29uc29sZS5sb2coeC5jaGlsZE5vZGVzWzBdLnRhZ05hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh4VmFsdWUgPT0gIiIpIHsKICAgICAgICAgICAgICAgIHhWYWx1ZSA9IGk7CiAgICAgICAgICAgICAgICBzb3J0T2JqW2ldID0gcm93c1tpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoaXNOYU4oeFZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHhWYWx1ZSA9IHBhcnNlRmxvYXQoeFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgc29ydE9ialt4VmFsdWVdID0gcm93c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgICAgICAgICBzb3J0QnlTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBzb3J0T2JqW3hWYWx1ZS50b0xvd2VyQ2FzZSgpICsgaV0gPSByb3dzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3aGlsZSAodGFibGUuZmlyc3RDaGlsZCkgewogICAgICAgICAgICB0YWJsZS5yZW1vdmVDaGlsZCh0YWJsZS5maXJzdENoaWxkKTsKICAgICAgICB9CiAgICAgICAgdmFyIHNvcnRWYWx1ZXMgPSBnZXRPYmpLZXlzKHNvcnRPYmopOwogICAgICAgIGlmIChzb3J0QnlTdHJpbmcgPT0gdHJ1ZSkgewogICAgICAgICAgICBpZiAoY29sdW1uID09IDMpIHsKICAgICAgICAgICAgICAgIHZhciBjb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlLCBzZW5zaXRpdml0eTogJ2Jhc2UnIH0pOwogICAgICAgICAgICAgICAgc29ydFZhbHVlcy5zb3J0KGNvbGxhdG9yLmNvbXBhcmUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgc29ydFZhbHVlcy5zb3J0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHNvcnRGbG9hdChhLCBiKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSAtIGI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydFZhbHVlcy5zb3J0KHNvcnRGbG9hdCk7CiAgICAgICAgfQogICAgICAgIHRhYmxlLmFwcGVuZENoaWxkKHRhYmxlSGVhZGVyKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoc29ydE9ialtzb3J0VmFsdWVzW2ldXSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaE9iaigpIHsKICAgIFNFQVJDSF9NQVBQSU5HID0gbmV3IE9iamVjdCgpOwogICAgdmFyIGRhdGEgPSBTRVJWRVJbInhlcGciXVsiZXBnTWFwcGluZyJdOwogICAgdmFyIGNoYW5uZWxzID0gZ2V0T2JqS2V5cyhkYXRhKTsKICAgIHZhciBjaGFubmVsS2V5cyA9IFsieC1hY3RpdmUiLCAieC1jaGFubmVsSUQiLCAieC1uYW1lIiwgIl9maWxlLm0zdS5uYW1lIiwgIngtZ3JvdXAtdGl0bGUiLCAieC14bWx0di1maWxlIl07CiAgICBjaGFubmVscy5mb3JFYWNoKGlkID0+IHsKICAgICAgICBjaGFubmVsS2V5cy5mb3JFYWNoKGtleSA9PiB7CiAgICAgICAgICAgIGlmIChrZXkgPT0gIngtYWN0aXZlIikgewogICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhW2lkXVtrZXldKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgICAgICAgICBTRUFSQ0hfTUFQUElOR1tpZF0gPSAib25saW5lICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIFNFQVJDSF9NQVBQSU5HW2lkXSA9ICJvZmZsaW5lICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGtleSA9PSAieC14bWx0di1maWxlIikgewogICAgICAgICAgICAgICAgICAgIHZhciB4bWx0dkZpbGUgPSBnZXRWYWx1ZUZyb21Qcm92aWRlckZpbGUoZGF0YVtpZF1ba2V5XSwgInhtbHR2IiwgIm5hbWUiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoeG1sdHZGaWxlICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBTRUFSQ0hfTUFQUElOR1tpZF0gPSBTRUFSQ0hfTUFQUElOR1tpZF0gKyB4bWx0dkZpbGUgKyAiICI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgU0VBUkNIX01BUFBJTkdbaWRdID0gU0VBUkNIX01BUFBJTkdbaWRdICsgZGF0YVtpZF1ba2V5XSArICIgIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm47Cn0KZnVuY3Rpb24gZW5hYmxlR3JvdXBTZWxlY3Rpb24oc2VsZWN0b3IpIHsKICAgIHZhciBsYXN0Y2hlY2sgPSBudWxsOyAvLyBubyBjaGVja2JveGVzIGNsaWNrZWQgeWV0CiAgICAvLyBnZXQgZGVzaXJlZCBjaGVja2JveGVzCiAgICB2YXIgY2hlY2tib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgLy8gbG9vcCBvdmVyIGNoZWNrYm94ZXMgdG8gYWRkIGV2ZW50IGxpc3RlbmVyCiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGNoZWNrYm94ZXMsIGZ1bmN0aW9uIChjYngsIGlkeCkgewogICAgICAgIGNieC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgLy8gdGVzdCBmb3Igc2hpZnQga2V5LCBub3QgZmlyc3QgY2hlY2tib3gsIGFuZCBub3Qgc2FtZSBjaGVja2JveAogICAgICAgICAgICBpZiAoZXZ0LnNoaWZ0S2V5ICYmIG51bGwgIT09IGxhc3RjaGVjayAmJiBpZHggIT09IGxhc3RjaGVjaykgewogICAgICAgICAgICAgICAgLy8gZ2V0IHJhbmdlIG9mIGNoZWNrcyBiZXR3ZWVuIGxhc3QtY2hlY2tib3ggYW5kIHNoaWZ0LWNoZWNrYm94CiAgICAgICAgICAgICAgICAvLyBNYXRoLm1pbi9tYXggZG9lcyBvdXIgc29ydGluZyBmb3IgdXMKICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNoZWNrYm94ZXMsIE1hdGgubWluKGxhc3RjaGVjaywgaWR4KSwgTWF0aC5tYXgobGFzdGNoZWNrLCBpZHgpKQogICAgICAgICAgICAgICAgICAgIC8vIGFuZCBsb29wIG92ZXIgZWFjaAogICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChjY2J4KSB7CiAgICAgICAgICAgICAgICAgICAgY2NieC5jaGVja2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3RjaGVjayA9IGlkeDsgLy8gc2V0IHRoaXMgY2hlY2tib3ggYXMgbGFzdC1jaGVja2VkIGZvciBsYXRlcgogICAgICAgIH0pOwogICAgfSk7Cn0KZnVuY3Rpb24gc2VhcmNoSW5NYXBwaW5nKCkgewogICAgdmFyIHNlYXJjaFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaE1hcHBpbmciKS52YWx1ZTsKICAgIHZhciB0cnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudFRhYmxlIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRSIik7CiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRycy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBpZCA9IHRyc1tpXS5nZXRBdHRyaWJ1dGUoImlkIik7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBTRUFSQ0hfTUFQUElOR1tpZF07CiAgICAgICAgc3dpdGNoIChlbGVtZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpIHsKICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIGZhbHNlOgogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KZnVuY3Rpb24gY2hhbmdlQ2hhbm5lbE51bWJlcnMoZWxlbWVudHMpIHsKICAgIHZhciBzdGFydGluZ19udW1iZXJfZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ4LWNoYW5uZWxzLXN0YXJ0IilbMF07CiAgICB2YXIgZWxlbXMgPSBlbGVtZW50cy5zcGxpdCgiLCIpOwogICAgdmFyIHN0YXJ0aW5nX251bWJlciA9IHBhcnNlRmxvYXQoc3RhcnRpbmdfbnVtYmVyX2VsZW1lbnQudmFsdWUpOwogICAgdmFyIGRhdGEgPSBTRVJWRVJbInhlcGciXVsiZXBnTWFwcGluZyJdOwogICAgZWxlbXMuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwogICAgICAgIHZhciBpbnB1dCA9IGVsZW0uY2hpbGROb2Rlc1sxXS5maXJzdENoaWxkOwogICAgICAgIGlucHV0LnZhbHVlID0gc3RhcnRpbmdfbnVtYmVyLnRvU3RyaW5nKCk7CiAgICAgICAgZGF0YVtlbGVtZW50XVsieC1jaGFubmVsSUQiXSA9IHN0YXJ0aW5nX251bWJlci50b1N0cmluZygpOwogICAgICAgIHN0YXJ0aW5nX251bWJlcisrOwogICAgfSk7CiAgICBpZiAoQ09MVU1OX1RPX1NPUlQgPT0gMSkgewogICAgICAgIENPTFVNTl9UT19TT1JUID0gLTE7CiAgICAgICAgc29ydFRhYmxlKDEpOwogICAgfQogICAgaWYgKElOQUNUSVZFX0NPTFVNTl9UT19TT1JUID09IDEpIHsKICAgICAgICBJTkFDVElWRV9DT0xVTU5fVE9fU09SVCA9IC0xOwogICAgICAgIHNvcnRUYWJsZSgxLCAiaW5hY3RpdmVfY29udGVudF9wYWdlIik7CiAgICB9Cn0KZnVuY3Rpb24gY2hhbmdlQ2hhbm5lbE51bWJlcihlbGVtZW50KSB7CiAgICB2YXIgZGJJRCA9IGVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkOwogICAgdmFyIG5ld051bWJlciA9IHBhcnNlRmxvYXQoZWxlbWVudC52YWx1ZSk7CiAgICB2YXIgY2hhbm5lbE51bWJlcnMgPSBbXTsKICAgIHZhciBkYXRhID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXTsKICAgIHZhciBjaGFubmVscyA9IGdldE9iaktleXMoZGF0YSk7CiAgICBpZiAoaXNOYU4obmV3TnVtYmVyKSkgewogICAgICAgIGFsZXJ0KCJ7ey5hbGVydC5pbnZhbGlkQ2hhbm5lbE51bWJlcn19Iik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY2hhbm5lbHMuZm9yRWFjaChpZCA9PiB7CiAgICAgICAgdmFyIGNoYW5uZWxOdW1iZXIgPSBwYXJzZUZsb2F0KGRhdGFbaWRdWyJ4LWNoYW5uZWxJRCJdKTsKICAgICAgICBjaGFubmVsTnVtYmVycy5wdXNoKGNoYW5uZWxOdW1iZXIpOwogICAgfSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5uZWxOdW1iZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNoYW5uZWxOdW1iZXJzLmluZGV4T2YobmV3TnVtYmVyKSA9PSAtMSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKE1hdGguZmxvb3IobmV3TnVtYmVyKSA9PSBuZXdOdW1iZXIpIHsKICAgICAgICAgICAgbmV3TnVtYmVyID0gbmV3TnVtYmVyICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5ld051bWJlciA9IG5ld051bWJlciArIDAuMTsKICAgICAgICAgICAgbmV3TnVtYmVyLnRvRml4ZWQoMSk7CiAgICAgICAgICAgIG5ld051bWJlciA9IE1hdGgucm91bmQobmV3TnVtYmVyICogMTApIC8gMTA7CiAgICAgICAgfQogICAgfQogICAgZGF0YVtkYklEXVsieC1jaGFubmVsSUQiXSA9IG5ld051bWJlci50b1N0cmluZygpOwogICAgZWxlbWVudC52YWx1ZSA9IG5ld051bWJlcjsKICAgIGlmIChDT0xVTU5fVE9fU09SVCA9PSAxKSB7CiAgICAgICAgQ09MVU1OX1RPX1NPUlQgPSAtMTsKICAgICAgICBzb3J0VGFibGUoMSk7CiAgICB9CiAgICBpZiAoSU5BQ1RJVkVfQ09MVU1OX1RPX1NPUlQgPT0gMSkgewogICAgICAgIElOQUNUSVZFX0NPTFVNTl9UT19TT1JUID0gLTE7CiAgICAgICAgc29ydFRhYmxlKDEsICJpbmFjdGl2ZV9jb250ZW50X3BhZ2UiKTsKICAgIH0KICAgIHJldHVybjsKfQpmdW5jdGlvbiBiYWNrdXAoKSB7CiAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgIGNvbnNvbGUubG9nKCJCYWNrdXAgZGF0YSIpOwogICAgdmFyIGNtZCA9ICJUaHJlYWRmaW5CYWNrdXAiOwogICAgY29uc29sZS5sb2coIlNFTkQgVE8gU0VSVkVSIik7CiAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKICAgIHJldHVybjsKfQpmdW5jdGlvbiB0b2dnbGVDaGFubmVsU3RhdHVzKGlkKSB7CiAgICB2YXIgZWxlbWVudDsKICAgIHZhciBzdGF0dXM7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZSIpKSB7CiAgICAgICAgdmFyIGNoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZSIpOwogICAgICAgIHN0YXR1cyA9IChjaGVja2JveCkuY2hlY2tlZDsKICAgIH0KICAgIHZhciBpZHMgPSBnZXRBbGxTZWxlY3RlZENoYW5uZWxzKCk7CiAgICBpZiAoaWRzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgaWRzLnB1c2goaWQpOwogICAgfQogICAgaWRzLmZvckVhY2goaWQgPT4gewogICAgICAgIHZhciBjaGFubmVsID0gU0VSVkVSWyJ4ZXBnIl1bImVwZ01hcHBpbmciXVtpZF07CiAgICAgICAgY2hhbm5lbFsieC1hY3RpdmUiXSA9IHN0YXR1czsKICAgICAgICBzd2l0Y2ggKGNoYW5uZWxbIngtYWN0aXZlIl0pIHsKICAgICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxbIngteG1sdHYtZmlsZSJdID09ICItIiB8fCBjaGFubmVsWyJ4LW1hcHBpbmciXSA9PSAiLSIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoQlVMS19FRElUID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsZXJ0KGNoYW5uZWxbIngtbmFtZSJdICsgIjogTWlzc2luZyBYTUxUViBmaWxlIC8gY2hhbm5lbCIpCiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjaGFubmVsWyJ4LWFjdGl2ZSJdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIGZhbHNlOgogICAgICAgICAgICAgICAgLy8gY29kZS4uLgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmIChjaGFubmVsWyJ4LWFjdGl2ZSJdID09IGZhbHNlKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc05hbWUgPSAibm90QWN0aXZlRVBHIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc05hbWUgPSAiYWN0aXZlRVBHIjsKICAgICAgICB9CiAgICB9KTsKfQpmdW5jdGlvbiByZXN0b3JlKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWQnKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWQnKS5yZW1vdmUoKTsKICAgIH0KICAgIHZhciByZXN0b3JlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKTsKICAgIHJlc3RvcmUuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImZpbGUiKTsKICAgIHJlc3RvcmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJub3RWaXNpYmxlIik7CiAgICByZXN0b3JlLnNldEF0dHJpYnV0ZSgibmFtZSIsICIiKTsKICAgIHJlc3RvcmUuaWQgPSAidXBsb2FkIjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdG9yZSk7CiAgICByZXN0b3JlLmNsaWNrKCk7CiAgICByZXN0b3JlLm9uY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBmaWxlbmFtZSA9IHJlc3RvcmUuZmlsZXNbMF0ubmFtZTsKICAgICAgICB2YXIgY2hlY2sgPSBjb25maXJtKCJGaWxlOiAiICsgZmlsZW5hbWUgKyAiXG57ey5jb25maXJtLnJlc3RvcmV9fSIpOwogICAgICAgIGlmIChjaGVjayA9PSB0cnVlKSB7CiAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwogICAgICAgICAgICB2YXIgZmlsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ZmlsZV0nKS5maWxlc1swXTsKICAgICAgICAgICAgaWYgKGZpbGUpIHsKICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZWFkZXIucmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY21kID0gIlRocmVhZGZpblJlc3RvcmUiOwogICAgICAgICAgICAgICAgICAgIGRhdGFbImJhc2U2NCJdID0gcmVhZGVyLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VydmVyID0gbmV3IFNlcnZlcihjbWQpOwogICAgICAgICAgICAgICAgICAgIHNlcnZlci5yZXF1ZXN0KGRhdGEpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGFsZXJ0KCJGaWxlIGNvdWxkIG5vdCBiZSBsb2FkZWQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXN0b3JlLnJlbW92ZSgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfTsKICAgIHJldHVybjsKfQpmdW5jdGlvbiB1cGxvYWRMb2dvKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWQnKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWQnKS5yZW1vdmUoKTsKICAgIH0KICAgIHZhciB1cGxvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpOwogICAgdXBsb2FkLnNldEF0dHJpYnV0ZSgidHlwZSIsICJmaWxlIik7CiAgICB1cGxvYWQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJub3RWaXNpYmxlIik7CiAgICB1cGxvYWQuc2V0QXR0cmlidXRlKCJuYW1lIiwgIiIpOwogICAgdXBsb2FkLmlkID0gInVwbG9hZCI7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHVwbG9hZCk7CiAgICB1cGxvYWQuY2xpY2soKTsKICAgIHVwbG9hZC5vbmJsdXIgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgYWxlcnQoKTsKICAgIH07CiAgICB1cGxvYWQub25jaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGZpbGVuYW1lID0gdXBsb2FkLmZpbGVzWzBdLm5hbWU7CiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgdmFyIGZpbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPWZpbGVdJykuZmlsZXNbMF07CiAgICAgICAgaWYgKGZpbGUpIHsKICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZWFkZXIucmVzdWx0KTsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOwogICAgICAgICAgICAgICAgdmFyIGNtZCA9ICJ1cGxvYWRMb2dvIjsKICAgICAgICAgICAgICAgIGRhdGFbImJhc2U2NCJdID0gcmVhZGVyLnJlc3VsdDsKICAgICAgICAgICAgICAgIGRhdGFbImZpbGVuYW1lIl0gPSBmaWxlLm5hbWU7CiAgICAgICAgICAgICAgICB2YXIgc2VydmVyID0gbmV3IFNlcnZlcihjbWQpOwogICAgICAgICAgICAgICAgc2VydmVyLnJlcXVlc3QoZGF0YSk7CiAgICAgICAgICAgICAgICB2YXIgdXBkYXRlTG9nbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGRhdGUtaWNvbicpOwogICAgICAgICAgICAgICAgdXBkYXRlTG9nby5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB1cGRhdGVMb2dvLmNsYXNzTmFtZSA9ICJjaGFuZ2VkIjsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGFsZXJ0KCJGaWxlIGNvdWxkIG5vdCBiZSBsb2FkZWQiKTsKICAgICAgICB9CiAgICAgICAgdXBsb2FkLnJlbW92ZSgpOwogICAgICAgIHJldHVybjsKICAgIH07Cn0KZnVuY3Rpb24gY2hlY2tVbmRvKGtleSkgewogICAgc3dpdGNoIChrZXkpIHsKICAgICAgICBjYXNlICJlcGdNYXBwaW5nIjoKICAgICAgICAgICAgaWYgKFVORE8uaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgICAgICAgICAgU0VSVkVSWyJ4ZXBnIl1ba2V5XSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoVU5ET1trZXldKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBVTkRPW2tleV0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFNFUlZFUlsieGVwZyJdW2tleV0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBicmVhazsKICAgIH0KICAgIHJldHVybjsKfQpmdW5jdGlvbiBzb3J0U2VsZWN0KGVsZW0pIHsKICAgIHZhciB0bXBBcnkgPSBbXTsKICAgIHZhciBzZWxlY3RlZFZhbHVlID0gZWxlbVtlbGVtLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtLm9wdGlvbnMubGVuZ3RoOyBpKyspCiAgICAgICAgdG1wQXJ5LnB1c2goZWxlbS5vcHRpb25zW2ldKTsKICAgIHRtcEFyeS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiAoYS50ZXh0IDwgYi50ZXh0KSA/IC0xIDogMTsgfSk7CiAgICB3aGlsZSAoZWxlbS5vcHRpb25zLmxlbmd0aCA+IDApCiAgICAgICAgZWxlbS5vcHRpb25zWzBdID0gbnVsbDsKICAgIHZhciBuZXdTZWxlY3RlZEluZGV4ID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG1wQXJ5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZWxlbS5vcHRpb25zW2ldID0gdG1wQXJ5W2ldOwogICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0udmFsdWUgPT0gc2VsZWN0ZWRWYWx1ZSkKICAgICAgICAgICAgbmV3U2VsZWN0ZWRJbmRleCA9IGk7CiAgICB9CiAgICBlbGVtLnNlbGVjdGVkSW5kZXggPSBuZXdTZWxlY3RlZEluZGV4OyAvLyBTZXQgbmV3IHNlbGVjdGVkIGluZGV4IGFmdGVyIHNvcnRpbmcKICAgIHJldHVybjsKfQpmdW5jdGlvbiB1cGRhdGVMb2coKSB7CiAgICBjb25zb2xlLmxvZygiVE9LRU4iKTsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKCJ1cGRhdGVMb2ciKTsKICAgIHNlcnZlci5yZXF1ZXN0KG5ldyBPYmplY3QoKSk7Cn0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXA=" + webUI["web/public/js/configuration.js"] = "Y2xhc3MgV2l6YXJkQ2F0ZWdvcnkgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgdGhpcy5Eb2N1bWVudElEID0gImNvbnRlbnQiOwogICAgfQogICAgY3JlYXRlQ2F0ZWdvcnlIZWFkbGluZSh2YWx1ZSkgewogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSDQiKTsKICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHZhbHVlOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgfQp9CmNsYXNzIFdpemFyZEl0ZW0gZXh0ZW5kcyBXaXphcmRDYXRlZ29yeSB7CiAgICBjb25zdHJ1Y3RvcihrZXksIGhlYWRsaW5lKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLmhlYWRsaW5lID0gaGVhZGxpbmU7CiAgICAgICAgdGhpcy5rZXkgPSBrZXk7CiAgICB9CiAgICBjcmVhdGVXaXphcmQoKSB7CiAgICAgICAgdmFyIGhlYWRsaW5lID0gdGhpcy5jcmVhdGVDYXRlZ29yeUhlYWRsaW5lKHRoaXMuaGVhZGxpbmUpOwogICAgICAgIHZhciBrZXkgPSB0aGlzLmtleTsKICAgICAgICB2YXIgY29udGVudCA9IG5ldyBQb3B1cENvbnRlbnQoKTsKICAgICAgICB2YXIgZGVzY3JpcHRpb247CiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRG9jdW1lbnRJRCk7CiAgICAgICAgZG9jLmlubmVySFRNTCA9ICIiOwogICAgICAgIGRvYy5hcHBlbmRDaGlsZChoZWFkbGluZSk7CiAgICAgICAgc3dpdGNoIChrZXkpIHsKICAgICAgICAgICAgY2FzZSAidHVuZXIiOgogICAgICAgICAgICAgICAgdmFyIHRleHQgPSBuZXcgQXJyYXkoKTsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBuZXcgQXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGV4dC5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHNlbGVjdCA9IGNvbnRlbnQuY3JlYXRlU2VsZWN0KHRleHQsIHZhbHVlcywgIjEiLCBrZXkpOwogICAgICAgICAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAid2l6YXJkIik7CiAgICAgICAgICAgICAgICBzZWxlY3QuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoc2VsZWN0KTsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gInt7LndpemFyZC50dW5lci5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJlcGdTb3VyY2UiOgogICAgICAgICAgICAgICAgdmFyIHRleHQgPSBbIlBNUyIsICJYRVBHIl07CiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gWyJQTVMiLCAiWEVQRyJdOwogICAgICAgICAgICAgICAgdmFyIHNlbGVjdCA9IGNvbnRlbnQuY3JlYXRlU2VsZWN0KHRleHQsIHZhbHVlcywgIlhFUEciLCBrZXkpOwogICAgICAgICAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAid2l6YXJkIik7CiAgICAgICAgICAgICAgICBzZWxlY3QuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoc2VsZWN0KTsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gInt7LndpemFyZC5lcGdTb3VyY2UuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAibTN1IjoKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCBrZXksICIiKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3sud2l6YXJkLm0zdS5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIndpemFyZCIpOwogICAgICAgICAgICAgICAgaW5wdXQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAie3sud2l6YXJkLm0zdS5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ4bWx0diI6CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0Iiwga2V5LCAiIik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LndpemFyZC54bWx0di5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIndpemFyZCIpOwogICAgICAgICAgICAgICAgaW5wdXQuaWQgPSBrZXk7CiAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAie3sud2l6YXJkLnhtbHR2LmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhrZXkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJQUkUiKTsKICAgICAgICBwcmUuaW5uZXJIVE1MID0gZGVzY3JpcHRpb247CiAgICAgICAgZG9jLmFwcGVuZENoaWxkKHByZSk7CiAgICAgICAgY29uc29sZS5sb2coaGVhZGxpbmUsIGtleSk7CiAgICB9Cn0KZnVuY3Rpb24gcmVhZHlGb3JDb25maWd1cmF0aW9uKHdpemFyZCkgewogICAgdmFyIHNlcnZlciA9IG5ldyBTZXJ2ZXIoImdldFNlcnZlckNvbmZpZyIpOwogICAgc2VydmVyLnJlcXVlc3QobmV3IE9iamVjdCgpKTsKICAgIHNob3dFbGVtZW50KCJsb2FkaW5nIiwgZmFsc2UpOwogICAgY29uZmlndXJhdGlvbldpemFyZFt3aXphcmRdLmNyZWF0ZVdpemFyZCgpOwp9CmZ1bmN0aW9uIHNhdmVXaXphcmQoKSB7CiAgICB2YXIgY21kID0gInNhdmVXaXphcmQiOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iik7CiAgICB2YXIgY29uZmlnID0gZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIndpemFyZCIpOwogICAgdmFyIHdpemFyZCA9IG5ldyBPYmplY3QoKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgdmFyIHZhbHVlOwogICAgICAgIHN3aXRjaCAoY29uZmlnW2ldLnRhZ05hbWUpIHsKICAgICAgICAgICAgY2FzZSAiU0VMRUNUIjoKICAgICAgICAgICAgICAgIG5hbWUgPSBjb25maWdbaV0ubmFtZTsKICAgICAgICAgICAgICAgIHZhbHVlID0gY29uZmlnW2ldLnZhbHVlOwogICAgICAgICAgICAgICAgLy8gV2VubiBkZXIgV2VydCBlaW5lIFphaGwgaXN0LCB3aXJkIGRpZXNlciBhbHMgWmFobCBnZXNwZWljaGVydAogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIHdpemFyZFtuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgd2l6YXJkW25hbWVdID0gcGFyc2VJbnQodmFsdWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIklOUFVUIjoKICAgICAgICAgICAgICAgIHN3aXRjaCAoY29uZmlnW2ldLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0IjoKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGNvbmZpZ1tpXS5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvbmZpZ1tpXS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gbmFtZS50b1VwcGVyQ2FzZSgpICsgIjogIiArICJ7ey5hbGVydC5taXNzaW5nSW5wdXR9fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChtc2cpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdpemFyZFtuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgLy8gY29kZS4uLgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7CiAgICBkYXRhWyJ3aXphcmQiXSA9IHdpemFyZDsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKICAgIGNvbnNvbGUubG9nKGRhdGEpOwp9Ci8vIFdpemFyZAp2YXIgY29uZmlndXJhdGlvbldpemFyZCA9IG5ldyBBcnJheSgpOwpjb25maWd1cmF0aW9uV2l6YXJkLnB1c2gobmV3IFdpemFyZEl0ZW0oInR1bmVyIiwgInt7LndpemFyZC50dW5lci50aXRsZX19IikpOwpjb25maWd1cmF0aW9uV2l6YXJkLnB1c2gobmV3IFdpemFyZEl0ZW0oImVwZ1NvdXJjZSIsICJ7ey53aXphcmQuZXBnU291cmNlLnRpdGxlfX0iKSk7CmNvbmZpZ3VyYXRpb25XaXphcmQucHVzaChuZXcgV2l6YXJkSXRlbSgibTN1IiwgInt7LndpemFyZC5tM3UudGl0bGV9fSIpKTsKY29uZmlndXJhdGlvbldpemFyZC5wdXNoKG5ldyBXaXphcmRJdGVtKCJ4bWx0diIsICJ7ey53aXphcmQueG1sdHYudGl0bGV9fSIpKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uZmlndXJhdGlvbi5qcy5tYXA=" + webUI["web/public/js/logs.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy9sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sR0FBRztJQUVQLFNBQVMsQ0FBQyxLQUFZO1FBRXBCLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUE7UUFDbEMsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxDQUFDO1FBRUQsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7UUFFekIsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztDQUVGO0FBRUQsU0FBUyxRQUFRLENBQUMsTUFBYztJQUU5QixJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRW5CLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRWhELEdBQUcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBRWxCLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUzQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBRW5CLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFFdEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVuQixDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQztRQUVULElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBRW5CLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckQsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBRTNDLENBQUM7SUFFSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFVCxDQUFDO0FBRUQsU0FBUyxTQUFTO0lBRWhCLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQTtJQUNyQixJQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFBO0lBQ3ZCLElBQUksTUFBTSxHQUFVLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7QUFFdEIsQ0FBQyJ9" + webUI["web/public/css/base.css"] = "KnsNCiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOw0KICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7DQogIC1tcy1hcHBlYXJhbmNlOiBub25lOw0KICBmb250LWZhbWlseTogIkFyaWFsIiwgc2Fucy1zZXJpZjsNCiAgbGV0dGVyLXNwYWNpbmc6IDJweDsNCn0NCg0KLyoNCjo6LXdlYmtpdC1zY3JvbGxiYXIgeyANCiAgICBkaXNwbGF5OiBub25lOyANCn0NCiovDQoNCjo6LXdlYmtpdC1zY3JvbGxiYXIgew0KICB3aWR0aDogMTJweDsNCiAgaGVpZ2h0OiAxMnB4Ow0KfQ0KDQoNCjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgew0KICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQoNCn0NCg0KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDAgNnB4IHJnYmEoMCwgMCwgMCwgMC42KTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0NDsNCn0NCg0KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7DQogIGJhY2tncm91bmQ6ICMzMzM7DQp9DQoNCjo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQp9DQoNCmEgew0KICBjb2xvcjogIzAwRTZGRjsNCn0NCg0KaHRtbCwNCmJvZHkgew0KICBjb2xvcjogI2ZmZjsNCiAgbWFyZ2luOiAwcHggYXV0bzsNCiAgaGVpZ2h0OiAxMDAlOw0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCmgyIHsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBsZXR0ZXItc3BhY2luZzogMnB4Ow0KfQ0KDQpoMyB7DQogIGZvbnQtc2l6ZTogMjJweDsNCiAgbGV0dGVyLXNwYWNpbmc6IDFweDsNCn0NCg0KaDQgew0KICBmb250LXNpemU6IDIwcHg7DQogIGxldHRlci1zcGFjaW5nOiAxcHg7DQogIGxpbmUtaGVpZ2h0OiAxLjVlbTsNCg0KfQ0KDQpoNSB7DQogIGZvbnQtc2l6ZTogMTZweDsNCiAgbGV0dGVyLXNwYWNpbmc6IDFweDsNCiAgbGluZS1oZWlnaHQ6IDEuMmVtOw0KICBtYXJnaW46IDBweCBhdXRvOw0KICBtYXJnaW4tbGVmdDogMTBweDsNCn0NCg0KaHIgew0KICBib3JkZXI6IDA7DQogIGhlaWdodDogMXB4Ow0KICBiYWNrZ3JvdW5kOiAjMzMzOw0KICBtYXJnaW46IDEwcHggMHB4Ow0KfQ0KDQpwIHsNCiAgbWFyZ2luOiAycHg7DQogIHBhZGRpbmc6IDJweCA1cHg7DQp9DQoNCnByZSB7DQogIG1hcmdpbjogMHB4IDBweCA1cHggMHB4Ow0KICBmb250LXNpemU6IDEycHg7DQogIGNvbG9yOiAjZGRkOw0KICBsZXR0ZXItc3BhY2luZzogMXB4Ow0KICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7DQogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7DQogIGZvbnQtc2l6ZTogMTJweDsNCiAgZm9udC1zdHlsZTogbm9ybWFsOw0KICBmb250LXZhcmlhbnQ6IG5vcm1hbDsNCiAgbGluZS1oZWlnaHQ6IDEuNmVtOw0KfQ0KDQpsYWJlbCB7DQogIG1hcmdpbi1ib3R0b206IDIwcHg7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQpsaSB7DQogIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICB0cmFuc2l0aW9uOiBhbGwgMC4zOw0KfQ0KDQpsaTpob3ZlciB7DQogIGJvcmRlci1jb2xvcjogIzAwRTZGRg0KfQ0KDQpzZWxlY3Qgew0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHdpZHRoOiBjYWxjKDEwMCUgKyAycHgpOw0KICBib3JkZXI6IHNvbGlkIDBweCAjMDBFNkZGOw0KICBib3JkZXItcmFkaXVzOiAwcHg7DQogIG91dGxpbmU6IG5vbmU7DQogIGNvbG9yOiAjZmZmOw0KICBwYWRkaW5nOiA5cHggMTBweDsNCiAgZGlzcGxheTogYmxvY2s7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7DQogIGZvbnQtc2l6ZTogMTRweDsNCiAgbWFyZ2luOiA1cHggMHB4IDVweCAwcHg7DQogIHBhZGRpbmctYm90dG9tOiA1MHB4Ow0KfQ0KDQpzZWxlY3Q6Zm9jdXMgew0KICBvdXRsaW5lOiBub25lOw0KfQ0KDQppbnB1dCB7DQogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsNCiAgbWFyZ2luOiAwcHg7DQogIHBhZGRpbmc6IDIuNXB4IDEwcHg7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KaW5wdXRbdHlwZT1idXR0b25dLA0KaW5wdXRbdHlwZT1zdWJtaXRdIHsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOw0KICBtYXJnaW46IDEwcHggMTBweDsNCiAgcGFkZGluZzogMTBweCAyNXB4Ow0KICBib3JkZXI6IHNvbGlkIDBweDsNCiAgYm9yZGVyLWNvbG9yOiAjMDAwOw0KICBib3JkZXItcmFkaXVzOiAzcHg7DQogIG91dGxpbmU6IG5vbmU7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQppbnB1dFt0eXBlPWJ1dHRvbl06Zm9jdXMgew0KICBvdXRsaW5lOiBub25lOw0KfQ0KDQppbnB1dFt0eXBlPWJ1dHRvbl06aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBFNkZGOw0KICBjb2xvcjogIzAwMDsNCn0NCg0KaW5wdXRbdHlwZT1idXR0b25dOmhvdmVyLmRlbGV0ZSB7DQogIGJhY2tncm91bmQtY29sb3I6IHJlZDsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCmlucHV0W3R5cGU9dGV4dF0sDQppbnB1dFt0eXBlPXNlYXJjaF0sDQppbnB1dFt0eXBlPXBhc3N3b3JkXSB7DQogIGNvbG9yOiAjZmZmOw0KICB3aWR0aDogLXdlYmtpdC1jYWxjKDEwMCUgLSAwcHgpOw0KICB3aWR0aDogLW1vei1jYWxjKDEwMCUgLSAwcHgpOw0KICB3aWR0aDogY2FsYygxMDAlIC0gMHB4KTsNCiAgb3V0bGluZTogbm9uZTsNCiAgYm9yZGVyOiBzb2xpZCAxcHggdHJhbnNwYXJlbnQ7DQogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KICBib3JkZXItYm90dG9tLWNvbG9yOiAjNTU1Ow0KICBib3JkZXItcmFkaXVzOiAwcHg7DQogIHBhZGRpbmc6IDhweCAxMHB4Ow0KfQ0KDQppbnB1dFt0eXBlPSJjaGVja2JveCJdIHsNCiAgYm9yZGVyOiBzb2xpZCAxcHggIzAwRTZGRjsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsNCiAgaGVpZ2h0OiAyNXB4Ow0KICB3aWR0aDogMjVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICAvKg0KICAtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNrYm94Ow0KICAqLw0KfQ0KDQppbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgew0KICBjb2xvcjogI2ZmZjsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwRTZGRjsNCiAgLypkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ki8NCn0NCg0KaW5wdXRbdHlwZT0iY2hlY2tib3giXTpiZWZvcmUgew0KICBwb3NpdGlvbjogaW5pdGlhbDsNCiAgbGVmdDogMHB4Ow0KICBtYXJnaW4tbGVmdDogLTRweDsNCiAgY29udGVudDogIiAiOw0KfQ0KDQppbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQ6YmVmb3JlIHsNCiAgcG9zaXRpb246IGluaXRpYWw7DQogIGxlZnQ6IDBweDsNCiAgbWFyZ2luLWxlZnQ6IC0zcHg7DQogIGNvbnRlbnQ6ICLinJMiOw0KICBjb2xvcjogIzAwMDsNCn0NCg0KaW5wdXRbdHlwZT0iY2hlY2tib3giXS5idWxrOmNoZWNrZWQ6YmVmb3JlIHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBsZWZ0OiAwcHg7DQogIHRvcDogLTExcHg7DQogIG1hcmdpbi1sZWZ0OiAtM3B4Ow0KICBjb250ZW50OiAi4pyTIjsNCiAgZm9udC1zaXplOiAxLjVlbTsNCiAgY29sb3I6ICMwMDA7DQp9DQoNCg0KaW5wdXRbdHlwZT1idXR0b25dLmNhbmNlbCB7DQoNCiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogIGJvcmRlci1jb2xvcjogcmVkOw0KfQ0KDQppbnB1dFt0eXBlPWJ1dHRvbl0uc2F2ZSB7DQogIGJhY2tncm91bmQtY29sb3I6ICMxMTE7DQogIGZsb2F0OiByaWdodDsNCn0NCg0KDQppbnB1dFt0eXBlPWJ1dHRvbl0uYmxhY2ssDQppbnB1dFt0eXBlPXN1Ym1pdF0uYmxhY2sgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOw0KICBib3JkZXItY29sb3I6ICMwMDA7DQp9DQoNCmlucHV0W3R5cGU9YnV0dG9uXS5jZW50ZXIgew0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOw0KICBib3JkZXItY29sb3I6ICMwMDA7DQp9DQoNCi5wb2ludGVyIHsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQoucG9pbnRlcjpob3ZlciB7DQogIGNvbG9yOiAjMDBFNkZGOw0KICBjdXJzb3I6IHBvaW50ZXI7DQp9DQoNCi5zb3J0VGhpcyB7DQogIGNvbG9yOiAjMDBFNkZGOw0KfQ0KDQoudzQwcHggew0KICBtYXgtd2lkdGg6IDQwcHg7DQp9DQoNCi53NTBweCB7DQogIG1heC13aWR0aDogNTBweDsNCn0NCg0KLnc4MHB4IHsNCiAgbWF4LXdpZHRoOiA4MHB4Ow0KfQ0KDQoudzE1MHB4IHsNCiAgbWF4LXdpZHRoOiAxNTBweDsNCn0NCg0KLncyMDBweCB7DQogIG1heC13aWR0aDogMjAwcHg7DQogIG1pbi13aWR0aDogMTAwcHg7DQogIHdpZHRoOiAyMDBweDsNCiAgb3ZlcmZsb3cteDogaGlkZGVuOw0KICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsNCn0NCg0KLnczMDBweCB7DQogIG1heC13aWR0aDogMzAwcHg7DQp9DQoNCi53MjIwcHggew0KICBtYXgtd2lkdGg6IDIyMHB4Ow0KICBjdXJzb3I6IGFsaWFzOw0KfQ0KDQouZm9vdGVyIHsNCiAgZm9udC1zaXplOiAxMHB4Ow0KfQ0KDQouY2VudGVyIHsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQouc2NyZWVuTG9nSGlkZGVuIHsNCiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAtMTEwcHgpOw0KfQ0KDQouYm9yZGVyU3BhY2Ugew0KICBtYXJnaW4tYm90dG9tOiAzMHB4Ow0KfQ0KDQouYmxvY2sge30NCg0KLm5vbmUgew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQoNCi5ub3RWaXNpYmxlIHsNCiAgaGVpZ2h0OiAwcHg7DQogIGRpc3BsYXk6IG5vbmU7DQogIG9wYWNpdHk6IDA7DQogIGJvcmRlci1ib3R0b206ICMwMDAgc29saWQgMHB4Ow0KDQp9DQoNCi52aXNpYmxlIHsNCiAgb3BhY2l0eTogMTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGJvcmRlci1ib3R0b206ICM0NDQgc29saWQgMXB4Ow0KICBwYWRkaW5nOiAxMHB4Ow0KfQ0KDQouZmxvYXRSaWdodCB7DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLmZsb2F0TGVmdCB7DQogIGZsb2F0OiBsZWZ0Ow0KfQ0KDQoubWVudS1hY3RpdmUgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBFNkZGOw0KfQ0KDQp0YWJsZSB7DQogIHdpZHRoOiAxMDAlDQp9DQoNCi5tZW51LW5vdEFjdGl2ZSB7fQ0KDQojYnJhbmNoIHsNCiAgY29sb3I6IHJlZDsNCn0NCg0KI2ludGVyYWN0aW9uIHsNCiAgbWFyZ2luLWJvdHRvbTogMTAwcHg7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgYm9yZGVyLWJvdHRvbTogc29saWQgMHB4ICM3Nzc7DQp9DQoNCg0KLmhhbGYgew0KICBkaXNwbGF5OiBibG9jazsNCiAgd2lkdGg6IDQ1JTsNCn0NCg0KLm1lbnUgew0KICBib3JkZXI6IHNvbGlkIDFweCAjMDBFNkZGOw0KfQ0KDQouaW5mb01zZyB7DQogIGNvbG9yOiAjYWFhOw0KfQ0KDQouZXJyb3JNc2cgew0KICBjb2xvcjogcmVkOw0KfQ0KDQoud2FybmluZ01zZyB7DQogIGNvbG9yOiB5ZWxsb3c7DQp9DQoNCi5kZWJ1Z01zZyB7DQogIGNvbG9yOiBtYWdlbnRhOw0KfQ0KDQoNCi5jYXRlZ29yeSB7DQogIGJvcmRlci1sZWZ0OiBzb2xpZCAycHgNCn0NCg0KLm5ld3Mgew0KICBib3JkZXItY29sb3I6IHRvbWF0bw0KfQ0KDQoubW92aWUgew0KICBib3JkZXItY29sb3I6IHJveWFsYmx1ZTsNCn0NCg0KLnNlcmllcyB7DQogIGJvcmRlci1jb2xvcjogZ29sZDsNCn0NCg0KLnNwb3J0cyB7DQogIGJvcmRlci1jb2xvcjogeWVsbG93Z3JlZW47DQp9DQoNCi5raWRzIHsNCiAgYm9yZGVyLWNvbG9yOiBtZWRpdW1wdXJwbGU7DQp9DQoNCi8qIExvYWRpbmcgKi8NCiNsb2FkaW5nIHsNCiAgbGVmdDogMHB4Ow0KICB0b3A6IDBweDsNCiAgei1pbmRleDogMTAwMDA7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOw0KICBtYXJnaW46IGF1dG87DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQp9DQoNCg0KLmxvYWRlciB7DQogIGJvcmRlcjogNXB4IHNvbGlkIHRyYW5zcGFyZW50Ow0KICBib3JkZXItcmFkaXVzOiA1MCU7DQogIGJvcmRlci10b3A6IDVweCBzb2xpZCAjMDBFNkZGOw0KICBib3JkZXItYm90dG9tOiA1cHggc29saWQgIzAwRTZGRjsNCiAgd2lkdGg6IDUwcHg7DQogIGhlaWdodDogNTBweDsNCiAgLXdlYmtpdC1hbmltYXRpb246IHNwaW4gMS4ycyBsaW5lYXIgaW5maW5pdGU7DQogIGFuaW1hdGlvbjogc3BpbiAxLjJzIGxpbmVhciBpbmZpbml0ZTsNCg0KICBwb3NpdGlvbjogZml4ZWQ7DQogIG1hcmdpbjogYXV0bzsNCg0KICB0b3A6IDA7DQogIHJpZ2h0OiAwOw0KICBib3R0b206IDA7DQogIGxlZnQ6IDA7DQoNCn0NCg0KLm5vdGlmaWNhdGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7DQogIGNvbG9yOiAjZmZmOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIHBhZGRpbmc6IDEwcHg7IC8qIEFkanVzdCBwYWRkaW5nIGFzIG5lZWRlZCAqLw0KICBwb3NpdGlvbjogZml4ZWQ7DQogIGJvdHRvbTogMjBweDsgLyogQWRqdXN0IHBvc2l0aW9uIGFzIG5lZWRlZCAqLw0KICByaWdodDogMjBweDsgLyogQWRqdXN0IHBvc2l0aW9uIGFzIG5lZWRlZCAqLw0KICB6LWluZGV4OiAxMDAwOw0KICBkaXNwbGF5OiBub25lOyAvKiBJbml0aWFsbHkgaGlkZGVuICovDQogIHdpZHRoOiAzMDBweDsgLyogQWRqdXN0IHdpZHRoIGFzIG5lZWRlZCAqLw0KICBtYXgtaGVpZ2h0OiBjYWxjKDgwdmggLSAxMHB4KTsgLyogQWRqdXN0IGhlaWdodCBhcyBuZWVkZWQgKi8NCiAgYm9yZGVyLXJhZGl1czogMTBweDsgLyogT3B0aW9uYWw6IHJvdW5kZWQgY29ybmVycyAqLw0KICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuNSk7IC8qIE9wdGlvbmFsOiBhZGQgc2hhZG93IGZvciBiZXR0ZXIgdmlzaWJpbGl0eSAqLw0KfQ0KDQoubm90aWZpY2F0aW9uIC5oZWFkZXIgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQp9DQoNCi5ub3RpZmljYXRpb24gLmNvbnRlbnQgew0KICBmbGV4LWdyb3c6IDE7IC8qIEFsbG93IGNvbnRlbnQgdG8gZ3JvdyBhbmQgdGFrZSBhdmFpbGFibGUgc3BhY2UgKi8NCiAgb3ZlcmZsb3cteTogYXV0bzsgLyogRW5hYmxlIHZlcnRpY2FsIHNjcm9sbGluZyBpZiBjb250ZW50IG92ZXJmbG93cyAqLw0KICBtYXJnaW4tYm90dG9tOiAxMHB4OyAvKiBFbnN1cmUgdGhlcmUncyBhIGdhcCB0byB0aGUgYm90dG9tICovDQp9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBzcGluIHsNCiAgMCUgew0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogIH0NCg0KICAxMDAlIHsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogIH0NCn0NCg0KQGtleWZyYW1lcyBzcGluIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICB9DQoNCiAgMTAwJSB7DQogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgfQ0KfQ==" + webUI["web/public/img/m3u.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wNy0yOFQxOTowNzozMTwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CumjVbcAAAGWSURBVGgF7VoxTgJRFGTFaGKBFnbEcABjb0fiBego7D2ABYmn8ARKRWFNQ6gx4QRQGWJJoY2VhXGdl7Dkh7Dsx3ns3yXvJ5P97L6d92bmhwYqlcWK43gK5L2enP51NP8F7pN721wPnOITZx9qG6HxI8QIZO+9XCHeL+VQKKm8QMyxb6+iCpH528AQYs58xIQWknV8mhDxCjEXWWJCC8maT55fAmOIudpUXAYhMn8dGEHMTZqYsgiR+U+BAcTcrhNTJiEy/xHQg5jOqpjD1RsBP3+id8u3P8TUoij6SuoLIwRDfWOofjLYtteyHa1UfcvvcUT1jqpGauVuHnyAdragjv/TAkley3uhj9Y5ZhDQa2+Olgmhz4IygSWibChNZ4nQFioTWCLKhtJ0lghtoTKBJaJsKE1nidAWKhNYIsqG0nSWCG2hMoElomwoTWeJ0BYqE1giyobSdJYIbaEygSWibChNZ4nQFioTWCLKhtJ0biJzmi1/guXMrpDn/OegO3bXMuAH0TtgAvwARV3y57Q34AGoJkL+AErKZ9cqbH7AAAAAAElFTkSuQmCC" + webUI["web/public/js/logs.js"] = "Y2xhc3MgTG9nIHsKICAgIGNyZWF0ZUxvZyhlbnRyeSkgewogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiUFJFIik7CiAgICAgICAgaWYgKGVudHJ5LmluZGV4T2YoIldBUk5JTkciKSAhPSAtMSkgewogICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJ3YXJuaW5nTXNnIjsKICAgICAgICB9CiAgICAgICAgaWYgKGVudHJ5LmluZGV4T2YoIkVSUk9SIikgIT0gLTEpIHsKICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiZXJyb3JNc2ciOwogICAgICAgIH0KICAgICAgICBpZiAoZW50cnkuaW5kZXhPZigiREVCVUciKSAhPSAtMSkgewogICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJkZWJ1Z01zZyI7CiAgICAgICAgfQogICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gZW50cnk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9Cn0KZnVuY3Rpb24gc2hvd0xvZ3MoYm90dG9tKSB7CiAgICB2YXIgbG9nID0gbmV3IExvZygpOwogICAgdmFyIGxvZ3MgPSBTRVJWRVJbImxvZyJdWyJsb2ciXTsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudF9sb2ciKTsKICAgIGRpdi5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBrZXlzID0gZ2V0T2JqS2V5cyhsb2dzKTsKICAgIGtleXMuZm9yRWFjaChsb2dJRCA9PiB7CiAgICAgICAgdmFyIGVudHJ5ID0gbG9nLmNyZWF0ZUxvZyhsb2dzW2xvZ0lEXSk7CiAgICAgICAgZGl2LmFwcGVuZChlbnRyeSk7CiAgICB9KTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChib3R0b20gPT0gdHJ1ZSkgewogICAgICAgICAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gtd3JhcHBlciIpOwogICAgICAgICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IHdyYXBwZXIuc2Nyb2xsSGVpZ2h0OwogICAgICAgIH0KICAgIH0sIDEwKTsKfQpmdW5jdGlvbiByZXNldExvZ3MoKSB7CiAgICB2YXIgY21kID0gInJlc2V0TG9ncyI7CiAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKfQovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dzLmpzLm1hcA==" + webUI["web/public/js/menu.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy9tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE1BQU0sUUFBUTtJQUFkO1FBQ0UsZUFBVSxHQUFXLFdBQVcsQ0FBQTtRQUNoQyxZQUFPLEdBQVcsSUFBSSxDQUFBO1FBQ3RCLGNBQVMsR0FBVyxNQUFNLENBQUE7SUFhNUIsQ0FBQztJQVhDLFNBQVMsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7UUFDekIsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxZQUFhLFNBQVEsUUFBUTtJQVFqQyxZQUFZLE9BQWUsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLFFBQWdCO1FBQ3pFLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLGdDQUFn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R0FBRyxDQUFBO3dCQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDN0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTt3QkFFakMsSUFBSSxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQTt3QkFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7d0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFBO3dCQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTt3QkFDbEQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTt3QkFFakMsSUFBSSxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQTt3QkFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7d0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFBO3dCQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQTt3QkFDdEQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTt3QkFFakMsSUFBSSxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQTt3QkFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7d0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFBO3dCQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTt3QkFDakQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxF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" + webUI["web/public/lang/de.json"] = "ew0KICAibWFpbk1lbnUiOiB7DQogICAgIml0ZW0iOiB7DQogICAgICAicGxheWxpc3QiOiAiV2llZGVyZ2FiZWxpc3RlIiwNCiAgICAgICJwbXNJRCI6ICJQTVMgSUQiLA0KICAgICAgImZpbHRlciI6ICJGaWx0ZXIiLA0KICAgICAgInhtbHR2IjogIlhNTFRWIiwNCiAgICAgICJtYXBwaW5nIjogIlp1b3JkbnVuZyIsDQogICAgICAidXNlcnMiOiAiQmVudXR6ZXIiLA0KICAgICAgInNldHRpbmdzIjogIkVpbnN0ZWxsdW5nZW4iLA0KICAgICAgImxvZyI6ICJQcm90b2tvbGwiLA0KICAgICAgImxvZ291dCI6ICJBYm1lbGRlbiINCiAgICB9LA0KICAgICJoZWFkbGluZSI6IHsNCiAgICAgICJwbGF5bGlzdCI6ICJMb2thbGUgb2RlciBlbnRmZXJudGUgV2llZGVyZ2FiZWxpc3RlbiIsDQogICAgICAiZmlsdGVyIjogIldpZWRlcmdhYmVsaXN0ZSBmaWx0ZXJuIiwNCiAgICAgICJ4bWx0diI6ICJMb2thbGUgb2RlciBlbnRmZXJudGUgWE1MVFYtRGF0ZWllbiIsDQogICAgICAibWFwcGluZyI6ICJadW9yZG51bmcgZGVyIFdpZWRlcmdhYmVsaXN0ZW5rYW7DpGxlIHp1IEVQRy1LYW7DpGxlbiIsDQogICAgICAidXNlcnMiOiAiQmVudXR6ZXJ2ZXJ3YWx0dW5nIiwNCiAgICAgICJzZXR0aW5ncyI6ICJFaW5zdGVsbHVuZ2VuIiwNCiAgICAgICJsb2ciOiAiUHJvdG9rb2xsIiwNCiAgICAgICJsb2dvdXQiOiAiQWJtZWxkZW4iDQogICAgfQ0KICB9LA0KICAiY29uZmlybSI6IHsNCiAgICAicmVzdG9yZSI6ICJBbGxlIERhdGVuIHdlcmRlbiBkdXJjaCBkaWUgYXVzIGRlbSBCYWNrdXAgZXJzZXR6dC4gU29sbGVuIGRpZSBEYXRlaWVuIHdpZWRlcmhlcmdlc3RlbGx0IHdlcmRlbj8iDQogIH0sDQogICJhbGVydCI6IHsNCiAgICAiZmlsZUxvYWRpbmdFcnJvciI6ICJEYXRlaSBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW4iLA0KICAgICJpbnZhbGlkQ2hhbm5lbE51bWJlciI6ICJVbmfDvGx0aWdlIEthbmFsbnVtbWVyIiwNCiAgICAibWlzc2luZ0lucHV0IjogIkZlaGxlbmRlIEVpbmdhYmUiDQogIH0sDQogICJidXR0b24iOiB7DQogICAgImJhY2siOiAiWnVyw7xjayIsDQogICAgImJhY2t1cCI6ICJCYWNrdXAiLA0KICAgICJidWxrRWRpdCI6ICJNYXNzZW5iZWFyYmVpdHVuZyIsDQogICAgImNhbmNlbCI6ICJBYmJyZWNoZW4iLA0KICAgICJkZWxldGUiOiAiTMO2c2NoZW4iLA0KICAgICJkb25lIjogIkZlcnRpZyIsDQogICAgImxvZ2luIjogIkFubWVsZGVuIiwNCiAgICAibmV3IjogIk5ldSIsDQogICAgIm5leHQiOiAiV2VpdGVyIiwNCiAgICAicmVzdG9yZSI6ICJXaWVkZXJoZXJzdGVsbGVuIiwNCiAgICAic2F2ZSI6ICJTcGVpY2hlcm4iLA0KICAgICJzZWFyY2giOiAiU3VjaGVuIiwNCiAgICAidXBkYXRlIjogIkFrdHVhbGlzaWVyZW4iLA0KICAgICJ1cGRhdGluZyI6ICJBa3R1YWxpc2llcmUuLi4iLA0KICAgICJjcmFldGVBY2NvdW50IjogIktvbnRvIGVyc3RlbGxlbiIsDQogICAgInJlc2V0TG9ncyI6ICJQcm90b2tvbGxlIHp1csO8Y2tzZXR6ZW4iLA0KICAgICJ1cGxvYWRMb2dvIjogIkxvZ28gaG9jaGxhZGVuIiwNCiAgICAidXBsb2FkQ3VzdG9tSW1hZ2UiOiAiQmVudXR6ZXJkZWZpbmllcnRlcyBCaWxkIGhvY2hsYWRlbiIsDQogICAgInNvcnRDaGFubmVsc0FscGhhIjogIkthbsOkbGUgYWxwaGFiZXRpc2NoIHNvcnRpZXJlbiIsDQogICAgInNvcnRDaGFubmVsTnVtYmVycyI6ICJLYW7DpGxlIHNvcnRpZXJlbiINCiAgfSwNCiAgImZpbHRlciI6IHsNCiAgICAidGFibGUiOiB7DQogICAgICAibmFtZSI6ICJGaWx0ZXJuYW1lIiwNCiAgICAgICJ0eXBlIjogIkZpbHRlcnR5cCIsDQogICAgICAiZmlsdGVyIjogIkZpbHRlciINCiAgICB9LA0KICAgICJjdXN0b20iOiAiQmVudXR6ZXJkZWZpbmllcnQiLA0KICAgICJncm91cCI6ICJHcnVwcGUiLA0KICAgICJuYW1lIjogew0KICAgICAgInRpdGxlIjogIkZpbHRlcm5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZpbHRlcm5hbWUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJzdGFydGluZ251bWJlciI6IHsNCiAgICAgICJ0aXRsZSI6ICJGaWx0ZXItU3RhcnRudW1tZXIiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZpbHRlci1TdGFydG51bW1lciIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiU3RhcnRrYW5hbG51bW1lciBmw7xyIGRpZXNlbiBHcnVwcGVuZmlsdGVyIChTdGFuZGFyZCBpc3QgMTAwMCkiDQogICAgfSwNCiAgICAiY2F0ZWdvcnkiOiB7DQogICAgICAidGl0bGUiOiAiRmlsdGVya2F0ZWdvcmllIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJGaWx0ZXJrYXRlZ29yaWUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkZpbHRlcmthdGVnb3JpZSBzZXR6dCBhbGxlIEthbsOkbGUgaW0gRmlsdGVyIGF1ZiBlaW5lIGJlc3RpbW10ZSBLYXRlZ29yaWUgKE5hY2hyaWNodGVuLCBTcG9ydCB1c3cuKSINCiAgICB9LA0KICAgICJkZXNjcmlwdGlvbiI6IHsNCiAgICAgICJ0aXRsZSI6ICJCZXNjaHJlaWJ1bmciLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkJlc2NocmVpYnVuZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInR5cGUiOiB7DQogICAgICAidGl0bGUiOiAiVHlwIiwNCiAgICAgICJncm91cFRpdGxlIjogIkdydXBwZW50aXRlbCIsDQogICAgICAiY3VzdG9tRmlsdGVyIjogIkJlbnV0emVyZGVmaW5pZXJ0ZXIgRmlsdGVyIg0KICAgIH0sDQogICAgImNhc2VTZW5zaXRpdmUiOiB7DQogICAgICAidGl0bGUiOiAiR3Jvw58tL0tsZWluc2NocmVpYnVuZyBiZWFjaHRlbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiZmlsdGVyUnVsZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJGaWx0ZXJyZWdlbCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiU3BvcnQge0hEfSAhe0VTLElUfSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImZpbHRlckdyb3VwIjogew0KICAgICAgInRpdGxlIjogIkdydXBwZW50aXRlbCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJXw6RobGVuIFNpZSBlaW5lIE0zVS1HcnVwcGUuIChaw6RobGVyKTxicj5EYXMgw4RuZGVybiBkZXMgR3J1cHBlbnRpdGVscyBpbiBkZXIgTTNVIG1hY2h0IGRlbiBGaWx0ZXIgdW5nw7xsdGlnLiINCiAgICB9LA0KICAgICJpbmNsdWRlIjogew0KICAgICAgInRpdGxlIjogIkVpbnNjaGxpZcOfZW4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkZIRCxVSEQiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkthbmFsbmFtZSBtdXNzIGVudGhhbHRlbi48YnI+KEtvbW1hZ2V0cmVubnQpIEtvbW1hIGJlZGV1dGV0IG9kZXIiDQogICAgfSwNCiAgICAiZXhjbHVkZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJBdXNzY2hsaWXDn2VuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJFUyxJVCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiS2FuYWxuYW1lIGRhcmYgbmljaHQgZW50aGFsdGVuLjxicj4oS29tbWFnZXRyZW5udCkgS29tbWEgYmVkZXV0ZXQgb2RlciINCiAgICB9DQogIH0sDQogICJwbGF5bGlzdCI6IHsNCiAgICAidGFibGUiOiB7DQogICAgICAicGxheWxpc3QiOiAiV2llZGVyZ2FiZWxpc3RlIiwNCiAgICAgICJ0dW5lciI6ICJUdW5lciIsDQogICAgICAibGFzdFVwZGF0ZSI6ICJMZXR6dGUgQWt0dWFsaXNpZXJ1bmciLA0KICAgICAgImF2YWlsYWJpbGl0eSI6ICJWZXJmw7xnYmFya2VpdCIsDQogICAgICAidHlwZSI6ICJUeXAiLA0KICAgICAgInN0cmVhbXMiOiAiU3RyZWFtcyIsDQogICAgICAiZ3JvdXBUaXRsZSI6ICJHcnVwcGVudGl0ZWwiLA0KICAgICAgInR2Z0lEIjogInR2Zy1pZCIsDQogICAgICAidW5pcXVlSUQiOiAiRWluZGV1dGlnZSBJRCINCiAgICB9LA0KICAgICJwbGF5bGlzdFR5cGUiOiB7DQogICAgICAidGl0bGUiOiAiV2llZGVyZ2FiZWxpc3RlbnR5cCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAidHlwZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJUeXAiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgIm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiTmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiV2llZGVyZ2FiZWxpc3Rlbm5hbWUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJkZXNjcmlwdGlvbiI6IHsNCiAgICAgICJ0aXRsZSI6ICJCZXNjaHJlaWJ1bmciLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkJlc2NocmVpYnVuZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImZpbGVNM1UiOiB7DQogICAgICAidGl0bGUiOiAiTTNVLURhdGVpIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJEYXRlaXBmYWQgb2RlciBVUkwgZGVyIE0zVSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImZpbGVIREhSIjogew0KICAgICAgInRpdGxlIjogIkhESG9tZVJ1biBJUCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiSVAtQWRyZXNzZSB1bmQgUG9ydCAoMTkyLjE2OC4xLjEwOjUwMDQpIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAidHVuZXIiOiB7DQogICAgICAidGl0bGUiOiAiVHVuZXIgLyBTdHJlYW1zIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkFuemFobCBkZXIgcGFyYWxsZWxlbiBWZXJiaW5kdW5nZW4sIGRpZSB6dW0gQW5iaWV0ZXIgaGVyZ2VzdGVsbHQgd2VyZGVuIGvDtm5uZW4uIDxicj5OdXIgdmVyZsO8Z2JhciBtaXQgYWt0aXZpZXJ0ZW0gUHVmZmVyLjxicj5OZXVlIEVpbnN0ZWxsdW5nZW4gd2VyZGVuIGVyc3QgbmFjaCBCZWVuZGVuIGFsbGVyIFN0cmVhbXMgYW5nZXdlbmRldC4iDQogICAgfSwNCiAgICAiaHR0cF9wcm94eV9pcCI6IHsNCiAgICAgICJ0aXRsZSI6ICJIVFRQLVByb3h5LUlQIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIxOTIuMTY4LjAuMiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiSVAtQWRyZXNzZSwgZGllIHZvbSBIVFRQLVByb3h5IHZlcndlbmRldCB3ZXJkZW4gc29sbCINCiAgICB9LA0KICAgICJodHRwX3Byb3h5X3BvcnQiOiB7DQogICAgICAidGl0bGUiOiAiSFRUUC1Qcm94eS1Qb3J0IiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICI4ODg4IiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQb3J0LCBkZXIgdm9tIEhUVFAtUHJveHkgdmVyd2VuZGV0IHdlcmRlbiBzb2xsIg0KICAgIH0NCiAgfSwNCiAgInhtbHR2Ijogew0KICAgICJ0YWJsZSI6IHsNCiAgICAgICJndWlkZSI6ICJHdWlkZSIsDQogICAgICAibGFzdFVwZGF0ZSI6ICJMZXR6dGUgQWt0dWFsaXNpZXJ1bmciLA0KICAgICAgImF2YWlsYWJpbGl0eSI6ICJWZXJmw7xnYmFya2VpdCIsDQogICAgICAiY2hhbm5lbHMiOiAiS2Fuw6RsZSIsDQogICAgICAicHJvZ3JhbXMiOiAiUHJvZ3JhbW1lIg0KICAgIH0sDQogICAgIm5hbWUiOiB7DQogICAgICAidGl0bGUiOiAiTmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiR3VpZGVuYW1lIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiZGVzY3JpcHRpb24iOiB7DQogICAgICAidGl0bGUiOiAiQmVzY2hyZWlidW5nIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJCZXNjaHJlaWJ1bmciLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJmaWxlWE1MVFYiOiB7DQogICAgICAidGl0bGUiOiAiWE1MVFYtRGF0ZWkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkRhdGVpcGZhZCBvZGVyIFVSTCBkZXIgWE1MVFYiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJodHRwX3Byb3h5X2lwIjogew0KICAgICAgInRpdGxlIjogIkhUVFAtUHJveHktSVAiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjE5Mi4xNjguMC4yIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJJUC1BZHJlc3NlLCBkaWUgdm9tIEhUVFAtUHJveHkgdmVyd2VuZGV0IHdlcmRlbiBzb2xsIg0KICAgIH0sDQogICAgImh0dHBfcHJveHlfcG9ydCI6IHsNCiAgICAgICJ0aXRsZSI6ICJIVFRQLVByb3h5LVBvcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjg4ODgiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnQsIGRlciB2b20gSFRUUC1Qcm94eSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGwiDQogICAgfQ0KICB9LA0KICAibWFwcGluZyI6IHsNCiAgICAidGFibGUiOiB7DQogICAgICAiY2hObyI6ICJLYW5hbG5yLiIsDQogICAgICAibG9nbyI6ICJMb2dvIiwNCiAgICAgICJjaGFubmVsTmFtZSI6ICJLYW5hbG5hbWUiLA0KICAgICAgInBsYXlsaXN0IjogIldpZWRlcmdhYmVsaXN0ZSIsDQogICAgICAiZ3JvdXBUaXRsZSI6ICJHcnVwcGVudGl0ZWwiLA0KICAgICAgInhtbHR2RmlsZSI6ICJYTUxUVi1EYXRlaSIsDQogICAgICAieG1sdHZJRCI6ICJYTUxUVi1JRCINCiAgICB9LA0KICAgICJhY3RpdmUiOiB7DQogICAgICAidGl0bGUiOiAiQWt0aXYiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImNoYW5uZWxOYW1lIjogew0KICAgICAgInRpdGxlIjogIkthbmFsbmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiY2hhbm5lbEdyb3VwU3RhcnQiOiB7DQogICAgICAidGl0bGUiOiAiS2FuYWxncnVwcGVuc3RhcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInNvcnRDaGFubmVsc0FscGhhIjogew0KICAgICAgInRpdGxlIjogIkFscGhhYmV0aXNjaCBzb3J0aWVyZW4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInNvcnRDaGFubmVscyI6IHsNCiAgICAgICJ0aXRsZSI6ICJLYW7DpGxlIHNvcnRpZXJlbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiZGVzY3JpcHRpb24iOiB7DQogICAgICAidGl0bGUiOiAiS2FuYWxiZXNjaHJlaWJ1bmciLA0KICAgICAgInBsYWNlaG9sZGVyIjogIldpcmQgdm9tIER1bW15IGFscyBYTUwtQmVzY2hyZWlidW5nIHZlcndlbmRldCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInVwZGF0ZUNoYW5uZWxOYW1lIjogew0KICAgICAgInRpdGxlIjogIkthbmFsbmFtZSBha3R1YWxpc2llcmVuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJjaGFubmVsTG9nbyI6IHsNCiAgICAgICJ0aXRsZSI6ICJMb2dvLVVSTCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAidXBkYXRlQ2hhbm5lbExvZ28iOiB7DQogICAgICAidGl0bGUiOiAiS2FuYWwtTG9nbyBha3R1YWxpc2llcmVuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJlcGdDYXRlZ29yeSI6IHsNCiAgICAgICJ0aXRsZSI6ICJFUEctS2F0ZWdvcmllIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJtM3VHcm91cFRpdGxlIjogew0KICAgICAgInRpdGxlIjogIkdydXBwZW50aXRlbCAodGhyZWFkZmluLm0zdSkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgInhtbHR2RmlsZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJYTUxUVi1EYXRlaSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAieG1sdHZDaGFubmVsIjogew0KICAgICAgInRpdGxlIjogIlhNTFRWLUthbmFsIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJwcHZleHRyYSI6IHsNCiAgICAgICJ0aXRsZSI6ICJQUFYtWnVzYXR6dGl0ZWwiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRGllcyBmw7xndCBkZW0gUHJvZ3JhbW1kYXRlbiBiZW51dHplcmRlZmluaWVydGVuIFRleHQgaGluenUiDQogICAgfSwNCiAgICAiYmFja3VwQ2hhbm5lbDEiOiB7DQogICAgICAidGl0bGUiOiAiQmFja3VwLUthbmFsIDEiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgImJhY2t1cENoYW5uZWwyIjogew0KICAgICAgInRpdGxlIjogIkJhY2t1cC1LYW5hbCAyIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJiYWNrdXBDaGFubmVsMyI6IHsNCiAgICAgICJ0aXRsZSI6ICJCYWNrdXAtS2FuYWwgMyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiaGlkZUNoYW5uZWwiOiB7DQogICAgICAidGl0bGUiOiAiQmFja3VwLUthbmFsIGF1c2JsZW5kZW4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0NCiAgfSwNCiAgInVzZXJzIjogew0KICAgICJ0YWJsZSI6IHsNCiAgICAgICJ1c2VybmFtZSI6ICJCZW51dHplcm5hbWUiLA0KICAgICAgInBhc3N3b3JkIjogIlBhc3N3b3J0IiwNCiAgICAgICJ3ZWIiOiAiV0VCIiwNCiAgICAgICJwbXMiOiAiUE1TIiwNCiAgICAgICJtM3UiOiAiTTNVIiwNCiAgICAgICJ4bWwiOiAiWE1MIiwNCiAgICAgICJhcGkiOiAiQVBJIg0KICAgIH0sDQogICAgInVzZXJuYW1lIjogew0KICAgICAgInRpdGxlIjogIkJlbnV0emVybmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiQmVudXR6ZXJuYW1lIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAicGFzc3dvcmQiOiB7DQogICAgICAidGl0bGUiOiAiUGFzc3dvcnQiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIlBhc3N3b3J0IiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiY29uZmlybSI6IHsNCiAgICAgICJ0aXRsZSI6ICJCZXN0w6R0aWdlbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiUGFzc3dvcnQgYmVzdMOkdGlnZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJ3ZWIiOiB7DQogICAgICAidGl0bGUiOiAiV2ViLVp1Z2FuZyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAicG1zIjogew0KICAgICAgInRpdGxlIjogIlBNUy1adWdhbmciLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0sDQogICAgIm0zdSI6IHsNCiAgICAgICJ0aXRsZSI6ICJNM1UtWnVnYW5nIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIiINCiAgICB9LA0KICAgICJ4bWwiOiB7DQogICAgICAidGl0bGUiOiAiWE1MLVp1Z2FuZyIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICIiDQogICAgfSwNCiAgICAiYXBpIjogew0KICAgICAgInRpdGxlIjogIkFQSS1adWdhbmciLA0KICAgICAgInBsYWNlaG9sZGVyIjogIiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiIg0KICAgIH0NCiAgfSwNCiAgInNldHRpbmdzIjogew0KICAgICJjYXRlZ29yeSI6IHsNCiAgICAgICJnZW5lcmFsIjogIkFsbGdlbWVpbiIsDQogICAgICAiY3VzdG9taXphdGlvbiI6ICJBbnBhc3N1bmciLA0KICAgICAgImZpbGVzIjogIkRhdGVpZW4iLA0KICAgICAgIm5ldHdvcmsiOiAiTmV0endlcmsiLA0KICAgICAgInN0cmVhbWluZyI6ICJTdHJlYW1pbmciLA0KICAgICAgImJhY2t1cCI6ICJTaWNoZXJ1bmciLA0KICAgICAgImF1dGhlbnRpY2F0aW9uIjogIkF1dGhlbnRpZml6aWVydW5nIg0KICAgIH0sDQogICAgInVwbG9hZEN1c3RvbUltYWdlIjogew0KICAgICAgInRpdGxlIjogIkJlbnV0emVyZGVmaW5pZXJ0ZXMgQmlsZCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiSGllciBrw7ZubmVuIFNpZSBlaW4gQmlsZCBob2NobGFkZW4sIGRhcyBkZW4gQmVudXR6ZXJuIGFuZ2V6ZWlndCB3aXJkLCB3ZW5uIGtlaW5lIHdlaXRlcmVuIFR1bmVyIGluIGRlciBXaWVkZXJnYWJlbGlzdGUgdmVyZsO8Z2JhciBzaW5kISINCiAgICB9LA0KICAgICJ1cGRhdGUiOiB7DQogICAgICAidGl0bGUiOiAiWmVpdHBsYW4gZsO8ciBVcGRhdGVzIChXaWVkZXJnYWJlbGlzdGUsIFhNTFRWLCBTaWNoZXJ1bmcpIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICIwMDAwLDEwMDAsMjAwMCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiWmVpdCBpbSAyNC1TdHVuZGVuLUZvcm1hdCAoMDgwMCA9IDg6MDAgVWhyKS4gTWVocmVyZSBaZWl0ZW4ga8O2bm5lbiBkdXJjaCBLb21tYXMgZ2V0cmVubnQgZWluZ2VnZWJlbiB3ZXJkZW4uIExhc3NlbiBTaWUgZGllc2VzIEZlbGQgbGVlciwgd2VubiBrZWluZSBVcGRhdGVzIGR1cmNoZ2Vmw7xocnQgd2VyZGVuIHNvbGxlbi4iDQogICAgfSwNCiAgICAiYXBpIjogew0KICAgICAgInRpdGxlIjogIkFQSS1TY2huaXR0c3RlbGxlIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICLDnGJlciBkaWUgQVBJLVNjaG5pdHRzdGVsbGUga8O2bm5lbiBCZWZlaGxlIGFuIFRocmVhZGZpbiBnZXNlbmRldCB3ZXJkZW4uIEFQSS1Eb2t1bWVudGF0aW9uIGlzdCA8YSBocmVmPSdodHRwczovL2dpdGh1Yi5jb20vbWFyY2VsR29lcmVudHovVGhyZWFkZmluL3dpa2kvQVBJJz5oaWVyPC9hPiINCiAgICB9LA0KICAgICJzc2RwIjogew0KICAgICAgInRpdGxlIjogIlNTRFAiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlNTRFAgaXN0IGVpbiBOZXR6d2Vya3Byb3Rva29sbCB6dXIgRGllbnN0ZXJrZW5udW5nLiBFcyB3aXJkIHp1ciBhdXRvbWF0aXNjaGVuIEVya2VubnVuZyB2b24gVGhyZWFkZmluIGltIE5ldHp3ZXJrIHZlcndlbmRldC4iDQogICAgfSwNCiAgICAiZHVtbXkiOiB7DQogICAgICAidGl0bGUiOiAiU3RhbmRhcmQtRHVtbXktRGF0ZW4gYWt0aXZpZXJlbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBha3RpdmllcnQsIHdlcmRlbiBpbmFrdGl2ZSBLYW7DpGxlIGF1dG9tYXRpc2NoIGRlbSB1bnRlbiBhbmdlZ2ViZW5lbiBEdW1teS1EYXRlbmthbmFsIHp1Z2VvcmRuZXQuIFZlcndlbmRlbiBTaWUgZGllcywgdW0gTGl2ZS1FdmVudC1LYW7DpGxlIGFrdGl2IHp1IGhhbHRlbi4iDQogICAgfSwNCiAgICAiZHVtbXlDaGFubmVsIjogew0KICAgICAgInRpdGxlIjogIkR1bW15LURhdGVua2FuYWwiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlfDpGhsZW4gU2llIGRlbiBTdGFuZGFyZGthbmFsIGF1cywgZGVyIHZlcndlbmRldCB3ZXJkZW4gc29sbCwgd2VubiBpbmFrdGl2ZSBLYW7DpGxlIGRlbiBEdW1teS1EYXRlbiB6dWdlb3JkbmV0IHdlcmRlbi4iDQogICAgfSwNCiAgICAiaWdub3JlRmlsdGVycyI6IHsNCiAgICAgICJ0aXRsZSI6ICJGaWx0ZXIgaWdub3JpZXJlbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBha3RpdmllcnQsIHdlcmRlbiBGaWx0ZXIgdm9sbHN0w6RuZGlnIGlnbm9yaWVydC4iDQogICAgfSwNCiAgICAiZXBnU291cmNlIjogew0KICAgICAgInRpdGxlIjogIkVQRy1RdWVsbGUiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlBNUzo8YnI+LSBWZXJ3ZW5kZW4gU2llIEVQRy1EYXRlbiB2b24gUGxleCwgRW1ieSBvZGVyIEplbGx5ZmluIDxicj48YnI+WEVQRzo8YnI+LSBWZXJ3ZW5kdW5nIGVpbmVyIG9kZXIgbWVocmVyZXIgWE1MVFYtRGF0ZWllbjxicj4tIEthbmFsdmVyd2FsdHVuZzxicj4tIE0zVSAvIFhNTFRWLUV4cG9ydCAoSFRUUC1MaW5rIGbDvHIgSVBUVi1BcHBzKSINCiAgICB9LA0KICAgICJ0dW5lciI6IHsNCiAgICAgICJ0aXRsZSI6ICJBbnphaGwgZGVyIFR1bmVyIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJBbnphaGwgZGVyIHBhcmFsbGVsZW4gVmVyYmluZHVuZ2VuLCBkaWUgenVtIEFuYmlldGVyIGhlcmdlc3RlbGx0IHdlcmRlbiBrw7ZubmVuLjxicj5WZXJmw7xnYmFyIGbDvHI6IFBsZXgsIEVtYnksIEplbGx5ZmluLCBNM1UgKG1pdCBha3RpdmVtIFB1ZmZlcikuPGJyPk5hY2ggZWluZXIgw4RuZGVydW5nIG11c3MgVGhyZWFkZmluIGluIGRlbiBEVlItRWluc3RlbGx1bmdlbiB2b24gUGxleCAvIEVtYnkgLyBKZWxseWZpbiBnZWzDtnNjaHQgdW5kIGVybmV1dCBlaW5nZXJpY2h0ZXQgd2VyZGVuLiINCiAgICB9LA0KICAgICJmaWxlc1VwZGF0ZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJBa3R1YWxpc2llcnQgYWxsZSBEYXRlaWVuIGJlaW0gU3RhcnQiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkFrdHVhbGlzaWVydCBhbGxlIFdpZWRlcmdhYmVsaXN0ZW4sIFR1bmVyIHVuZCBYTUxUVi1EYXRlaWVuIGJlaW0gU3RhcnQuIg0KICAgIH0sDQogICAgImNhY2hlSW1hZ2VzIjogew0KICAgICAgInRpdGxlIjogIkJpbGQtQ2FjaGluZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRGllc2UgT3B0aW9uIHNjaHJlaWJ0IGRpZSBtM3UtRGF0ZWkgaW4gZGVuIGxva2FsZW4gQmlsZC1DYWNoZSBmw7xyIFRWLUxvZ29zIHVtLjxicj5BbGxlIEJpbGRlciBhdXMgZGVyIFhNTFRWLURhdGVpIHdlcmRlbiB6d2lzY2hlbmdlc3BlaWNoZXJ0LCB3YXMgZWluZSBzY2huZWxsZXJlIERhcnN0ZWxsdW5nIGRlcyBSYXN0ZXJzIGltIENsaWVudCBlcm3DtmdsaWNodC48YnI+RGFzIEhlcnVudGVybGFkZW4gZGVyIEJpbGRlciBrYW5uIGVpbmUgV2VpbGUgZGF1ZXJuIHVuZCB3aXJkIGltIEhpbnRlcmdydW5kIGR1cmNoZ2Vmw7xocnQuPGJyPiINCiAgICB9LA0KICAgICJyZXBsYWNlRW1wdHlJbWFnZXMiOiB7DQogICAgICAidGl0bGUiOiAiRmVobGVuZGUgUHJvZ3JhbW1iaWxkZXIgZXJzZXR6ZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIldlbm4gZGFzIFBvc3RlciBpbSBYTUxUVi1Qcm9ncmFtbSBmZWhsdCwgd2lyZCBkYXMgS2FuYWxsb2dvIHZlcndlbmRldC4iDQogICAgfSwNCiAgICAicmVwbGFjZUNoYW5uZWxUaXRsZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJQUFYtS2FuYWx0aXRlbC9CZXNjaHJlaWJ1bmcgZXJzZXR6ZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlZlcndlbmRlbiBTaWUgZGllcywgd2VubiBJaHIgQW5iaWV0ZXIgZGVuIFBQVi1FcmVpZ25pc25hbWVuIGRlbSBLYW5hbG5hbWVuIHp1b3JkbmV0Ig0KICAgIH0sDQogICAgIlRocmVhZGZpbkF1dG9VcGRhdGUiOiB7DQogICAgICAidGl0bGUiOiAiQXV0b21hdGlzY2hlcyBVcGRhdGUgdm9uIFRocmVhZGZpbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBlaW5lIG5ldWUgVmVyc2lvbiB2b24gVGhyZWFkZmluIHZlcmbDvGdiYXIgaXN0LCB3aXJkIHNpZSBhdXRvbWF0aXNjaCBpbnN0YWxsaWVydC4gRGllIFVwZGF0ZXMgd2VyZGVuIHZvbiBHaXRIdWIgaGVydW50ZXJnZWxhZGVuLiINCiAgICB9LA0KICAgICJzdHJlYW1CdWZmZXJpbmciOiB7DQogICAgICAidGl0bGUiOiAiU3RyZWFtLVB1ZmZlciIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRnVua3Rpb25lbiBkZXMgUHVmZmVyczo8YnI+LSBEZXIgU3RyZWFtIHdpcmQgdm9uIEZGbXBlZywgVkxDIG9kZXIgVGhyZWFkZmluIGFuIFBsZXgsIEVtYnksIEplbGx5ZmluIG9kZXIgTTNVIFBsYXllciB3ZWl0ZXJnZWxlaXRldDxicj4tIEtsZWluZSBSdWNrbGVyIGRlciBTdHJlYW1zIGvDtm5uZW4gYXVzZ2VnbGljaGVuIHdlcmRlbjxicj4tIEhMUyAvIE0zVTgtVW50ZXJzdMO8dHp1bmc8YnI+LSBSVFAgLyBSVFBTLVVudGVyc3TDvHR6dW5nPGJyPi0gUmUtU3RyZWFtaW5nPGJyPi0gU2VwYXJhdGVzIFR1bmVyLUxpbWl0IGbDvHIgamVkZSBXaWVkZXJnYWJlbGlzdGUiLA0KICAgICAgImluZm9fZmFsc2UiOiAiS2VpbiBQdWZmZXIgKENsaWVudCB2ZXJiaW5kZXQgc2ljaCBkaXJla3QgbWl0IGRlbSBTdHJlYW1pbmctU2VydmVyKSIsDQogICAgICAiaW5mb19mZm1wZWciOiAiRkZtcGVnIHZlcmJpbmRldCBzaWNoIG1pdCBkZW0gU3RyZWFtaW5nLVNlcnZlciIsDQogICAgICAiaW5mb192bGMiOiAiVkxDIHZlcmJpbmRldCBzaWNoIG1pdCBkZW0gU3RyZWFtaW5nLVNlcnZlciIsDQogICAgICAiaW5mb190aHJlYWRmaW4iOiAiVGhyZWFkZmluIHZlcmJpbmRldCBzaWNoIG1pdCBkZW0gU3RyZWFtaW5nLVNlcnZlciINCiAgICB9LA0KICAgICJ1ZHB4eSI6IHsNCiAgICAgICJ0aXRsZSI6ICJVRFB4eS1BZHJlc3NlIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWUgQWRyZXNzZSBJaHJlcyBVRFB4eS1TZXJ2ZXJzLiBXZW5uIGdlc2V0enQgdW5kIGRpZSBLYW5hbC1VUkxzIGluIGRlciBtM3UgTXVsdGljYXN0IHNpbmQsIHdpcmQgVGhyZWFkZmluIHNpZSBzbyB1bXNjaHJlaWJlbiwgZGFzcyBzaWUgw7xiZXIgZGVuIFVEUHh5LURpZW5zdCBhdWZnZXJ1ZmVuIHdlcmRlbi4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogImhvc3Q6cG9ydCINCiAgICB9LA0KICAgICJmZm1wZWdQYXRoIjogew0KICAgICAgInRpdGxlIjogIlBmYWQgenVyIEZGbXBlZy1CaW7DpHJkYXRlaSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiUGZhZCB6dXIgRkZtcGVnLUJpbsOkcmRhdGVpLiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3BhdGgvdG8vZmZtcGVnIg0KICAgIH0sDQogICAgImZmbXBlZ09wdGlvbnMiOiB7DQogICAgICAidGl0bGUiOiAiRkZtcGVnLU9wdGlvbmVuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJGRm1wZWctT3B0aW9uZW4uPGJyPsOEbmRlcm4gU2llIGRpZXNlIG51ciwgd2VubiBTaWUgd2lzc2VuLCB3YXMgU2llIHR1bi48YnI+TGFzc2VuIFNpZSBkYXMgRmVsZCBsZWVyLCB1bSBkaWUgU3RhbmRhcmRlaW5zdGVsbHVuZ2VuIHp1IHZlcndlbmRlbi4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkxhc3NlbiBTaWUgZGFzIEZlbGQgbGVlciwgdW0gZGllIFN0YW5kYXJkZWluc3RlbGx1bmdlbiB6dSB2ZXJ3ZW5kZW4iDQogICAgfSwNCiAgICAidmxjUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJQZmFkIHp1ciBWTEMgLyBDVkxDLUJpbsOkcmRhdGVpIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQZmFkIHp1ciBWTEMgLyBDVkxDLUJpbsOkcmRhdGVpLiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3BhdGgvdG8vY3ZsYyINCiAgICB9LA0KICAgICJ2bGNPcHRpb25zIjogew0KICAgICAgInRpdGxlIjogIlZMQyAvIENWTEMtT3B0aW9uZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlZMQyAvIENWTEMtT3B0aW9uZW4uPGJyPsOEbmRlcm4gU2llIGRpZXNlIG51ciwgd2VubiBTaWUgd2lzc2VuLCB3YXMgU2llIHR1bi48YnI+TGFzc2VuIFNpZSBkYXMgRmVsZCBsZWVyLCB1bSBkaWUgU3RhbmRhcmRlaW5zdGVsbHVuZ2VuIHp1IHZlcndlbmRlbi4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkxhc3NlbiBTaWUgZGFzIEZlbGQgbGVlciwgdW0gZGllIFN0YW5kYXJkZWluc3RlbGx1bmdlbiB6dSB2ZXJ3ZW5kZW4iDQogICAgfSwNCiAgICAiYnVmZmVyU2l6ZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJQdWZmZXJncsO2w59lIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQdWZmZXJncsO2w59lIGluIE1CLjxicj5NM1U4OiBXZW5uIGRhcyBUUy1TZWdtZW50IGtsZWluZXIgYWxzIGRpZSBQdWZmZXJncsO2w59lIGlzdCwgd2lyZCBkaWUgRGF0ZWlncsO2w59lIGRlcyBTZWdtZW50cyB2ZXJ3ZW5kZXQuIg0KICAgIH0sDQogICAgInN0b3JlQnVmZmVySW5SQU0iOg0KICAgIHsNCiAgICAgICJ0aXRsZSI6ICJQdWZmZXIgaW0gUkFNIHNwZWljaGVybiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBha3RpdmllcnQsIHdpcmQgZGVyIFB1ZmZlciBpbSBSQU0gYW5zdGVsbGUgYXVmIGRlciBGZXN0cGxhdHRlIGdlc3BlaWNoZXJ0Ig0KICAgIH0sDQogICAgImF1dG9SZWNvbm5lY3QiOnsNCiAgICAgICJ0aXRsZSI6ICJBdXRvbWF0aXNjaCBtaXQgU3RyZWFtIG5ldXZlcmJpbmRlbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBha3RpdmllcnQsIHZlcmJpbmRldCBzaWNoIGRlciBQdWZmZXIgYXV0b21hdGlzY2ggd2llZGVyIG1pdCBkZW0gU3RyZWFtIg0KICAgIH0sDQogICAgIm9taXRQb3J0cyI6DQogICAgew0KICAgICAgInRpdGxlIjogIlBvcnQgd2VnbGFzc2VuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJEdXJjaCBBa3RpdmllcmVuIGRpZXNlcyBLb250cm9sbGvDpHN0Y2hlbnMgd2lyZCBkaWUgbTN1LURhdGVpIGtlaW5lIFBvcnRzIGluIGRlciBVUkwgZW50aGFsdGVuIg0KICAgIH0sDQogICAgImJpbmRpbmdJUHMiIDoNCiAgICB7DQogICAgICAidGl0bGUiOiAiSVAocykgYmluZGVuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJEdXJjaCBLbGlja2VuIGF1ZiBkYXMgRWluZ2FiZWZlbGQgw7ZmZm5ldCBzaWNoIGVpbiBEaWFsb2csIGluIGRlbSBTaWUgZGllIElQKHMpIGF1c3fDpGhsZW4ga8O2bm5lbjxicj5CaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllcyBhdWNoIGRpZSBEVlItSVBzIHNpbmQ8YnI+RGFzIMOEbmRlcm4gZGllc2VyIE9wdGlvbiB1bmQgZGFzIFNwZWljaGVybiBkZXIgRWluc3RlbGx1bmdlbiBiZWVuZGV0IGRhcyBQcm9ncmFtbSE8YnI+U2llIG3DvHNzZW4gZXMgbmV1IHN0YXJ0ZW4sIHdlbm4gU2llIGtlaW5lbiBhdXRvbWF0aXNjaGVuIE5ldXN0YXJ0IGtvbmZpZ3VyaWVydCBoYWJlbiEiDQogICAgfSwNCiAgICAiZm9yY2VIdHRwcyI6DQogICAgew0KICAgICAgInRpdGxlIjogIkhUVFBTIHp1bSBVcHN0cmVhbS1TZXJ2ZXIgZXJ6d2luZ2VuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJXZW5uIGRpZXNlcyBLb250cm9sbGvDpHN0Y2hlbiBha3RpdmllcnQgaXN0LCB3aXJkIFRocmVhZGZpbiBnZXp3dW5nZW4sIGVpbmUgSFRUUFMtVmVyYmluZHVuZyB6dW0gVXBzdHJlYW0tU2VydmVyIHp1IHZlcndlbmRlbiA8YnI+RGllcyB3aXJkIG5pY2h0IGVtcGZvaGxlbiwgZGEgZGllIGFuZ2VnZWJlbmVuIFVSTHMgaW4gSFRUUFMtVVJMcyB1bWdlc2NocmllYmVuIHdlcmRlbiwgd2FzIHp1IDQwNC1IVFRQLUZlaGxlcmNvZGVzIGbDvGhyZW4ga2FubjwvYnI+Ig0KICAgIH0sDQogICAgInVzZUh0dHBzIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiSFRUUFMgdmVyd2VuZGVuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJIVFRQUy1Qcm90b2tvbGwgZsO8ciBUaHJlYWRmaW4gYWt0aXZpZXJlbiwgSFRUUFMtUG9ydCBtdXNzIGdlc2V0enQgd2VyZGVuLCBhbnNvbnN0ZW4gd2lyZCA0NDMgdmVyd2VuZGV0ITxicj5TdGVsbGVuIFNpZSBhdcOfZXJkZW0gc2ljaGVyLCBkYXNzIHNlcnZlci5jcnQgdW5kIHNlcnZlci5rZXkgaW0gS29uZmlndXJhdGlvbnNvcmRuZXIgYWJnZWxlZ3Qgc2luZCE8YnI+RGllIFNjaGzDvHNzZWxkYXRlaSBtdXNzIHVudmVyc2NobMO8c3NlbHQgc2VpbiEiDQogICAgfSwNCiAgICAiZm9yY2VDbGllbnRIdHRwcyI6DQogICAgew0KICAgICAgInRpdGxlIjogIkNsaWVudCB6dXIgVmVyd2VuZHVuZyB2b24gSFRUUFMgendpbmdlbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiQWxsZSBVUkxzIHp1IGRpZXNlciBUaHJlYWRmaW4tSW5zdGFueiBiZWdpbm5lbiBtaXQgSFRUUFMiDQogICAgfSwNCiAgICAidGhyZWFkZmluRG9tYWluIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiVGhyZWFkZmluLURvbWFpbiIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiV2VubiBuaWNodCBsZWVyLCB3ZXJkZW4gZGllIFVSTHMgaW4gZGVyIG5ldWVuIG0zdSBpbiBlaW5lbiBGUUROIHVtZ2VzY2hyaWViZW4uPGJyPkVzIHdpcmQgYXVjaCBkaWUgYW5nZXplaWd0ZSBEVlItSVAgaW0gU2VydmVyaW5mby1EaWFsb2cgdW1zY2hyZWliZW4uPGJyPlNjaGxpZcOfZW4gU2llIGh0dHAgbmljaHQgZWluICh6LkIuOiBzb21lZG9tYWluLmNvbSk8L2JyPiINCiAgICB9LA0KICAgICJlbmFibGVOb25Bc2NpaSI6DQogICAgew0KICAgICAgInRpdGxlIjogIk5pY2h0LUFTQ0lJIGFrdGl2aWVyZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIldlbm4gYWt0aXZpZXJ0LCB3ZXJkZW4gc3BlemllbGxlIE5pY2h0LUFTQ0lJLVplaWNoZW4gaW4gZGVyIE0zVSB1bmQgRVBHIGVybGF1YnQuIFN0YW5kYXJkbcOkw59pZyBkZWFrdGl2aWVydCINCiAgICB9LA0KICAgICJlcGdDYXRlZ29yaWVzIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiRVBHLUthdGVnb3JpZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIlBhc3NlbiBTaWUgZGllIEVQRy1LYXRlZ29yaWVuIGFuLiBEYXMgRm9ybWF0IGlzdCBTY2hsw7xzc2VsOldlcnR8U2NobMO8c3NlbDpXZXJ0LCBhbHNvIE5hY2hyaWNodGVuOm5ld3N8U3BvcnQ6c3BvcnRzfEZpbG1lOm1vdmllcyINCiAgICB9LA0KICAgICJlcGdDYXRlZ29yaWVzQ29sb3JzIjoNCiAgICB7DQogICAgICAidGl0bGUiOiAiRVBHLUthdGVnb3JpZW4tRmFyYmVuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQYXNzZW4gU2llIGRpZSBGYXJiZW4gZGVyIEVQRy1LYXRlZ29yaWVuIGFuLiBEYXMgRm9ybWF0IGlzdCBXZXJ0OmZhcmJlfFdlcnQ6ZmFyYmUsIGFsc28gbmV3czp0b21hdG98c3BvcnRzOnllbGxvd2dyZWVufG1vdmllczpyb3lhbGJsdWUiDQogICAgfSwNCiAgICAiYnVmZmVyVGltZW91dCI6IHsNCiAgICAgICJ0aXRsZSI6ICJUaW1lb3V0IGbDvHIgbmV1ZSBDbGllbnQtVmVyYmluZHVuZ2VuIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXIgVGhyZWFkZmluLVB1ZmZlciB3YXJ0ZXQsIGJpcyBuZXVlIENsaWVudC1WZXJiaW5kdW5nZW4gaGVyZ2VzdGVsbHQgc2luZC4gSGlsZnJlaWNoIGbDvHIgc2NobmVsbGVzIFVtc2NoYWx0ZW4gZGVyIEthbsOkbGUuIFdlcnQgaW4gTWlsbGlzZWt1bmRlbi4iLA0KICAgICAgInBsYWNlaG9sZGVyIjogIjEwMCINCiAgICB9LA0KICAgICJ1c2VyQWdlbnQiOiB7DQogICAgICAidGl0bGUiOiAiVXNlci1BZ2VudCIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiVXNlci1BZ2VudCBmw7xyIEhUVFAtQW5mcmFnZW4uIEbDvHIgamVkZSBIVFRQLVZlcmJpbmR1bmcgd2lyZCBkaWVzZXIgV2VydCBhbHMgVXNlci1BZ2VudCB2ZXJ3ZW5kZXQuIFNvbGx0ZSBudXIgZ2XDpG5kZXJ0IHdlcmRlbiwgd2VubiBUaHJlYWRmaW4gYmxvY2tpZXJ0IHdpcmQuIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJUaHJlYWRmaW4iDQogICAgfSwNCiAgICAiYmFja3VwUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJTcGVpY2hlcm9ydCBmw7xyIGF1dG9tYXRpc2NoZSBTaWNoZXJ1bmdlbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL21udC9kYXRhL2JhY2t1cC90aHJlYWRmaW4vIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJWb3IgamVkZW0gVXBkYXRlIGRlciBBbmJpZXRlcmRhdGVuIGR1cmNoIGRlbiBaZWl0cGxhbiBlcnN0ZWxsdCBUaHJlYWRmaW4gZWluZSBTaWNoZXJ1bmcuIERlciBQZmFkIGbDvHIgZGllIGF1dG9tYXRpc2NoZW4gU2ljaGVydW5nZW4ga2FubiBnZcOkbmRlcnQgd2VyZGVuLiBUaHJlYWRmaW4gYmVuw7Z0aWd0IFNjaHJlaWJiZXJlY2h0aWd1bmcgZsO8ciBkaWVzZW4gT3JkbmVyLiINCiAgICB9LA0KICAgICJ0ZW1wUGF0aCI6IHsNCiAgICAgICJ0aXRsZSI6ICJTcGVpY2hlcm9ydCBmw7xyIHRlbXBvcsOkcmUgRGF0ZWllbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiL3RtcC90aHJlYWRmaW4vIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJTcGVpY2hlcm9ydCBmw7xyIGRpZSBQdWZmZXJkYXRlaWVuLiINCiAgICB9LA0KICAgICJiYWNrdXBLZWVwIjogew0KICAgICAgInRpdGxlIjogIkFuemFobCBkZXIgenUgYmVoYWx0ZW5kZW4gU2ljaGVydW5nZW4iLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkFuemFobCBkZXIgenUgYmVoYWx0ZW5kZW4gU2ljaGVydW5nZW4uIMOEbHRlcmUgU2ljaGVydW5nZW4gd2VyZGVuIGF1dG9tYXRpc2NoIGdlbMO2c2NodC4iDQogICAgfSwNCiAgICAiYXV0aGVudGljYXRpb25XRUIiOiB7DQogICAgICAidGl0bGUiOiAiV0VCLUF1dGhlbnRpZml6aWVydW5nIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJadWdyaWZmIGF1ZiBkaWUgV2Vib2JlcmZsw6RjaGUgbnVyIG1pdCBBbm1lbGRlaW5mb3JtYXRpb25lbiBtw7ZnbGljaC4iDQogICAgfSwNCiAgICAiYXV0aGVudGljYXRpb25QTVMiOiB7DQogICAgICAidGl0bGUiOiAiUE1TLUF1dGhlbnRpZml6aWVydW5nIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJQbGV4LUFuZnJhZ2VuIHNpbmQgbnVyIG1pdCBBdXRoZW50aWZpemllcnVuZyBtw7ZnbGljaC4gPGJyPjxiPldhcm51bmchISE8L2I+IE5hY2ggQWt0aXZpZXJ1bmcgZGllc2VyIEZ1bmt0aW9uIG11c3MgVGhyZWFkZmluIGluIGRlbiBEVlItRWluc3RlbGx1bmdlbiB2b24gUE1TIGdlbMO2c2NodCB1bmQgZXJuZXV0IGVpbmdlcmljaHRldCB3ZXJkZW4uIg0KICAgIH0sDQogICAgImF1dGhlbnRpY2F0aW9uTTNVIjogew0KICAgICAgInRpdGxlIjogIk0zVS1BdXRoZW50aWZpemllcnVuZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRGFzIEhlcnVudGVybGFkZW4gZGVyIHRocmVhZGZpbi5tM3UtRGF0ZWkgw7xiZXIgZWluZSBIVFRQLUFuZnJhZ2UgaXN0IG51ciBtaXQgQXV0aGVudGlmaXppZXJ1bmcgbcO2Z2xpY2guIg0KICAgIH0sDQogICAgImF1dGhlbnRpY2F0aW9uWE1MIjogew0KICAgICAgInRpdGxlIjogIlhNTC1BdXRoZW50aWZpemllcnVuZyIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiRGFzIEhlcnVudGVybGFkZW4gZGVyIHRocmVhZGZpbi54bWwtRGF0ZWkgw7xiZXIgZWluZSBIVFRQLUFuZnJhZ2UgaXN0IG51ciBtaXQgQXV0aGVudGlmaXppZXJ1bmcgbcO2Z2xpY2giDQogICAgfSwNCiAgICAiYXV0aGVudGljYXRpb25BUEkiOiB7DQogICAgICAidGl0bGUiOiAiQVBJLUF1dGhlbnRpZml6aWVydW5nIiwNCiAgICAgICJkZXNjcmlwdGlvbiI6ICJadWdyaWZmIGF1ZiBkaWUgQVBJLVNjaG5pdHRzdGVsbGUgbnVyIG1pdCBBdXRoZW50aWZpemllcnVuZyBtw7ZnbGljaC4iDQogICAgfQ0KICB9LA0KICAid2l6YXJkIjogew0KICAgICJlcGdTb3VyY2UiOiB7DQogICAgICAidGl0bGUiOiAiRVBHLVF1ZWxsZSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiUE1TOjxicj4tIFZlcndlbmRlbiBTaWUgRVBHLURhdGVuIHZvbiBQbGV4LCBFbWJ5IG9kZXIgSmVsbHlmaW4gPGJyPjxicj5YRVBHOjxicj4tIFZlcndlbmR1bmcgZWluZXIgb2RlciBtZWhyZXJlciBYTUxUVi1EYXRlaWVuPGJyPi0gS2FuYWx2ZXJ3YWx0dW5nPGJyPi0gTTNVIC8gWE1MVFYtRXhwb3J0IChIVFRQLUxpbmsgZsO8ciBJUFRWLUFwcHMpIg0KICAgIH0sDQogICAgInR1bmVyIjogew0KICAgICAgInRpdGxlIjogIkFuemFobCBkZXIgVHVuZXIiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkFuemFobCBkZXIgcGFyYWxsZWxlbiBWZXJiaW5kdW5nZW4sIGRpZSB6dW0gQW5iaWV0ZXIgaGVyZ2VzdGVsbHQgd2VyZGVuIGvDtm5uZW4uPGJyPlZlcmbDvGdiYXIgZsO8cjogUGxleCwgRW1ieSwgSmVsbHlmaW4sIE0zVSAobWl0IGFrdGl2ZW0gUHVmZmVyKS48YnI+TmFjaCBlaW5lciDDhG5kZXJ1bmcgbXVzcyBUaHJlYWRmaW4gaW4gZGVuIERWUi1FaW5zdGVsbHVuZ2VuIHZvbiBQbGV4IC8gRW1ieSAvIEplbGx5ZmluIGdlbMO2c2NodCB1bmQgZXJuZXV0IGVpbmdlcmljaHRldCB3ZXJkZW4uIg0KICAgIH0sDQogICAgIm0zdSI6IHsNCiAgICAgICJ0aXRsZSI6ICJNM1UtV2llZGVyZ2FiZWxpc3RlIiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJEYXRlaXBmYWQgb2RlciBVUkwgZGVyIE0zVSIsDQogICAgICAiZGVzY3JpcHRpb24iOiAiTG9rYWxlIG9kZXIgZW50ZmVybnRlIFdpZWRlcmdhYmVsaXN0ZW4iDQogICAgfSwNCiAgICAieG1sdHYiOiB7DQogICAgICAidGl0bGUiOiAiWE1MVFYtRGF0ZWkiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkRhdGVpcGZhZCBvZGVyIFVSTCBkZXIgWE1MVFYiLA0KICAgICAgImRlc2NyaXB0aW9uIjogIkxva2FsZSBvZGVyIGVudGZlcm50ZSBYTUxUVi1EYXRlaSINCiAgICB9DQogIH0sDQogICJsb2dpbiI6IHsNCiAgICAiZmFpbGVkIjogIkJlbnV0emVyYXV0aGVudGlmaXppZXJ1bmcgZmVobGdlc2NobGFnZW4iLA0KICAgICJoZWFkbGluZSI6ICJBbm1lbGRlbiIsDQogICAgInVzZXJuYW1lIjogew0KICAgICAgInRpdGxlIjogIkJlbnV0emVybmFtZSIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiQmVudXR6ZXJuYW1lIg0KICAgIH0sDQogICAgInBhc3N3b3JkIjogew0KICAgICAgInRpdGxlIjogIlBhc3N3b3J0IiwNCiAgICAgICJwbGFjZWhvbGRlciI6ICJQYXNzd29ydCINCiAgICB9DQogIH0sDQogICJhY2NvdW50Ijogew0KICAgICJmYWlsZWQiOiAiUGFzc3dvcnQgc3RpbW10IG5pY2h0IMO8YmVyZWluIiwNCiAgICAiaGVhZGxpbmUiOiAiQmVudXR6ZXJrb250byBlcnN0ZWxsZW4iLA0KICAgICJ1c2VybmFtZSI6IHsNCiAgICAgICJ0aXRsZSI6ICJCZW51dHplcm5hbWUiLA0KICAgICAgInBsYWNlaG9sZGVyIjogIkJlbnV0emVybmFtZSINCiAgICB9LA0KICAgICJwYXNzd29yZCI6IHsNCiAgICAgICJ0aXRsZSI6ICJQYXNzd29ydCIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiUGFzc3dvcnQiDQogICAgfSwNCiAgICAiY29uZmlybSI6IHsNCiAgICAgICJ0aXRsZSI6ICJCZXN0w6R0aWdlbiIsDQogICAgICAicGxhY2Vob2xkZXIiOiAiQmVzdMOkdGlnZW4iDQogICAgfQ0KICB9LA0KICAibm90aWZpY2F0aW9uIiA6IHsNCiAgICAidXBkYXRlQXZhaWxhYmxlIjogIkVpbmUgbmV1ZXJlIFZlcnNpb24gdm9uIFRocmVhZGZpbiBpc3QgdmVyZsO8Z2JhcmUuIEJpdHRlIGF1ZiBkaWUgbmV1c3RlIFZlcnNpb24gYWt0dWFsaXNpZXJlbi4iDQogIH0NCn0=" + webUI["web/public/img/BC-QR.png"] = "iVBORw0KGgoAAAANSUhEUgAAALoAAADCCAYAAAD+f9hdAAABWGlDQ1BJQ0MgUHJvZmlsZQAAGJVlkL9LQlEUx79KEZlJUUtQcKEhg4qwITAa1EKSBjEDLRqez+eP0NflvSvm3NIf0d5aYwS1NAQtQRAtQS3N0eD6+j5N1Dxw7vmcL9977+EAXmhSVrwTQNVUVioeFZnsgRj5wjD8CCAMj6bbMpJM7oLRqf3RfIXHrS/L7lszi4FGYvvjyHccm1v4bDqD/r4YzRu2zvrNVLq0FODJk+frSrp8Tp62OBT5wuVim69czrX5oeVJp2LkN3Iw18PFHq5Wavrfv+7EfsPc32PNMGdhI4U4ohBIw4IGk0oBBlmgjjIUSqQtkg2JCh0N9kms8Yyzq6JGz0Ao47Slxk5kwyoXS0pEuCVD7Jj6ypIIrYZCHIA7/7/Lrnb2DmzeOY5z29US98D1OuC76WrBDWByDHh8kpqltaQhprdQAH4ugfEsMPXMO4ed2X4BE0hdOlrLnMgAAADQZVhJZk1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBMQACAAAAGAAAAFqHaQAEAAAAAQAAAHIAAAAAAAAASAAAAAEAAABIAAAAAUFuZHJvaWQgU1AyQS4yMjA1MDUuMDAyAAAFkAMAAgAAABQAAAC0kBEAAgAAAAcAAADIkpEAAgAAAAQ2MzIAoAIABAAAAAEAAAC6oAMABAAAAAEAAADCAAAAADIwMjI6MDU6MTIgMTQ6NTY6NDEALTA1OjAwAABhL1DGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD82lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPGV4aWY6T2Zmc2V0VGltZU9yaWdpbmFsPi0wNTowMDwvZXhpZjpPZmZzZXRUaW1lT3JpZ2luYWw+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj43ODY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+ODE4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6U3Vic2VjVGltZU9yaWdpbmFsPjYzMjwvZXhpZjpTdWJzZWNUaW1lT3JpZ2luYWw+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD4yMDIyLTA1LTEyVDE0OjU2OjQxLjYzMjwvcGhvdG9zaG9wOkRhdGVDcmVhdGVkPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFuZHJvaWQgU1AyQS4yMjA1MDUuMDAyPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrFqaA/AABAAElEQVR4Ae3dB7wtSVE/8ENOoqCAAcN7KgJGUAREwCUJCvonSjIsSSSIIElEFEVQREmCIgisqIuEBUEQFVlXVMCAOayRRQUlKaIgEvb9+9vv/s7Wmztzzpx7z9146/M5p3u6q6uqq6urw/TMXOxYg8UhHGrgQq6Bi1/I63dYvUMNdA0cGvqhIVwkNHBo6BeJ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" + webUI["web/public/js/authentication.js"] = "ZnVuY3Rpb24gbG9naW4oKSB7CiAgICB2YXIgZXJyID0gZmFsc2U7CiAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpOwogICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXV0aGVudGljYXRpb24iKTsKICAgIHZhciBpbnB1dHMgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIklOUFVUIik7CiAgICBjb25zb2xlLmxvZyhpbnB1dHMpOwogICAgZm9yICh2YXIgaSA9IGlucHV0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgIHZhciBrZXkgPSBpbnB1dHNbaV0ubmFtZTsKICAgICAgICB2YXIgdmFsdWUgPSBpbnB1dHNbaV0udmFsdWU7CiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIGlucHV0c1tpXS5zdHlsZS5ib3JkZXJDb2xvciA9ICJyZWQiOwogICAgICAgICAgICBlcnIgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTsKICAgIH0KICAgIGlmIChlcnIgPT0gdHJ1ZSkgewogICAgICAgIGRhdGEgPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoImNvbmZpcm0iKSkgewogICAgICAgIGlmIChkYXRhWyJjb25maXJtIl0gIT0gZGF0YVsicGFzc3dvcmQiXSkgewogICAgICAgICAgICBhbGVydCgic2RhZnNkIik7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXNzd29yZCcpLnN0eWxlLmJvcmRlckNvbG9yID0gInJlZCI7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25maXJtJykuc3R5bGUuYm9yZGVyQ29sb3IgPSAicmVkIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVyciIpLmlubmVySFRNTCA9ICJ7ey5hY2NvdW50LmZhaWxlZH19IjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGNvbnNvbGUubG9nKGRhdGEpOwogICAgZm9ybS5zdWJtaXQoKTsKfQovLyMgc291cmNlTWFwcGluZ1VSTD1hdXRoZW50aWNhdGlvbi5qcy5tYXA=" + webUI["web/public/js/authentication.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHMvYXV0aGVudGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLO0lBQ1osSUFBSSxHQUFHLEdBQVcsS0FBSyxDQUFBO0lBQ3ZCLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUE7SUFDdkIsSUFBSSxHQUFHLEdBQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNoRCxJQUFJLElBQUksR0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFeEQsSUFBSSxNQUFNLEdBQU8sR0FBRyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRWxELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFNUMsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLENBQUMsQ0FBc0IsQ0FBQyxJQUFJLENBQUE7UUFDckQsSUFBSSxLQUFLLEdBQVcsTUFBTSxDQUFDLENBQUMsQ0FBc0IsQ0FBQyxLQUFLLENBQUE7UUFFeEQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtZQUNuQyxHQUFHLEdBQUcsSUFBSSxDQUFBO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7SUFFbkIsQ0FBQztJQUVELElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hCLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFBO1FBQ25CLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ2YsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtZQUM3RCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1lBRTVELFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFBO1lBQ2hFLE9BQU07UUFDUixDQUFDO0lBRUgsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFakIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWhCLENBQUMifQ==" + webUI["web/public/js/configuration.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sY0FBYztJQUFwQjtRQUNFLGVBQVUsR0FBRyxTQUFTLENBQUE7SUFPeEIsQ0FBQztJQUxDLHNCQUFzQixDQUFDLEtBQVk7UUFDakMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtRQUN6QixPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVcsU0FBUSxjQUFjO0lBSXJDLFlBQVksR0FBVSxFQUFFLFFBQWU7UUFDckMsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNoQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtRQUNsQixJQUFJLE9BQU8sR0FBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUM3QyxJQUFJLFdBQWtCLENBQUE7UUFFdEIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEQsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFDbEIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV6QixRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ1osS0FBSyxPQUFPO2dCQUNWLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7Z0JBQ3RCLElB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" + webUI["web/public/js/option_dialogue.js"] = "Ly8gRnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBvcHRpb24gRGlhbG9ndWUKZnVuY3Rpb24gc2hvd0lQQmluZGluZ0RpYWxvZ3VlKCkgewogICAgdmFyIG15TW9kYWwgPSBuZXcgYm9vdHN0cmFwLk1vZGFsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cCcpKTsKICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgY29uc3QgcG9wdXBNb2RhbENvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXBNb2RhbENvbnRlbnQnKTsKICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHBvcHVwTW9kYWxDb250ZW50KTsKICAgIGVkaXRDdXN0b21Qb3BVcENvbnRhaW5lcihmcmFnbWVudCk7CiAgICBhZGRDdXN0b21Qb3BVcENvbnRlbnQoZnJhZ21lbnQpOwogICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcHVwJyk7CiAgICBjb25zdCBjaGlsZCA9IHBhcmVudC5jaGlsZHJlblswXS5hcHBlbmRDaGlsZChmcmFnbWVudCk7CiAgICBzaG93RWxlbWVudCgicG9wdXAiLCB0cnVlKTsKfQpmdW5jdGlvbiBlZGl0Q3VzdG9tUG9wVXBDb250YWluZXIoZnJhZ21lbnQpIHsKICAgIGNvbnN0IHBvcHVwSGVhZGVyID0gZnJhZ21lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcHVwSGVhZGVyJyk7CiAgICBjb25zdCBwb3B1cFJvdyA9IGZyYWdtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cFJvdycpOwogICAgY29uc3QgcG9wdXBDdXN0b20gPSBmcmFnbWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXBDdXN0b20nKTsKICAgIC8vIFJlbW92ZSBmb3JtZXIgaGVhZGVyIGFuZCBhZGQgYSBjdXN0b20gb25lCiAgICBjb25zdCBoMyA9IHBvcHVwSGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7CiAgICBpZiAoaDMpIHsKICAgICAgICBwb3B1cEhlYWRlci5yZW1vdmVDaGlsZChoMyk7CiAgICB9CiAgICBjb25zdCBoZWFkbGluZSA9IGNyZWF0ZUVsZW1lbnRXaXRoQXR0cmlidXRlcygnaDMnLCB7CiAgICAgICAgY2xhc3M6ICdtb2RhbC10aXRsZScsCiAgICAgICAgaWQ6ICdtb2RhbEhlYWRsaW5lJwogICAgfSk7CiAgICBoZWFkbGluZS50ZXh0Q29udGVudCA9ICdJUCBzZWxlY3Rpb24nOwogICAgcG9wdXBIZWFkZXIuYXBwZW5kQ2hpbGQoaGVhZGxpbmUpOwogICAgY29uc3QgeEJ1dHRvbiA9IGNyZWF0ZUVsZW1lbnRXaXRoQXR0cmlidXRlcygnYnV0dG9uJywgewogICAgICAgIHR5cGU6ICdidXR0b24nLAogICAgICAgIGNsYXNzOiAnYnRuLWNsb3NlJwogICAgfSk7CiAgICBwb3B1cEhlYWRlci5hcHBlbmRDaGlsZCh4QnV0dG9uKTsKICAgIC8vIERlbGV0ZSBhbmQgcmVuZXcgcG9wdXBDdXN0b20KICAgIHBvcHVwQ3VzdG9tLnJlbW92ZSgpOwogICAgY29uc3QgbmV3UG9wdXBDdXN0b20gPSBjcmVhdGVFbGVtZW50V2l0aEF0dHJpYnV0ZXMoJ2RpdicsIHsgaWQ6ICdwb3B1cEN1c3RvbScgfSk7CiAgICBwb3B1cFJvdy5hcHBlbmRDaGlsZChuZXdQb3B1cEN1c3RvbSk7CiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZUVsZW1lbnRXaXRoQXR0cmlidXRlcygndGFibGUnLCB7CiAgICAgICAgaWQ6ICdvcHRpb25UYWJsZScKICAgIH0pOwogICAgbmV3UG9wdXBDdXN0b20uYXBwZW5kQ2hpbGQodGFibGUpOwp9CmZ1bmN0aW9uIGFkZEN1c3RvbVBvcFVwQ29udGVudChmcmFnbWVudCkgewogICAgY29uc3QgY29udGVudCA9IG5ldyBQb3B1cENvbnRlbnQoKTsKICAgIGlmICgiY2xpZW50SW5mbyIgaW4gU0VSVkVSKSB7CiAgICAgICAgY29uc3QgYmluZGluZ0lQc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmluZGluZ0lQcycpOwogICAgICAgIGNvbnN0IGJpbmRpbmdJUHMgPSBiaW5kaW5nSVBzRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7CiAgICAgICAgY29uc3QgYmluZGluZ0lQc3BBcnJheSA9IGJpbmRpbmdJUHMuc3BsaXQoIjsiKTsKICAgICAgICBjb25zdCBzeXN0ZW1uSVBzID0gU0VSVkVSWyJjbGllbnRJbmZvIl1bInN5c3RlbUlQcyJdOwogICAgICAgIGNvbnN0IG9wdGlvblRhYmxlID0gZnJhZ21lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wdGlvblRhYmxlJyk7CiAgICAgICAgc3lzdGVtbklQcy5mb3JFYWNoKChpcEFkZHJlc3MsIGluZGV4KSA9PiB7CiAgICAgICAgICAgIGlmICghaXBBZGRyZXNzLmluY2x1ZGVzKCcxNjkuMjU0JykpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKICAgICAgICAgICAgICAgIGNvbnN0IHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CiAgICAgICAgICAgICAgICBjb25zdCB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94ID0gY3JlYXRlQ2hlY2tib3goaXBBZGRyZXNzLCAnaXBDaGVja2JveCcgKyBpbmRleCk7CiAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0gYmluZGluZ0lQc3BBcnJheS5pbmNsdWRlcyhpcEFkZHJlc3MpOwogICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwogICAgICAgICAgICAgICAgbGFiZWwuc2V0QXR0cmlidXRlKCJmb3IiLCAiaXBDaGVja2JveCIgKyBpbmRleCk7CiAgICAgICAgICAgICAgICBsYWJlbC5pbm5lckhUTUwgPSBpcEFkZHJlc3M7CiAgICAgICAgICAgICAgICB0ZExlZnQuYXBwZW5kQ2hpbGQoY2hlY2tib3gpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBvcHRpb25UYWJsZS5hcHBlbmRDaGlsZCh0cik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBjb25zdCBjaGVja2JveF9jb250YWluZXIgPSBmcmFnbWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXBDdXN0b20nKTsKICAgICAgICBjaGVja2JveF9jb250YWluZXIudGV4dENvbnRlbnQgPSAnU2VsZWN0IG9uZSBvciBtb3JlIElQKHMpLiBJZiBub25lIGhhcyBiZWVuIHNlbGVjdGVkIHRoZW4gVGhyZWFkZmluIHdpbGwgYmluZCB0byBhbGwgb2YgdGhlbSEnOyAvLyBUaGlzIGRlbGV0ZXMgYWxsIG5vZGVzIGFuZCByZXBsYWNlIHdpdGggdGV4dCEKICAgICAgICBjaGVja2JveF9jb250YWluZXIuYXBwZW5kQ2hpbGQob3B0aW9uVGFibGUpOyAvLyBSZWFwcGVuZCB0aGUgdGFibGUKICAgICAgICBjb25zdCBzYXZlQnV0dG9uID0gY3JlYXRlQnV0dG9uKGNvbnRlbnQsICJidXR0b25VcGRhdGUiLCAie3suYnV0dG9uLnVwZGF0ZX19IiwgJ2phdmFzY3JpcHQ6IHVwZGF0ZUJpbmRpbmdJUHMoKScpOwogICAgICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbihjb250ZW50LCAiYnV0dG9uQ2FuY2VsIiwgInt7LmJ1dHRvbi5jYW5jZWx9fSIsICdqYXZhc2NyaXB0OiByZXNldFBvcHVwKCknKTsKICAgICAgICBjaGVja2JveF9jb250YWluZXIuYXBwZW5kQ2hpbGQoc2F2ZUJ1dHRvbik7CiAgICAgICAgY2hlY2tib3hfY29udGFpbmVyLmFwcGVuZENoaWxkKGNhbmNlbEJ1dHRvbik7CiAgICAgICAgY29uc3QgaXBTZWxlY3Rpb24gPSBmcmFnbWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXBIZWFkZXInKTsKICAgICAgICBjb25zdCBjbG9zZUJ1dHRvbiA9IGlwU2VsZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5idG4tY2xvc2UnKTsKICAgICAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHJlc2V0UG9wdXAoKSk7CiAgICB9Cn0KZnVuY3Rpb24gY3JlYXRlQnV0dG9uKGNvbnRlbnQsIGlkLCB0ZXh0LCBvbkNsaWNrKSB7CiAgICByZXR1cm4gY3JlYXRlSW5wdXQoJ2J1dHRvbicsIGlkLCB0ZXh0LCB7ICdvbmNsaWNrJzogb25DbGljayB9KTsKfQpmdW5jdGlvbiBjcmVhdGVDaGVja2JveChuYW1lLCBpZCA9ICcnKSB7CiAgICByZXR1cm4gY3JlYXRlSW5wdXQoJ2NoZWNrYm94JywgbmFtZSwge30sIHsgaWQ6IGlkIH0pOwp9CmZ1bmN0aW9uIHJlc2V0UG9wdXAoKSB7CiAgICAvLyByZW1vdmUgY2FuY2VsIHgtYnV0dG9uIGFuZCBoZWFkbGluZSBmcm9tIHBvcHVwSGVhZGVyCiAgICBjb25zdCBwb3B1cEhlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cEhlYWRlcicpOwogICAgcG9wdXBIZWFkZXIucmVtb3ZlQ2hpbGQocG9wdXBIZWFkZXIucXVlcnlTZWxlY3RvcignYnV0dG9uJykpOwogICAgcG9wdXBIZWFkZXIucmVtb3ZlQ2hpbGQocG9wdXBIZWFkZXIucXVlcnlTZWxlY3RvcignaDMnKSk7CiAgICAvLyByZW1vdmUgZXhpc3RpbmcgcG9wdXBDdXN0b20KICAgIGNvbnN0IG9wdGlvbnNEaWFsb2d1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cEN1c3RvbScpOwogICAgb3B0aW9uc0RpYWxvZ3VlLnJlbW92ZSgpOwogICAgLy8gYWRkIG5ldyBwb3B1cAogICAgY29uc3QgcG9wdXBSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXBSb3cnKTsKICAgIGNvbnN0IG5ld1BvcHVwQ3VzdG9tID0gY3JlYXRlRWxlbWVudFdpdGhBdHRyaWJ1dGVzKCdkaXYnLCB7CiAgICAgICAgaWQ6ICdwb3B1cEN1c3RvbScKICAgIH0pOwogICAgcG9wdXBSb3cuYXBwZW5kQ2hpbGQobmV3UG9wdXBDdXN0b20pOwogICAgLy8gZG9uJ3Qgc2hvdyB0aGUgcG9wdXAgYW55bW9yZQogICAgc2hvd0VsZW1lbnQoJ3BvcHVwJywgZmFsc2UpOwp9CmZ1bmN0aW9uIHVwZGF0ZUJpbmRpbmdJUHMoKSB7CiAgICBjb25zdCBjaGVja2JveFRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wdGlvblRhYmxlJyk7CiAgICBjb25zdCBjaGVja2JveExpc3QgPSBjaGVja2JveFRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKTsKICAgIC8vIGdldCBjaGVja2VkIGJveGVzIGFuZCBjcmVhdGUgYXJyYXkKICAgIHZhciBiaW5kaW5nSVBzID0gQXJyYXkuZnJvbShjaGVja2JveExpc3QpCiAgICAgICAgLmZpbHRlcihjaGVja2JveCA9PiBjaGVja2JveC5jaGVja2VkKQogICAgICAgIC5tYXAoY2hlY2tib3ggPT4gY2hlY2tib3gubmFtZSk7CiAgICBjb25zdCBiaW5kaW5nSVBzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaW5kaW5nSVBzJyk7CiAgICBpZiAoYmluZGluZ0lQcy5sZW5ndGggPT09IDApIHsKICAgICAgICAvLyBzZXQgdmFsdWUgdG8gbm9uZQogICAgICAgIGJpbmRpbmdJUHNFbGVtZW50LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAvLyBpbnNlcnQgdGhlIHZhbHVlcyBmcm9tIHRoZSBhcnJheQogICAgICAgIGJpbmRpbmdJUHNFbGVtZW50LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBiaW5kaW5nSVBzLmpvaW4oJzsnKSArICI7Iik7CiAgICB9CiAgICAvLyB0ZWxsIGFib3V0IHRoZSBjaGFuZ2UKICAgIGJpbmRpbmdJUHNFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnY2hhbmdlZCcpOwogICAgLy8gcmVzZXRQb3B1cCBmb3IgdGhlIG5leHQgcnVuCiAgICByZXNldFBvcHVwKCk7Cn0KZnVuY3Rpb24gY3JlYXRlSW5wdXQodHlwZSwgbmFtZSwgdmFsdWUsIGF0dHJpYnV0ZSA9IHt9KSB7CiAgICByZXR1cm4gY3JlYXRlRWxlbWVudFdpdGhBdHRyaWJ1dGVzKCdpbnB1dCcsIE9iamVjdC5hc3NpZ24oeyB0eXBlLCBuYW1lLCB2YWx1ZSB9LCBhdHRyaWJ1dGUpKTsKfQpmdW5jdGlvbiBjcmVhdGVFbGVtZW50V2l0aEF0dHJpYnV0ZXModGFnLCBhdHRyaWJ1dGVzKSB7CiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cmlidXRlcykgewogICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50Owp9Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wdGlvbl9kaWFsb2d1ZS5qcy5tYXA=" + webUI["web/public/js/option_dialogue.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uX2RpYWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL29wdGlvbl9kaWFsb2d1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsU0FBUyxxQkFBcUI7SUFDNUIsSUFBSSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNuRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2RSxRQUFRLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLFFBQTBCO0lBQzFELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNwRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTNELDRDQUE0QztJQUM1QyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElB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" + webUI["web/public/js/settings.js"] = "Y2xhc3MgU2V0dGluZ3NDYXRlZ29yeSB7CiAgICBjb25zdHJ1Y3RvcihoZWFkbGluZSwgc2V0dGluZ3NLZXlzKSB7CiAgICAgICAgdGhpcy5Eb2N1bWVudElEID0gImNvbnRlbnRfc2V0dGluZ3MiOwogICAgICAgIHRoaXMuaGVhZGxpbmUgPSBoZWFkbGluZTsKICAgICAgICB0aGlzLnNldHRpbmdzS2V5cyA9IHNldHRpbmdzS2V5czsKICAgIH0KICAgIGNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksIHRpdGxlKSB7CiAgICAgICAgdmFyIHNldHRpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOwogICAgICAgIHZhciBjb250ZW50ID0gbmV3IFBvcHVwQ29udGVudCgpOwogICAgICAgIHZhciBkYXRhID0gU0VSVkVSWyJzZXR0aW5ncyJdW3NldHRpbmdzS2V5XTsKICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gdGl0bGUgKyAiOiI7CiAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlQ2hlY2tib3goc2V0dGluZ3NLZXkpOwogICAgICAgIGlucHV0LmNoZWNrZWQgPSBkYXRhOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICByZXR1cm4gc2V0dGluZzsKICAgIH0KICAgIGNyZWF0ZUNhdGVnb3J5SGVhZGxpbmUodmFsdWUpIHsKICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkg0Iik7CiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSB2YWx1ZTsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KICAgIGNyZWF0ZUhSKCkgewogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSFIiKTsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KICAgIGNyZWF0ZVNldHRpbmdzKHNldHRpbmdzS2V5KSB7CiAgICAgICAgdmFyIHNldHRpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpOwogICAgICAgIHZhciBjb250ZW50ID0gbmV3IFBvcHVwQ29udGVudCgpOwogICAgICAgIHZhciBkYXRhID0gU0VSVkVSWyJzZXR0aW5ncyJdW3NldHRpbmdzS2V5XTsKICAgICAgICBzd2l0Y2ggKHNldHRpbmdzS2V5KSB7CiAgICAgICAgICAgIC8vIFRleHRlaW5nYWJlbgogICAgICAgICAgICBjYXNlICJ1cGRhdGUiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLnVwZGF0ZS50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAidXBkYXRlIiwgZGF0YS50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MudXBkYXRlLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJiYWNrdXAucGF0aCI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuYmFja3VwUGF0aC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAiYmFja3VwLnBhdGgiLCBkYXRhKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MuYmFja3VwUGF0aC5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidGVtcC5wYXRoIjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy50ZW1wUGF0aC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAidGVtcC5wYXRoIiwgZGF0YSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnNldHRpbmdzLnRtcFBhdGgucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInVzZXIuYWdlbnQiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLnVzZXJBZ2VudC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAidXNlci5hZ2VudCIsIGRhdGEpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5zZXR0aW5ncy51c2VyQWdlbnQucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImJ1ZmZlci50aW1lb3V0IjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy5idWZmZXJUaW1lb3V0LnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsICJidWZmZXIudGltZW91dCIsIGRhdGEpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5zZXR0aW5ncy5idWZmZXJUaW1lb3V0LnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJmZm1wZWcucGF0aCI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuZmZtcGVnUGF0aC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAiZmZtcGVnLnBhdGgiLCBkYXRhKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MuZmZtcGVnUGF0aC5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZmZtcGVnLm9wdGlvbnMiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLmZmbXBlZ09wdGlvbnMudGl0bGV9fSIgKyAiOiI7CiAgICAgICAgICAgICAgICB2YXIgdGRSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBjb250ZW50LmNyZWF0ZUlucHV0KCJ0ZXh0IiwgImZmbXBlZy5vcHRpb25zIiwgZGF0YSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnNldHRpbmdzLmZmbXBlZ09wdGlvbnMucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInZsYy5wYXRoIjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy52bGNQYXRoLnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsICJ2bGMucGF0aCIsIGRhdGEpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5zZXR0aW5ncy52bGNQYXRoLnBsYWNlaG9sZGVyfX0iKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ2bGMub3B0aW9ucyI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MudmxjT3B0aW9ucy50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAidmxjLm9wdGlvbnMiLCBkYXRhKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MudmxjT3B0aW9ucy5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYmluZGluZ0lQcyI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuYmluZGluZ0lQcy50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAiYmluZGluZ0lQcyIsIGRhdGEpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJpZCIsIHNldHRpbmdzS2V5KTsKICAgICAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHNob3dJUEJpbmRpbmdEaWFsb2d1ZSgpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnNldHRpbmdzLmJpbmRpbmdJUHMucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgLy9pbnB1dC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtdGFyZ2V0JywgJyNkaWFsb2d1ZUNvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAvL2lucHV0LnNldEF0dHJpYnV0ZSgiZGF0YS1icy10b2dnbGUiICwgIm1vZGFsIikKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoaW5wdXQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJlcGdDYXRlZ29yaWVzIjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy5lcGdDYXRlZ29yaWVzLnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsICJlcGdDYXRlZ29yaWVzIiwgZGF0YS50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MuZXBnQ2F0ZWdvcmllcy5wbGFjZWhvbGRlcn19Iik7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwgImphdmFzY3JpcHQ6IHRoaXMuY2xhc3NOYW1lID0gJ2NoYW5nZWQnIik7CiAgICAgICAgICAgICAgICB0ZFJpZ2h0LmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZXBnQ2F0ZWdvcmllc0NvbG9ycyI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuZXBnQ2F0ZWdvcmllc0NvbG9ycy50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAiZXBnQ2F0ZWdvcmllc0NvbG9ycyIsIGRhdGEudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInt7LnNldHRpbmdzLmVwZ0NhdGVnb3JpZXNDb2xvcnMucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRocmVhZGZpbkRvbWFpbiI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MudGhyZWFkZmluRG9tYWluLnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gY29udGVudC5jcmVhdGVJbnB1dCgidGV4dCIsICJ0aHJlYWRmaW5Eb21haW4iLCBkYXRhLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsICJ7ey5zZXR0aW5ncy50aHJlYWRmaW5Eb21haW4ucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInVkcHh5IjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy51ZHB4eS50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoInRleHQiLCAidWRweHkiLCBkYXRhKTsKICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAie3suc2V0dGluZ3MudWRweHkucGxhY2Vob2xkZXJ9fSIpOwogICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkTGVmdCk7CiAgICAgICAgICAgICAgICBzZXR0aW5nLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIC8vIENoZWNrYm94ZW4KICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24ud2ViIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvbldFQi50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24ucG1zIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvblBNUy50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24ubTN1IjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvbk0zVS50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24ueG1sIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvblhNTC50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24uYXBpIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvbkFQSS50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZmlsZXMudXBkYXRlIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5maWxlc1VwZGF0ZS50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiY2FjaGUuaW1hZ2VzIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5jYWNoZUltYWdlcy50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAieGVwZy5yZXBsYWNlLm1pc3NpbmcuaW1hZ2VzIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5yZXBsYWNlRW1wdHlJbWFnZXMudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInhlcGcucmVwbGFjZS5jaGFubmVsLnRpdGxlIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5yZXBsYWNlQ2hhbm5lbFRpdGxlLnRpdGxlfX0iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJzdG9yZUJ1ZmZlckluUkFNIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5zdG9yZUJ1ZmZlckluUkFNLnRpdGxlfX0iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJidWZmZXIuYXV0b1JlY29ubmVjdCI6CiAgICAgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5jcmVhdGVTZXR0aW5nc0NoZWNrYm94KHNldHRpbmdzS2V5LCAie3suc2V0dGluZ3MuYXV0b1JlY29ubmVjdC50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAib21pdFBvcnRzIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5vbWl0UG9ydHMudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZvcmNlSHR0cHMiOgogICAgICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuY3JlYXRlU2V0dGluZ3NDaGVja2JveChzZXR0aW5nc0tleSwgInt7LnNldHRpbmdzLmZvcmNlSHR0cHMudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInVzZUh0dHBzIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy51c2VIdHRwcy50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZm9yY2VDbGllbnRIdHRwcyI6CiAgICAgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5jcmVhdGVTZXR0aW5nc0NoZWNrYm94KHNldHRpbmdzS2V5LCAie3suc2V0dGluZ3MuZm9yY2VDbGllbnRIdHRwcy50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZG9tYWluVXNlSHR0cHMiOgogICAgICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuY3JlYXRlU2V0dGluZ3NDaGVja2JveChzZXR0aW5nc0tleSwgInt7LnNldHRpbmdzLmRvbWFpblVzZUh0dHBzLnRpdGxlfX0iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJlbmFibGVOb25Bc2NpaSI6CiAgICAgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5jcmVhdGVTZXR0aW5nc0NoZWNrYm94KHNldHRpbmdzS2V5LCAie3suc2V0dGluZ3MuZW5hYmxlTm9uQXNjaWkudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIlRocmVhZGZpbkF1dG9VcGRhdGUiOgogICAgICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuY3JlYXRlU2V0dGluZ3NDaGVja2JveChzZXR0aW5nc0tleSwgInt7LnNldHRpbmdzLlRocmVhZGZpbkF1dG9VcGRhdGUudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNzZHAiOgogICAgICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuY3JlYXRlU2V0dGluZ3NDaGVja2JveChzZXR0aW5nc0tleSwgInt7LnNldHRpbmdzLnNzZHAudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImR1bW15IjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5kdW1teS50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaWdub3JlRmlsdGVycyI6CiAgICAgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5jcmVhdGVTZXR0aW5nc0NoZWNrYm94KHNldHRpbmdzS2V5LCAie3suc2V0dGluZ3MuaWdub3JlRmlsdGVycy50aXRsZX19Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXBpIjoKICAgICAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLmNyZWF0ZVNldHRpbmdzQ2hlY2tib3goc2V0dGluZ3NLZXksICJ7ey5zZXR0aW5ncy5hcGkudGl0bGV9fSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIC8vIFNlbGVjdAogICAgICAgICAgICBjYXNlICJkdW1teUNoYW5uZWwiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLmR1bW15Q2hhbm5lbC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gWyJQUFYiLCAiMzAgTWludXRlcyIsICI2MCBNaW51dGVzIiwgIjkwIE1pbnV0ZXMiLCAiMTIwIE1pbnV0ZXMiLCAiMTgwIE1pbnV0ZXMiLCAiMjQwIE1pbnV0ZXMiLCAiMzYwIE1pbnV0ZXMiXTsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbIlBQViIsICIzMF9NaW51dGVzIiwgIjYwX01pbnV0ZXMiLCAiOTBfTWludXRlcyIsICIxMjBfTWludXRlcyIsICIxODBfTWludXRlcyIsICIyNDBfTWludXRlcyIsICIzNjBfTWludXRlcyJdOwogICAgICAgICAgICAgICAgdmFyIHNlbGVjdCA9IGNvbnRlbnQuY3JlYXRlU2VsZWN0KHRleHQsIHZhbHVlcywgZGF0YSwgc2V0dGluZ3NLZXkpOwogICAgICAgICAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoc2VsZWN0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidHVuZXIiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLnR1bmVyLnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIHRleHQgPSBuZXcgQXJyYXkoKTsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBuZXcgQXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGV4dC5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHNlbGVjdCA9IGNvbnRlbnQuY3JlYXRlU2VsZWN0KHRleHQsIHZhbHVlcywgZGF0YSwgc2V0dGluZ3NLZXkpOwogICAgICAgICAgICAgICAgc2VsZWN0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCAiamF2YXNjcmlwdDogdGhpcy5jbGFzc05hbWUgPSAnY2hhbmdlZCciKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoc2VsZWN0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZXBnU291cmNlIjoKICAgICAgICAgICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdGRMZWZ0LmlubmVySFRNTCA9ICJ7ey5zZXR0aW5ncy5lcGdTb3VyY2UudGl0bGV9fSIgKyAiOiI7CiAgICAgICAgICAgICAgICB2YXIgdGRSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IFsiUE1TIiwgIlhFUEciXTsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbIlBNUyIsICJYRVBHIl07CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhLCBzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChzZWxlY3QpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJiYWNrdXAua2VlcCI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuYmFja3VwS2VlcC50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gWyI1IiwgIjEwIiwgIjIwIiwgIjMwIiwgIjQwIiwgIjUwIl07CiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gWyI1IiwgIjEwIiwgIjIwIiwgIjMwIiwgIjQwIiwgIjUwIl07CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhLCBzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChzZWxlY3QpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJidWZmZXIuc2l6ZS5rYiI6CiAgICAgICAgICAgICAgICB2YXIgdGRMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAie3suc2V0dGluZ3MuYnVmZmVyU2l6ZS50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gWyIwLjUgTUIiLCAiMSBNQiIsICIyIE1CIiwgIjMgTUIiLCAiNCBNQiIsICI1IE1CIiwgIjYgTUIiLCAiNyBNQiIsICI4IE1CIl07CiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gWyI1MTIiLCAiMTAyNCIsICIyMDQ4IiwgIjMwNzIiLCAiNDA5NiIsICI1MTIwIiwgIjYxNDQiLCAiNzE2OCIsICI4MTkyIl07CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhLCBzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChzZWxlY3QpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJidWZmZXIiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLnN0cmVhbUJ1ZmZlcmluZy50aXRsZX19IiArICI6IjsKICAgICAgICAgICAgICAgIHZhciB0ZFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKTsKICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gWyJ7ey5zZXR0aW5ncy5zdHJlYW1CdWZmZXJpbmcuaW5mb19mYWxzZX19IiwgIkZGbXBlZzogKHt7LnNldHRpbmdzLnN0cmVhbUJ1ZmZlcmluZy5pbmZvX2ZmbXBlZ319KSIsICJWTEM6ICh7ey5zZXR0aW5ncy5zdHJlYW1CdWZmZXJpbmcuaW5mb192bGN9fSkiLCAiVGhyZWFkZmluOiAoe3suc2V0dGluZ3Muc3RyZWFtQnVmZmVyaW5nLmluZm9fdGhyZWFkZmlufX0pIl07CiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gWyItIiwgImZmbXBlZyIsICJ2bGMiLCAidGhyZWFkZmluIl07CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ID0gY29udGVudC5jcmVhdGVTZWxlY3QodGV4dCwgdmFsdWVzLCBkYXRhLCBzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICBzZWxlY3Quc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsICJqYXZhc2NyaXB0OiB0aGlzLmNsYXNzTmFtZSA9ICdjaGFuZ2VkJyIpOwogICAgICAgICAgICAgICAgdGRSaWdodC5hcHBlbmRDaGlsZChzZWxlY3QpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgICAgICAgICAgc2V0dGluZy5hcHBlbmRDaGlsZCh0ZFJpZ2h0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAvLyBCdXR0b24KICAgICAgICAgICAgY2FzZSAidXBsb2FkQ3VzdG9tSW1hZ2UiOgogICAgICAgICAgICAgICAgdmFyIHRkTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgICAgICAgICB0ZExlZnQuaW5uZXJIVE1MID0gInt7LnNldHRpbmdzLnVwbG9hZEN1c3RvbUltYWdlLnRpdGxlfX0iICsgIjoiOwogICAgICAgICAgICAgICAgdmFyIHRkUmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGNvbnRlbnQuY3JlYXRlSW5wdXQoImJ1dHRvbiIsICJ1cGxvYWQiLCAie3suYnV0dG9uLnVwbG9hZEN1c3RvbUltYWdlfX0iKTsKICAgICAgICAgICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCAnamF2YXNjcmlwdDogdXBsb2FkQ3VzdG9tSW1hZ2UoKTsnKTsKICAgICAgICAgICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRMZWZ0KTsKICAgICAgICAgICAgICAgIHNldHRpbmcuYXBwZW5kQ2hpbGQodGRSaWdodCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNldHRpbmc7CiAgICB9CiAgICBjcmVhdGVEZXNjcmlwdGlvbihzZXR0aW5nc0tleSkgewogICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIik7CiAgICAgICAgdmFyIHRleHQ7CiAgICAgICAgc3dpdGNoIChzZXR0aW5nc0tleSkgewogICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi53ZWIiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvbldFQi5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi5tM3UiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvbk0zVS5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi5wbXMiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvblBNUy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi54bWwiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5hdXRoZW50aWNhdGlvblhNTC5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi5hcGkiOgogICAgICAgICAgICAgICAgaWYgKFNFUlZFUlsic2V0dGluZ3MiXVsiYXV0aGVudGljYXRpb24ud2ViIl0gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuYXV0aGVudGljYXRpb25BUEkuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidXBsb2FkQ3VzdG9tSW1hZ2UiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy51cGxvYWRDdXN0b21JbWFnZS5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJUaHJlYWRmaW5BdXRvVXBkYXRlIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuVGhyZWFkZmluQXV0b1VwZGF0ZS5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJiaW5kaW5nSVBzIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuYmluZGluZ0lQcy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJiYWNrdXAua2VlcCI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmJhY2t1cEtlZXAuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYmFja3VwLnBhdGgiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5iYWNrdXBQYXRoLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRlbXAucGF0aCI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnRlbXBQYXRoLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImJ1ZmZlciI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnN0cmVhbUJ1ZmZlcmluZy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJidWZmZXIuc2l6ZS5rYiI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmJ1ZmZlclNpemUuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYnVmZmVyLmF1dG9SZWNvbm5lY3QiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5hdXRvUmVjb25uZWN0LmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInN0b3JlQnVmZmVySW5SQU0iOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5zdG9yZUJ1ZmZlckluUkFNLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm9taXRQb3J0cyI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLm9taXRQb3J0cy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJmb3JjZUh0dHBzIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuZm9yY2VIdHRwcy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ1c2VIdHRwcyI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnVzZUh0dHBzLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZvcmNlQ2xpZW50SHR0cHMiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5mb3JjZUNsaWVudEh0dHBzLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRocmVhZGZpbkRvbWFpbiI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnRocmVhZGZpbkRvbWFpbi5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJlbmFibGVOb25Bc2NpaSI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmVuYWJsZU5vbkFzY2lpLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImVwZ0NhdGVnb3JpZXMiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5lcGdDYXRlZ29yaWVzLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImVwZ0NhdGVnb3JpZXNDb2xvcnMiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5lcGdDYXRlZ29yaWVzQ29sb3JzLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImJ1ZmZlci50aW1lb3V0IjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuYnVmZmVyVGltZW91dC5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ1c2VyLmFnZW50IjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MudXNlckFnZW50LmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZmbXBlZy5wYXRoIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuZmZtcGVnUGF0aC5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJmZm1wZWcub3B0aW9ucyI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmZmbXBlZ09wdGlvbnMuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidmxjLnBhdGgiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy52bGNQYXRoLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInZsYy5vcHRpb25zIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MudmxjT3B0aW9ucy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJlcGdTb3VyY2UiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5lcGdTb3VyY2UuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidHVuZXIiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy50dW5lci5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ1cGRhdGUiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy51cGRhdGUuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiYXBpIjoKICAgICAgICAgICAgICAgIHRleHQgPSAie3suc2V0dGluZ3MuYXBpLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNzZHAiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy5zc2RwLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZpbGVzLnVwZGF0ZSI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmZpbGVzVXBkYXRlLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImNhY2hlLmltYWdlcyI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLmNhY2hlSW1hZ2VzLmRlc2NyaXB0aW9ufX0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInhlcGcucmVwbGFjZS5taXNzaW5nLmltYWdlcyI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnJlcGxhY2VFbXB0eUltYWdlcy5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ4ZXBnLnJlcGxhY2UuY2hhbm5lbC50aXRsZSI6CiAgICAgICAgICAgICAgICB0ZXh0ID0gInt7LnNldHRpbmdzLnJlcGxhY2VDaGFubmVsVGl0bGUuZGVzY3JpcHRpb259fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidWRweHkiOgogICAgICAgICAgICAgICAgdGV4dCA9ICJ7ey5zZXR0aW5ncy51ZHB4eS5kZXNjcmlwdGlvbn19IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGV4dCA9ICIiOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhciB0ZExlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURCIpOwogICAgICAgIHRkTGVmdC5pbm5lckhUTUwgPSAiIjsKICAgICAgICB2YXIgdGRSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlREIik7CiAgICAgICAgdmFyIHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlBSRSIpOwogICAgICAgIHByZS5pbm5lckhUTUwgPSB0ZXh0OwogICAgICAgIHRkUmlnaHQuYXBwZW5kQ2hpbGQocHJlKTsKICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmRDaGlsZCh0ZExlZnQpOwogICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZENoaWxkKHRkUmlnaHQpOwogICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjsKICAgIH0KfQpjbGFzcyBTZXR0aW5nc0NhdGVnb3J5SXRlbSBleHRlbmRzIFNldHRpbmdzQ2F0ZWdvcnkgewogICAgY29uc3RydWN0b3IoaGVhZGxpbmUsIHNldHRpbmdzS2V5cykgewogICAgICAgIHN1cGVyKGhlYWRsaW5lLCBzZXR0aW5nc0tleXMpOwogICAgfQogICAgY3JlYXRlQ2F0ZWdvcnkoKSB7CiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuRG9jdW1lbnRJRCk7CiAgICAgICAgZG9jLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ2F0ZWdvcnlIZWFkbGluZSh0aGlzLmhlYWRsaW5lKSk7CiAgICAgICAgLy8gVGFiZWxsZSBmw7xyIGRpZSBLYXRlZ29yaWUgZXJzdGVsbGVuCiAgICAgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKTsKICAgICAgICB2YXIga2V5cyA9IHRoaXMuc2V0dGluZ3NLZXlzLnNwbGl0KCIsIik7CiAgICAgICAga2V5cy5mb3JFYWNoKHNldHRpbmdzS2V5ID0+IHsKICAgICAgICAgICAgc3dpdGNoIChzZXR0aW5nc0tleSkgewogICAgICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24ucG1zIjoKICAgICAgICAgICAgICAgIGNhc2UgImF1dGhlbnRpY2F0aW9uLm0zdSI6CiAgICAgICAgICAgICAgICBjYXNlICJhdXRoZW50aWNhdGlvbi54bWwiOgogICAgICAgICAgICAgICAgY2FzZSAiYXV0aGVudGljYXRpb24uYXBpIjoKICAgICAgICAgICAgICAgICAgICBpZiAoU0VSVkVSWyJzZXR0aW5ncyJdWyJhdXRoZW50aWNhdGlvbi53ZWIiXSA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jcmVhdGVTZXR0aW5ncyhzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gdGhpcy5jcmVhdGVEZXNjcmlwdGlvbihzZXR0aW5nc0tleSk7CiAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgZG9jLmFwcGVuZENoaWxkKHRhYmxlKTsKICAgICAgICBkb2MuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVIUigpKTsKICAgIH0KfQpmdW5jdGlvbiBzaG93U2V0dGluZ3MoKSB7CiAgICBjb25zb2xlLmxvZygiU0VUVElOR1MiKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3NDYXRlZ29yeS5sZW5ndGg7IGkrKykgewogICAgICAgIHNldHRpbmdzQ2F0ZWdvcnlbaV0uY3JlYXRlQ2F0ZWdvcnkoKTsKICAgIH0KfQpmdW5jdGlvbiBzYXZlU2V0dGluZ3MoKSB7CiAgICBjb25zb2xlLmxvZygiU2F2ZSBTZXR0aW5ncyIpOwogICAgdmFyIGNtZCA9ICJzYXZlU2V0dGluZ3MiOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50X3NldHRpbmdzIik7CiAgICB2YXIgc2V0dGluZ3MgPSBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiY2hhbmdlZCIpOwogICAgdmFyIG5ld1NldHRpbmdzID0gbmV3IE9iamVjdCgpOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBuYW1lOwogICAgICAgIHZhciB2YWx1ZTsKICAgICAgICBzd2l0Y2ggKHNldHRpbmdzW2ldLnRhZ05hbWUpIHsKICAgICAgICAgICAgY2FzZSAiSU5QVVQiOgogICAgICAgICAgICAgICAgc3dpdGNoIChzZXR0aW5nc1tpXS50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2hlY2tib3giOgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc2V0dGluZ3NbaV0ubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZXR0aW5nc1tpXS5jaGVja2VkOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXR0aW5nc1tuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0IjoKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNldHRpbmdzW2ldLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0dGluZ3NbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidXBkYXRlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCIsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGU7IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYnVmZmVyLnRpbWVvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0dGluZ3NbbmFtZV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiU0VMRUNUIjoKICAgICAgICAgICAgICAgIG5hbWUgPSBzZXR0aW5nc1tpXS5uYW1lOwogICAgICAgICAgICAgICAgdmFsdWUgPSBzZXR0aW5nc1tpXS52YWx1ZTsKICAgICAgICAgICAgICAgIC8vIFdlbm4gZGVyIFdlcnQgZWluZSBaYWhsIGlzdCwgd2lyZCBkaWVzZXIgYWxzIFphaGwgZ2VzcGVpY2hlcnQKICAgICAgICAgICAgICAgIGlmIChpc05hTih2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBuZXdTZXR0aW5nc1tuYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbmV3U2V0dGluZ3NbbmFtZV0gPSBwYXJzZUludCh2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgIGRhdGFbInNldHRpbmdzIl0gPSBuZXdTZXR0aW5nczsKICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKfQpmdW5jdGlvbiB1cGxvYWRDdXN0b21JbWFnZSgpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkJykpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkJykucmVtb3ZlKCk7CiAgICB9CiAgICB2YXIgdXBsb2FkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKTsKICAgIHVwbG9hZC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZmlsZSIpOwogICAgdXBsb2FkLnNldEF0dHJpYnV0ZSgiYWNjZXB0IiwgIi5qcGcsLnBuZyIpOwogICAgdXBsb2FkLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAibm90VmlzaWJsZSIpOwogICAgdXBsb2FkLnNldEF0dHJpYnV0ZSgibmFtZSIsICIiKTsKICAgIHVwbG9hZC5pZCA9ICJ1cGxvYWQiOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh1cGxvYWQpOwogICAgdXBsb2FkLmNsaWNrKCk7CiAgICB1cGxvYWQub25ibHVyID0gZnVuY3Rpb24gKCkgewogICAgICAgIGFsZXJ0KCk7CiAgICB9OwogICAgdXBsb2FkLm9uY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBmaWxlbmFtZSA9IHVwbG9hZC5maWxlc1swXS5uYW1lOwogICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwogICAgICAgIHZhciBmaWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1maWxlXScpLmZpbGVzWzBdOwogICAgICAgIGlmIChmaWxlKSB7CiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVhZGVyLnJlc3VsdCk7CiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsKICAgICAgICAgICAgICAgIHZhciBjbWQgPSAidXBsb2FkQ3VzdG9tSW1hZ2UiOwogICAgICAgICAgICAgICAgZGF0YVsiYmFzZTY0Il0gPSByZWFkZXIucmVzdWx0OwogICAgICAgICAgICAgICAgZGF0YVsiZmlsZW5hbWUiXSA9IGZpbGUubmFtZTsKICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSBuZXcgU2VydmVyKGNtZCk7CiAgICAgICAgICAgICAgICBzZXJ2ZXIucmVxdWVzdChkYXRhKTsKICAgICAgICAgICAgICAgIHZhciB1cGRhdGVMb2dvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwZGF0ZS1pY29uJyk7CiAgICAgICAgICAgICAgICB1cGRhdGVMb2dvLmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHVwZGF0ZUxvZ28uY2xhc3NOYW1lID0gImNoYW5nZWQiOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoIkZpbGUgY291bGQgbm90IGJlIGxvYWRlZCIpOwogICAgICAgIH0KICAgICAgICB1cGxvYWQucmVtb3ZlKCk7CiAgICAgICAgcmV0dXJuOwogICAgfTsKfQovLyMgc291cmNlTWFwcGluZ1VSTD1zZXR0aW5ncy5qcy5tYXA=" + webUI["web/public/js/settings.js.map"] = "eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHMvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxnQkFBZ0I7SUFLcEIsWUFBWSxRQUFnQixFQUFFLFlBQW9CO1FBSmxELGVBQVUsR0FBVyxrQkFBa0IsQ0FBQTtRQUtyQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtJQUNsQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBbUIsRUFBRSxLQUFhO1FBQ3ZELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUMsSUFBSSxPQUFPLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUE7UUFDOUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzFDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekMsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFBO1FBRTlCLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMvQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUNwQixLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFBO1FBQ3hFLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVCLE9BQU8sT0FB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" + webUI["web/public/img/threadfin.png"] = "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" + webUI["web/public/index.html"] = "PCFkb2N0eXBlIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQoNCjxoZWFkPg0KICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgPg0KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+DQogIA0KICA8dGl0bGU+VGhyZWFkZmluPC90aXRsZT4NCiAgPCEtLSBmb250LWF3ZXNvbWUgLS0+DQogIDxsaW5rDQogICAgcmVsPSJzdHlsZXNoZWV0Ig0KICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS81LjE0LjAvY3NzL2FsbC5taW4uY3NzIg0KICAvPg0KICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjIuMC9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpbnRlZ3JpdHk9InNoYTM4NC1nSDJ5SUpxS2ROSFBFcTBuNE1xYS9IR0tJaFNrSUhlTDVBeWhrWVY4aTU5VTVBUjZjc0J2QXBISE5sL3ZJMUJ4IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj4NCiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3Mvc2NyZWVuLmNzcyIgdHlwZT0idGV4dC9jc3MiPg0KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9iYXNlLmNzcyIgdHlwZT0idGV4dC9jc3MiPg0KICA8bGluayByZWw9Imljb24iIGhyZWY9ImltZy90aHJlYWRmaW4uaWNvIj4NCg0KPC9oZWFkPg0KDQo8Ym9keSBvbmxvYWQ9ImphdmFzY3JpcHQ6IFBhZ2VSZWFkeSgpOyI+DQoNCiAgPGRpdiBpZD0ibG9hZGluZyIgY2xhc3M9Im1vZGFsIGZhZGUiPg0KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBsb2FkZXIiPjwvZGl2Pg0KICA8L2Rpdj4NCg0KICA8ZGl2IGlkPSJwb3B1cCIgY2xhc3M9Im1vZGFsIGZhZGUiPg0KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC14bCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50IiBpZD0icG9wdXBNb2RhbENvbnRlbnQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGlkPSJwb3B1cEhlYWRlciI+PC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgaWQ9InBvcHVwQm9keSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiIGlkPSJwb3B1cEJvZHlDb250YWluZXIiPg0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIGlkPSJwb3B1cFJvdyI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0icG9wdXBDdXN0b20iPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KDQogIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJzZXJ2ZXJfaW5mb3JtYXRpb24iPg0KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC14bCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4NCiAgICAgICAgICA8aDMgY2xhc3M9Im1vZGFsLXRpdGxlIj5TZXJ2ZXIgSW5mb3JtYXRpb248L2gzPg0KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgdGV4dC1iZy1kYXJrIG1iLTMiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj5TZXJ2ZXIgSW5mb3JtYXRpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idmVyc2lvbiIgY2xhc3M9ImZvcm0tbGFiZWwiPlRocmVhZGZpbiBWZXJzaW9uPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0idmVyc2lvbiIgYXJpYS1kZXNjcmliZWRieT0iYmFzaWMtYWRkb24zIiByZWFkb25seSBkaXNhYmxlZD4NCiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVycm9ycyIgY2xhc3M9ImZvcm0tbGFiZWwiPkVycm9yczwvbGFiZWw+DQogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImVycm9ycyIgYXJpYS1kZXNjcmliZWRieT0iYmFzaWMtYWRkb24zIiByZWFkb25seSBkaXNhYmxlZD4NCiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Indhcm5pbmdzIiBjbGFzcz0iZm9ybS1sYWJlbCI+V2FybmluZ3M8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ3YXJuaW5ncyIgYXJpYS1kZXNjcmliZWRieT0iYmFzaWMtYWRkb24zIiByZWFkb25seSBkaXNhYmxlZD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgdGV4dC1iZy1kYXJrIG1iLTMiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj5TdHJlYW0gSW5mb3JtYXRpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRFZSIiBjbGFzcz0iZm9ybS1sYWJlbCI+RFZSIElQPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iRFZSIiBhcmlhLWRlc2NyaWJlZGJ5PSJiYXNpYy1hZGRvbjMiIHJlYWRvbmx5IGRpc2FibGVkPg0KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibTN1LXVybCIgY2xhc3M9ImZvcm0tbGFiZWwiPk0zVSBVUkwgKFNwZWNpZmljIGdyb3VwczogW2h0dHA6Ly8uLi4/Z3JvdXAtdGl0bGU9Zm9vLGJhcl0pPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJtM3UtdXJsIiBhcmlhLWRlc2NyaWJlZGJ5PSJiYXNpYy1hZGRvbjMiIHJlYWRvbmx5Pg0KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpbnB1dC1ncm91cC10ZXh0IGNvcHktYnRuIiBkYXRhLWNsaXBib2FyZC10YXJnZXQ9IiNtM3UtdXJsIiBkYXRhLWJzLXRpdGxlPSJDb3B5IHRvIGNsaXBib2FyZCIgZGF0YS1icy10b2dnbGU9InRvb2x0aXAiIGRhdGEtYnMtcGxhY2VtZW50PSJib3R0b20iPjxpIGNsYXNzPSJmYXIgZmEtY2xpcGJvYXJkIj48L2k+PC9idXR0b24+DQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InhlcGctdXJsIiBjbGFzcz0iZm9ybS1sYWJlbCI+WE1MVFYgVVJMPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4ZXBnLXVybCIgYXJpYS1kZXNjcmliZWRieT0iYmFzaWMtYWRkb24zIiByZWFkb25seT4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaW5wdXQtZ3JvdXAtdGV4dCBjb3B5LWJ0biIgZGF0YS1jbGlwYm9hcmQtdGFyZ2V0PSIjeGVwZy11cmwiIGRhdGEtYnMtdGl0bGU9IkNvcHkgdG8gY2xpcGJvYXJkIiBkYXRhLWJzLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1icy1wbGFjZW1lbnQ9ImJvdHRvbSI+PGkgY2xhc3M9ImZhciBmYS1jbGlwYm9hcmQiPjwvaT48L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3RyZWFtcyIgY2xhc3M9ImZvcm0tbGFiZWwiPkZpbHRlcmVkIENoYW5uZWxzPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0ic3RyZWFtcyIgYXJpYS1kZXNjcmliZWRieT0iYmFzaWMtYWRkb24zIiByZWFkb25seSBkaXNhYmxlZD4NCiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InhlcGciIGNsYXNzPSJmb3JtLWxhYmVsIj5NYXBwZWQgQ2hhbm5lbHM8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4ZXBnIiBhcmlhLWRlc2NyaWJlZGJ5PSJiYXNpYy1hZGRvbjMiIHJlYWRvbmx5IGRpc2FibGVkPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LWJnLWRhcmsgbWIgMyI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPkNoYW5nZSBUaHJlYWRmaW4gVmVyc2lvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYm9keSI+DQogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iY2hhbmdlVmVyc2lvbiIvPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCiAgDQogIDxuYXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZXhwYW5kLWxnIHN0aWNreS10b3AgbmF2YmFyLWRhcmsgYmctYmxhY2siPg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+DQogICAgICA8YSBjbGFzcz0ibmF2YmFyLWJyYW5kIiBocmVmPSIvd2ViIj4NCiAgICAgICAgPHNwYW4gaWQ9ImxvZ28iPjwvc3Bhbj4NCiAgICAgIDwvYT4NCiAgICAgIDxidXR0b24gY2xhc3M9Im5hdmJhci10b2dnbGVyIiB0eXBlPSJidXR0b24iIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS1icy10YXJnZXQ9IiNuYXZiYXJTdXBwb3J0ZWRDb250ZW50IiBhcmlhLWNvbnRyb2xzPSJuYXZiYXJTdXBwb3J0ZWRDb250ZW50IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iPg0KICAgICAgICA8c3BhbiBjbGFzcz0ibmF2YmFyLXRvZ2dsZXItaWNvbiI+PC9zcGFuPg0KICAgICAgPC9idXR0b24+DQogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSBuYXZiYXItY29sbGFwc2UiIGlkPSJuYXZiYXJTdXBwb3J0ZWRDb250ZW50Ij4NCiAgICAgICAgPHVsIGNsYXNzPSJuYXZiYXItbmF2IG14LWF1dG8gbWItMiBtYi1sZy0wIiBpZD0ibWFpbi1tZW51Ij4NCiAgICAgICAgPC91bD4NCiAgICAgICAgPHVsIGNsYXNzPSJuYXZiYXItbmF2IG14LWF1dG8gbWItMiBtYi1sZy0wIj4NCiAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1saW5rIiBkYXRhLWJzLXRvZ2dsZT0ibW9kYWwiIGRhdGEtYnMtdGFyZ2V0PSIjc2VydmVyX2luZm9ybWF0aW9uIj48aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIj48L2k+IFNlcnZlciBJbmZvcm1hdGlvbjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9uYXY+DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbGV4Ij4NCiAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIGNvbC1zbS0xMiI+DQogICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiIGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj48L2Rpdj4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InJvdyIgaWQ9Im15U3RyZWFtc0JveCI+DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSBjb2wtc20tMTIgdGFibGUtcmVzcG9uc2l2ZSBmbG9hdC1zdGFydCI+DQogICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtZGFyayB0YWJsZS1ib3JkZXJlZCBjYXB0aW9uLXRvcCIgaWQ9ImFjdGl2ZVN0cmVhbXMiPjwvdGFibGU+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01IGNvbC1zbS0xMiB0YWJsZS1yZXNwb25zaXZlIGZsb2F0LWVuZCI+DQogICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtZGFyayB0YWJsZS1ib3JkZXJlZCBjYXB0aW9uLXRvcCIgaWQ9ImluYWN0aXZlU3RyZWFtcyI+PC90YWJsZT4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCg0KICA8ZGl2IGlkPSJub3RpZmljYXRpb25fY29udGFpbnRlciIgY2xhc3M9Im5vdGlmaWNhdGlvbiI+DQogICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciI+DQogICAgICAgIDxoNSBjbGFzcz0idGl0bGUiPlVwZGF0ZSBub3RpZmljYXRpb248L2g1Pg0KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGUiIGlkPSJjbG9zZU5vdGlmaWNhdGlvbiI+PC9idXR0b24+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiLCBzdHlsZT0iYm9yZGVyLXJhZGl1czogMTBweDsiPg0KICAgICAgICAgIDxwIGlkPSJub3RpZmljYXRpb25fdGV4dCI+PC9wPg0KICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiA1cHg7IiBpZD0idXBkYXRlTm93QnV0dG9uIi8+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQoNCiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMy4zL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiIGludGVncml0eT0ic2hhMzg0LVl2cGNyWWYwdFkzbEhCNjBOTmttWGM1czlmRFZaTEVTYUFBNTVORHpPeGh5OUdrY0lkc2xLMWVON042akllSHoiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY2xpcGJvYXJkLmpzLzIuMC4xMS9jbGlwYm9hcmQubWluLmpzIiBpbnRlZ3JpdHk9InNoYTUxMi03TzVwWHBjMG9DUnJ4azhSVWZEWUZnbjBuTzF0K2pMdUlPUWRPTVJwNEFQQjd1WjR2U2pzcHpwNXk2WUR0RHM0VnpVU1RiV3pCRlovTEtKaG55Rk9Ldz09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvbmV0d29yay5qcyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9vcHRpb25fZGlhbG9ndWUuanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvbWVudS5qcyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9zZXR0aW5ncy5qcyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9sb2dzLmpzIj48L3NjcmlwdD4NCiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2Jhc2UuanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvdmVyc2lvbl9jaGVjay5qcyI+PC9zY3JpcHQ+DQo8L2JvZHk+DQo8L2h0bWw+" + webUI["web/public/configuration.html"] = "PCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCg0KPGhlYWQ+DQogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+DQogIDx0aXRsZT5UaHJlYWRmaW48L3RpdGxlPg0KICA8bGluaw0KICAgIHJlbD0ic3R5bGVzaGVldCINCiAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNS4xNC4wL2Nzcy9hbGwubWluLmNzcyINCiAgLz4NCiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjAvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgaW50ZWdyaXR5PSJzaGEzODQtZ0gyeUlKcUtkTkhQRXEwbjRNcWEvSEdLSWhTa0lIZUw1QXloa1lWOGk1OVU1QVI2Y3NCdkFwSEhObC92STFCeCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+DQogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3NjcmVlbi5jc3MiIHR5cGU9InRleHQvY3NzIj4NCiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvYmFzZS5jc3MiIHR5cGU9InRleHQvY3NzIj4NCjwvaGVhZD4NCg0KPGJvZHkgb25sb2FkPSJqYXZhc2NyaXB0OiByZWFkeUZvckNvbmZpZ3VyYXRpb24oMCk7Ij4NCg0KICA8ZGl2IGlkPSJsb2FkaW5nIiBjbGFzcz0ibW9kYWwgZmFkZSI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIGxvYWRlciI+PC9kaXY+DQogIDwvZGl2Pg0KDQogIDxkaXYgaWQ9InBvcHVwIiBjbGFzcz0ibW9kYWwgZmFkZSI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIG1vZGFsLXhsIj4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGlkPSJwb3B1cEhlYWRlciI+PC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgICA8ZGl2IGlkPSJwb3B1cEN1c3RvbSI+PC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQoNCiAgPGRpdiBpZD0iaGVhZGVyIiBjbGFzcz0iaW1nQ2VudGVyIj48L2Rpdj4NCiAgPGRpdiBpZD0iYm94Ij4NCg0KICAgIDxkaXYgaWQ9ImhlYWRsaW5lIj4NCiAgICAgIDxoMSBpZD0iaGVhZC10ZXh0IiBjbGFzcz0iY2VudGVyIj5Db25maWd1cmF0aW9uPC9oMT4NCiAgICA8L2Rpdj4NCiAgICA8cCBpZD0iZXJyIiBjbGFzcz0iZXJyb3JNc2cgY2VudGVyIj48L3A+DQogICAgPGRpdiBpZD0iY29udGVudCI+DQoNCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJib3gtZm9vdGVyIj4NCiAgICAgIDxpbnB1dCBpZD0ibmV4dCIgY2xhc3M9IiIgdHlwZT0iYnV0dG9uIiBuYW1lPSJuZXh0IiB2YWx1ZT0iTmV4dCIgb25jbGljaz0iamF2YXNjcmlwdDogc2F2ZVdpemFyZCgpOyI+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjAvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEzODQtQTNySkQ4NTZLb3dTYjdkd2xaZFlFa08zOUdhZ2k3dklzRjBqclJBb1FtREtLdFFCSFV1TFo5QXNTdjRqRDRYYSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jbGlwYm9hcmQuanMvMi4wLjEwL2NsaXBib2FyZC5taW4uanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29uZmlndXJhdGlvbl90cy5qcyI+PC9zY3JpcHQ+DQogIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9uZXR3b3JrX3RzLmpzIj48L3NjcmlwdD4NCiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL21lbnVfdHMuanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvc2V0dGluZ3NfdHMuanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvYmFzZV90cy5qcyI+PC9zY3JpcHQ+DQo8L2JvZHk+DQoNCjwvaHRtbD4=" + webUI["web/public/create-first-user.html"] = "PCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCg0KPGhlYWQ+DQogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+DQogIDx0aXRsZT5UaHJlYWRmaW48L3RpdGxlPg0KICA8bGluaw0KICAgIHJlbD0ic3R5bGVzaGVldCINCiAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNS4xNC4wL2Nzcy9hbGwubWluLmNzcyINCiAgLz4NCiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4yLjAvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgaW50ZWdyaXR5PSJzaGEzODQtZ0gyeUlKcUtkTkhQRXEwbjRNcWEvSEdLSWhTa0lIZUw1QXloa1lWOGk1OVU1QVI2Y3NCdkFwSEhObC92STFCeCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+DQogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3NjcmVlbi5jc3MiIHR5cGU9InRleHQvY3NzIj4NCiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvYmFzZS5jc3MiIHR5cGU9InRleHQvY3NzIj4NCjwvaGVhZD4NCg0KPGJvZHk+DQoNCiAgPGRpdiBpZD0iaGVhZGVyIiBjbGFzcz0iaW1nQ2VudGVyIj48L2Rpdj4NCg0KICA8ZGl2IGlkPSJib3giPg0KDQogICAgPGRpdiBpZD0iaGVhZGxpbmUiPg0KICAgICAgPGgxIGlkPSJoZWFkLXRleHQiIGNsYXNzPSJjZW50ZXIiPnt7LmFjY291bnQuaGVhZGxpbmV9fTwvaDE+DQogICAgPC9kaXY+DQoNCiAgICA8cCBpZD0iZXJyIiBjbGFzcz0iZXJyb3JNc2cgY2VudGVyIj48L3A+DQoNCiAgICA8ZGl2IGlkPSJjb250ZW50Ij4NCg0KICAgICAgPGZvcm0gaWQ9ImF1dGhlbnRpY2F0aW9uIiBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCg0KICAgICAgICA8aDU+e3suYWNjb3VudC51c2VybmFtZS50aXRsZX19OjwvaDU+DQogICAgICAgIDxpbnB1dCBpZD0idXNlcm5hbWUiIHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiIHZhbHVlPSIiPg0KICAgICAgICA8aDU+e3suYWNjb3VudC5wYXNzd29yZC50aXRsZX19OjwvaDU+DQogICAgICAgIDxpbnB1dCBpZD0icGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIiB2YWx1ZT0iIj4NCiAgICAgICAgPGg1Pnt7LmFjY291bnQuY29uZmlybS50aXRsZX19OjwvaDU+DQogICAgICAgIDxpbnB1dCBpZD0iY29uZmlybSIgdHlwZT0icGFzc3dvcmQiIG5hbWU9ImNvbmZpcm0iIHBsYWNlaG9sZGVyPSJDb25maXJtIiB2YWx1ZT0iIj4NCg0KICAgICAgPC9mb3JtPg0KDQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGlkPSJib3gtZm9vdGVyIj4NCiAgICAgIDxpbnB1dCBpZD0ic3VibWl0IiBjbGFzcz0iIiB0eXBlPSJidXR0b24iIHZhbHVlPSJ7ey5idXR0b24uY3JhZXRlQWNjb3VudH19IiBvbmNsaWNrPSJqYXZhc2NyaXB0OiBsb2dpbigpOyI+DQogICAgPC9kaXY+DQoNCg0KICA8L2Rpdj4NCiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMi4wL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiIGludGVncml0eT0ic2hhMzg0LUEzckpEODU2S293U2I3ZHdsWmRZRWtPMzlHYWdpN3ZJc0YwanJSQW9RbURLS3RRQkhVdUxaOUFzU3Y0akQ0WGEiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY2xpcGJvYXJkLmpzLzIuMC4xMC9jbGlwYm9hcmQubWluLmpzIj48L3NjcmlwdD4NCiAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL25ldHdvcmsuanMiPjwvc2NyaXB0Pg0KICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvYXV0aGVudGljYXRpb24uanMiPjwvc2NyaXB0Pg0KPC9ib2R5Pg0KDQo8L2h0bWw+" + webUI["web/public/img/settings.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wOC0xMFQxODowODo4OTwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Ckxt87EAAAS7SURBVGgFzZpdiFVVGIbn5N+IMgVhaRLqWI7mQIJoIVRgOhQZNDAhWcbcVuPV3BRE6I14440iQQSaN0p6kz8zI0k5inUhZSSaYOVYODMo5eiMOOPf+LzH2cPMPmvttdbe53jOBy9rr2+938/ae51vr733qaoqgQwPD68B/wDJfXAP3AE94JMShCy+SxJ9CvSDJFlU7MiPFdsh/hrBdIffBsd48HApJjLPI4tnPThBlFJMZI5HBuWZCIt9AmgEzeAJR6JzHeMadnKI8wbYCz4Fkz18JlNwMgf8BCL5j4O3bVaMdUfEhPZqgv1U7HbEbDvoT7HZOPUYNwAlHheV09a4A3RTgMqtj9QY7JdgeM5i3I4+fDIYrQeq/UnyNYOTlBDtS+BwEjk2doz+KyO2OY5bwVCME+/qylTHT4C1D3k+uB33Yul3ov/eMuajlu1RH+II5wtT4hNNSnQ6U/kzbRkfq351bCfF8apAm7kmvq38njWRK0S305SHcSK5XO4U5O9MBmXWbSe3E6YccialdKzH2TTnQEF10XgZ5DdivsxEhkyxjVdERAwu03xmMiqD7hYx19km4cyHq6KyeHKkWpSz+ciVrHVpRYZk/wLHp0H2bULkNKzt4Eq86TKxLq3IECf6nXwV9QPbAfjHQSfoD7SN6L63gYhvbrkiTwKf/dPYpbdPVxKMnigdg0VAG8FQye8AzBl6aIk2A+wPiNoHd63LNZx3wbUAvz/CfTzJb/43AmkGpLfAi0DPE/NALQgtve+xFPdi5xRiNkHa5ySOJ/TR7RrBJdqL4AAxL+p+8ToYAFklNCnF3pM1KPba2L6v8vons5oPsko9ZyZoa0PsOoKezxoY+y5N5DYHWSvDTXzUMJH7IUkRW0tbyyV0CcfDDKmqDMe1KfqnQyehGNgo9q8p4hWYFGsiBY4fsSK/BRkkaPgj5PhMy720BnVFesfnlKo3Das0bw8XYJf196GEuzWRLSDoRypLg2w06FyqTS6Cx7iK1eeqGqrnugmuBgvB8+A5UAuqQYiU+oZ4h2T+BV3gAlDp/pai0U1rFpVGMAv8AHzFd4vShMOQLcoB+DNB/sSbM3ZoMV4BQsW0adSJSbNp1Hu1mY40/YZxpPdJaUSfFzrBMXAjjQNsdvll6cHCWVvKJIphdhcny11pqmolCk5aIDif0BKdZBucgPlO8kh/r8O4HtwClSCbk86HtQqQuUrvKVCf5OARjt0lll4H/WKKmbS0tmJQKZNQ7nq9+w0n2LhTN04E8jKMPpZ1hcli8tGTZYEYJwJrZQGzchTGz3a2ifwdkHc73LYAfpx6DcWXQK1LeiDsdpFGx7UOwUGQJKpmGyIjjvWh50iSQWzsZ/ofgvx+jnYp+B/YpJcB7QXDBKPJ4JDF6+/oCwoBuhoL36R+Jp4RJH16u2IgaxJpHhMehsBY3wTjV2YbOuuumLHrwCW6msbSj74O/DHGgV4Ohl8Jw1nSMmsB+tL6Wnw83odzBrhEr2GtgvFE8A74ADxtJZZygMC25cjQqBwqdg62qpUlziUP45Cq6OGuqqoUE/FJ8i+v7MpJYvEsHl1A5gNty2vLmaN3bBLdAvqB3svqXxLRvyEuc9zs7SiA+ACpw05pJx8SoAAAAABJRU5ErkJggg==" + webUI["web/public/img/threadfin.ico"] = "AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAMMOAADDDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF03/ABdN/yMXTf/LF03/xxdN/xwXTf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXTf8AF03/gBdN//8XTf/zF03/YRdN/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdN/wAXTf+FF03//xdN//MXTf9iF03/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF03/ABdN/4UXTf//F03/8xdN/2IXTf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXTf8AF03/hRdN//8XTf/zF03/YhdN/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdN/wAXTf+FF03//xdN//MXTf9iF03/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF03/ABdN/4UXTf//F03/8xdN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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW1tbAFtbW4VbW1v/W1tb81tbW2JbW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbW1sAW1tbhVtbW/9bW1vzW1tbYltbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtbWwBbW1uFW1tb/1tbW/NbW1tiW1tbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW1tbAFtbW4VbW1v/W1tb81tbW2JbW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbW1sAW1tbhVtbW/9bW1vzW1tbYltbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtbWwBbW1uFW1tb/1tbW/NbW1tiW1tbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW1tbAFtbW4VbW1v/W1tb81tbW2JbW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbW1sAW1tbDFtbWxNbW1sTW1tbE1tbWxNbW1sTW1tbE1tbWxNbW1sNW1tbjltbW/9bW1v0W1tbbltbWw5bW1sTW1tbE1tbWxNbW1sTW1tbE1tbWxNbW1sTW1tbDFtbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbW1sAW1tbD1tbW0dbW1ubW1tbx1tbW8RbW1vEW1tbxFtbW8RbW1vEW1tbxFtbW8JbW1vjW1tb/1tbW/xbW1vbW1tbw1tbW8RbW1vEW1tbxFtbW8RbW1vEW1tbxFtbW8dbW1ubW1tbRFtbWw5bW1sAAAAAAAAAAAAAAAAAAAAAAFtbWwBbW1sxW1tb7VtbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1vkW1tbLVtbWwAAAAAAAAAAAAAAAAAAAAAAW1tbAFtbWw1bW1s/W1tboFtbW9FbW1vOW1tbzltbW85bW1vOW1tbzltbW85bW1vOW1tbzltbW85bW1vOW1tbzltbW85bW1vOW1tbzltbW85bW1vOW1tbzltbW85bW1vRW1tboFtbWz1bW1sMW1tbAAAAAAAAAAAA//w////8P////D////w////8P////D////w////8P////D////w////8P////D////w////8P////D////w////8P////D////w////8P////D////w////8P////D////w////8P////D////w///gAAB/gAAAH4AAAB+AAAAc=" + webUI["web/public/img/filter.png"] = "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAsSwAALEsBpT2WqQAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4ODwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+Mjg4PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wNy0yOFQxOTowNzo2OTwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjM8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cs038OQAAAOISURBVGgF5ZpLSBVRGMfvvfmqCKKiKCqKtE3SQ8haJJm1ctPCZYHrFhXtohcUBLVsU1BRBJKLXpsSKs1aCL1oUUhvMgIloodZKmLZ72+OzNVx7jzOXGfqg/89Z875zv/7f35n7px7vanUP2JptzyGhoYKmK8GW0EZmA/mgW7wHrwDN0BTOp0epPVtxBBnLdgIVoE5YBboBR2gDTTA/5DWn0FeDPaBz8CLdeF0EBR5jYRvKbgABoAXa8Opwit/CudK8NoLs4PPM8ZyBsNnB/jpsD7X0C8cjgDXnaQkqkEPCGMSuGWivxxzx8OQj6xtpHWuPhPloHfEMWzTD0HN2GQY2xuW2Lb+/Fh+VaIQPLE5meh+gmSxFYz+BjBogtjGscfiH26Z2GmbNNltVQAIpwDdP6ZNO2iRYqTpZGhfgWUaiMC2w1kCzkbALcqLvDVvUyK6MW9HFES0b8BvsFwXEZi4F+iBtykCcjtlqf0igr52VJ1eqiIgzzdlrRIZfWfJd3SD8ZbqHvkB4XSDpJNB9V0VcX/cT4Ys/zEzSuSj/3WxW9GpRD7ETpZ/QcOJ6LyfdHugitxNehbob9G7lo4PXWBmQhPqQ/fsDOeUfjqNCU1Csi+TQ5+2luzc3yaRr6elevQZwhZr4bomYam0U41yabYqov5hvSTMjlp6RyuiAarSTLPZmox5246+lVREx/isiuh6NxhUJwF2yEpCWu1bK8WEsjyRgCSa0XrVrjNra2mC7TWD5ilYAuJoA4jSlnppF5dVEU3g0ENTD4b3nsZiZsfGJuGqj8qY+CINGqP2GLZCJ+HjtpblxAJ9k3cPrLfGJrnVUaSCarxw0jFua1lOLNBerANx+byya6IkLM2uLZWpAl6/Mcc1EjvjKtLrJNLqI5HnjfQ+bsVeteb0g2y/t7hGvd7CNjenOL8OkJ40KtOdTF+Cl/nV6Mkf4gxocI9vZPYLLKs9iQrqRIACcM2IXGeSboYrg+rztY5ARaDJWUeo0W+sXudLTFhnApaAW6FkZy/+yuXasLoCrSfwVHAnW0+gK93YawKJMLUIAdNAKwhqnSxcYUpPKB6EBE2mg7VR///EX24jybTQerXnOC70FyVP3gjTPXPTQyaP8NFPNeJrCNTPP667JKOq6VNo/A2hes5ccUjmEmPmDoD5+FMgWCcA+3FG57QJP//kQ1PgGBIOToEDgUn+t4V/AJeGknwARIKLAAAAAElFTkSuQmCC" + webUI["web/public/img/logo_w_600x200.png"] = "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" +>>>>>>> development } diff --git a/src/webserver.go b/src/webserver.go index 0ee0c0e..72a693a 100644 --- a/src/webserver.go +++ b/src/webserver.go @@ -7,9 +7,11 @@ import ( "fmt" "io" "log" + "mime" "net/http" "net/url" "os" + "path/filepath" "regexp" "strconv" "strings" @@ -25,6 +27,7 @@ var streamManager = NewStreamManager() // StartWebserver : Startet den Webserver func StartWebserver() (webServer *WebServer, err error) { + addMimeExtensions() webServer = &WebServer{SM: streamManager} var port = Settings.Port @@ -120,6 +123,15 @@ func StartWebserver() (webServer *WebServer, err error) { return } +func addMimeExtensions() { + mime.AddExtensionType(".m3u8", "application/vnc.apple.mpegurl") + mime.AddExtensionType(".m3u8", "application/x-mpegURL") + mime.AddExtensionType(".m3u", "application/m3u") + mime.AddExtensionType(".m3u", "audio/m3u") + mime.AddExtensionType(".m3u", "audio/x-m3u") + mime.AddExtensionType(".m3u", "audio/x-mp3-playlist") +} + // Index : Web Server / func Index(w http.ResponseWriter, r *http.Request) { @@ -840,21 +852,22 @@ func Web(w http.ResponseWriter, r *http.Request) { var lang = make(map[string]interface{}) var err error - var requestFile = strings.Replace(r.URL.Path, "/web", "html", -1) + var requestFile = strings.Replace(r.URL.Path, "/web", "web/public", 1) + var webBasePath = "web/public/" var content, contentType, file string var language LanguageUI if System.Dev { - lang, err = loadJSONFileToMap(fmt.Sprintf("html/lang/%s.json", Settings.Language)) + lang, err = loadJSONFileToMap(fmt.Sprintf("%slang/%s.json", webBasePath, Settings.Language)) if err != nil { ShowError(err, 000) } } else { - var languageFile = "html/lang/en.json" + var languageFile = fmt.Sprintf("%slang/en.json", webBasePath) if value, ok := webUI[languageFile].(string); ok { content = string(GetHTMLString(value)) @@ -869,7 +882,9 @@ func Web(w http.ResponseWriter, r *http.Request) { return } - if getFilenameFromPath(requestFile) == "html" { + basePath := getFilenameFromPath(requestFile) + + if basePath == "public" { switch System.ConfigurationWizard { @@ -1370,35 +1385,34 @@ func httpStatusError(w http.ResponseWriter, httpStatusCode int) { http.Error(w, fmt.Sprintf("%s [%d]", http.StatusText(httpStatusCode), httpStatusCode), httpStatusCode) } -func getContentType(filename string) (contentType string) { - - if strings.HasSuffix(filename, ".html") { - contentType = "text/html" - } else if strings.HasSuffix(filename, ".css") { - contentType = "text/css" - } else if strings.HasSuffix(filename, ".js") { - contentType = "application/javascript" - } else if strings.HasSuffix(filename, ".png") { - contentType = "image/png" - } else if strings.HasSuffix(filename, ".jpg") { - contentType = "image/jpeg" - } else if strings.HasSuffix(filename, ".gif") { - contentType = "image/gif" - } else if strings.HasSuffix(filename, ".svg") { - contentType = "image/svg+xml" - } else if strings.HasSuffix(filename, ".mp4") { - contentType = "video/mp4" - } else if strings.HasSuffix(filename, ".webm") { - contentType = "video/webm" - } else if strings.HasSuffix(filename, ".ogg") { - contentType = "video/ogg" - } else if strings.HasSuffix(filename, ".mp3") { - contentType = "audio/mp3" - } else if strings.HasSuffix(filename, ".wav") { - contentType = "audio/wav" - } else { - contentType = "text/plain" +func getContentType(filename string) string { + ext := strings.ToLower(filepath.Ext(filename)) + switch ext { + case ".html": + return "text/html" + case ".css": + return "text/css" + case ".js": + return "application/javascript" + case ".png": + return "image/png" + case ".jpg", ".jpeg": + return "image/jpeg" + case ".gif": + return "image/gif" + case ".svg": + return "image/svg+xml" + case ".mp4": + return "video/mp4" + case ".webm": + return "video/webm" + case ".ogg": + return "video/ogg" + case ".mp3": + return "audio/mp3" + case ".wav": + return "audio/wav" + default: + return "text/plain" } - - return } diff --git a/html/configuration.html b/web/public/configuration.html similarity index 100% rename from html/configuration.html rename to web/public/configuration.html diff --git a/html/create-first-user.html b/web/public/create-first-user.html similarity index 100% rename from html/create-first-user.html rename to web/public/create-first-user.html diff --git a/html/css/base.css b/web/public/css/base.css similarity index 95% rename from html/css/base.css rename to web/public/css/base.css index aff5b32..d8594ee 100644 --- a/html/css/base.css +++ b/web/public/css/base.css @@ -450,7 +450,7 @@ table { } -.footer-banner { +.notification { background-color: #333; color: #fff; text-align: center; @@ -461,17 +461,23 @@ table { z-index: 1000; display: none; /* Initially hidden */ width: 300px; /* Adjust width as needed */ - height: 130px; /* Adjust height as needed */ + max-height: calc(80vh - 10px); /* Adjust height as needed */ border-radius: 10px; /* Optional: rounded corners */ box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); /* Optional: add shadow for better visibility */ } -.footer-banner .header { +.notification .header { display: flex; justify-content: space-between; align-items: center; } +.notification .content { + flex-grow: 1; /* Allow content to grow and take available space */ + overflow-y: auto; /* Enable vertical scrolling if content overflows */ + margin-bottom: 10px; /* Ensure there's a gap to the bottom */ +} + @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); diff --git a/html/css/screen.css b/web/public/css/screen.css similarity index 100% rename from html/css/screen.css rename to web/public/css/screen.css diff --git a/html/img/BC-QR.png b/web/public/img/BC-QR.png similarity index 100% rename from html/img/BC-QR.png rename to web/public/img/BC-QR.png diff --git a/html/img/filter.png b/web/public/img/filter.png similarity index 100% rename from html/img/filter.png rename to web/public/img/filter.png diff --git a/html/img/log.png b/web/public/img/log.png similarity index 100% rename from html/img/log.png rename to web/public/img/log.png diff --git a/html/img/logo_b_880x200.png b/web/public/img/logo_b_880x200.png similarity index 100% rename from html/img/logo_b_880x200.png rename to web/public/img/logo_b_880x200.png diff --git a/html/img/logo_w_600x200.png b/web/public/img/logo_w_600x200.png similarity index 100% rename from html/img/logo_w_600x200.png rename to web/public/img/logo_w_600x200.png diff --git a/html/img/logout.png b/web/public/img/logout.png similarity index 100% rename from html/img/logout.png rename to web/public/img/logout.png diff --git a/html/img/m3u.png b/web/public/img/m3u.png similarity index 100% rename from html/img/m3u.png rename to web/public/img/m3u.png diff --git a/html/img/mapping.png b/web/public/img/mapping.png similarity index 100% rename from html/img/mapping.png rename to web/public/img/mapping.png diff --git a/html/img/settings.png b/web/public/img/settings.png similarity index 100% rename from html/img/settings.png rename to web/public/img/settings.png diff --git a/html/img/threadfin.ico b/web/public/img/threadfin.ico similarity index 100% rename from html/img/threadfin.ico rename to web/public/img/threadfin.ico diff --git a/html/img/threadfin.png b/web/public/img/threadfin.png similarity index 100% rename from html/img/threadfin.png rename to web/public/img/threadfin.png diff --git a/html/img/users.png b/web/public/img/users.png similarity index 100% rename from html/img/users.png rename to web/public/img/users.png diff --git a/html/img/xmltv.png b/web/public/img/xmltv.png similarity index 100% rename from html/img/xmltv.png rename to web/public/img/xmltv.png diff --git a/html/index.html b/web/public/index.html similarity index 91% rename from html/index.html rename to web/public/index.html index 766b30d..0d57e83 100644 --- a/html/index.html +++ b/web/public/index.html @@ -85,7 +85,7 @@
Change Threadfin Version
- +
@@ -128,14 +128,16 @@ -