// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated by go-bindata.
// sources:
// assets/alltrace.html
// assets/blessings.html
// assets/chrome.html
// assets/collection.html
// assets/glob.html
// assets/logs.html
// assets/no_syncbase.html
// assets/profiles.html
// assets/resolve.html
// assets/stats.html
// assets/syncbase.html
// assets/vtrace.html
// DO NOT EDIT!

package browseserver

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func bindataRead(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(data))
	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}

	var buf bytes.Buffer
	_, err = io.Copy(&buf, gz)
	clErr := gz.Close()

	if err != nil {
		return nil, fmt.Errorf("Read %q: %v", name, err)
	}
	if clErr != nil {
		return nil, err
	}

	return buf.Bytes(), nil
}

type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

func (fi bindataFileInfo) Name() string {
	return fi.name
}
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _alltraceHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x54\x4f\x6f\xdb\x3e\x0c\xbd\xe7\x53\x10\x46\xf1\x73\xda\xfe\x62\xb7\x05\xb6\x43\x62\x7b\x68\xbb\x0e\x28\x50\xf4\xd2\x6e\x97\x61\x07\xc5\xa2\x63\xad\x8a\x14\x48\x72\xb6\xc0\xf3\x77\x1f\x25\x3b\x7f\x77\xd9\x7c\x68\x29\x9a\x7c\x7a\x7c\x8f\x4e\xdb\xa6\x17\x23\xa0\xe7\x5e\xaf\x36\x46\x2c\x6a\x07\x37\x57\xd7\xef\xe1\xb5\x46\xf8\xc2\x14\xe3\xa2\x59\xc2\x6d\xe3\x6a\x6d\x6c\x02\xb7\x52\x42\x28\xb2\x60\xd0\xa2\x59\x23\x4f\x42\xf7\x67\x8b\xa0\x2b\x70\xb5\xb0\x60\x75\x63\x4a\x84\x52\x73\x04\x3a\x2e\xf4\x1a\x8d\x42\x0e\xf3\x0d\x30\xb8\x7b\xf9\x38\xb1\x6e\x23\x31\xb4\x49\x51\xa2\xa2\x56\x57\x33\x07\x25\x53\x30\x47\xa8\x74\xa3\x38\x08\x45\x49\x84\xa7\xc7\xfb\x87\xe7\x97\x07\xa8\x84\xc4\x64\x74\x91\x76\xdd\x68\xd4\xb6\x1c\x2b\xa1\x10\xa2\x52\x2b\x87\xca\x45\x94\xcd\x6c\x69\xc4\xca\x81\x64\x6a\xd1\xb0\x05\xe6\xf1\x77\xb6\x66\x7d\x32\x2e\xc2\x65\x55\xa3\x4a\x27\xb4\x02\x5b\xeb\x1f\x8f\xdc\x7e\xd2\xe6\x89\xcd\x51\x8e\xa5\xff\x7b\x0e\x6d\xa8\xf2\xcf\x9a\x19\x50\x44\xdf\x42\x0e\x5c\x97\xcd\x92\x2e\x49\x16\xe8\x1e\x24\xfa\xd0\xde\x6d\xee\x25\xb3\xf6\x99\x2d\x71\x1c\x87\xee\x89\xa7\xc2\x88\x94\x89\xcf\x67\x3b\x9c\x4a\x1b\x18\x7b\x30\x41\x40\x57\x33\xfa\x97\xf5\xb8\x89\x44\xb5\x70\x35\x65\x2e\x2f\x0f\x2f\x3e\xbc\x9c\x5a\x42\xed\x57\xf1\x6d\x76\x54\x20\x2a\x18\xfb\x37\x09\x67\x8e\x59\x74\x49\x60\x00\x79\x9e\xc3\x1f\x93\x6c\x9f\x50\x1f\x74\x4f\xb8\xb0\x2b\xc9\x36\x04\x1f\xcf\xa5\x2e\xdf\xe2\x63\xf4\x0e\x50\x92\x23\x7f\x0b\xa1\xb4\xc2\x53\x84\xd1\x71\x44\xe6\xa4\xbd\x11\x05\xd9\x84\xbd\x07\xa5\x17\x30\x8f\x86\xe3\x84\xd6\xc0\xa1\x81\x25\x97\x93\x85\x11\x3c\xea\x1d\x6b\xdb\xb3\x79\x53\xbe\x21\xad\xdb\x34\x87\xe4\xae\x8f\xbb\x1e\x36\x5b\x15\x6d\x6b\xc8\x6e\x84\xb3\x5e\x01\x5f\xf3\xa2\x8d\x43\x1e\x7c\xa5\x42\x8f\x20\x78\xe8\x16\x8a\xe3\x4f\xd8\xe1\xf5\x2d\xa1\x82\xf4\x24\x3b\x20\x14\xfe\x02\xe9\xe0\xaa\xeb\x32\x06\xb5\xc1\x2a\x8f\xf6\x5b\x34\x3d\x5d\x9b\x98\xc0\x07\x94\xf8\x3c\x2a\xf6\xa7\x2c\x65\x74\xf2\x32\x76\xdd\x3e\x4b\x19\xc5\xbb\xbd\x38\x87\xe7\x2c\x5d\x15\x5e\xa5\x5e\x8d\x7f\x95\x29\xab\xdf\x15\xaf\x86\x95\x68\xb3\x94\x42\x3f\xb4\xa2\xd5\xec\xf5\xf0\x1f\xa9\xf1\x9b\x1a\x66\xdd\xea\xf5\x3f\x6c\x75\x39\x55\x95\x8b\x35\xf8\xc5\x9a\x04\xda\x79\xe4\x07\xe8\xba\x08\x82\xf3\x79\x34\x58\x3f\xf5\xbe\xcf\x56\xda\x0a\xcf\x6b\x6a\x50\x32\x27\xd6\x18\x6d\x09\x7b\x86\x25\xd2\xaf\xc5\x36\x98\x4c\xae\x6f\xe8\x23\x91\x70\xf2\xb9\x0c\x23\x0c\x6e\xcb\x03\x7d\xb2\x46\x16\x47\x7b\xb5\x63\x2f\xb8\x27\xee\x07\x38\x28\x0f\x2d\x52\x14\x3b\xe7\xd2\xb5\xf3\x9a\x7c\x50\xf9\xa0\x47\xd7\xfd\xe7\xf2\xb0\x10\xc9\x23\x09\x1f\x1c\x1b\x62\xef\x58\x96\x52\xf7\xc9\x85\xc7\x8e\x65\xe9\x96\x52\x96\x92\x4c\xc5\xf6\xfd\x81\x71\x43\xea\x77\x00\x00\x00\xff\xff\xbf\xe1\x74\x56\x56\x05\x00\x00")

func alltraceHtmlBytes() ([]byte, error) {
	return bindataRead(
		_alltraceHtml,
		"alltrace.html",
	)
}

