// 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.

// Package assets contains template strings and other assets for the allocatord web interface.
//
// This package is auto-generated by "jiri go generate v.io/x/ref/services/allocator/allocatord"
// which in-turn uses https://github.com/jteeuwen/go-bindata/
// Code generated by go-bindata.
// sources:
// bad-request.tmpl.html
// dash.js
// dashboard.tmpl.html
// error.tmpl.html
// head.tmpl.html
// header.tmpl.html
// home.tmpl.html
// root.tmpl.html
// style.css
// DO NOT EDIT!

package assets

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 _badRequestTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8e\x41\x0a\x02\x31\x0c\x00\xef\xfb\x8a\xf8\x00\x5b\xbc\x4a\xe8\x41\xf0\x2e\xfe\xa0\x9a\x40\x17\x56\x5b\x6b\x44\x96\xd2\xbf\xdb\x36\x7a\xf0\x14\x3a\x9d\x21\xc1\x0d\xc5\xab\xac\x89\x21\xc8\x6d\x71\x13\xfe\x06\x7b\x72\x13\x00\xca\x2c\x0b\xbb\x83\x27\x38\xf3\xe3\xc5\x4f\x41\xab\x68\x42\xab\x12\x5e\x22\xad\xc3\x0d\xbb\x7f\xb1\xbd\x3b\x4e\x99\xfb\x04\x28\xc5\x9c\xbc\x84\x5a\x3b\xb5\x5f\x5c\xca\x7b\x96\x00\xe6\x98\x73\xcc\xb0\xd5\xcf\xa4\xc1\x60\xfb\xde\xd5\x6a\x34\xd2\x84\xef\xd4\x44\xb4\xba\xba\x6d\x1a\x57\x7f\x02\x00\x00\xff\xff\xe0\x6f\x86\xe4\xcd\x00\x00\x00")

func badRequestTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_badRequestTmplHtml,
		"bad-request.tmpl.html",
	)
}

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

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

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

func dashJsBytes() ([]byte, error) {
	return bindataRead(
		_dashJs,
		"dash.js",
	)
}

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

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

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

func dashboardTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_dashboardTmplHtml,
		"dashboard.tmpl.html",
	)
}

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

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

var _errorTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8f\x41\x0a\xc2\x30\x10\x45\xf7\x3d\xc5\xd8\xbd\x0d\xdd\xca\x18\x70\x21\xb8\x10\x04\xc1\x03\xd4\x66\x24\x85\xb6\x29\x43\x44\x4a\xc8\xdd\x4d\x32\x76\xe1\xea\x93\xff\xdf\x83\x09\xee\x8c\xeb\xfd\xba\x10\x58\x3f\x8d\xba\xc2\x2d\xa8\x33\xba\x02\x40\x3f\xf8\x91\xf4\x99\xd9\x31\x2a\x79\x54\xa8\x64\xc6\xa7\x33\x6b\xa1\x6c\xab\x4f\x33\x14\x0a\x6e\x7d\xff\x66\x26\x93\xa8\xb6\x8c\x0b\x53\x4e\x80\x10\x9a\xc7\xfd\x1a\x63\x2e\xd5\xaf\x0d\xe1\x33\x78\x0b\x8d\xb8\x7b\x19\x17\xe1\x4b\x77\xc8\x5a\x8c\x8d\x48\xa2\xd0\x6c\xfe\x40\xec\xc0\x32\xbd\x8e\x75\x42\x2f\x6e\xa2\x18\x6b\x9d\x13\x55\xa7\x37\x0f\x95\x5c\x9b\xce\x2a\x5f\xfc\x06\x00\x00\xff\xff\x96\xa3\xfc\xdf\xfa\x00\x00\x00")

func errorTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_errorTmplHtml,
		"error.tmpl.html",
	)
}

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

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

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

func headTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headTmplHtml,
		"head.tmpl.html",
	)
}

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

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

var _headerTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x90\x31\x6e\xc6\x20\x0c\x46\xf7\x9e\xc2\x72\xe7\x86\x0b\x90\x48\x1d\xba\x76\xa9\xd4\xdd\x0a\x26\x41\x22\x50\x01\xcd\x62\x71\xf7\xd2\x26\xa4\xbf\x94\x0d\x7f\xcf\x96\x1f\x16\x31\x6c\x5d\x60\xc0\x95\xc9\x70\xc2\x5a\x9f\x00\xf4\x51\x4c\xed\xd9\x8a\x40\x3b\xcc\x9e\x72\x1e\xd1\xb3\x2d\x78\xc4\x0d\x10\xac\x89\xed\x88\xcf\x78\xf1\xb8\x44\x9c\x3e\x29\x90\x71\xdf\x9b\x56\x74\xf5\xe6\x2f\x0a\xbd\x2b\x73\xda\xdd\xcc\x2f\x81\x36\xc6\x49\xa4\xb8\xe2\x19\x86\x8f\x16\x73\x7a\x6f\x61\xad\xf0\xea\x7d\x9c\xa9\xc4\xa4\xd5\xef\xe8\xa9\xa2\x9a\xcb\xdd\x2a\xb9\x65\xfd\xd7\x12\x71\x16\x86\xb7\x8d\x9c\xff\xfb\xcc\x4d\xb6\x6d\xec\xf8\xc1\x50\x84\x83\x39\x07\xae\x3d\x5a\xf5\x4b\x74\xfc\x13\x00\x00\xff\xff\xe2\x89\x41\x0f\x31\x01\x00\x00")

func headerTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headerTmplHtml,
		"header.tmpl.html",
	)
}

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

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

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

func homeTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_homeTmplHtml,
		"home.tmpl.html",
	)
}

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

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

var _rootTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x6c\x90\x41\x6b\x84\x30\x10\x85\xef\xfe\x8a\x69\xee\x1a\xf6\x9e\x15\x4a\x2f\x2d\xb4\xbd\x14\x7a\x9f\x35\xb3\x1a\x88\x49\x88\xa3\x20\xe2\x7f\xdf\x51\xd7\xdb\x9e\x26\x19\xde\xfb\x78\xf3\xcc\x9b\x8d\x0d\xcf\x89\xa0\xe3\xde\xd7\x85\x39\x07\xa1\xad\x0b\x00\xc3\x8e\x3d\xd5\xff\x18\xd0\xba\xb1\x87\x65\xd9\x17\x50\xfd\x51\x9e\x28\xff\x62\x4f\xeb\x0a\xef\xde\xc7\x06\x39\x66\xa3\x0f\xbd\x38\x45\x49\x7d\xf2\xc8\x04\x6a\xa3\x29\xa8\xd6\xb5\x30\xfa\x20\x9b\x5b\xb4\x33\x34\x1e\x87\xe1\xaa\x9c\xa5\x20\xbe\x39\xe5\x38\xc9\x3b\x97\x1e\xe7\x38\x32\xe0\x89\xb5\xea\x15\x91\xf2\xc1\x94\x94\xd6\x4d\x27\xac\x47\x17\x76\xb9\xac\xbb\xcb\xb9\x4d\xd8\x52\xb9\xc7\xa8\x3f\x32\x6d\x08\x0c\x16\x7e\xe4\xac\x96\xe0\x2b\x0c\x8c\xa1\xa1\x01\xe2\xfd\xf5\x85\x12\xfb\xf2\x64\xa6\x63\xca\x0b\x4f\xf8\x6d\x64\x8e\xa1\x4c\xf2\x71\x13\x29\xe8\x32\xdd\xaf\x6a\x59\xaa\xcf\xb8\x99\x55\xfd\x1d\x5b\x70\xc1\x68\x7c\x32\xf4\x0e\x31\x5a\x62\x4b\x15\x7a\xeb\x62\x9b\x47\xf7\x8f\x00\x00\x00\xff\xff\xe3\x95\x3a\xa7\x93\x01\x00\x00")

func rootTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_rootTmplHtml,
		"root.tmpl.html",
	)
}

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

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

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

func styleCssBytes() ([]byte, error) {
	return bindataRead(
		_styleCss,
		"style.css",
	)
}

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

	info := bindataFileInfo{name: "style.css", 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){
	"bad-request.tmpl.html": badRequestTmplHtml,
	"dash.js":               dashJs,
	"dashboard.tmpl.html":   dashboardTmplHtml,
	"error.tmpl.html":       errorTmplHtml,
	"head.tmpl.html":        headTmplHtml,
	"header.tmpl.html":      headerTmplHtml,
	"home.tmpl.html":        homeTmplHtml,
	"root.tmpl.html":        rootTmplHtml,
	"style.css":             styleCss,
}

// 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{
	"bad-request.tmpl.html": &bintree{badRequestTmplHtml, map[string]*bintree{}},
	"dash.js":               &bintree{dashJs, map[string]*bintree{}},
	"dashboard.tmpl.html":   &bintree{dashboardTmplHtml, map[string]*bintree{}},
	"error.tmpl.html":       &bintree{errorTmplHtml, map[string]*bintree{}},
	"head.tmpl.html":        &bintree{headTmplHtml, map[string]*bintree{}},
	"header.tmpl.html":      &bintree{headerTmplHtml, map[string]*bintree{}},
	"home.tmpl.html":        &bintree{homeTmplHtml, map[string]*bintree{}},
	"root.tmpl.html":        &bintree{rootTmplHtml, map[string]*bintree{}},
	"style.css":             &bintree{styleCss, 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, "/")...)...)
}