func alltraceHtml() (*asset, error) {
	bytes, err := alltraceHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "alltrace.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _blessingsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\x4f\x6f\xeb\x36\x0c\xbf\xe7\x53\x10\xd9\x0e\x5d\x31\xdb\x6b\x81\xf5\x50\xb8\x06\xda\x34\x87\x62\xc3\x36\xa4\xdd\xbb\x16\x8a\xc5\xc4\x7a\x50\xa4\x42\x92\xd3\xe6\x19\xfe\xee\x8f\xb2\x1c\xe7\xcf\x4b\x52\x24\x2f\xb9\x44\x12\xc9\x1f\x49\xfd\x48\xca\x55\x95\x5c\xf6\x80\x7e\x03\xfd\xb6\x30\x62\x5a\x38\xb8\xfe\xe3\xea\x06\x5e\x0a\x84\x2f\x4c\x31\x2e\xca\x19\xdc\x97\xae\xd0\xc6\xc6\x70\x2f\x25\x34\x4a\x16\x0c\x5a\x34\x73\xe4\x71\x63\xfd\xbf\x45\xd0\x13\x70\x85\xb0\x60\x75\x69\x72\x84\x5c\x73\x04\xda\x4e\xf5\x1c\x8d\x42\x0e\xe3\x05\x30\x78\x78\x7e\x8c\xac\x5b\x48\x6c\xcc\xa4\xc8\x51\x91\xa9\x2b\x98\x83\x9c\x29\x18\x23\x4c\x74\xa9\x38\x08\x45\x87\x08\x7f\x3f\x0d\x86\xff\x3c\x0f\x61\x22\x24\xc6\xbd\xcb\xa4\xae\x7b\xbd\xaa\xe2\x38\x11\x0a\xa1\x9f\x6b\xe5\x50\xb9\x3e\x9d\xa6\x16\x73\x27\xb4\x82\x5c\x32\x6b\xef\xfa\xed\x36\x8a\xc8\x81\x43\x03\x33\x2e\xa3\xa9\x11\xbc\x9f\x35\x8e\xd3\xe2\xcf\x6c\x20\x99\x98\x21\x4f\x13\x5a\x87\x43\x2e\xe6\x4b\x7b\xaf\x9f\x23\xa5\xbb\x5c\x44\xd1\xd5\x75\x94\x6b\xd9\x02\xf8\x5f\x55\xc5\x0f\x12\xad\x15\x6a\x6a\x29\x84\x06\x22\x21\x8c\xac\x97\x26\xad\xff\xcc\x87\xfb\x2e\x5c\x01\xf1\x08\x73\x3d\x55\xe2\x1b\xf2\xd3\xc2\x5d\xd9\x9f\x1e\x71\x5a\xca\xd5\x26\xa4\x60\x98\x9a\x22\xc4\x6d\xfc\x9d\xa2\x14\x19\xa5\x57\xd7\x69\x42\xab\x2d\x13\x54\x7c\x4d\x3d\x4d\x96\xa0\x3f\x26\xbf\xd4\x3d\x25\xdf\xff\xca\x31\x95\xc7\x5f\xb8\x38\x32\x5d\xaa\x95\x0f\xe4\xd1\xbb\xe0\xae\xd8\x43\x56\xdc\x61\x7f\x4e\xdb\x00\x8d\x13\x13\x91\x33\x87\x83\x82\x09\x65\x4f\x2c\xb6\x15\x0c\x04\x1c\xb8\x78\xd1\x8e\xc9\x5b\x8a\x4c\xa2\xf2\x0c\xfc\xf6\x33\xa5\x18\x78\xfc\x35\xf7\xd8\x82\x7f\xfc\xde\x2e\xe1\xf6\x6e\x83\xdc\x23\x43\xef\xcc\x8a\x9b\xac\x09\x1b\x7e\xa9\xaa\xce\x89\x2f\x0f\x12\x6c\x6a\x1e\x19\x79\x67\xe7\xd8\x58\xe2\xba\x25\x67\x8e\x45\xe1\xd4\x6f\xbf\xda\xed\x93\xd5\x36\x8a\x2c\x4a\xca\xa4\x13\xd9\x82\x71\xfd\x1e\x45\xd7\xfc\x6d\x87\xaf\xe0\xaf\x40\xc6\x77\xcb\x82\xdc\xec\x17\x06\x05\xbe\x3b\xda\xd7\xd7\x90\xaa\xa2\x6b\x55\xe5\x0c\x8d\xc8\xfb\xeb\xfc\xa7\x89\x3b\xe0\xf7\x78\xe8\xe1\x07\x0d\x41\x4b\x24\x9e\x1b\xb8\xe9\x17\x1a\xdc\xa1\x5b\xa0\x69\xc5\xf3\x7a\x18\xb0\x39\x32\x67\x0f\xc3\x92\x74\x0f\x15\x24\xd9\x4f\x62\xea\xc6\x9a\x2f\xf6\xc3\xae\x5a\xc6\x53\x13\x3a\x86\x56\xbe\x61\x42\x81\x6f\x8d\xc4\x4d\xec\xcf\x8b\x23\xf3\x8d\x12\xa0\x7d\x9f\x9c\xf7\xe2\x5a\xec\xb8\xe3\xfe\xdc\x2e\x36\xa7\x68\x55\x95\x6a\xc6\x0c\x75\x95\xec\x46\x67\xb8\xae\xf5\x51\x7a\xfe\x24\xfd\x60\x0c\x6e\xda\x4a\xa9\xeb\x35\xde\xd8\xbc\xa5\x8d\xcd\x03\x6b\x1b\x8a\x07\x03\x69\x82\x19\x9b\x24\x6b\xc6\x59\x03\x54\xd7\x7e\x14\xfb\x4d\xe3\x64\xf3\x91\xdb\x69\x7f\x62\xd5\xfa\xdf\x21\x7c\xb2\xdc\x5d\xb9\x24\xf0\x77\xb5\x35\x6f\xc3\xd3\xb5\xda\x76\x4f\xd8\x2e\x5f\xfb\x9f\xe8\xe5\x7b\x37\x34\x46\x9b\xd3\xde\xb8\x54\x74\xe4\xd2\x98\x33\x82\xc9\x48\xd0\x27\x9a\xed\x67\x42\x4d\x74\x9a\x88\x6c\x38\x1a\xfd\x3b\xba\xa8\x2a\xfa\x22\x24\x2f\x4f\x8f\xa7\xbc\x7a\xdb\x95\xd9\x7c\xa4\xec\xcf\xaa\xf9\xff\x1e\x00\x00\xff\xff\x37\x19\x1f\xac\xe6\x0a\x00\x00")

func blessingsHtmlBytes() ([]byte, error) {
	return bindataRead(
		_blessingsHtml,
		"blessings.html",
	)
}

func blessingsHtml() (*asset, error) {
	bytes, err := blessingsHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "blessings.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _chromeHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x57\x4f\x6f\xdb\xb8\x13\xbd\xfb\x53\x4c\xf4\xc3\xef\xd2\x2d\xa5\xa4\x45\x8b\x26\x2b\xbb\x48\x93\xec\x6e\x81\x34\x5b\x20\xd9\x2e\xf6\x64\xd0\xd2\x58\x62\x43\x91\x06\x49\x5b\x31\x0c\x7f\xf7\x1d\x4a\xb2\x6b\xcb\xf2\xa1\xd0\x5a\x17\x53\xfc\xf3\x66\xde\x70\xde\x68\xbc\x5a\x45\xaf\x06\x40\xcf\x8d\x9e\x2d\x8d\xc8\x72\x07\x6f\xce\x2f\xde\xc3\x53\x8e\xf0\x8d\x2b\x9e\x8a\x79\x01\xd7\x73\x97\x6b\x63\x43\xb8\x96\x12\xaa\x4d\x16\x0c\x5a\x34\x0b\x4c\xc3\xea\xf4\x5f\x16\x41\x4f\xc1\xe5\xc2\x82\xd5\x73\x93\x20\x24\x3a\x45\xa0\xd7\x4c\x2f\xd0\x28\x4c\x61\xb2\x04\x0e\x9f\x1e\x6f\x99\x75\x4b\x89\xd5\x31\x29\x12\x54\x74\xd4\xe5\xdc\x41\xc2\x15\x4c\x10\xa6\x7a\xae\x52\x10\x8a\x26\x11\xee\x3f\xdf\xdc\x3d\x3c\xde\xc1\x54\x48\x0c\x07\xaf\xa2\xf5\x7a\x30\x88\xcf\x6e\xff\xbc\x79\xfa\xe7\xeb\x1d\xe4\xae\x90\xa3\x41\xec\x7f\xe0\xa5\x90\xca\x0e\x83\xdc\xb9\xd9\x55\x14\x95\x65\x19\x96\x6f\x43\x6d\xb2\xe8\xe2\xf2\xf2\x32\x7a\xf1\x7b\x82\x11\x1d\xce\x91\xa7\xa3\xca\x78\xec\x84\x93\x38\xba\xc5\xc9\x3c\xcb\x84\xca\x60\xb5\x0a\x1f\x3d\x27\xf3\xc0\x0b\x5c\xaf\xe3\xa8\xde\x50\x6f\x2e\xd0\x71\x50\xb4\x30\x0c\x16\x02\xcb\x99\x36\x2e\x20\x8e\xca\xa1\x72\xc3\xa0\x14\xa9\xcb\x87\x29\x2e\x88\x10\xab\x5e\x5e\x13\x05\xe1\x04\x97\xcc\x26\x5c\xe2\xf0\x22\x3c\x0f\x1a\x28\x29\xd4\x33\xc5\x4f\x0e\x83\x2a\x12\x36\x47\x24\xac\xdc\xe0\xb4\xf6\xdf\x12\x01\xeb\xb4\xe1\x19\x86\x99\xd6\x99\x44\x3e\x13\x36\x4c\x74\x11\xf9\xa0\x86\x19\xba\x22\x95\xa1\xd0\x11\x81\x86\xef\xa3\x82\x3b\x34\x64\x29\x74\x48\xe6\x26\x72\x8e\x61\x21\x54\x98\x58\xbb\xb1\x68\x13\x23\x66\x0e\xac\x49\x7a\x5a\xf0\xb8\xdf\x09\x36\x8e\x6a\xc8\x9f\x60\x34\xa5\x58\xd9\xb6\x35\x41\x11\xfc\x38\xe5\x85\x90\xcb\xe1\x97\xc6\xc8\x2f\x9f\x69\xf2\x87\xeb\x1e\xb0\x1e\xfb\x27\x9c\x8a\x17\x4c\xeb\x10\xc3\x6a\x3b\xed\x1f\x6f\x80\xd5\x58\x57\x50\x68\xa5\xed\x8c\x27\xf8\xeb\x76\x0f\xa5\xce\x66\x38\xd1\xe9\x12\x7c\x26\xa0\x69\x81\x4c\x78\xf2\x9c\x19\x9f\x82\x2c\xd1\x52\x9b\x2b\xf8\xdf\xf9\xf9\x87\xb7\x1f\x7e\x83\x33\x51\xf8\x4b\xe7\xca\xed\x42\x56\x3e\x46\x8d\x93\x71\x54\x67\xd7\x20\xf6\x06\x1a\x02\x67\x8c\x91\x6e\x4a\xbe\x24\x65\xe4\xba\xb4\x24\x82\xda\xf2\x6b\xc0\x05\x2a\x9f\xe9\xb6\xe0\x52\x92\x2b\x14\x53\x24\x3d\x84\xc0\x58\x73\x38\x15\x0b\x48\x24\xb7\x94\xd9\x74\x21\x4c\xf2\xa5\x9e\x3b\xf0\xc3\xef\x76\xf7\xad\x1e\x32\x56\x47\xa7\xc6\x0f\x7e\x44\x2d\x6e\xb8\x1e\x40\x8d\xc7\x07\x7b\x8f\xdb\xdd\x6c\x66\x46\x97\xad\x03\x5b\xa6\x4f\x5e\x32\x5b\xff\xf7\x96\xe9\x3a\xd4\x21\x28\xab\x44\x16\xd4\x32\xa4\x48\xd2\xa6\x23\xd0\xd7\x69\x0a\xd5\x95\x52\xe4\x9c\x06\x2e\x45\xa6\x48\x91\x0b\x91\x71\x27\xb4\xf2\x73\xbe\x64\xd4\x45\xac\xd3\x83\x4e\x56\xac\xc6\xf4\x39\x4d\xeb\x47\x6c\x3f\x6c\xcd\x84\xf0\x37\x42\x2e\x7c\x6d\x73\xdb\xbb\x3b\xbc\xb9\x3d\x04\x72\x72\xd7\xee\x8e\xcf\xbb\x77\x27\xb9\xc9\x90\xd5\x48\x4c\x2b\xb9\xec\x88\x71\x05\xc7\xbb\xc1\xc6\x63\x2f\xc3\x8d\xec\x7c\xa9\xfa\xa8\x86\xad\x9a\x16\x8c\xfc\x6f\x1c\xf1\x3e\xd0\x13\x52\xb8\xa5\x82\x69\xbb\xf0\x3f\x6d\x16\x7b\x1a\xb1\x8e\xbb\x4e\x03\x8f\x7e\xa1\x27\xb8\xd4\xdd\xce\xdf\xeb\xde\x7e\x67\x52\x4f\xba\xa0\x7f\xa7\xf9\x9e\xd0\x33\xa3\xfd\x77\xb0\xd3\xf3\xaf\xcd\x5a\x4f\x13\x0b\x67\x48\x0c\x9d\x16\x9e\xaa\x95\xbe\xb7\xba\x54\xc9\x84\xdb\xce\xcc\x7c\x6c\xd6\x3a\x4d\xc4\x11\x41\xb6\x8a\xd4\xbe\x5e\xeb\xe2\x8b\x66\x67\xe6\x48\x15\x4b\x0d\x2f\x0f\x4b\xde\x51\x91\x76\x95\xba\xd3\x48\xf0\xe4\xf2\x3b\x99\xf4\x4e\x24\xbb\x13\x49\xee\xc4\x72\x3b\xa5\xd4\x4e\x28\xb3\x96\xc4\xda\xf2\x2a\xb8\xe8\xf8\x7c\x8f\xc7\x4d\x0f\xdc\x96\x93\xc5\xa4\xfa\xc2\x35\x27\x9a\x57\xc6\xa8\xe1\xa7\x36\xaf\xfa\xf0\x65\x46\xa4\x5d\xe2\xca\xdf\x6d\x4e\xed\x34\x7b\xc1\xe8\xa0\x3d\xcf\xdf\xb5\x09\x34\x56\xf6\xa7\x57\xab\x89\xd4\xc9\x33\x04\x1b\x4f\x21\x5c\xaf\xbf\x78\x36\x37\xf5\x04\xfc\x81\x06\x57\x2b\x54\xe9\x7a\xbd\x0f\x98\x9b\x68\x44\xe7\x4b\x41\xcd\x66\x78\xa3\x8b\x82\xab\xf4\x5e\x28\x6c\xef\xeb\x45\x76\xb4\x03\x7c\x48\xaa\xda\xd4\x2a\x64\x09\x52\xcb\xb1\x19\x30\x76\xf1\xc6\xf7\xaa\xd0\x0e\x96\x0f\xd1\x41\x47\x73\x34\x46\x15\xfb\x0d\xd7\x99\x11\xca\x4d\x21\xf8\xff\x82\x82\xf5\xad\x4a\xd4\xff\x96\x72\x95\xe1\x3d\xc8\x52\xb7\x36\x33\xb8\x61\xe9\x87\x3f\xcd\x75\x27\xd1\x7d\x6a\x37\x0d\x77\x8d\x12\x47\x75\x03\x4f\x1e\x56\x7f\x31\xff\x0d\x00\x00\xff\xff\x20\x24\x2d\x10\x26\x0f\x00\x00")

func chromeHtmlBytes() ([]byte, error) {
	return bindataRead(
		_chromeHtml,
		"chrome.html",
	)
}

func chromeHtml() (*asset, error) {
	bytes, err := chromeHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "chrome.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _collectionHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x55\xd1\x6f\xda\x3e\x10\x7e\xe7\xaf\x38\xa1\x9f\xf8\xb5\x95\x92\xac\x9d\xb6\x87\x2d\x64\x6a\x69\xa5\x55\x9b\x50\x35\xba\xbe\x4c\x7b\x70\xe2\x0b\xb1\x6a\x6c\x64\x1b\x56\x16\xf1\xbf\xef\x9c\x84\x32\xd2\x04\xed\x69\xd2\x22\x01\xbe\xef\xbe\xbb\xb3\xef\x3e\x9c\xb2\x8c\xce\x06\x40\xcf\x44\x2f\x37\x46\xcc\x0b\x07\x17\xaf\xce\xdf\xc2\x7d\x81\xf0\xc0\x14\xe3\x62\xb5\x80\xcb\x95\x2b\xb4\xb1\x21\x5c\x4a\x09\x15\xc9\x82\x41\x8b\x66\x8d\x3c\xac\xa2\xbf\x5a\x04\x9d\x83\x2b\x84\x05\xab\x57\x26\x43\xc8\x34\x47\x20\x73\xae\xd7\x68\x14\x72\x48\x37\xc0\xe0\x6a\x76\x1d\x58\xb7\x91\x58\x85\x49\x91\xa1\xa2\x50\x57\x30\x07\x19\x53\x90\x22\xe4\x7a\xa5\x38\x08\x45\x20\xc2\xe7\xdb\xc9\xcd\x74\x76\x03\xb9\x90\x18\x0e\xce\xa2\xed\x76\x30\x28\x4b\x8e\xb9\x50\x08\xc3\x4c\x2b\x87\xca\x0d\x3d\x1a\x5b\xcc\x9c\xd0\x0a\x32\xc9\xac\x1d\x0f\x1b\x33\x08\xa8\x82\x43\x03\x0b\x2e\x83\xb9\x11\x7c\x98\x54\x95\xe3\xe2\x4d\x32\xd1\x52\x36\x41\x65\x19\xde\x1b\xc4\xf0\x9a\x39\x96\x32\x8b\xe1\x2d\x0f\xa7\x6c\x81\xdb\x6d\xb4\x73\xed\xd9\x7b\x67\x1c\x51\x9a\x3a\x1f\x17\xeb\x5d\x69\x5f\x2a\x43\x6a\xd5\x6e\x11\x04\xe7\x17\x41\xa6\x65\x53\xbb\xe6\xcb\xbd\xe1\x4d\x97\x5c\x2e\x97\x70\x25\xd1\x5a\xa1\xe6\xef\x3c\x10\x73\x9e\x74\x6d\x6c\x47\xf2\xf5\x89\xd2\x4a\x33\x31\xc8\x9c\x36\xff\x5b\x3f\x14\xd3\x9f\xf1\xf0\x3c\xc7\x73\x4e\x57\x8b\x94\x72\xd1\x84\xbf\xe8\x1f\xf6\x45\x2a\x02\x27\x34\x35\xd7\x1d\x7c\xaf\x1d\x93\xf0\x09\x37\x30\x13\x3f\xf1\x45\x30\xb9\xc9\xe7\x5d\xdd\xe1\xe4\xb4\xfe\xf7\x00\x3e\x60\x11\x40\xcd\x91\x78\x88\x79\xd4\x24\xb1\x2b\x92\x38\xf2\x5f\xf4\xa1\x54\xcf\xeb\x07\x26\x57\x58\x5b\x11\xf1\xba\x43\x49\xc4\xd2\x2e\x99\x1a\x0f\x5f\x0f\xdb\x14\x20\xd1\x88\x1c\xea\x43\xf8\x4d\xde\xb1\x39\x86\x1f\x99\xbd\x33\xb8\x26\x45\xb6\xd9\x94\x94\x41\x61\x30\x1f\x93\x6e\x77\xad\xff\xa0\xc6\x65\xf9\x5f\x38\xf3\x7f\x25\x53\x6b\x6a\xc4\xd3\xf1\xf1\xa9\x8f\xb8\xea\x64\x34\xf1\xd9\x3e\xbe\x6f\xc6\xa3\x4c\xf5\x70\xea\x1c\x1d\x87\xf5\xcf\xb7\x94\x65\x8f\xdf\xbb\x4e\x16\xb1\xae\xf6\xa0\xe2\x1d\x8d\x18\xa9\xd4\x2e\xdf\xb7\x1b\xde\x37\x89\xb2\x34\x4c\xcd\xb1\xdd\x67\x5a\xd0\x04\x6d\x47\xfa\x7a\x74\x95\xbe\x6e\x15\xc7\x27\xaf\x2a\x32\x1b\x88\xe2\x7e\x03\x62\x7f\x49\x79\xb8\x52\x83\x77\x54\x40\xed\xef\xdc\x0c\x4a\x8b\xfd\x45\x0f\xf4\x72\xa2\x34\x3c\xd2\x7e\x4f\x8f\xa5\xeb\xe8\xd0\x9f\x6b\x4f\xa2\x6a\xf7\x65\x8a\x4f\xae\x3a\xe3\x3f\xad\xbf\x51\x2e\x8c\x75\xd4\xbc\x67\xd6\xcb\x03\xf6\x68\xf4\x44\x11\xe1\xf4\x6f\x6a\x94\x90\xf6\xed\x73\x78\x8f\x91\xd5\x5c\xf6\xb4\x12\xeb\x64\x10\x47\xcd\xdb\x29\xf1\x6f\xb3\x7a\x07\xbf\x02\x00\x00\xff\xff\x75\xd7\x68\x3b\x89\x07\x00\x00")

func collectionHtmlBytes() ([]byte, error) {
	return bindataRead(
		_collectionHtml,
		"collection.html",
	)
}

func collectionHtml() (*asset, error) {
	bytes, err := collectionHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "collection.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _globHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x91\xdf\x8b\xd4\x30\x10\xc7\xdf\xfb\x57\x0c\x45\x44\x0f\xda\x78\x07\xfa\x20\xd9\xca\x79\xd7\x87\x03\x39\x65\x57\x7d\xcf\x26\xd3\x26\x90\x4d\xce\x49\xba\xba\x84\xfc\xef\xa6\xb5\xcb\x2d\xa2\xf3\xd2\xce\xaf\xcf\xcc\x7c\x93\x12\xbb\xaa\xa0\xd8\x9d\x7f\x3a\x91\x19\x75\x84\x9b\x37\xd7\xef\xe0\xab\x46\xf8\x2e\x9c\x50\x66\x3a\xc0\xed\x14\xb5\xa7\xd0\xc2\xad\xb5\xb0\x14\x05\x20\x0c\x48\x47\x54\xed\xd2\xfd\x2d\x20\xf8\x01\xa2\x36\x01\x82\x9f\x48\x22\x48\xaf\x10\x8a\x3b\xfa\x23\x92\x43\x05\xfb\x13\x08\xf8\xb8\xbb\x6f\x42\x3c\x59\x5c\xda\xac\x91\xe8\x4a\x6b\xd4\x22\x82\x14\x0e\xf6\x08\x83\x9f\x9c\x02\xe3\x4a\x10\xe1\xd3\xc3\x5d\xff\xb8\xeb\x61\x30\x16\xdb\xea\x8a\xe5\x5c\x55\x29\x29\x1c\x8c\x43\xa8\xa5\x77\x11\x5d\xac\x4b\x94\x07\x94\xd1\x78\x07\xd2\x8a\x10\x36\xf5\xea\x36\x4d\x19\x10\x91\xe0\xa0\x6c\x33\x92\x51\x75\xb7\x0c\xe6\xfa\x6d\x97\x52\xfb\x45\xc4\x92\x74\x39\x73\x56\x02\x7f\x32\xca\x1c\xc1\xa8\x4d\xfd\x24\x68\x66\x9f\x81\x33\x40\x62\xb9\xff\xfc\xd3\x34\xd7\x37\x8d\xf4\x76\x25\x2e\xbd\xde\x3e\x3b\xb3\xa5\x44\xc2\x8d\x08\x6d\xef\x22\x19\x0c\x39\x97\xd0\x4f\x13\x35\xb4\xbb\x69\x18\xcc\xaf\xb2\xf9\x65\x3d\xb7\xa6\xe3\x02\x34\xe1\xb0\xa9\xd9\x68\xfd\xfe\x83\xdb\xa4\x34\x91\xfd\x31\x21\x9d\xe0\x45\xbb\x9b\x45\xa7\x47\x71\xc0\x9c\x5f\x86\xcb\x5c\x9b\x73\x3d\xdf\x34\x1f\x23\x3a\xce\x0a\xea\xaf\x5d\xd0\xa9\x8b\x05\x7a\x22\x4f\xff\x98\xdf\x6f\xb7\x9f\xb7\xaf\x52\x2a\x63\x4a\xc1\xc3\xfd\x0c\x7e\xfd\x1e\x56\xf2\xff\xa9\xcb\xf7\x59\x0a\x76\xd6\x82\xb3\xa2\x68\x57\x71\xb6\x3e\x49\x57\xad\xb5\xbf\x03\x00\x00\xff\xff\x8e\x08\x47\x71\x7b\x02\x00\x00")

func globHtmlBytes() ([]byte, error) {
	return bindataRead(
		_globHtml,
		"glob.html",
	)
}

func globHtml() (*asset, error) {
	bytes, err := globHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "glob.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _logsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x7c\x53\xc1\x6e\xdb\x30\x0c\xbd\xe7\x2b\x08\x9f\x92\x02\xb6\xd7\x02\xdb\x65\x49\x86\x36\x0b\xb0\x02\x59\x2f\xe9\x76\x2d\x54\x89\xb1\x35\xc8\x52\x46\xc9\x19\x02\x23\xff\x3e\x5a\xb1\x57\x27\x4d\xe6\x93\x45\xf1\x3d\x3e\x3d\x92\x4d\x93\xdf\x8c\x80\xbf\x85\xdb\xee\x49\x17\x65\x80\xbb\x0f\xb7\x9f\xe0\xb9\x44\xf8\x29\xac\x50\xba\xae\xe0\xbe\x0e\xa5\x23\x9f\xc1\xbd\x31\x10\x93\x3c\x10\x7a\xa4\x1d\xaa\x2c\xa2\x7f\x78\x04\xb7\x81\x50\x6a\x0f\xde\xd5\x24\x11\xa4\x53\x08\x7c\x2c\xdc\x0e\xc9\xa2\x82\xd7\x3d\x08\x78\x58\x7f\x4d\x7d\xd8\x1b\x8c\x30\xa3\x25\x5a\x86\x86\x52\x04\x90\xc2\xc2\x2b\xc2\xc6\xd5\x56\x81\xb6\x1c\x44\x58\x3d\x2e\x96\x4f\xeb\x25\x6c\xb4\xc1\x6c\x74\x93\x1f\x0e\xa3\x51\xd3\x28\xdc\x68\x8b\x90\x48\x67\x03\xda\x90\x70\x74\xea\x51\x06\xed\x2c\x48\x23\xbc\x9f\x25\xdd\x31\x4d\xb9\x40\x40\x82\x4a\x99\xb4\x20\xad\x92\x79\x2c\x3c\x2d\x3f\xce\x57\xda\x87\x56\xb4\x71\x45\xe4\xf7\xd3\x9c\xa3\xc7\x6b\xa5\x77\xa0\xd5\x2c\xd9\x0a\x6a\x0b\xf4\xac\x2d\x8b\x44\x36\xa1\xff\x49\xd3\xdb\xbb\x54\x3a\xd3\xd1\x46\xac\x97\xa4\xb7\xe1\x2d\xd0\x7e\x3b\x41\xbd\x2f\x33\xb0\xf8\x07\x96\x3b\xe6\x5d\xc7\xc8\x38\x61\x05\xfe\x8b\x9d\x35\x4d\x4d\xe6\x77\x8d\xb4\x87\x6c\xdd\x9a\x4b\x4f\xa2\xc2\xc3\x21\x99\x7c\x3e\x21\x3b\x12\x65\xce\x56\xe8\xbd\x28\x5a\xca\x4d\x6d\xe3\x7b\xc7\xd8\xf2\x4e\xa0\x39\x01\xf4\x0a\x9c\xe1\x54\xe5\x64\x5d\x71\x52\x56\x60\x58\x1a\x6c\x7f\x1f\xf6\x8f\x2a\xaa\x88\x36\x9c\x97\xeb\xd1\x46\x0f\xd1\x92\x50\x04\xec\x08\x18\xac\x2f\xc1\x8c\xce\xb4\xb5\x48\xdf\x9e\xbf\xaf\x18\x1c\xc5\x65\x4a\x04\xf1\x3e\xd5\x99\x4c\x6c\xb7\x68\xd5\xa2\xd4\x46\x8d\x8d\x3e\xa3\x3b\x5c\xf1\x00\x89\x1c\x0d\x1d\xb8\xf4\xf8\x2e\x5b\x1a\xe7\x71\x7c\x41\xe7\x55\x4f\xba\xfe\x4f\x32\xc2\x8a\xe7\xf8\xa8\xed\x1d\xfc\xff\x14\xe4\x0a\x5e\x16\xb6\xf5\xfa\x8b\xa6\xf9\xf9\xd0\xbc\x4d\x60\x0f\x1f\xce\x60\x1f\x8c\x73\xf8\xcb\x9f\x9e\xfb\xc3\xcb\x8b\xb6\x0a\x79\xf8\x2b\x6d\xb9\x55\xc9\x7c\x9a\x33\xe9\xa0\x04\x8f\x43\x5b\xe1\x5f\xdf\x07\x57\xb9\x33\xdd\x26\x1c\x31\x2c\xf0\xb8\x50\x73\x5e\x3f\x6e\x12\x6f\xdc\xdf\x00\x00\x00\xff\xff\xb0\xb2\x23\xf4\x3a\x04\x00\x00")

func logsHtmlBytes() ([]byte, error) {
	return bindataRead(
		_logsHtml,
		"logs.html",
	)
}

func logsHtml() (*asset, error) {
	bytes, err := logsHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "logs.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _no_syncbaseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x34\x90\x31\x6b\xc3\x30\x14\x84\x77\xff\x8a\xc3\x63\x40\x71\x13\x68\x27\xd7\x90\xa6\x19\x0a\xa5\x4b\xda\xee\x8a\xf4\x1c\x09\x94\xa7\x22\xc9\x06\x63\xf2\xdf\x2b\x3b\xb6\x27\xbf\x27\xdd\x9d\xbe\x1b\xc7\x6a\x53\x20\x7f\x47\xff\x37\x04\x7b\x35\x09\xfb\xa7\xdd\x0b\xbe\x0d\xe1\x57\xb2\xd4\xb6\xbb\xe1\xd0\x25\xe3\x43\xdc\xe2\xe0\x1c\xe6\x4b\x11\x81\x22\x85\x9e\xf4\x76\x56\xff\x44\x82\x6f\x91\x8c\x8d\x88\xbe\x0b\x8a\xa0\xbc\x26\xe4\xf1\xea\x7b\x0a\x4c\x1a\x97\x01\x12\x6f\xe7\x77\x11\xd3\xe0\x68\x96\x39\xab\x88\xb3\x34\x19\x99\xa0\x24\xe3\x42\x68\x7d\xc7\x1a\x96\xf3\x92\xf0\xf9\x71\x3c\x7d\x9d\x4f\x68\xad\xa3\x6d\xb1\xa9\xee\xf7\xa2\x18\x47\x4d\xad\x65\x42\xa9\x3c\x27\xe2\x54\x4e\xdb\x3a\x92\x4a\xd6\x33\x94\x93\x31\xbe\x96\xcb\x28\x44\x4e\x48\x14\x70\xd3\x4e\x5c\x83\xd5\x65\x33\x27\xd7\xe6\xb9\x39\x0f\xac\x2e\x32\x52\x5d\xe5\xe1\xb1\xd5\xb6\x5f\x0d\x26\x81\xa2\x0c\xbc\xfe\x08\xb1\xdb\x0b\xe5\xdd\xe2\x80\xdc\xd1\x44\x3b\xb5\x10\xa0\x3d\x45\xb0\x4f\x30\xb2\xa7\xcc\xb9\x7a\xcf\xe7\x99\xf2\x51\x53\x5d\xe5\x80\xa6\xa8\xab\xe5\x75\xcd\x44\x43\xac\x33\xc0\x7f\x00\x00\x00\xff\xff\xfe\x8f\x17\xb9\x89\x01\x00\x00")

func no_syncbaseHtmlBytes() ([]byte, error) {
	return bindataRead(
		_no_syncbaseHtml,
		"no_syncbase.html",
	)
}

func no_syncbaseHtml() (*asset, error) {
	bytes, err := no_syncbaseHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "no_syncbase.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _profilesHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x55\xcd\x6e\xdb\x3c\x10\xbc\xfb\x29\x16\x3a\x7c\x5f\x1b\x40\x52\x13\xa0\x3d\x14\xb2\x8a\x24\x0d\xd2\x02\x41\x10\xd4\x49\xef\x34\xb9\x92\x88\x50\x5c\x95\xa4\x92\x18\x82\xde\xbd\x2b\x55\xce\x6f\x9b\x18\xb0\x7d\x30\xc4\xc5\xce\xcc\xce\x52\x1e\x77\x5d\xba\x37\x03\xfe\x1c\x53\xb3\x72\xba\xac\x02\x1c\x7c\xd8\xff\x04\x97\x15\xc2\x4f\x61\x85\xd2\x6d\x0d\x87\x6d\xa8\xc8\xf9\x04\x0e\x8d\x81\xb1\xc9\x83\x43\x8f\xee\x06\x55\x32\xa2\xaf\x3c\x02\x15\x10\x2a\xed\xc1\x53\xeb\x24\x82\x24\x85\xc0\xc7\x92\x6e\xd0\x59\x54\xb0\x5c\x81\x80\xa3\xc5\xd7\xd8\x87\x95\xc1\x11\x66\xb4\x44\xcb\xd0\x50\x89\x00\x52\x58\x58\x22\x14\xd4\x5a\x05\xda\x72\x11\xe1\xec\xfb\xf1\xc9\xf9\xe2\x04\x0a\x6d\x30\x99\xed\xa5\x7d\x3f\x9b\x75\x9d\xc2\x42\x5b\x84\x48\x92\x0d\x68\x43\xc4\xd5\xcc\xa3\x0c\x9a\x2c\x48\x23\xbc\x9f\x47\xd3\x31\x8e\x59\x20\xa0\x83\x5a\x99\xb8\x74\x5a\x45\xf9\x28\x9c\x55\x1f\xf3\x0b\x47\x4c\xab\x6d\x99\xa5\x7c\xfa\x53\x56\xfa\x06\xb4\x9a\x47\x8d\x70\x03\xf1\x9a\x6d\x40\x4b\x64\xf3\xeb\x87\x38\xde\x3f\x88\x25\x99\x89\x6e\xc4\xb6\xe6\xe1\x30\x16\x8c\xce\x8f\x2f\xae\x9e\xd4\xee\x45\x26\xe2\x42\xdf\xa1\x8a\x6f\xb5\x0a\x55\x94\x97\x04\x81\xc8\x40\xd3\xf0\x64\xd0\x75\xc9\xd5\x8f\xb3\x0b\xc7\x5e\xef\xfa\x3e\x6d\xc6\x69\xf1\x8b\x9d\x77\x5d\xeb\xcc\xaf\x16\xdd\x0a\x92\xc5\x70\x07\xee\x5c\xd4\xd8\xf7\x59\xca\xc4\xcf\x46\x48\x79\x86\x17\x43\x65\x02\x2a\xa6\x9d\x47\xcf\x24\x2a\x14\xcd\x2b\xfc\xff\x29\x5c\xb6\xe5\x7c\x3f\xca\xbf\x71\x63\x96\x8a\x7c\x47\xd6\xde\xd0\xdd\xda\xd7\xd2\x90\xbc\xde\xc8\xd8\xd1\xd0\xb9\x43\x67\x6f\x29\x6f\x6d\x2d\x70\x55\x28\xc9\x5f\xe1\xb5\x57\xe3\xc1\xe1\xe5\x23\xc0\x0e\x8d\x6e\x38\xc7\xc6\x7e\x4f\xc9\x51\x1b\xf8\x47\xee\x3f\xbf\x9c\xf0\x1f\xbb\x28\xd7\x98\x8d\x16\xf1\x4e\x52\xdd\x08\x19\xde\xff\x7d\x0b\xdb\x6b\x1c\xb0\x46\xd1\x1a\xf3\x52\xe0\xa9\xe5\x2c\x7d\x1c\x1c\xdb\x24\xd0\x88\xd7\xf7\x08\xbe\x0a\xa7\x85\x89\x35\xc7\xa4\x8f\x72\x6d\x0b\xca\x52\x9d\x0f\xc9\xce\xde\x6b\x61\x95\x07\xb1\xe4\x74\x86\x5a\xac\xc0\x52\x80\x5b\x72\xd7\xa0\x8b\x31\x79\x1d\xd6\x14\x10\xf8\xb2\x25\x7a\xcf\x41\x6e\xff\xe7\x06\xa7\x03\x27\xee\x90\xce\xa7\x94\x3c\x11\x5e\xb4\x4d\x43\x2e\x70\x7c\x3b\x68\xd6\xc9\x3a\xfd\x09\x58\x20\xa6\x74\x60\x84\x2d\x5b\x51\xe2\x40\xb7\x4e\xf8\x5b\xed\x2b\xa3\x7d\x48\x1e\x2d\xe4\xfe\x25\x99\x1e\xb3\x74\x8a\xf3\x9c\xc3\x1f\xad\xea\xfb\xdf\x01\x00\x00\xff\xff\xd3\x06\xf2\xb8\xb7\x06\x00\x00")

func profilesHtmlBytes() ([]byte, error) {
	return bindataRead(
		_profilesHtml,
		"profiles.html",
	)
}

func profilesHtml() (*asset, error) {
	bytes, err := profilesHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "profiles.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _resolveHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x56\x51\x6f\xe2\x38\x10\x7e\xe7\x57\x8c\xa2\x7b\xb8\xab\x14\x72\xad\x74\xf7\x50\x85\x9c\xda\xc2\x03\x52\xaf\x2b\x41\x77\x5f\x2b\x13\x4f\x88\x77\x8d\xcd\xda\x4e\x29\x4a\xf9\xef\x3b\x4e\x02\x8d\x28\xac\x44\x37\xdd\xdd\xbc\x80\x67\x3e\x7f\x33\xf3\x8d\x13\x4f\x59\x46\x67\x3d\xa0\xe7\x46\x2f\xd7\x46\xcc\x73\x07\x17\x7f\x9f\xff\x0b\xf7\x39\xc2\x27\xa6\x18\x17\xc5\x02\xae\x0a\x97\x6b\x63\xfb\x70\x25\x25\x54\x20\x0b\x06\x2d\x9a\x47\xe4\xfd\x6a\xf7\x47\x8b\xa0\x33\x70\xb9\xb0\x60\x75\x61\x52\x84\x54\x73\x04\x5a\xce\xf5\x23\x1a\x85\x1c\x66\x6b\x60\x70\x3d\x1d\x86\xd6\xad\x25\x56\xdb\xa4\x48\x51\xd1\x56\x97\x33\x07\x29\x53\x30\x43\xc8\x74\xa1\x38\x08\x45\x46\x84\xdb\xf1\xcd\xe8\x6e\x3a\x82\x4c\x48\xec\xf7\xce\xa2\xcd\xa6\xd7\x2b\x4b\x8e\x99\x50\x08\x41\xaa\x95\x43\xe5\x02\xb2\xc6\x16\x53\x27\xb4\x82\x54\x32\x6b\x07\x41\xb3\x0c\x43\x0a\xe0\xd0\xc0\x82\xcb\x70\x6e\x04\x0f\x92\x2a\x70\x9c\xff\x93\xdc\xb1\x05\xfa\x32\xb4\x2c\x3c\x34\x8e\xc8\x56\x3b\xb9\x78\xdc\xf2\xf8\x7d\x29\x52\xd9\xdb\x3f\x61\x78\x7e\x11\xa6\x5a\x36\x44\xfe\x29\xcb\x95\x70\x39\xf4\xff\xa7\xcc\xdd\x48\x39\xb3\xa6\x84\xb6\xce\xb8\x90\x2f\xc8\x36\xda\x87\x6f\xe1\x2a\xac\x14\xc9\xb4\xc8\x32\xf1\x74\x49\xb0\xfe\x66\x13\x47\x64\x29\x4b\x54\x7c\xb3\xd9\x6d\x9c\x7a\xdd\x6d\x15\xec\x9e\xcd\xe4\x21\x92\xfb\xaa\x0f\x1e\x67\x7c\x0b\x18\x2c\x3c\xda\x79\xf4\x41\xca\xb1\xbd\x45\x96\x1d\x23\xaa\x18\x24\x01\x1a\xca\x36\xc5\x4b\x9d\x51\xbb\xd0\xb2\x34\x4c\xcd\xb1\x49\xd6\xd8\x36\xf0\x44\x75\xab\x3d\x55\xea\xed\x5d\x9c\x39\x16\xd6\x56\xbf\xfc\x6c\xf7\x2d\x2f\xcb\x30\xb4\x28\xe9\x38\xec\x5c\x36\x67\x5c\xaf\xc2\xf0\x82\x2f\xf7\xe2\xd4\xb1\x66\x9a\xaf\x5f\xdb\x6b\x9f\x39\xec\xa8\x9d\xfc\x70\x86\x0f\x0f\x75\x69\x8a\xce\xa3\x2a\x16\x68\x44\x1a\x24\x23\xc5\x97\x5a\x28\x17\x47\x8e\x77\xc5\x19\x33\xc8\x0d\x66\x83\x20\xfa\x4f\x0d\xaa\x06\x55\x21\xb6\x5d\x80\x67\xd8\x9a\xaa\xb3\xff\x0c\x85\x91\x5f\x0b\xf4\xe7\x35\xa0\x86\x36\x30\x7f\xec\x58\x72\x3c\x2f\xf2\x1c\x51\xa1\x4b\x79\x9e\x96\x82\xde\xcd\x2e\xd5\xa1\x02\x87\xc8\xb8\xa4\x4f\x87\x2f\xf1\xf4\xf2\x9a\xb7\xe5\x0f\x5c\xc2\xe5\x00\xf6\xd5\xdd\x7b\x7b\xde\x41\x93\x3b\x74\x2b\x6d\xbe\x74\xac\xc9\x15\xe7\xa6\xdf\x50\xbf\x4d\x97\x0e\x4b\xf4\xc9\xa0\xed\xba\xed\x9e\xf5\x97\x97\x36\xd1\x74\xcd\xa8\xf9\x78\xd8\x71\x71\x3b\xde\x1f\x3a\xd4\xfd\x6b\x49\xba\x13\x8f\xff\x32\xd8\xf7\x3f\xcb\xdb\x70\x16\xfe\x2c\x4b\x89\x0a\xe8\xb6\xfb\xab\x63\x65\xde\x2a\x48\x7d\x37\x7e\x57\x2d\x2f\xfa\xcf\x90\xa9\x8e\xf3\xbb\x6a\x74\x92\x8f\xd8\x5e\x5f\xac\x64\xf4\xd9\x25\xad\x31\x82\xc6\x83\xf6\x1c\x81\xd2\xb6\x27\x9c\xbd\xa1\x8d\x86\x46\x5a\x17\x4b\xc0\xc5\xd2\xad\x7b\xc7\x72\x68\xaf\x9b\x08\x71\xd4\x8c\x88\x89\x9f\x28\xeb\xae\x8e\x8c\xd1\xe6\x6d\xc3\x64\x2c\x76\xba\x33\x82\x08\x26\x43\x41\xe3\xa9\x0d\x12\xa1\x32\x1d\x47\x22\x19\x4d\x26\x1f\x26\xd4\x48\xba\x2a\x28\xca\x78\xd8\x74\xf3\xa4\xa1\x93\xe6\xe0\x27\xe4\xe1\x4a\x70\x97\xef\xda\xb7\x5f\xce\xb6\xd8\xe6\xf7\x5b\x00\x00\x00\xff\xff\xbc\x42\xa9\x8f\xe2\x0b\x00\x00")

func resolveHtmlBytes() ([]byte, error) {
	return bindataRead(
		_resolveHtml,
		"resolve.html",
	)
}

func resolveHtml() (*asset, error) {
	bytes, err := resolveHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "resolve.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _statsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x55\x5f\x4f\xdb\x30\x10\x7f\xcf\xa7\x38\x45\x6c\x02\x24\x27\x03\x69\x7b\x40\x21\x13\x83\x0e\x21\x31\x90\x80\xf5\x15\xb9\xf1\xa5\xf1\xe4\xda\x9d\xed\xc0\x2a\x2b\xdf\x7d\x97\xa4\x85\x02\x45\xfc\x11\xed\x4b\x7d\xe7\xfb\xf7\xfb\xdd\xe5\x1c\x42\xba\x1d\x01\xfd\x0e\xcd\x74\x66\xe5\xb8\xf2\xb0\xfb\x65\xe7\x1b\x5c\x55\x08\x43\xae\xb9\x90\xf5\x04\x0e\x6a\x5f\x19\xeb\x12\x38\x50\x0a\x3a\x23\x07\x16\x1d\xda\x1b\x14\x49\xe7\xfd\xdb\x21\x98\x12\x7c\x25\x1d\x38\x53\xdb\x02\xa1\x30\x02\x81\xc4\xb1\xb9\x41\xab\x51\xc0\x68\x06\x1c\x7e\x5c\x1e\x31\xe7\x67\x0a\x3b\x37\x25\x0b\xd4\xe4\xea\x2b\xee\xa1\xe0\x1a\x46\x08\xa5\xa9\xb5\x00\xa9\x49\x89\x70\x7a\x72\x38\x38\xbb\x1c\x40\x29\x15\x26\xd1\x76\xda\x34\x51\x14\x82\xc0\x52\x6a\x84\xb8\x30\xda\xa3\xf6\x71\xd3\x40\x08\xb2\x84\x64\xc8\x55\x8d\x64\x93\x39\x2c\xbc\x34\x1a\x0a\xc5\x9d\xdb\x8f\xe7\x22\x63\x94\xce\xa3\x85\x89\x50\x6c\x6c\xa5\x88\xf3\xae\x8c\x4c\xc8\x9b\x85\x69\x7b\x55\x20\xe1\x5c\x1c\x18\xdb\xd9\x65\x85\x51\x73\xdb\xce\xde\xf3\x91\xc2\x65\x0f\xc1\x3d\x67\xbd\xb6\x15\xff\xb8\xc7\x9a\x7b\x91\x31\x87\x8a\xea\xb9\xbb\x72\x15\x17\xe6\x96\xb1\x5d\x31\x5d\xca\xd1\xe7\x19\x19\x31\x7b\xa8\x6b\x7f\x21\xdc\x4a\x5f\xc1\xc6\xd8\x10\x60\xd8\xdb\x87\xee\x50\xe3\x4f\x6b\x26\xc3\xf3\x5f\xf7\x3c\x3c\x76\xcc\xbc\x7d\x1a\xad\xbf\x10\xab\xe1\x5c\x5f\xf7\x1c\x68\x62\x4f\xd7\x13\xb4\xb2\x88\xf3\x2e\x3c\x6c\x1e\x9b\xad\x2c\xf5\xe2\x23\x22\x66\x53\x8b\x79\x08\x3d\xa2\xa6\xc9\xd2\x56\x5e\x1d\x9c\xb4\x2b\x40\x7c\x10\xb2\xab\xd9\xf4\x23\x81\xd1\xdc\xfe\x43\xc1\x6e\xa5\xf0\x55\x4c\xf8\xa6\x56\x6a\x5f\x42\xfc\xe9\x2a\x86\x7b\xac\xaf\x47\x19\x02\x2a\xb7\xfe\xc6\x0e\x8f\x4e\xd7\x44\xc0\x62\x32\xdf\x08\x5a\x8b\xf5\x61\xee\x5b\xbe\x6e\xc8\x49\x9b\xe6\xf5\xb8\x49\xf3\xf0\xd3\x27\x45\x9b\x6f\xbe\xaf\x52\x5a\x58\x79\x94\xa5\xf3\xbd\x96\x47\x0b\x8e\xfa\x35\x78\xac\xcc\x68\x84\xe2\x1d\x8b\xb0\xfa\x9a\xb7\xce\x59\x4a\x87\xf7\xad\xc6\x5a\x3d\x44\x12\x82\xe5\x7a\x8c\x90\x1c\x56\x52\x09\x8b\xfa\x51\x27\x33\x25\xf3\x8c\x43\x65\xb1\xa4\xf2\x3c\xf7\xee\xbb\xde\x0f\xa1\xb6\xea\x6f\x8d\x76\x06\x1b\xc9\x65\xfb\xce\xd8\x33\x3e\x21\xfe\x3e\xbb\xe5\xbb\xa4\x69\x3a\x86\x5b\x5e\x39\xad\x0b\x0a\x15\xbd\x34\x39\x4f\xea\x19\x58\x4b\x6f\xdb\x8a\xaa\x06\x17\x17\xe7\x17\x9b\x21\x50\x72\xb2\x38\x39\x6a\xd3\x6d\xed\xc1\x3c\xdf\x4b\xb9\xb2\x74\xc1\xc4\xca\x6e\xf5\x9f\xf1\x7c\x91\x27\x5d\x0d\xef\x6b\x57\x26\xef\xda\xc3\xc9\x44\x72\xc5\x24\xbd\x8b\x2e\xce\xa5\x2e\x4d\x96\x3e\x83\xe3\x8d\x1d\x7e\x32\xd4\x2d\x05\xcf\x0c\x21\x2c\x4d\x63\xff\xff\x3f\x00\x00\xff\xff\xd3\x1e\x4b\xd1\x65\x08\x00\x00")

func statsHtmlBytes() ([]byte, error) {
	return bindataRead(
		_statsHtml,
		"stats.html",
	)
}

func statsHtml() (*asset, error) {
	bytes, err := statsHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "stats.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _syncbaseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdf\x6b\x23\x37\x10\x7e\xf7\x5f\x31\x98\x90\x26\xd7\x7a\xdd\x3b\x68\x1f\x82\xbd\x25\x89\x53\x30\x5c\xc2\x81\xd3\xbe\x94\x7b\xd0\xae\xc6\xb6\x40\x96\x8c\x24\xbb\x18\xb3\xff\x7b\x47\xfb\x53\xbb\xb6\x93\x6e\xb8\x3c\x04\x6b\x34\x9a\xf9\x66\xbe\x6f\xb4\x3a\x1e\xc7\x9f\x06\x40\x7f\x8f\x7a\x7b\x30\x62\xb5\x76\xf0\xe5\xd7\xcf\xbf\xc3\xeb\x1a\xe1\x6f\xa6\x18\x17\xbb\x0d\xdc\xef\xdc\x5a\x1b\x1b\xc1\xbd\x94\x90\x3b\x59\x30\x68\xd1\xec\x91\x47\xf9\xe9\xbf\x2c\x82\x5e\x82\x5b\x0b\x0b\x56\xef\x4c\x8a\x90\x6a\x8e\x40\xcb\x95\xde\xa3\x51\xc8\x21\x39\x00\x83\x87\xc5\x6c\x64\xdd\x41\x62\x7e\x4c\x8a\x14\x15\x1d\x75\x6b\xe6\x20\x65\x0a\x12\x84\xa5\xde\x29\x0e\x42\x91\x11\xe1\xeb\xfc\xf1\xe9\x65\xf1\x04\x4b\x21\x31\x1a\x7c\x1a\x67\xd9\x60\x70\x3c\x72\x5c\x0a\x85\x30\x4c\xb5\x72\xa8\xdc\xd0\x5b\x27\x16\x53\x27\xb4\x82\x54\x32\x6b\xa7\xc3\x72\x39\x1a\x51\x06\x87\x06\x36\x5c\x8e\x56\x46\xf0\x61\x9c\x67\x9e\xac\x7f\x8b\x17\x07\x95\x26\xcc\xe2\x64\x4c\x8b\xc2\xca\xc5\xbe\x0a\xe0\x0f\xa4\x48\x05\x57\x3f\x46\xa3\xcf\x5f\x46\xa9\x96\x65\x04\x80\x05\x35\x80\x0a\x80\xe1\xf1\x18\xbd\x1a\xc4\xa8\x34\x44\x7f\xee\xa4\x7c\x61\x1b\xcc\xb2\x61\x11\x76\x4c\x71\xe3\xc1\x64\x5c\x82\x8a\x7d\x11\x86\xa9\x15\x42\x71\x70\x96\x58\xaa\x81\x1c\xfb\x15\x71\x3c\xc2\x15\x4f\xe0\x6e\x0a\xd1\x8c\x39\xe6\x6b\x89\xe6\x1c\xf2\x50\x45\x89\x95\xd9\x63\x24\xd7\xa8\x44\xd5\x54\xdc\xb7\x66\x80\xfb\xed\x16\x1e\x24\x5a\x2b\xd4\xaa\x0a\x5b\xad\xab\x82\xeb\x92\x8b\x45\x5d\xec\x93\x31\xb6\x44\xf7\x91\xd4\xfe\x84\x8c\x27\xdc\xc5\x14\x48\x1b\xca\xe1\x68\xc5\x63\xea\x7f\x6e\xc8\x32\x32\xf1\x98\xfe\xc9\xe6\x50\x07\x09\x2a\x5e\x23\xe8\x9b\x7f\x12\xc6\xad\x8b\x7a\xd4\x52\x16\x3c\x85\xb5\x79\x6f\x17\x37\x7b\x77\xb9\x4c\xe6\xbc\xa6\x80\x76\x5b\xce\x3c\x7e\x34\xc8\x9c\x36\x3f\x59\x3f\x4e\xa6\xd5\x64\x7f\x30\x68\x72\x5e\x66\xe7\xf4\x84\xc1\xda\xe0\x92\x44\x53\xca\x7a\x9c\xd6\xc9\xff\x50\x53\x22\x2a\xd7\x27\x9a\x02\xc0\x35\x4f\xa6\x5d\xf2\xae\xb9\x9a\x86\x3a\xb9\x4e\xbd\x4f\x3b\xf7\x75\xaa\xa6\xad\x42\xe2\x67\x6d\x30\x8a\xa2\xc9\x98\xc5\x6d\x5c\xd4\x6c\x69\xf1\xa4\x27\x37\x4a\x43\x03\xcd\xde\xe6\x34\x86\x87\x42\x86\x6a\x2a\x03\x1a\xfb\xd1\x76\x9e\x34\x3f\xfb\x2b\xa3\x77\xdb\x53\xce\xea\xad\x3b\x72\x6f\x1c\x9b\x92\x3b\xd4\x5d\x52\x77\x15\xef\x4d\xad\xb6\xe2\x84\x95\xd7\xb4\x96\x8a\xaf\x18\x08\x03\xb5\xb0\x35\x14\x35\x43\x70\x56\x27\x65\xc0\x19\xda\xd4\x88\xad\xe7\xa0\x8e\xe9\x95\xb6\xd8\x62\x1a\x05\x9b\x95\xdc\xde\x0d\xf8\x6d\x97\x48\x61\xd7\x50\x5d\xab\xe0\xbb\xd5\x82\xeb\x23\x97\x5e\x95\x53\xd9\xd1\x37\x13\x74\x3a\x2a\xdb\x86\x86\x80\x2b\xc7\x56\xbf\xc0\x15\x4b\x53\xea\xc4\x57\x61\x5d\x7e\x33\x16\x59\xd1\x6c\x2c\x74\xc8\xa9\x08\x22\xc9\xd3\xc9\x2c\x83\x2d\x79\x09\x6a\x62\xd9\x91\x33\xce\x3c\xfe\x99\xbc\x9b\x0c\xd1\x5c\x9d\x12\x59\xa1\xfa\x57\xb8\x75\x08\x27\x7a\xd1\xce\xfb\x9f\x8d\x3b\xa2\x06\x5d\x0e\xd5\x55\xc6\x25\x6b\xfb\xea\xcb\xd7\x1d\x8d\xe5\xa0\xce\x90\xdc\x43\x25\x0d\xd2\xb3\x94\x9d\xe2\x6a\x65\x3d\x2b\x80\xb7\x25\x15\xfa\x7e\x1c\xc5\xfb\x52\x6a\xdf\xd8\xf6\x54\x04\xcd\xf5\xe1\x2b\xb9\x74\xf1\x17\xa9\x3c\xd8\xbb\x7f\x08\x65\x51\xe1\xf7\xfa\x3e\xcf\x8d\xcd\xb4\x7e\x3f\xe5\xfc\x23\xcc\x86\x6d\x7b\xa6\x27\x94\x7b\x65\x09\xe5\x38\x99\xbf\x60\xef\xff\xde\x14\x73\xfb\xcd\x88\x3d\x73\xa7\xc3\x5c\xef\xfc\xb0\x11\xde\xe0\x26\x41\x43\x53\x2c\xd4\x52\xe7\xf3\xfb\x9c\x5b\xba\x1d\xae\xe8\x2a\x76\x2f\x8f\x2b\x4d\x6b\x11\x92\xc6\xfb\xc6\xeb\x88\x00\x6b\x23\xdc\xc1\x7f\xe8\x7c\x8e\x28\x34\x92\xd3\x83\xd4\xc9\x0c\xf7\xaf\x87\x2d\xd6\x2e\x81\x2d\xcb\x6e\xcf\xcd\x68\x7f\xc6\xde\xf8\x38\xda\xfa\xdb\xd4\xf7\xdb\x18\xbc\x30\x83\xf8\x7d\x9f\xc6\x3d\x5f\x45\x37\x2f\x1a\x78\xf9\xce\xb4\xb7\xdd\xf7\xdf\x24\x44\x94\xa3\x1f\xd4\xbf\xfe\x0b\x00\x00\xff\xff\x66\x98\x51\x96\x7d\x0c\x00\x00")

func syncbaseHtmlBytes() ([]byte, error) {
	return bindataRead(
		_syncbaseHtml,
		"syncbase.html",
	)
}

func syncbaseHtml() (*asset, error) {
	bytes, err := syncbaseHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "syncbase.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vtraceHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x94\xdf\x6f\xdb\x36\x10\xc7\xdf\xf3\x57\xdc\xb4\x06\x4e\xba\x51\x76\x02\x64\x18\xe4\xd8\x40\x9b\xe6\x21\x40\xd1\x87\xa5\xeb\x9e\x69\xf2\x24\x71\xa1\x49\x81\xa4\xdd\x1a\x9a\xfe\xf7\x1d\x29\xc9\x3f\x82\x06\x89\x1f\x0c\xf2\xc4\x2f\xbf\x77\x1f\x1e\xd9\xb6\xd3\xf7\x67\x40\xbf\x3b\xdb\xec\x9c\xaa\xea\x00\xd7\xb3\xab\x3f\xe0\x6b\x8d\xf0\x8d\x1b\x2e\xd5\x66\x0d\x1f\x36\xa1\xb6\xce\xe7\xf0\x41\x6b\x48\x8b\x3c\x38\xf4\xe8\xb6\x28\xf3\xa4\xfe\xdb\x23\xd8\x12\x42\xad\x3c\x78\xbb\x71\x02\x41\x58\x89\x40\xd3\xca\x6e\xd1\x19\x94\xb0\xda\x01\x87\x8f\x8f\x9f\x98\x0f\x3b\x8d\x49\xa6\x95\x40\x43\xd2\x50\xf3\x00\x82\x1b\x58\x21\x94\x76\x63\x24\x28\x43\x41\x84\xcf\x0f\x77\xf7\x5f\x1e\xef\xa1\x54\x1a\xf3\xb3\xf7\xd3\xae\x3b\x6b\x5b\x89\xa5\x32\x08\x59\xee\x1b\x6e\x32\x0a\xdd\x4a\xb5\x85\xb4\xeb\x22\x6b\xac\x57\x41\x59\x53\x38\xd4\x3c\xa8\x2d\xce\x35\x96\xa1\x68\xdb\xfc\x31\x70\x17\xba\xee\x7c\xfe\x5d\xc9\x50\xc7\xc8\x3f\x71\x10\x23\x6b\xee\x2a\x65\x8a\x59\xf3\x63\xde\x70\x29\x95\xa9\x58\xb0\x4d\x71\x4d\xf3\x0c\x94\x5c\x64\x64\xc0\x48\xf0\x20\xbb\x2e\x5b\xa6\xd4\x6f\x7f\x61\x0c\xfe\xb2\x36\x40\xcc\x02\x18\x1b\xc2\x31\x95\xa8\x70\xf4\x29\x83\xa0\x42\x4c\x8a\xa4\x5f\xf8\x1a\x49\xfc\x72\x9a\x7d\x56\x57\xb3\xd9\xf9\x7c\xc5\xc5\x53\xe5\x22\x07\xca\xd2\xe0\x8f\x70\x67\xb5\x75\x5d\x37\xaf\x31\xc2\x2f\xae\x6e\x28\x31\xa9\x7c\xa3\xf9\xae\x58\x69\x2b\x9e\x7e\x52\x41\x1c\x67\xcb\xdb\x29\x25\xd4\xa7\xd6\xb6\x8e\x9b\x0a\xe1\x9d\xfa\x1d\xde\x89\x5a\x69\x09\xc5\x02\xf2\xbb\x38\x72\x68\xba\x8e\x56\x04\x5c\xd3\xa6\x61\x0f\x77\x58\x98\xbe\xa1\x91\x91\x75\xbf\xe1\x38\x3d\x3e\x0e\x61\xb5\xe6\x8d\x47\x66\xf8\x76\x7f\x2c\x91\x45\x70\x88\x7b\x7c\xaf\x1c\xd4\x4d\xcc\xfa\x04\xe5\x24\xa2\x9c\xbc\x2c\x3b\x86\x52\x5a\x43\xa3\x59\x43\xe8\xad\x11\xd4\x5e\x4f\x8b\xc9\xbf\x7c\xcb\xbd\x70\xaa\x09\x45\xb0\x55\xa5\xf1\xab\xe3\x02\x2f\xb2\x31\xa1\xcb\xc9\xb2\x6d\x55\x09\x1a\xcd\x81\x06\xfc\x07\x3a\xc0\xac\xeb\xda\xf6\x24\x1e\x03\xa9\xf2\x9f\x80\x7d\x11\xe5\x09\x18\xc8\xdf\x44\x53\x50\x25\x68\x42\xe2\x98\x4a\x87\xb0\x6b\xa8\xfe\x40\xed\x30\x15\xde\x0f\x90\xf2\x5a\x49\x64\x62\xcc\x7a\x59\x18\x1b\x2e\x7e\x8d\xc4\x2e\xa1\x4d\x2b\xe2\x6f\xec\x15\x30\xd6\xe0\x3c\x85\xa3\x77\xda\x77\x49\xfb\x27\x3a\xa0\xa9\x8a\x0d\xaf\xc8\xe4\x80\x6c\xb0\x29\x37\x46\x44\xea\x70\x4c\x50\xc9\x63\x8f\x2d\x77\x10\x0f\x3a\xdd\x89\x05\x48\x2b\x36\x6b\x2a\x20\xaf\x30\xdc\x6b\x8c\xc3\x8f\xbb\x07\x79\xd1\x37\x43\x06\xbf\xd1\xd1\x5e\xce\xf7\xea\x51\x99\x0b\xcd\xbd\xff\xac\x7c\xc8\x7b\xab\x8b\xc9\x49\x85\x93\x23\x4d\x74\x24\x7c\xaf\x18\x4e\xe2\xdd\x9d\x3c\xf7\x1b\x74\x6f\xb5\x4b\xb4\x12\x90\x88\x0b\x7b\x16\x49\xbb\xc8\x86\x29\x63\xf4\x96\x05\x74\xb0\x96\x9a\x55\x4e\xc9\xb1\x8d\xeb\x9b\xe5\xb7\x10\x81\xd1\xd3\xe6\x60\xe8\xba\xdb\x29\x85\xfb\xef\x8d\x43\x6a\xc0\xfc\x13\xae\x36\x55\x02\x1b\xbf\xc6\xe0\xe1\x16\x0c\x4e\x71\x67\x81\xf4\x06\x8f\x03\xc6\xae\xae\x19\x75\xd7\x60\xb5\x5f\x3f\xdc\x95\xf1\xd8\x4b\x8d\x74\x35\xe8\x8f\x49\xe5\xfa\x6c\x0b\x67\xbf\x1f\xa9\x9e\x2b\xd7\xca\xb0\xf1\x41\x3a\x7f\xb6\xae\x6f\xf9\x97\xdb\x3b\x72\xa5\xae\x3d\xd9\xfa\x70\x59\x4e\xdc\xe2\xe3\xd0\x70\x17\xfb\x7c\x74\xee\x5d\xff\x7c\xdd\xb5\x7f\x9f\xde\xe0\x76\x34\x1d\x86\x74\x96\x3d\x85\xc3\xcd\xfb\x3f\x00\x00\xff\xff\x06\x9b\x5a\x17\x08\x07\x00\x00")

func vtraceHtmlBytes() ([]byte, error) {
	return bindataRead(
		_vtraceHtml,
		"vtrace.html",
	)
}

func vtraceHtml() (*asset, error) {
	bytes, err := vtraceHtmlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vtrace.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"alltrace.html":    alltraceHtml,
	"blessings.html":   blessingsHtml,
	"chrome.html":      chromeHtml,
	"collection.html":  collectionHtml,
	"glob.html":        globHtml,
	"logs.html":        logsHtml,
	"no_syncbase.html": no_syncbaseHtml,
	"profiles.html":    profilesHtml,
	"resolve.html":     resolveHtml,
	"stats.html":       statsHtml,
	"syncbase.html":    syncbaseHtml,
	"vtrace.html":      vtraceHtml,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"alltrace.html":    &bintree{alltraceHtml, map[string]*bintree{}},
	"blessings.html":   &bintree{blessingsHtml, map[string]*bintree{}},
	"chrome.html":      &bintree{chromeHtml, map[string]*bintree{}},
	"collection.html":  &bintree{collectionHtml, map[string]*bintree{}},
	"glob.html":        &bintree{globHtml, map[string]*bintree{}},
	"logs.html":        &bintree{logsHtml, map[string]*bintree{}},
	"no_syncbase.html": &bintree{no_syncbaseHtml, map[string]*bintree{}},
	"profiles.html":    &bintree{profilesHtml, map[string]*bintree{}},
	"resolve.html":     &bintree{resolveHtml, map[string]*bintree{}},
	"stats.html":       &bintree{statsHtml, map[string]*bintree{}},
	"syncbase.html":    &bintree{syncbaseHtml, map[string]*bintree{}},
	"vtrace.html":      &bintree{vtraceHtml, map[string]*bintree{}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
