From fa1b752be29cd455c5184ddac2ffe80b3489763e Mon Sep 17 00:00:00 2001 From: Richard Mahn Date: Fri, 15 Jul 2016 18:35:42 -0600 Subject: [PATCH] Feature for editing, creating, uploading and deleting files --- cmd/web.go | 14 + conf/app.ini | 21 + models/error.go | 37 + models/pull.go | 2 +- models/repo.go | 419 ++++++- models/wiki.go | 2 +- modules/auth/repo_form.go | 89 ++ modules/bindata/bindata.go | 1623 +++++++++++--------------- modules/setting/setting.go | 20 + public/css/gogs.css | 210 +++- public/js/gogs.js | 546 +++++++-- routers/repo/delete.go | 54 + routers/repo/edit.go | 359 ++++++ routers/repo/upload.go | 257 ++++ routers/repo/view.go | 31 +- templates/repo/diff_preview.tmpl | 32 + templates/repo/diff_preview_new.tmpl | 12 + templates/repo/edit.tmpl | 98 ++ templates/repo/upload.tmpl | 79 ++ 19 files changed, 2848 insertions(+), 1057 deletions(-) create mode 100644 routers/repo/delete.go create mode 100644 routers/repo/edit.go create mode 100644 routers/repo/upload.go create mode 100644 templates/repo/diff_preview.tmpl create mode 100644 templates/repo/diff_preview_new.tmpl create mode 100644 templates/repo/edit.tmpl create mode 100644 templates/repo/upload.tmpl diff --git a/cmd/web.go b/cmd/web.go index 0f54bf805..78eb0261e 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -489,6 +489,20 @@ func runWeb(ctx *cli.Context) error { m.Combo("/compare/*", repo.MustAllowPulls).Get(repo.CompareAndPullRequest). Post(bindIgnErr(auth.CreateIssueForm{}), repo.CompareAndPullRequestPost) + + m.Group("", func() { + m.Combo("/edit/*").Get(repo.EditFile). + Post(bindIgnErr(auth.EditRepoFileForm{}), repo.EditFilePost) + m.Combo("/new/*").Get(repo.EditNewFile). + Post(bindIgnErr(auth.EditRepoFileForm{}), repo.EditNewFilePost) + m.Post("/preview/*", bindIgnErr(auth.EditPreviewDiffForm{}), repo.DiffPreviewPost) + m.Combo("/upload/*").Get(repo.UploadFile). + Post(bindIgnErr(auth.UploadRepoFileForm{}), repo.UploadFilePost) + m.Post("/delete/*", bindIgnErr(auth.DeleteRepoFileForm{}), repo.DeleteFilePost) + m.Post("/branches", bindIgnErr(auth.NewBranchForm{}), repo.NewBranchPost) + m.Post("/upload-file", repo.UploadFileToServer) + m.Post("/upload-remove", bindIgnErr(auth.UploadRemoveFileForm{}), repo.UploadRemoveFileFromServer) + }, context.RepoRef(), context.RepoAssignment(), reqRepoWriter) }, reqSignIn, context.RepoAssignment(), repo.MustBeNotBare) m.Group("/:username/:reponame", func() { diff --git a/conf/app.ini b/conf/app.ini index d221e3ba9..29b4ae77d 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -19,6 +19,24 @@ FORCE_PRIVATE = false MAX_CREATION_LIMIT = -1 ; Patch test queue length, make it as large as possible PULL_REQUEST_QUEUE_LENGTH = 10000 +; List of file extensions that should have line wraps in the CodeMirror editor +; Separate extensions with a comma. To line wrap files w/o extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,,.md,.markdown,.mdown,.mkd +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate values by commas. Preview tab in edit mode won't show if the file extension doesn't match +PREVIEW_TAB_APIS = markdown + +[upload] +; Whether uploads are enabled. Defaults to `true` +ENABLE_UPLOADS = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gogs restart) +UPLOAD_TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +UPLOAD_ALLOWED_TYPES = +; Max size of each file in MB. Defaults to 32MB +UPLOAD_FILE_MAX_SIZE = 32 +; Max number of files per upload. Defaults to 10 +UPLOAD_MAX_FILES = 10 [ui] ; Number of repositories that are showed in one explore page @@ -50,6 +68,9 @@ ENABLE_HARD_LINE_BREAK = false ; List of custom URL-Schemes that are allowed as links when rendering Markdown ; for example git,magnet CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate extensions with a comma. To render files w/o extension as markdown, just put a comma +MD_FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd [server] PROTOCOL = http diff --git a/models/error.go b/models/error.go index 69b296247..6c02e9c85 100644 --- a/models/error.go +++ b/models/error.go @@ -404,6 +404,19 @@ func (err ErrReleaseNotExist) Error() string { return fmt.Sprintf("Release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName) } +type ErrRepoFileAlreadyExist struct { + FileName string +} + +func IsErrRepoFileAlreadyExist(err error) bool { + _, ok := err.(ErrRepoFileAlreadyExist) + return ok +} + +func (err ErrRepoFileAlreadyExist) Error() string { + return fmt.Sprintf("Repo file already exists [file name: %s]", err.FileName) +} + // __________ .__ // \______ \____________ ____ ____ | |__ // | | _/\_ __ \__ \ / \_/ ___\| | \ @@ -614,3 +627,27 @@ func IsErrTeamAlreadyExist(err error) bool { func (err ErrTeamAlreadyExist) Error() string { return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name) } + +// ____ ___ .__ .___ +// | | \______ | | _________ __| _/ +// | | /\____ \| | / _ \__ \ / __ | +// | | / | |_> > |_( <_> ) __ \_/ /_/ | +// |______/ | __/|____/\____(____ /\____ | +// |__| \/ \/ +// + +type ErrUploadNotExist struct { + ID int64 + UUID string + UserID int64 + RepoID int64 +} + +func IsErrUploadNotExist(err error) bool { + _, ok := err.(ErrAttachmentNotExist) + return ok +} + +func (err ErrUploadNotExist) Error() string { + return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID) +} diff --git a/models/pull.go b/models/pull.go index 6380bbbd2..deb04e31f 100644 --- a/models/pull.go +++ b/models/pull.go @@ -287,7 +287,7 @@ func (pr *PullRequest) testPatch() (err error) { log.Trace("PullRequest[%d].testPatch (patchPath): %s", pr.ID, patchPath) - if err := pr.BaseRepo.UpdateLocalCopy(); err != nil { + if err := pr.BaseRepo.UpdateLocalCopy(pr.BaseRepo.DefaultBranch); err != nil { return fmt.Errorf("UpdateLocalCopy: %v", err) } diff --git a/models/repo.go b/models/repo.go index f8782db71..aa06570f5 100644 --- a/models/repo.go +++ b/models/repo.go @@ -29,12 +29,15 @@ import ( git "github.com/gogits/git-module" api "github.com/gogits/go-gogs-client" + gouuid "github.com/satori/go.uuid" "github.com/gogits/gogs/modules/bindata" "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/markdown" "github.com/gogits/gogs/modules/process" "github.com/gogits/gogs/modules/setting" + "mime/multipart" + "io" ) const ( @@ -406,16 +409,25 @@ func (repo *Repository) LocalCopyPath() string { return path.Join(setting.AppDataPath, "tmp/local", com.ToStr(repo.ID)) } -func updateLocalCopy(repoPath, localPath string) error { +func updateLocalCopy(repoPath, localPath, branch string) error { if !com.IsExist(localPath) { if err := git.Clone(repoPath, localPath, git.CloneRepoOptions{ Timeout: time.Duration(setting.Git.Timeout.Clone) * time.Second, + Branch: branch, }); err != nil { return fmt.Errorf("Clone: %v", err) } } else { + if err := git.Checkout(localPath, git.CheckoutOptions{ + Branch: branch, + Timeout: time.Duration(setting.Git.Timeout.Pull) * time.Second, + }); err != nil { + return fmt.Errorf("Checkout: %v", err) + } if err := git.Pull(localPath, git.PullRemoteOptions{ - All: true, + All: false, + Remote: "origin", + Branch: branch, Timeout: time.Duration(setting.Git.Timeout.Pull) * time.Second, }); err != nil { return fmt.Errorf("Pull: %v", err) @@ -425,8 +437,8 @@ func updateLocalCopy(repoPath, localPath string) error { } // UpdateLocalCopy makes sure the local copy of repository is up-to-date. -func (repo *Repository) UpdateLocalCopy() error { - return updateLocalCopy(repo.RepoPath(), repo.LocalCopyPath()) +func (repo *Repository) UpdateLocalCopy(branch string) error { + return updateLocalCopy(repo.RepoPath(), repo.LocalCopyPath(), branch) } // PatchPath returns corresponding patch file path of repository by given issue ID. @@ -2099,3 +2111,402 @@ func (repo *Repository) GetForks() ([]*Repository, error) { forks := make([]*Repository, 0, repo.NumForks) return forks, x.Find(&forks, &Repository{ForkID: repo.ID}) } + +// ___________ .___.__ __ ___________.__.__ +// \_ _____/ __| _/|__|/ |_ \_ _____/|__| | ____ +// | __)_ / __ | | \ __\ | __) | | | _/ __ \ +// | \/ /_/ | | || | | \ | | |_\ ___/ +// /_______ /\____ | |__||__| \___ / |__|____/\___ > +// \/ \/ \/ \/ + +var repoWorkingPool = &workingPool{ + pool: make(map[string]*sync.Mutex), + count: make(map[string]int), +} + +func (repo *Repository) LocalRepoPath() string { + return path.Join(setting.AppDataPath, "tmp/local-repo", com.ToStr(repo.ID)) +} + +// UpdateLocalRepo makes sure the local copy of repository is up-to-date. +func (repo *Repository) UpdateLocalRepo(branchName string) error { + return updateLocalCopy(repo.RepoPath(), repo.LocalRepoPath(), branchName) +} + +// DiscardLocalRepoChanges makes sure the local copy of repository is the same as the source +func (repo *Repository) DiscardLocalRepoChanges(branchName string) error { + return discardLocalRepoChanges(repo.LocalRepoPath(), branchName) +} + +// discardLocalRepoChanges discards local commits make sure +// it is even to remote branch when local copy exists. +func discardLocalRepoChanges(localPath string, branch string) error { + if !com.IsExist(localPath) { + return nil + } + // No need to check if nothing in the repository. + if !git.IsBranchExist(localPath, branch) { + return nil + } + if err := git.ResetHEAD(localPath, true, "origin/"+branch); err != nil { + return fmt.Errorf("ResetHEAD: %v", err) + } + return nil +} + +// CheckoutNewBranch checks out a new branch from the given branch name +func (repo *Repository) CheckoutNewBranch(oldBranchName, newBranchName string) error { + return checkoutNewBranch(repo.RepoPath(), repo.LocalRepoPath(), oldBranchName, newBranchName) +} + +func checkoutNewBranch(repoPath, localPath, oldBranch, newBranch string) error { + if !com.IsExist(localPath) { + if error := updateLocalCopy(repoPath, localPath, oldBranch); error != nil { + return error + } + } + if err := git.Checkout(localPath, git.CheckoutOptions { + Branch: newBranch, + OldBranch: oldBranch, + Timeout: time.Duration(setting.Git.Timeout.Pull) * time.Second, + }); err != nil { + return fmt.Errorf("Checkout New Branch: %v", err) + } + return nil +} + +// updateRepoFile adds new file to repository. +func (repo *Repository) UpdateRepoFile(doer *User, oldBranchName, branchName, oldTreeName, treeName, content, message string, isNewFile bool) (err error) { + repoWorkingPool.CheckIn(com.ToStr(repo.ID)) + defer repoWorkingPool.CheckOut(com.ToStr(repo.ID)) + + if err = repo.DiscardLocalRepoChanges(oldBranchName); err != nil { + return fmt.Errorf("discardLocalRepoChanges: %s - %v", oldBranchName, err) + } else if err = repo.UpdateLocalRepo(oldBranchName); err != nil { + return fmt.Errorf("UpdateLocalRepo: %s - %v", oldBranchName, err) + } + + if( oldBranchName != branchName ){ + if err := repo.CheckoutNewBranch(oldBranchName, branchName); err != nil { + return fmt.Errorf("CheckoutNewBranch: %s - %s: %v", oldBranchName, branchName, err) + } + } + + localPath := repo.LocalRepoPath() + filePath := path.Join(localPath, treeName) + + if len(message) == 0 { + if isNewFile { + message = "Add '" + treeName + "'" + } else { + message = "Update '" + treeName + "'" + } + } + + if ! com.IsExist(filepath.Dir(filePath)) { + os.MkdirAll(filepath.Dir(filePath), os.ModePerm) + } + + // If new file, make sure it doesn't exist; if old file, move if file name change + if isNewFile { + if com.IsExist(filePath) { + return ErrRepoFileAlreadyExist{filePath} + } + } else if oldTreeName!="" && treeName!="" && treeName != oldTreeName { + if err = git.MoveFile(localPath, oldTreeName, treeName); err != nil { + return fmt.Errorf("MoveFile: %v", err) + } + } + + if err = ioutil.WriteFile(filePath, []byte(content), 0666); err != nil { + return fmt.Errorf("WriteFile: %v", err) + } + + if err = git.AddChanges(localPath, true); err != nil { + return fmt.Errorf("AddChanges: %v", err) + } else if err = git.CommitChanges(localPath, message, doer.NewGitSig()); err != nil { + return fmt.Errorf("CommitChanges: %v", err) + } else if err = git.Push(localPath, "origin", branchName); err != nil { + return fmt.Errorf("Push: %v", err) + } + + return nil +} + +func (repo *Repository) GetPreviewDiff(repoPath, branchName, treeName, text string, maxlines, maxchars, maxfiles int) (diff *Diff, err error) { + repoWorkingPool.CheckIn(com.ToStr(repo.ID)) + defer repoWorkingPool.CheckOut(com.ToStr(repo.ID)) + + if err = repo.DiscardLocalRepoChanges(branchName); err != nil { + return nil, fmt.Errorf("discardLocalRepoChanges: %s - %v", branchName, err) + } else if err = repo.UpdateLocalRepo(branchName); err != nil { + return nil, fmt.Errorf("UpdateLocalRepo: %s - %v", branchName, err) + } + + localPath := repo.LocalRepoPath() + filePath := path.Join(localPath, treeName) + + if ! com.IsExist(filepath.Dir(filePath)) { + os.MkdirAll(filepath.Dir(filePath), os.ModePerm) + } + + if err = ioutil.WriteFile(filePath, []byte(text), 0666); err != nil { + return nil, fmt.Errorf("WriteFile: %v", err) + } + + var cmd *exec.Cmd + cmd = exec.Command("git", "diff", treeName) + cmd.Dir = localPath + cmd.Stderr = os.Stderr + + stdout, err := cmd.StdoutPipe() + if err != nil { + return nil, fmt.Errorf("StdoutPipe: %v", err) + } + + if err = cmd.Start(); err != nil { + return nil, fmt.Errorf("Start: %v", err) + } + + pid := process.Add(fmt.Sprintf("GetDiffRange (%s)", repoPath), cmd) + defer process.Remove(pid) + + diff, err = ParsePatch(maxlines, maxchars, maxfiles, stdout) + if err != nil { + return nil, fmt.Errorf("ParsePatch: %v", err) + } + + if err = cmd.Wait(); err != nil { + return nil, fmt.Errorf("Wait: %v", err) + } + + return diff, nil +} + +// ________ .__ __ ___________.__.__ +// \______ \ ____ | | _____/ |_ ____ \_ _____/|__| | ____ +// | | \_/ __ \| | _/ __ \ __\/ __ \ | __) | | | _/ __ \ +// | ` \ ___/| |_\ ___/| | \ ___/ | \ | | |_\ ___/ +// /_______ /\___ >____/\___ >__| \___ > \___ / |__|____/\___ > +// \/ \/ \/ \/ \/ \/ +// + +func (repo *Repository) DeleteRepoFile(doer *User, branch, treeName, message string) (err error) { + repoWorkingPool.CheckIn(com.ToStr(repo.ID)) + defer repoWorkingPool.CheckOut(com.ToStr(repo.ID)) + + localPath := repo.LocalRepoPath() + if err = discardLocalRepoChanges(localPath, branch); err != nil { + return fmt.Errorf("discardLocalRepoChanges: %v", err) + } else if err = repo.UpdateLocalRepo(branch); err != nil { + return fmt.Errorf("UpdateLocalRepo: %v", err) + } + + filePath := path.Join(localPath, treeName) + os.Remove(filePath) + + if len(message) == 0 { + message = "Delete file '" + treeName + "'" + } + + if err = git.AddChanges(localPath, true); err != nil { + return fmt.Errorf("AddChanges: %v", err) + } else if err = git.CommitChanges(localPath, message, doer.NewGitSig()); err != nil { + return fmt.Errorf("CommitChanges: %v", err) + } else if err = git.Push(localPath, "origin", branch); err != nil { + return fmt.Errorf("Push: %v", err) + } + + return nil +} + +// ____ ___ .__ .___ ___________.___.__ +// | | \______ | | _________ __| _/ \_ _____/| | | ____ ______ +// | | /\____ \| | / _ \__ \ / __ | | __) | | | _/ __ \ / ___/ +// | | / | |_> > |_( <_> ) __ \_/ /_/ | | \ | | |_\ ___/ \___ \ +// |______/ | __/|____/\____(____ /\____ | \___ / |___|____/\___ >____ > +// |__| \/ \/ \/ \/ \/ +// + +// uploadRepoFiles uploads new files to repository. +func (repo *Repository) UploadRepoFiles(doer *User, oldBranchName, branchName, treeName, message string, uuids []string) (err error) { + repoWorkingPool.CheckIn(com.ToStr(repo.ID)) + defer repoWorkingPool.CheckOut(com.ToStr(repo.ID)) + + localPath := repo.LocalRepoPath() + + if err = discardLocalRepoChanges(localPath, oldBranchName); err != nil { + return fmt.Errorf("discardLocalRepoChanges: %v", err) + } else if err = repo.UpdateLocalRepo(oldBranchName); err != nil { + return fmt.Errorf("UpdateLocalRepo: %v", err) + } + + if( oldBranchName != branchName ){ + repo.CheckoutNewBranch(oldBranchName, branchName) + } + + dirPath := path.Join(localPath, treeName) + + if ! com.IsExist(dirPath) { + os.MkdirAll(dirPath, os.ModePerm) + } + + // Copy uploaded files into repository. + for _, uuid := range uuids { + upload, err := getUpload(uuid, doer.Id, repo.ID) + if err != nil { + if IsErrUploadNotExist(err) { + continue + } + return fmt.Errorf("getUpload[%s]: %v", uuid, err) + } + uuidPath := upload.LocalPath() + filePath := dirPath+"/"+upload.Name + if err := os.Rename(uuidPath, filePath); err != nil { + DeleteUpload(upload, true); + return fmt.Errorf("Rename[%s -> %s]: %v", uuidPath, filePath, err) + } + DeleteUpload(upload, false); // false because we have moved the file + } + + if len(message) == 0 { + message = "Add files to '" + treeName + "'" + } + + if err = git.AddChanges(localPath, true); err != nil { + return fmt.Errorf("AddChanges: %v", err) + } else if err = git.CommitChanges(localPath, message, doer.NewGitSig()); err != nil { + return fmt.Errorf("CommitChanges: %v", err) + } else if err = git.Push(localPath, "origin", branchName); err != nil { + return fmt.Errorf("Push: %v", err) + } + + return nil +} + +// Upload represent a uploaded file to a repo to be deleted when moved +type Upload struct { + ID int64 `xorm:"pk autoincr"` + UUID string `xorm:"uuid UNIQUE"` + UID int64 `xorm:"INDEX"` + RepoID int64 `xorm:"INDEX"` + Name string + Created time.Time `xorm:"-"` + CreatedUnix int64 +} + +func (u *Upload) BeforeInsert() { + u.CreatedUnix = time.Now().UTC().Unix() +} + +func (u *Upload) AfterSet(colName string, _ xorm.Cell) { + switch colName { + case "created_unix": + u.Created = time.Unix(u.CreatedUnix, 0).Local() + } +} + +// UploadLocalPath returns where uploads is stored in local file system based on given UUID. +func UploadLocalPath(uuid string) string { + return path.Join(setting.UploadTempPath, uuid[0:1], uuid[1:2], uuid) +} + +// LocalPath returns where uploads are temporarily stored in local file system. +func (upload *Upload) LocalPath() string { + return UploadLocalPath(upload.UUID) +} + +// NewUpload creates a new upload object. +func NewUpload(name string, buf []byte, file multipart.File, userId, repoId int64) (_ *Upload, err error) { + up := &Upload{ + UUID: gouuid.NewV4().String(), + Name: name, + UID: userId, + RepoID: repoId, + } + + if err = os.MkdirAll(path.Dir(up.LocalPath()), os.ModePerm); err != nil { + return nil, fmt.Errorf("MkdirAll: %v", err) + } + + fw, err := os.Create(up.LocalPath()) + if err != nil { + return nil, fmt.Errorf("Create: %v", err) + } + defer fw.Close() + + if _, err = fw.Write(buf); err != nil { + return nil, fmt.Errorf("Write: %v", err) + } else if _, err = io.Copy(fw, file); err != nil { + return nil, fmt.Errorf("Copy: %v", err) + } + + sess := x.NewSession() + defer sessionRelease(sess) + if err := sess.Begin(); err != nil { + return nil, err + } + if _, err := sess.Insert(up); err != nil { + return nil, err + } + + return up, sess.Commit() +} + +// RemoveUpload removes the file by UUID +func RemoveUpload(uuid string, userId, repoId int64) (err error) { + sess := x.NewSession() + defer sessionRelease(sess) + if err := sess.Begin(); err != nil { + return err + } + upload, err := getUpload(uuid, userId, repoId) + if err != nil { + return fmt.Errorf("getUpload[%s]: %v", uuid, err) + } + + if err := DeleteUpload(upload, true); err != nil { + return fmt.Errorf("DeleteUpload[%s]: %v", uuid, err) + } + + return nil +} + +func getUpload(uuid string, userId, repoId int64) (*Upload, error) { + up := &Upload{UUID: uuid, UID: userId, RepoID: repoId} + has, err := x.Get(up) + if err != nil { + return nil, err + } else if !has { + return nil, ErrUploadNotExist{0, uuid, userId, repoId} + } + return up, nil +} + +// GetUpload returns Upload by given UUID. +func GetUpload(uuid string, userId, repoId int64) (*Upload, error) { + return getUpload(uuid, userId, repoId) +} + +// DeleteUpload deletes the given upload +func DeleteUpload(u *Upload, remove bool) error { + _, err := DeleteUploads([]*Upload{u}, remove) + return err +} + +// DeleteUploads deletes the given uploads +func DeleteUploads(uploads []*Upload, remove bool) (int, error) { + for i, u := range uploads { + if remove { + if err := os.Remove(u.LocalPath()); err != nil { + return i, err + } + } + + if _, err := x.Delete(u); err != nil { + return i, err + } + } + + return len(uploads), nil +} diff --git a/models/wiki.go b/models/wiki.go index 39fb96dd5..a08edd840 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -115,7 +115,7 @@ func (repo *Repository) LocalWikiPath() string { // UpdateLocalWiki makes sure the local copy of repository wiki is up-to-date. func (repo *Repository) UpdateLocalWiki() error { - return updateLocalCopy(repo.WikiPath(), repo.LocalWikiPath()) + return updateLocalCopy(repo.WikiPath(), repo.LocalWikiPath(), repo.DefaultBranch) } // discardLocalWikiChanges discards local commits make sure diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go index 13e53497d..7888de70b 100644 --- a/modules/auth/repo_form.go +++ b/modules/auth/repo_form.go @@ -268,3 +268,92 @@ type NewWikiForm struct { func (f *NewWikiForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { return validate(errs, ctx.Data, f, ctx.Locale) } + +// ___________ .___.__ __ +// \_ _____/ __| _/|__|/ |_ +// | __)_ / __ | | \ __\ +// | \/ /_/ | | || | +// /_______ /\____ | |__||__| +// \/ \/ + +type EditRepoFileForm struct { + TreeName string `binding:"Required;MaxSize(500)"` + Content string `binding:"Required"` + CommitSummary string `binding:"MaxSize(100)` + CommitMessage string + CommitChoice string `binding:"Required;MaxSize(50)"` + NewBranchName string `binding:"AlphaDashDot;MaxSize(100)"` + LastCommit string +} + +func (f *EditRepoFileForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} + +type EditPreviewDiffForm struct { + Content string +} + +func (f *EditPreviewDiffForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} + +// ____ ___ .__ .___ +// | | \______ | | _________ __| _/ +// | | /\____ \| | / _ \__ \ / __ | +// | | / | |_> > |_( <_> ) __ \_/ /_/ | +// |______/ | __/|____/\____(____ /\____ | +// |__| \/ \/ +// + +type UploadRepoFileForm struct { + TreeName string `binding:MaxSize(500)"` + CommitSummary string `binding:"MaxSize(100)` + CommitMessage string + CommitChoice string `binding:"Required;MaxSize(50)"` + NewBranchName string `binding:"AlphaDashDot;MaxSize(100)"` + Files []string +} + +func (f *UploadRepoFileForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} + +type UploadRemoveFileForm struct { + File string `binding:"Required;MaxSize(50)"` +} + +func (f *UploadRemoveFileForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} + +// ________ .__ __ +// \______ \ ____ | | _____/ |_ ____ +// | | \_/ __ \| | _/ __ \ __\/ __ \ +// | ` \ ___/| |_\ ___/| | \ ___/ +// /_______ /\___ >____/\___ >__| \___ > +// \/ \/ \/ \/ + +type DeleteRepoFileForm struct { + CommitSummary string `binding:"MaxSize(100)` +} + +func (f *DeleteRepoFileForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} + + +// __________ .__ +// \______ \____________ ____ ____ | |__ +// | | _/\_ __ \__ \ / \_/ ___\| | \ +// | | \ | | \// __ \| | \ \___| Y \ +// |______ / |__| (____ /___| /\___ >___| / +// \/ \/ \/ \/ \/ +type NewBranchForm struct { + OldBranchName string `binding:"Required;MaxSize(100)"` + BranchName string `binding:"Required;MaxSize(100)"` +} + +func (f *NewBranchForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { + return validate(errs, ctx.Data, f, ctx.Locale) +} diff --git a/modules/bindata/bindata.go b/modules/bindata/bindata.go index 7eae03dbc..779a5535f 100644 --- a/modules/bindata/bindata.go +++ b/modules/bindata/bindata.go @@ -228,11 +228,11 @@ import ( "compress/gzip" "fmt" "io" - "strings" - "os" - "time" "io/ioutil" + "os" "path/filepath" + "strings" + "time" ) func bindataRead(data []byte, name string) ([]byte, error) { @@ -261,9 +261,9 @@ type asset struct { } type bindataFileInfo struct { - name string - size int64 - mode os.FileMode + name string + size int64 + mode os.FileMode modTime time.Time } @@ -286,7 +286,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x5a\x5b\x6f\xe3\x48\x76\x7e\xe7\xaf\xa8\xf1\x64\xd2\xee\x80\x92\x7c\x69\xbb\x3d\x9e\xf5\x66\x64\x89\xb2\xb5\xad\xdb\x92\x72\xf7\xf4\x34\x0c\x9a\x16\x4b\x12\xc7\x14\xa9\x61\x51\x76\x7b\x10\x04\xbb\xc8\x43\x2e\x40\x90\x87\x04\x09\x02\x04\x41\xf2\x90\x2c\xb0\xb9\xed\x22\x2f\x3b\xc9\x24\x2f\x93\xbc\xf7\xfc\x87\xcd\x6c\xf6\x69\xff\x42\xbe\x73\xaa\x28\x51\x6e\x8f\x37\x0b\x24\x73\xb1\x8a\xc5\xaa\x53\x55\xe7\xfa\x9d\x53\x7c\x57\xf4\x9c\xe7\x8e\x2b\xf8\x4f\xb7\xdf\x6c\xb7\x5e\x8a\xe1\x69\xdb\x13\xad\x76\xc7\xb1\xde\x15\x83\x8e\x53\xf7\x1c\xd1\xad\x3f\x73\x44\xe3\xb4\xde\x3b\x71\x3c\xd1\xef\x89\x46\xdf\x75\x1d\x6f\xd0\xef\x35\xdb\xbd\x13\xd1\x38\xf3\x86\xfd\x2e\x3a\x7b\xad\xf6\x89\x9e\x69\x7d\x20\xea\xf3\xb9\x48\x82\x99\x14\xf9\x34\xc8\x85\x9a\xa6\x37\x4a\xa4\x89\x90\xd7\x32\xbb\x15\xf3\x60\x82\x17\x51\x1e\x4b\xab\x3e\x18\xf8\xbd\x7a\xd7\x11\x47\xe2\x24\x9d\xa8\x43\xfc\x15\x27\x51\x2e\x3c\x99\x5d\x47\x23\x09\x4a\x8d\x69\x90\x60\x38\xfa\xa2\xb1\xb8\x4d\x17\x22\x5b\x24\x22\x4e\x47\x41\x1c\xdf\x5a\xee\x59\xcf\x3f\xf3\xb0\xfb\x23\x31\x89\x72\x8c\x76\xa2\x7c\x2a\x33\xb1\x11\xca\xeb\x0d\x5b\x6c\xcc\xb3\x34\xdc\x10\x29\x3a\x72\xa9\x72\xf4\x84\x72\x1c\x2c\x62\xd0\x52\x7a\x0c\x53\xc0\xd1\x69\x03\x78\xb6\xac\x57\x99\x9c\xa7\x2a\xca\xd3\xec\xf6\xdc\x72\xfb\xfd\xa1\x38\xb2\xbc\x86\xdb\x1e\x0c\xfd\xe1\xcb\x01\x0d\xbb\x0c\xd4\x14\x2b\x35\x0d\xa5\x7a\xcf\x6b\x8b\xd1\x34\xc8\x94\xcc\x2d\x7a\xf0\xc1\x2a\xd7\x73\x68\xe2\x07\xa2\x95\x66\x23\x69\x8e\x9d\xc8\x1b\xb1\xa2\x2e\xf2\x54\x5c\x4a\x31\xcf\xa2\xeb\x20\x97\x56\xab\xef\x36\x1c\x7f\xe0\xb6\x9f\xd7\x87\xb4\xca\x38\x88\x15\x1d\xff\x24\x4e\x2f\x83\x58\xcc\x82\xd7\xd1\x6c\x31\x13\xa3\x4c\x06\x79\x04\x4e\xc6\xd1\x0c\x2c\x49\xc7\x65\x8a\x73\x9c\x7c\xa1\x64\x66\x8b\xca\xb6\x98\xc9\x20\x51\x22\x49\xf5\x48\xab\x5b\xff\xc8\x6f\xb8\x4e\x7d\xd8\xee\xf7\xfc\x4e\xbb\xdb\xc6\xfe\x30\x0c\x2b\x0c\x82\x7c\x34\x15\xc4\x1f\xf1\xe9\x42\x2e\xa4\x88\x65\x32\xc9\xa7\x36\xd6\xbc\x62\xbe\x07\x4a\xc4\x41\x06\x19\xa0\x81\xb5\x54\x74\x09\xc1\x0d\xce\x3a\x1d\xdf\x75\xbe\x7b\xe6\x78\x43\x1f\x7f\xcf\x1c\xbf\xe3\xf4\x4e\x86\xa7\x20\xbb\xbd\x85\x7f\xc0\xca\x45\x74\x0e\xfa\xbd\xc5\xec\x12\x1b\x2b\x6f\x35\x92\x4a\x2b\x46\x90\x49\x56\x0e\x19\x8a\x28\x81\x82\x80\x55\xaf\xe7\x71\x8a\x5e\xd2\x11\xcb\xf9\x68\xd0\xe9\xbb\x60\x4b\xfd\x04\xaa\xe6\xf7\xce\xba\xa0\xbe\xb3\xb5\x46\x34\x52\x6a\xf1\xcd\xe4\x98\x4c\xdb\xf3\xce\xee\x10\xd9\x5e\x27\xb2\x64\x6f\x3a\x03\xb3\xd4\x1d\x22\xc1\x28\x8f\xae\xa3\xfc\x56\x8c\xa5\x0c\xad\x96\xe3\x34\x7d\x66\x67\xbf\x0b\x36\x1a\x82\x7b\xa0\xf7\x3c\x88\xc1\x3e\x90\xbb\x80\x12\xce\x64\x65\x94\xe2\x28\x17\x90\x44\x1e\x88\x3c\x98\xd8\x24\x9c\x50\x5c\xde\x8a\x7a\x12\x66\x69\x14\x8a\x6f\x63\x5e\x95\x76\x52\x4f\xb0\xd6\x75\x10\xa3\x8f\x27\x41\x68\xe0\xfd\x46\x82\xd5\xb5\xfa\x86\x91\x0a\xc0\xf6\x0d\x71\x13\xc5\xb1\x98\x06\xd7\x64\x59\x72\xa9\xce\x2a\xbf\x8d\x49\x5b\xba\xc4\xba\x28\x19\xa7\x87\x62\x9a\xe7\x73\x75\x58\xab\x41\xab\x65\x9c\x42\x35\x54\x75\x92\xa6\x93\x58\x56\x71\xc8\xda\x8d\xbc\xac\x2d\xe6\x21\x34\x4f\xd5\x76\xb6\xb6\x9f\xd4\xb6\xb7\x6b\xde\x62\x3e\x4f\xb3\xbc\x32\x4e\xb3\x4a\xe9\x00\x95\x28\xa9\x34\xa6\x59\x8a\xe7\xdd\xf7\xf9\xa5\xd9\xbe\x35\x3c\x75\xba\x0e\xd8\x00\x19\xf9\x5d\x67\x58\xf7\x87\xf5\x13\xb0\xe2\xe2\xdd\xf1\x78\x6f\xf7\xc9\xee\x05\x6d\x28\x78\x2d\x54\xf4\x19\x73\x65\x1c\xc5\x24\x28\x56\x7b\x9c\x67\x1e\x07\xb7\x60\xc7\xa6\x39\x83\x22\x9b\x3c\xe8\x46\xc7\x8f\x59\x57\x9b\x6d\x6f\xd0\xa9\xbf\xf4\xc9\xa1\xf8\x5e\xfb\x63\xb2\x89\x83\xdd\x83\x83\xfd\xad\x03\xd6\xac\x6a\x10\xce\xa2\x64\x5d\xbf\x48\xf7\x1f\xd6\x04\xf2\x15\xeb\x8a\xb0\xb7\xf5\xb6\x8a\x3e\x48\xc2\x75\x06\xfd\x07\x49\x24\x69\x0e\xcf\xf5\x30\x91\x5e\x7f\xd8\x6e\xdc\xd5\xeb\xbd\x35\x32\x69\x36\x09\x92\xe8\x33\x6d\xed\x0f\xd1\xea\xbb\x27\x6f\xed\xc7\x7a\x35\x0b\xb2\xab\x30\xbd\x61\x0e\x39\x09\xe9\x0e\xb4\x26\x0b\xa1\x58\x98\x77\x09\x2f\x72\x05\x53\xcb\x65\xa2\x40\xde\x72\x7a\xf5\x63\xb0\x19\x7e\xab\x09\xdf\xd0\x73\xfc\x63\x78\x8a\x67\x25\x2f\xd4\x89\x14\x3b\x9b\xd1\x42\xe5\xe9\x4c\x9c\xb9\x9d\x8a\x37\x22\x15\x29\x1d\x13\x0e\x99\xf7\x46\xee\x22\x4a\xae\x94\xb8\x99\xca\x04\x0c\x4d\x42\x99\x45\xc9\x04\xaa\xa0\x77\x04\x72\x50\x22\xac\x1e\xcc\xe6\xd8\x15\xfc\xb6\x3d\x0b\x26\x09\xbc\xa7\x0e\x25\x3e\xa8\xfb\x5e\x83\x74\xcb\x83\x0f\xb5\x5e\x41\xaa\xf0\x9f\xe7\xd6\xc0\xed\x0f\xfb\xd0\x36\xec\x8b\x94\xdb\x6a\xf6\xbb\xf5\x76\x0f\x4f\x1c\x0d\xa6\xa9\xca\xd9\x61\xd3\x7c\x74\xbe\xb7\x59\x8c\x7f\x4c\x66\xf0\xde\xa6\x1e\x8e\x87\xf7\x36\x4f\x87\xc3\x81\x3f\xe8\xbb\xc3\xc7\xaa\x66\xf1\x43\xbd\xd9\xa4\x20\xb2\x55\xe5\x7f\xad\xe5\x00\xf4\xed\x92\x33\x03\x0b\x68\x11\xb1\xd9\xec\x7e\xfc\x98\xce\xcf\x67\xa0\x90\x25\x6e\xd2\xec\x8a\xf4\x6e\x53\x2d\xe0\x47\x71\x7a\xcf\x3b\x15\xda\xb6\x1e\xc3\x75\x40\x15\x14\x1d\x1f\x16\x27\x94\x8e\x6a\x55\x90\x6b\x27\x62\x86\x1d\x8b\x51\xa0\xc0\x44\x8a\x6b\x61\x4a\xaa\x83\x28\x01\x1e\xc2\x48\x46\x3a\xee\x95\xad\xfc\x9a\xfc\x0b\x4d\xae\xc7\x39\x94\x84\xfc\x7f\x12\xdf\x9a\xb8\x98\xf1\xba\x9a\x57\x20\x14\x4a\xb2\x27\x22\x48\x14\x14\x85\x62\x6c\x8d\xce\xc5\x2f\xab\x56\xa7\xdf\xa8\xc3\x83\x3f\xc0\xb0\x25\x63\xde\xe6\x19\xc2\x9f\x76\x48\xbc\xe8\x18\x31\x69\x01\x0d\x60\x81\xd3\x92\xc1\x75\x10\xc5\xf4\xda\x82\x19\xb3\x6a\xd1\xb0\x95\x3a\xbd\x98\x4a\x0e\xd3\x30\x58\x71\xb9\x88\xe2\x1c\xfa\x5c\xda\x7d\x4a\x07\xc8\xab\x96\x37\xac\xbb\x43\x9a\xea\xc3\x6c\x9f\x73\x94\x2f\x28\x34\xd3\x59\x80\x49\x1a\x62\xb0\x47\x41\xe0\x48\x95\x36\x8d\x51\x4c\xc6\x81\x53\x59\x34\x77\xa9\x26\x2b\x15\xa0\xa8\x07\x4f\x27\x12\x6d\x6d\xbf\x84\x80\xd1\x83\x9d\x9d\x3b\xd3\xee\xd9\x79\x0c\x3b\x81\x4d\x41\x2e\x3c\xb3\xd3\xf6\x86\x4e\xaf\x20\xf0\xde\x66\x41\x8d\x77\xe0\xa6\xe0\xd4\x3c\xc8\xa7\x64\x58\x44\x23\x8c\x32\x39\xa2\x40\xbe\x06\x53\x1e\xfd\x76\xad\xaa\xd4\xf4\x91\x8d\xf5\x72\x56\x14\xed\xfd\x53\xe6\xde\xa3\xda\x14\x8e\xb9\x06\x23\xd2\xa3\xaa\xbc\x2e\x4b\x75\x50\xa7\x60\xcc\xa2\x32\x74\x59\xad\x08\x40\x60\xba\x9c\xc1\xd7\x07\xe8\xd3\x5e\x99\x45\xc7\x18\x60\xbe\xb8\x8c\xa3\xd1\x95\xb8\x92\xb7\x58\x81\x34\x17\x74\x2b\x78\x9a\xc8\xc4\x06\xb5\xd2\xd6\xd4\x2d\x4e\x3b\x2b\xd1\x5a\x9e\x40\x6f\xe3\x99\xf3\xd2\x1f\x12\x3e\x58\x6e\x65\x40\xc7\xc5\x2e\x4a\x24\xd7\xce\xba\xea\x7f\x24\x82\x04\xde\x4a\x12\x78\x94\x08\x79\xe3\x08\x8f\x29\x38\x70\x33\x8d\x60\x66\x24\x1f\x3a\x0d\x9c\xce\x72\xad\x13\x62\x35\xaf\x54\xa2\xcf\xa6\x16\x46\x23\x3a\xf4\x8d\x51\x3b\xb6\x2e\x89\x33\x22\x82\x70\xd8\xa7\xb3\x72\x94\xba\x01\x7c\x44\x04\xce\x32\xa9\xe6\x29\xa6\xe1\xf4\xf9\xed\x5c\x5a\xdd\x76\xaf\xdd\x3d\xeb\xf2\x89\x28\x18\x01\xe3\x39\x8d\xb2\x83\x2c\xcc\xa1\xd1\xec\x11\xda\xa3\x70\x5e\xa0\xcf\x19\xcc\xcd\xea\xb7\x5a\xec\x58\x0d\xd4\xd4\xd3\x0a\xe3\x70\xfb\x67\x43\xc4\xa5\x4e\xff\xa4\x0c\xfc\x64\x22\x33\xda\x35\x78\x8c\x40\x8e\x9e\x5f\x13\xd5\xda\x84\x3c\xce\x48\x42\x09\x2b\xa3\xe0\x28\xcf\x80\x37\x2a\xe1\x22\xe3\x28\x71\x74\xf0\x74\x7f\x6b\xba\x35\xdb\x52\xa2\x42\xde\xf0\x68\x76\x4b\x3f\x55\xe3\x69\x29\xee\x5b\x1f\x80\x4e\x3f\x13\x63\x84\x73\x11\x88\xea\x7c\xfc\x9a\x15\x80\x95\x3f\xcb\xa1\xfd\xfc\x86\x5c\xc6\x0b\x30\x9c\x50\x3b\x2d\x16\x8d\x35\x03\xe1\xfc\x61\xe6\x9b\x61\x0a\x2a\x64\xe7\xf0\x81\x13\x48\x08\xfc\xd4\xf3\x79\xa2\x41\xb4\xc4\xd4\xc7\x7a\xdb\x40\x1f\x89\x52\xb1\x98\x5f\x8d\xd4\xf6\x8e\xa8\x90\x85\x81\x2a\xaf\x5e\x21\x99\xea\x27\xa8\x52\x25\x49\x31\x4d\xfd\xef\x66\x61\x64\x31\x89\x5e\x28\x6a\x84\x52\x59\x0d\x07\x5e\x83\x70\x03\xb8\xa9\x03\x56\x8d\xc1\x50\xad\x58\xc6\x22\x31\xde\x37\xc0\x50\xc4\xf2\x67\x73\x02\xd3\x31\x61\x27\x32\x4f\x52\xf1\x98\x0e\x45\x4a\xa9\x72\xb0\x7b\xa4\xf9\x46\xf6\xbb\x6e\x14\xcc\x02\x52\x73\x68\x1b\x98\xc5\x21\x02\xdd\xf2\xb5\x1c\x2d\xc0\x60\x72\x6a\x88\xfd\x77\x4d\xd4\xcc\xe7\x89\x14\x59\x28\x7f\x42\x04\x09\x38\x41\x6a\xd6\x81\xad\x8c\x66\x73\x27\xe7\x57\x31\xc9\x84\x53\x01\xde\xe5\xc9\xc7\xed\x81\x50\x1a\xc2\x15\x01\x9d\xfb\x4a\x51\x3c\xd0\x2a\xcd\xf9\xd7\x98\xbd\x6c\x52\x89\xd3\xc9\x04\x72\x67\xec\x64\xc3\xa0\x12\xf2\x85\x1b\xe4\x55\x34\xf2\x34\x80\x7c\xc3\xea\xd4\x39\xe1\x23\xac\x41\x8c\xa3\x11\x96\xde\x3a\x41\x8a\x65\xf4\x8f\x27\xc0\xf7\xf9\x74\xa6\x98\x57\xe0\x46\x94\xad\xd9\x99\xce\x2e\xc4\x26\x79\x2f\xa4\x29\xd0\x1d\x83\x6d\xa1\x8f\x64\x6b\x8f\x11\xf0\xd5\xb4\x6a\xa6\xf8\x98\xe2\x93\x69\xaa\x73\xcb\x69\xee\xec\xed\x6d\xbf\xcf\x50\x69\xdf\x72\x1a\x4d\xaf\x2e\x84\x79\x72\xb9\xcd\x4f\x5b\x4f\x0e\xac\xe6\xf2\x71\x7b\x6b\xe7\x09\x30\x04\xb1\x0d\x89\x9b\x3c\x2f\xe5\x88\xb3\x5b\xf5\x69\xcc\x59\x22\xac\x64\x02\x93\xd7\x07\x46\x67\x94\xcb\x5d\xbc\x88\xf2\x47\x4a\x87\xd6\xd1\x34\xa5\x6c\xb4\x79\x5c\x24\x81\x3c\xd7\x3a\xed\x7b\xe4\xd8\xb7\x77\x9e\x32\x6e\xd8\x3e\xdc\xdd\xdd\xda\xb7\x4c\x3e\x4b\xa6\x6a\x99\xe4\x34\x83\xaf\xb7\x06\x75\xcf\x7b\xd1\x2c\xd2\xc2\xb5\x65\x11\xc6\x6d\x21\x8b\xdc\xd5\x60\x7d\xec\x2c\x93\x9f\x2e\xe0\x53\xf5\xc6\x10\x60\xa2\xf1\x6d\x65\xbc\x88\xe3\x0d\xf8\xbc\xce\x32\x6f\xd5\xe3\x0b\xb2\xc5\xfe\x99\xff\x1b\x79\x14\x5e\x6e\x70\xe6\x21\x82\x4b\x95\xc6\xd0\xc1\xa5\x7a\x26\x1c\x4e\xa0\xce\x19\x27\x79\x06\x9d\x58\x25\x4d\x63\x7f\x53\x0d\x2f\xc1\x41\x83\xb7\x09\x8e\x8d\x16\x90\x30\xd2\xe3\x76\x0f\xca\x8c\x34\x10\x50\xa2\xec\x0b\xdf\x79\x47\x17\x0b\x74\x2d\x61\xd8\x17\xcf\x1c\x67\x20\x5e\xf6\xcf\x5c\xc1\xec\x20\x75\x16\x5e\xbd\xe5\xbc\xf3\x8e\xe5\x39\x48\x4a\x87\xe4\x57\x41\xe0\x9d\x77\x3f\x6c\x35\x9d\x17\x2e\xfe\xfb\xf5\xdf\xd8\x24\x2d\x5f\xe4\x29\x29\x68\x44\x38\x72\x26\x39\xea\x86\x01\xfc\x03\x5c\x65\xbb\x87\xf4\xb3\xeb\x74\x8f\xe1\x39\x9b\xf5\x97\x80\x8a\xe2\xa9\xd5\xe8\xf7\x9f\xb5\x1d\x2e\x09\x94\xa4\xe0\x07\x37\x52\x91\xba\x9a\xd7\xcb\x79\xe5\x31\x51\x82\xd0\x18\x46\x9a\x91\x2e\x65\xec\x8a\x7c\x59\xfa\xfa\x56\x04\x0b\x08\x26\xc9\x0b\x7b\x9b\xca\x20\x24\x8c\x45\xd8\xc3\x64\x1d\xfc\x80\xd4\x00\x20\xc5\xa3\x2c\xbe\xff\xd1\x4b\xbf\x7e\x86\xfc\xa8\x07\x5b\xd7\x39\xb7\xd1\x84\x8f\x2a\x2f\x9c\x63\x7a\x55\xa1\x0e\x83\x6e\xc1\xf5\x73\xab\xde\x18\xb6\x9f\x53\x3a\xd5\x44\x2a\x4d\x2d\x04\x1d\xc4\x05\x3a\xd8\xf6\xc1\x16\x88\x7b\x0e\x79\x0c\xd2\xa1\x6f\x1c\x04\xc7\xc5\xbb\x29\x30\x64\x9a\x8c\xa3\x6c\x26\x64\x05\x68\x29\x66\x93\xcf\xe4\x04\x18\x45\x07\x0c\xd0\x3c\x21\x84\xe2\xfa\x0e\x70\x51\xc7\xe7\x1a\x8e\xdb\x5d\x83\x59\x52\x83\x48\x36\x6f\x33\x19\x0b\x90\x6a\xb1\x42\x14\x78\x02\x38\x37\x5d\x24\x1a\x90\xae\xe2\x1a\x93\x77\xf9\xfc\x25\xa2\xbc\xc5\x19\xfc\x2e\x62\xee\x84\x23\x25\xb6\x7a\x1d\xc9\x1b\x90\xbd\xcd\xa7\xf0\x50\x55\x8b\x2a\x0b\x6d\x97\x32\xbf\x93\x1e\x24\xfd\xbc\xed\xbc\x28\x51\xe8\xd2\x69\x28\xcf\x1a\x1b\x99\x14\x0e\x8f\xf2\xaa\xd6\x4b\x9f\x4e\x53\x1e\x4e\x51\x2b\x44\x16\x1e\xc5\xab\xbc\x18\x90\x69\xba\xb8\xe4\x64\x18\xf2\x47\xd2\xcf\xba\x5e\xd3\xe5\x84\xda\xf6\xfe\x5e\x41\xf3\x21\xa9\x2e\x17\xf9\xa6\xb1\xfd\x6f\x62\x82\xc9\xc9\x46\xc1\x3c\x07\xd2\x17\x9c\xfb\x6b\xf5\x7a\x4b\x4a\x86\x76\xa3\x3e\x18\xc2\xb0\x40\x83\xc2\x3e\x34\x07\x19\xc5\x34\x4d\xaf\xc8\xa5\x9d\xe2\x57\xe4\x81\xba\x5a\x2b\xe1\x58\xf7\xd4\x65\xd8\x63\xc7\x11\x81\xd5\x3c\x9a\x49\x8a\xa3\x10\x00\x6c\x1a\x70\x47\x59\x4d\x87\x94\xca\xf5\x87\xed\xae\x03\x50\x62\xea\x1a\x75\x16\x7e\x94\xb0\xe5\xcb\x12\x22\xa0\xdd\x79\xcf\xda\x03\x7f\xd8\xf1\x7c\xcc\xa3\x02\xe2\xea\x88\xab\x5c\x76\x1a\x29\xc6\x9f\x54\x99\xc8\x66\xfa\x98\x58\x55\x06\x40\x72\x9c\xc3\xde\xad\xcd\x50\xfe\x8a\xf0\x8a\xa4\x4f\x1f\xbe\x59\x22\x7b\xbc\x18\x8f\x39\x36\x73\x1c\xa1\xa4\x14\x99\x52\x22\x63\x1b\xe1\x45\xce\x4d\xc1\x2a\xe2\x58\x6c\x2a\x86\x61\x9a\x3c\x02\x5c\x48\x70\x88\x1b\xca\x56\xf9\x25\x60\xa3\xd3\x6b\xfa\xc7\x67\xad\x16\x61\x2f\xa7\xa7\x19\x44\xfb\x26\xc3\x5e\x15\x28\xb0\x51\xb6\x1e\x5d\xb0\xf4\xce\x8e\xbf\xe3\x34\x34\x9c\x2f\x8a\x97\x0c\xe7\x59\x27\x75\x1a\x40\xe8\x6d\xc6\xca\xa6\x66\xf9\xbc\x3a\xa1\x36\x29\xda\xe1\xde\xc1\x53\xbc\xfb\xee\x77\xcd\x8b\x4f\x3f\xe5\xde\x27\xfb\x9c\xf9\xa7\xb9\xb4\x69\xc7\x0c\x20\x08\x4c\x21\x73\x56\x1a\x91\x6e\x60\x08\x9c\xb8\xd7\x1d\x0e\x3c\x5d\x01\x42\x8c\xa6\x62\x52\x15\xc6\x44\x11\x9d\x33\x25\x08\x81\x6a\xac\x3c\x17\x2b\x11\x03\x00\xc7\xd3\xd9\x8c\x52\xf0\x90\xab\x83\x6e\xab\x21\xf6\x9f\x6c\xbd\x5f\x15\x6d\xbd\x90\xc9\x5b\x0c\x6e\x50\x2b\x42\xe0\x11\x2f\x14\xc4\x37\x70\xb8\xcb\xf5\x4c\xc8\x2b\x21\xde\x53\xa7\xd3\x27\xac\xa6\x95\x55\x87\x15\x82\x9d\xec\x1e\xa9\x2e\x10\x46\x24\x2f\xf8\xcf\xea\xd2\x31\xf0\x1c\x22\xd2\xd0\xf5\x84\xe5\x78\xd2\xfd\x75\x82\x6b\xf9\x01\x83\x53\x9d\x75\x60\x27\x18\xe7\xd3\x76\xb4\x17\x67\x6f\xc5\xbe\x4a\xc7\x49\x3e\x5e\x19\xbc\xa6\xe5\x13\x57\x45\x9f\x52\x67\x0a\x8b\xf0\x38\x8a\x17\x56\x32\x1e\x57\xc8\x25\x81\x59\xa5\x89\x4a\xab\x78\xa1\xde\xda\x81\x21\x45\x8c\x70\xa4\xf2\x38\x8a\xf5\x3e\x61\xcf\x76\x8b\xbc\xc3\x0a\xe6\xdf\x83\x47\xb5\x76\x3f\x04\x48\xcd\x88\x15\x22\x65\xfd\xd2\xb8\x3d\x0c\x81\x1a\x00\xd6\x48\x9a\x7b\xbb\x3b\x3b\x55\x31\xa4\x33\x18\xec\xf6\x09\x79\x56\x34\x25\x6b\xed\x72\x30\x0e\x48\xc7\xbf\xd8\x20\xf5\xde\x10\xdf\xe2\xd7\x1f\x96\x72\x83\x6f\x5f\x08\x6d\x9d\x56\xcb\xed\x77\xf9\xa0\x5d\xde\xc4\x2a\xc2\xb1\xdf\x9f\x07\x4a\xdd\xa4\x59\x68\xb0\x4d\x19\xd6\x10\x63\x72\xf9\x3a\x07\x9c\x9e\xc5\x64\x86\x01\x15\x2a\x12\x08\xf2\x5a\x1a\xe2\x6c\xb0\x69\x82\x2c\x79\x89\x52\x4f\x87\xdd\x8e\x5f\xef\x0c\x29\x66\x53\x08\x5c\x32\xce\x7a\x35\x82\x87\x58\xc7\x6c\x72\x06\x47\xa2\xa1\x11\x4c\x74\x83\xcf\x45\xbd\x3c\xf2\x4e\x81\xdf\x0c\xb6\xea\x4d\xb8\x4e\x8e\xbe\xba\xa7\x40\x4a\xe6\xbd\x81\x5f\x27\x0d\x98\x3a\xb6\x0b\x57\x5c\x72\x89\x6b\x14\xf7\xb7\x80\x79\x40\xe9\x79\x9d\xc2\xcb\xfe\x56\x41\x48\xef\x45\x03\xae\xd2\x5e\x40\x20\x41\x3e\xcc\x98\x81\x6a\x3d\x46\x16\x98\xc5\x13\x0e\x11\xa7\x73\xaa\x1e\x1d\xe5\xa3\xb9\x4d\x2f\x8f\x0e\xf7\x77\x9f\xbe\x6f\x17\x1c\x3e\x9a\x05\xa3\x20\x83\x0d\x84\x97\x47\x5b\xf6\x3c\x4d\x63\x86\xc2\x47\x70\x53\x76\x14\xc6\xd2\x37\x1e\xfc\x48\x87\xfe\x62\xe5\x43\x71\xb1\x42\xa4\xdb\xdb\x3b\xdb\xdb\x17\x85\xd9\x12\xdc\x50\x54\xf2\xbb\x9f\xa7\x94\xd2\x18\x96\x16\xec\xbd\x8f\x9f\x88\x6e\xcf\xdb\xcd\x75\x86\x0e\xb2\xf4\x3a\x22\x58\xc4\x98\x63\x02\x03\xa6\x73\x2b\xbd\x2d\x0c\x39\x64\xd3\xe4\xd2\x05\xa2\x7c\x31\xea\x56\xd2\xa5\x0d\x2d\x0b\x97\xa8\x77\xb6\xca\xab\x80\x88\xab\x93\xaa\xb8\x60\x20\x6a\xde\xaa\x8b\xff\x37\xee\x11\xa2\x3f\x04\x16\xac\xe0\xb7\x12\x66\x14\x22\x6b\xdc\x29\x42\x95\x14\x1b\x46\x50\x86\xbf\x2d\x76\x46\xb0\xfe\xb0\x58\xef\xc3\x62\x8f\x7e\x4e\x8e\xf1\x62\xc9\x26\xdf\xdc\x8d\x19\x48\x5d\x9c\x04\x6b\x7a\xe6\xc8\x23\x84\xef\x48\x6a\x10\x69\x30\xaa\x81\xa6\x91\x4f\x37\x01\xbe\x46\x28\x54\xcb\xd0\x11\x8d\xfc\x56\xc1\x2f\xe8\x2a\x63\x1a\xa3\xc6\x65\x77\xa9\xdd\x8f\x26\x08\xa4\x7d\xe6\x3a\x6f\x23\x10\x85\x04\x5e\xaf\xbf\x36\x97\x31\x86\x31\x50\x02\x9e\x9a\x4a\x01\x3e\x56\x5b\x87\xd5\x10\x1f\x97\xa6\xb3\x46\xe4\x00\xb1\x66\xcb\x3a\x69\xf8\x85\xd5\x30\xb0\xa0\x4a\x3e\xbf\x58\x51\x89\xa3\xb1\x64\x3a\xf7\x4c\xf7\x1c\xcf\xd3\x97\x56\x2d\x67\x7d\xbe\xf5\x6a\x1e\x8d\xa8\xf2\x08\xf0\xfc\x1c\x49\x85\xeb\x9f\x0d\x3a\xfd\x7a\xb3\x9c\x2b\xd7\x82\x6b\xfc\xcd\x14\xdf\x24\x22\x51\x55\xd2\x5c\x13\x90\xb7\x44\x5a\x97\xa2\x63\x23\x5c\xa4\x6a\xba\x48\x37\x30\x08\xba\x1f\x14\x65\x6e\x3d\x55\x28\x64\x80\x23\xec\x8c\x24\xa1\xf1\x23\xe0\xe3\x28\xa9\x4e\x32\x3d\x80\x31\xa4\x6e\xd6\xac\x13\xd7\x6c\xc5\x43\xbe\xd3\xe0\xec\xc2\x0c\x5b\x46\xbf\x62\x48\xc9\xcf\x05\x79\x0e\xcb\x45\xa0\xce\xcf\x4b\xe5\xd1\x55\xaf\xe2\x48\x2a\x59\x62\x08\xfa\xcd\xe2\xca\x04\xc0\xf9\x82\x04\x72\x61\x44\xb5\x92\xcf\xa0\xa8\x24\x94\x88\xdc\x99\xa8\xd9\xb3\x7a\x7d\xb1\x96\xf9\x95\x5e\x50\xcd\x08\x29\x3e\x88\xcd\xd2\x52\xa1\x9f\xb2\x75\x65\x4c\x21\x9a\x01\xc6\xd5\x3e\x99\xcb\xc9\x6f\xe9\xe6\x3c\x99\x58\xc8\x0d\xfb\x2f\x9c\x26\xe7\xcc\x94\xa1\xdc\x3b\x68\xfd\x8e\x88\x21\x21\x79\x80\xf5\xbd\xee\xee\x74\x8f\xf9\x5a\xc8\xdc\x04\x3d\x31\xd3\x92\x25\xc4\xd4\x65\x4c\xbe\x01\x9d\xc7\x69\x70\x87\x49\x80\x94\x34\x9b\x42\xac\xc7\xa0\xd6\x7a\x45\xda\x46\xcc\xf6\xe6\x72\x84\x08\x2e\x75\xe5\xc6\x04\x29\x62\x1c\xe5\xd9\xb7\x54\x72\x9c\x53\xdd\x46\xf0\x5d\xd9\x3a\x55\xc4\x5f\xb8\xd7\xdd\x82\x08\xe2\x86\xc1\x51\x18\xce\xb5\x7a\x2d\x36\xba\x14\x6e\xd8\xe2\x2c\x89\x5e\x37\x03\x02\x79\xee\xe2\xf2\xd6\xb4\x5a\x8d\x83\x9d\x9d\xe2\xf7\x63\xdd\xd8\xdb\xb2\x0b\xd2\xcb\x86\x7e\xb5\xbb\xbb\xfb\xfe\xb2\xd1\x0b\x92\xd4\x16\xcf\x22\xe4\x0f\x54\x46\xf5\x72\x44\x72\xf3\xd3\x05\x72\x8b\x96\xed\x51\x96\x72\x68\xe2\x47\x9a\x65\xc2\xd6\xac\xb8\x2c\x2c\x20\x79\x70\x49\xe9\x40\x89\x0d\x4a\xca\x42\xdf\x27\x69\x1c\x20\x31\x4b\xb3\x49\x6d\x7e\x35\xa9\x11\xf7\x6a\xef\xa2\x55\x81\x63\x54\x79\x40\x5a\xd2\xea\xbb\xdd\xba\x8e\x32\xc8\xd9\xf5\xed\xf9\xaa\xc4\x55\x44\x1b\x1a\x9f\xea\xea\x86\x09\x37\xd4\x95\xd0\x2f\x81\x62\x73\xdd\x69\xca\x35\x77\x02\x50\x31\xb7\xc0\x60\xc0\xb6\x01\x97\x93\xe5\x3c\xe0\x5a\xe9\x0c\x23\x23\xba\x55\xa2\xa2\x6b\xa1\x9b\xc5\x34\x9b\x95\x64\xc3\x32\x65\x13\xd3\xfb\x7f\x99\x51\xdc\x4d\x26\xd8\xc7\x15\x07\x1f\x66\xc1\x88\x8f\xdb\x94\x97\x8b\x09\x35\xda\xe0\x3d\xfd\xbe\x08\x32\x3e\xbf\x93\x65\x69\x46\x8d\x46\x16\x51\xb5\x21\xbe\x73\x7c\x4d\xc1\xea\x20\xc9\x24\xfc\xc1\x8f\x56\x81\x41\x0a\xde\xf0\xd1\x75\x1e\x4e\x62\xa8\x9a\xfe\xf3\x62\xda\x72\x02\x33\xe3\xee\x68\xea\x5c\x0d\xfd\x40\x03\x4b\xed\x77\x14\xd5\x41\x52\xa8\x05\xb4\x1b\x43\x45\x96\xe6\x68\x6f\xaa\x1b\xd2\x40\x36\xc1\x94\x1c\x03\xa5\x23\x26\xf8\x3f\x7e\x3b\xa2\x74\xfa\x27\xbe\xdb\x1f\x6a\x78\x6c\x5c\x15\x19\x32\x5f\x4b\xae\xac\x99\x92\x1a\x48\x91\x76\xb3\x46\x83\x79\xba\xa5\x8d\x99\xea\xe9\x5e\xc1\x67\xe6\xf4\xd2\x91\xa8\x69\x34\xce\x1f\xa2\xb3\x73\x60\xbe\x8f\xd8\x16\xdf\xfa\x16\x9e\x6c\x2a\x22\x96\x5c\x8c\xef\x9d\xb6\x5b\x7c\xe9\x73\xc0\x51\x6a\x42\x7e\x90\x4f\x1d\x02\x12\xdf\xbe\x7d\xae\x66\xbd\xdd\x79\xf9\xd6\xc9\x9c\xd7\xf3\x28\x63\xdf\x81\x14\x0a\xdb\x21\x02\xb4\x97\xcd\x50\xc6\x92\xaa\x26\x63\x2a\xa6\xcc\xb0\x6d\x1a\xb1\xce\xae\xa7\xfa\x1a\xbc\xa8\x6c\x95\xc4\x9c\xdc\x27\xe3\xa4\x2c\x35\x57\x1a\xe8\xa9\x71\x27\x5f\xb7\xf2\x27\x28\x86\x1f\x33\x84\x5d\xf8\xdf\x7b\xc0\x82\xeb\x00\xac\xf4\x90\xe0\xfa\x88\xb8\x5d\xaf\x7c\x21\x31\xd4\x17\x48\xd9\x92\x36\xa7\x7a\x25\x8c\x0b\x22\x31\x96\x7b\x88\x6a\x19\x7e\x18\xb3\x00\x7a\x23\x95\x5f\xc0\x3b\x6a\xdb\x5f\x84\xf3\x3b\x7a\x4f\x43\xca\xb7\xbf\x78\xe6\x9a\x47\x09\x52\xeb\xfb\xdb\x25\x97\xb4\x27\xb9\xc3\x25\xea\x2c\x73\xe9\xa1\x3c\x7f\x7d\x03\xcd\x28\x98\x24\x58\x2e\x1a\x15\xac\x33\xa9\x28\xe7\x92\x1b\xa5\xa2\xc0\xc3\x23\xef\x94\x09\x96\xb9\xf4\xaf\x9a\x67\x41\xbe\x92\xf0\xe9\xaa\x60\x9f\xae\xe2\xb3\xf1\x7a\xaf\x36\xb6\xcb\xd9\xdd\x86\xbd\xb1\xb3\xf6\x7c\x4e\x52\x71\xa8\xda\xe3\x95\x18\xb7\x74\xbc\x77\x99\xb7\x2a\xa0\xaf\x18\xb8\x5e\x48\x17\x6b\x35\x6d\xab\xe9\xb6\xf9\xca\x96\xfc\x6b\x40\xf7\xaa\xd0\x90\xd7\x08\x2b\x7a\x7b\x87\x5c\x12\x3f\xa4\x3f\x1f\x2e\xaf\xef\xb9\x02\xf7\x9b\xe6\x5b\xaa\xa3\x45\x3e\x3e\xb0\x48\x6f\x38\xa2\x20\x88\x95\xbf\x65\xc8\x16\x49\x42\x9e\x86\xba\xb9\xf0\xc5\xb1\x3f\x4a\xe9\xa6\x0f\x61\xbb\x5a\xaa\x1b\x19\x5b\x74\x17\x49\x79\x34\x2b\x2f\x5f\xce\x70\xfd\x1b\xce\x9b\xbe\x04\xab\x0f\x7d\xae\x80\xac\xa0\x19\x5d\x05\x85\x1c\x5a\x22\xf2\xce\x4a\xef\xa4\xaa\xef\xf7\x7d\xd3\x79\x6e\xd1\xf7\x0a\xcd\x33\x06\x60\x1f\x6a\x53\xdb\x9e\x5a\x2c\xa9\xe5\xd7\x59\x53\x89\x6c\x78\xaa\x6f\x1e\x0d\x15\xfa\xda\xc4\xd7\xfd\x3e\xf7\xdf\x47\x68\xe7\xc9\xd4\x5a\xd5\xe3\xf6\xb7\x08\x8e\xd5\xb3\xc9\x42\xe3\x42\xb2\x6d\x8e\x83\xd0\x98\x47\x48\x12\xc4\x58\x8d\xae\x1e\x15\x91\xaf\x52\x59\x24\x19\x61\x2a\x66\x5a\xa5\x92\x07\x13\x45\xd1\x93\x02\x3b\x87\xff\x34\x59\x06\xf8\x28\xaf\xa8\xd1\x8c\xc1\x6c\x98\x8e\x14\x77\x10\xb1\xda\x76\xf5\x69\x75\xcf\xaa\xbb\x27\x46\x51\x1a\x7c\x77\x5a\xfa\xee\x8c\x2f\xc4\x48\xe7\x0b\xee\xf0\x59\x7c\x3e\x1d\xbd\x03\x7f\xee\x30\x97\x65\x72\xff\x51\xad\x57\x58\xf8\xfc\x2d\x7c\x47\x01\x42\x2d\xa1\x27\x3a\x82\xb2\x73\x27\xe3\xa5\x3a\x13\x97\x91\xab\xec\x39\x4f\xda\x43\xbf\xd9\x6e\xb5\xd6\xe2\xc4\x5b\x64\x49\xd9\x82\x51\x4e\x09\x01\xd3\x8c\xcb\x77\x59\xbf\x84\x28\x7f\xe8\x57\x6f\x0c\xd9\x82\xc4\xde\x3d\xd4\x35\x28\xa5\x6f\x76\x92\x87\x88\x15\xb0\x54\x97\x1f\x1f\x90\xed\x64\x54\x92\x6c\x30\x21\x43\x53\x54\x5a\xc1\x03\x42\xf3\xaf\x22\xd8\xc9\xc8\x88\x15\xc9\xd9\x4a\xb2\xfd\x65\x19\xef\x9e\xda\x30\xc9\xa5\x6a\xfa\xcf\xad\x6e\x1b\x69\x0c\xc7\xba\x7d\x8a\xc7\x6d\xd7\xed\xbb\xfa\x63\x19\xab\xd1\xe9\xf7\x1c\xd3\xa6\xcf\x04\x4d\x13\x59\xce\x3c\x7a\x5b\xb0\x51\x2e\x67\x4a\xd7\x1a\xf5\xad\xbb\x62\x69\x06\xba\x30\x4c\x7c\xd2\x1f\x9b\x7a\x8e\xdf\x1e\x3a\x5d\xaf\xf8\xc0\x29\xda\x3e\xa0\x98\x57\xef\xd1\xe6\x01\x51\x2a\x67\x9e\xfd\xd9\xb4\xd2\xe8\xd1\xdf\xd3\x67\xf4\x77\xf8\xc2\x0e\x65\xa5\xe9\xd8\xe3\xac\xd2\x72\xed\x24\xae\xf4\x3a\x76\x7c\x5d\xe9\x3c\xb7\xb3\x45\xc5\x3d\xb3\x3f\x09\x2a\xdf\x19\xd8\x52\x55\x1c\xcf\x9e\xe7\x95\x63\xd7\x9e\xc7\x95\x41\xc7\xbe\x9c\x54\x8e\x4f\x6c\xb0\xa9\x3d\xb4\xc7\x51\xa5\xd5\xb6\xf3\xac\x32\x74\xed\x91\xaa\x34\x3e\xe6\xfb\x3d\x5a\xd3\x81\xfa\x45\x6a\x6a\xff\xec\x1f\xbf\xf7\xd3\x7f\xfb\xe3\x9f\xfe\xe4\x1f\xbe\xfe\xd3\xdf\xb5\x7f\xf6\xf9\xf7\x7f\xfe\x77\x7f\xa2\x1f\x7e\xf1\xc5\xef\xfd\xfc\x6f\xff\xfc\xeb\x9f\xfc\xd3\x2f\xbe\xf8\xfd\xbb\x2f\xfe\xeb\x8f\x7e\xf4\xf5\xe7\xff\x4e\x2f\x9a\x72\x91\xab\xd1\xd4\x6e\x65\x41\xf2\xe5\x0f\x82\x48\xd9\x3d\x19\xca\x0c\x70\x3b\x54\x76\x27\xc8\xa1\x30\xff\xf9\xd7\x0b\xfb\xcd\x5f\x7d\xf5\x3b\x5f\x7d\xff\xab\xef\xbf\xf9\x97\x37\x3f\x79\xf3\xb9\xfd\xf5\x9f\xfd\xcd\xd7\x7f\xf1\xf7\xff\xfd\xc3\xbf\xb4\x1d\x35\x0f\xbe\xfc\x71\x1a\xdb\xf4\x6d\xca\x62\xb2\xf8\xf2\x87\x8a\xbe\x25\x3a\xce\x02\x15\x51\x67\xac\xae\x22\xfb\xcd\x8f\xbf\xfa\x83\x37\xff\xfa\xe6\x9f\xdf\xfc\xe8\xab\xef\x69\x1a\x76\x3b\x0f\xe2\x88\x72\x08\x6f\x01\x54\x17\x07\xd0\xfc\xc4\x1e\x7e\xf9\x45\x76\xf5\xe5\x0f\xa4\xfd\x1f\x7f\x88\x55\xf3\x28\x09\x2c\x0d\xb6\x43\xd6\x46\x72\x7a\xa4\x02\xc8\xbb\xaf\x10\xc0\x58\x08\x14\x1a\x24\x25\x07\xe7\x16\x4b\x81\xa5\x61\xb1\x28\xd0\xfc\x6c\x6a\xb1\x3c\xb8\x09\x89\x58\xfc\x77\xf9\xc4\xf2\xe1\x6f\x6f\x2d\x16\x12\x39\xde\xcc\x62\x49\xa1\x99\xc4\x16\x8b\x8b\xbe\xf1\xba\xb6\x58\x66\x74\x99\xba\xb0\x58\x70\x68\x7e\x12\x58\x2c\x3d\x5a\x53\x59\x2c\x42\x34\xf9\xd7\x62\x51\xd2\x53\x6c\xb1\x3c\xd1\xbc\x9c\x58\x2c\x54\xca\x45\x73\x8b\x25\x4b\x0b\x46\x16\x8b\x97\xfd\x92\xc5\x32\xa6\xf4\x80\x65\xcd\x20\xce\x7c\x26\x07\x78\x30\x9f\xf3\x27\x21\xa9\x98\x46\x93\x69\x8c\xff\x73\x31\x8a\x03\x2e\xe9\xb1\x59\x56\x01\x90\xe3\xa3\x28\x89\xac\x57\xcb\x11\x55\x33\x8d\xee\x4e\x53\x0a\x98\x70\xf2\xa7\xfd\x17\x7e\x0b\xe9\x11\x92\x85\x63\x57\xdf\xab\x97\xa0\x91\x07\x87\x41\x55\x6c\x53\xde\xb9\x9b\xa0\xf1\x37\x20\xe4\x13\x26\x29\x5f\x9e\x71\xbe\x96\xc2\x87\xad\xd1\xa5\xc0\xae\xaf\x9c\xd8\xd9\xfe\x4f\x00\x00\x00\xff\xff\xb6\xbd\xa9\xb5\xec\x2d\x00\x00") +var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x5a\x5b\x6f\x23\xc9\x75\x7e\xef\x5f\x51\xab\xcd\x66\x34\x41\x93\xd4\x65\x34\xa3\xd5\x5a\xce\x52\x64\x53\xa2\x87\x37\x77\x53\x33\x3b\x3b\x10\x5a\x2d\x76\x91\xec\x55\xb3\x9b\xdb\xd5\x94\x46\x8b\x20\xb0\x91\x87\x5c\x80\x20\x0f\x09\x12\x04\x08\x82\xe4\x21\x31\xe0\xdc\x6c\xe4\xc5\x4e\x9c\xbc\x6c\xf2\x3e\xfb\x1f\x9c\x75\xfc\xe4\xbf\x90\xef\x9c\xaa\x26\x9b\x92\x56\xf6\x06\x89\xbd\x23\x76\x57\x57\x9d\xaa\x3a\xd7\xef\x9c\xaa\x77\x45\xcf\x79\xe1\xb8\x82\xff\x74\xfb\xcd\x76\xeb\x95\x18\x9e\xb4\x3d\xd1\x6a\x77\x1c\xeb\x5d\x31\xe8\x38\x75\xcf\x11\xdd\xfa\x73\x47\x34\x4e\xea\xbd\x63\xc7\x13\xfd\x9e\x68\xf4\x5d\xd7\xf1\x06\xfd\x5e\xb3\xdd\x3b\x16\x8d\x53\x6f\xd8\xef\xa2\xb1\xd7\x6a\x1f\xeb\x91\xd6\x07\xa2\x3e\x9f\x8b\x24\x98\x49\x91\x4f\x83\x5c\xa8\x69\x7a\xad\x44\x9a\x08\x79\x25\xb3\x1b\x31\x0f\x26\xf8\x10\xe5\xb1\xb4\xea\x83\x81\xdf\xab\x77\x1d\x71\x28\x8e\xd3\x89\x3a\xc0\x5f\x71\x1c\xe5\xc2\x93\xd9\x55\x34\x92\xa0\xd4\x98\x06\x09\xba\xa3\x2d\x1a\x8b\x9b\x74\x21\xb2\x45\x22\xe2\x74\x14\xc4\xf1\x8d\xe5\x9e\xf6\xfc\x53\x0f\xab\x3f\x14\x93\x28\x47\x6f\x27\xca\xa7\x32\x13\x1b\xa1\xbc\xda\xb0\xc5\xc6\x3c\x4b\xc3\x0d\x91\xa2\x21\x97\x2a\x47\x4b\x28\xc7\xc1\x22\x06\x2d\xa5\xfb\x30\x05\x6c\x9d\x16\x80\x77\xcb\x7a\x9d\xc9\x79\xaa\xa2\x3c\xcd\x6e\xce\x2c\xb7\xdf\x1f\x8a\x43\xcb\x6b\xb8\xed\xc1\xd0\x1f\xbe\x1a\x50\xb7\x8b\x40\x4d\x31\x53\xd3\x50\xaa\xf7\xbc\xb6\x18\x4d\x83\x4c\xc9\xdc\xa2\x17\x1f\xac\x72\x3d\x87\x06\x7e\x20\x5a\x69\x36\x92\x66\xdb\x89\xbc\x16\x2b\xea\x22\x4f\xc5\x85\x14\xf3\x2c\xba\x0a\x72\x69\xb5\xfa\x6e\xc3\xf1\x07\x6e\xfb\x45\x7d\x48\xb3\x8c\x83\x58\xd1\xf6\x8f\xe3\xf4\x22\x88\xc5\x2c\x78\x13\xcd\x16\x33\x31\xca\x64\x90\x47\xe0\x64\x1c\xcd\xc0\x92\x74\x5c\xa6\x38\xc7\xce\x17\x4a\x66\xb6\xa8\x6c\x8b\x99\x0c\x12\x25\x92\x54\xf7\xb4\xba\xf5\x8f\xfc\x86\xeb\xd4\x87\xed\x7e\xcf\xef\xb4\xbb\x6d\xac\x0f\xdd\x30\xc3\x20\xc8\x47\x53\x41\xfc\x11\x9f\x2e\xe4\x42\x8a\x58\x26\x93\x7c\x6a\x63\xce\x4b\xe6\x7b\xa0\x44\x1c\x64\x90\x01\x1e\x30\x97\x8a\x2e\x20\xb8\xc1\x69\xa7\xe3\xbb\xce\xb7\x4f\x1d\x6f\xe8\xe3\xef\xa9\xe3\x77\x9c\xde\xf1\xf0\x04\x64\xb7\xb7\xf0\x3f\x50\xee\x44\x8a\x97\x38\x8e\x62\xf0\xe0\x4d\x2e\x13\x85\xa5\xab\xa5\x4e\x2c\xe2\x50\x4c\x83\x2b\xcc\x18\x25\x52\x5c\x67\xc1\x5c\x89\x28\xc1\x67\x29\x1a\x69\x28\xbb\x51\x96\x41\x74\x32\xa4\xdd\x81\x9c\x27\xe7\x41\x06\x5e\x95\x49\x5d\x43\xde\x22\x10\xa3\x74\x36\x0b\xaa\x62\x98\xae\x48\xf1\xac\xe8\x50\x4b\x57\xfd\x6d\xf1\xc9\x02\x4b\x9a\x2f\xf2\x62\x8c\xd5\x69\xf7\x1c\xff\xa5\x5b\x1f\xf8\xce\x47\x43\x07\xe2\xeb\xf7\x3c\x6c\xa1\x9a\xbf\xc9\x6d\xbb\x3a\x0b\xf1\x2f\xc8\x2e\xc3\xf4\x3a\xa1\x37\xfd\x73\x19\x62\x35\x2f\x82\x38\x0a\xf5\xd6\x66\x58\xac\xd9\x15\x6f\x27\x80\x54\xe5\x55\x04\x71\xd7\x07\x6d\x70\x4d\xa5\xa3\x08\xeb\x0e\xf5\x6a\xb1\xbd\x99\x2d\xd4\x02\x4c\x07\x43\x83\x79\x54\xbb\xda\xae\x15\x93\x94\xb7\x79\x15\xc4\x0b\xd0\xbd\xb8\xd1\x4b\x55\x55\x31\x30\x64\xf3\xe0\x82\x18\x45\x9c\xe1\xc9\xc5\x75\x9a\x3c\xd2\x66\x46\x56\x42\x0c\x5c\xe7\xb9\x08\x53\xa9\xa8\xcb\x8c\x84\x6d\x0d\x5c\xe7\x45\xdb\x79\xe9\x0f\xeb\x47\x3e\x96\x48\x1b\x5e\x2e\xc0\x7a\xbd\x98\xc7\x69\x10\x9e\x61\x29\x2f\xa7\x92\xcd\x49\xb7\x60\xb1\x19\x68\x26\x01\xe4\x1f\x56\x0b\x03\x50\xa4\xc8\xe7\x79\xb6\x90\xe7\x96\xd3\xab\x1f\x75\x1c\xff\x74\xd0\xe9\xd7\x9b\x44\x95\x9a\xb5\x8a\x4d\xc5\x38\x5d\x12\xba\x35\x38\x0c\xf2\xa0\x96\xcf\xe6\x35\xf3\xf9\x5c\x6c\xe2\x4d\x4c\x24\xbe\x87\x32\x96\xc4\x3a\xec\x61\x02\x07\x01\x75\x57\x79\x90\xe5\x8f\x2d\x3d\x89\x3f\x74\xba\x03\x7f\x50\x67\xbd\xbb\x4d\x07\x33\xf7\xa1\x0d\x98\x77\x96\x62\xe5\xf0\x18\xe9\x35\x48\xe5\x37\x73\xa9\x6c\x21\xab\x93\xaa\x88\x66\xf0\x45\xb5\x4f\xe6\x72\xf2\x5b\xfa\x71\x9e\xa0\xb5\x97\xe6\xd3\x28\x99\x18\x1b\x0a\x92\x1b\xcd\x4e\x1a\x58\xcc\x5b\xef\x74\xfa\x2f\x9d\x26\x3b\x05\x8f\x4d\xbd\x1b\xbc\x11\x2a\xfa\x4c\x92\xc6\xcb\x00\xd2\xe5\x31\x10\x53\xf7\x68\x7d\xbf\xbb\x3b\xdd\xa3\x82\x0c\xf9\x4b\x9f\x6c\xd3\x6b\x7f\x4c\x66\xbf\xbb\x63\x28\x25\x8b\xd9\x05\x38\x6f\xac\x47\x69\xdb\xe6\x6d\xad\x13\xdb\xde\x2a\x48\x11\x15\x22\xe7\xb1\x05\x92\x1c\x23\x92\x61\x6f\x49\x68\xe9\x29\xa2\x42\x5b\x49\x9e\xa4\x34\x60\x0a\xd6\x99\x26\xa4\x31\x98\x03\xad\xe4\xa2\x2d\xe7\x23\x50\x76\xe1\x95\xea\xc7\xf0\xf4\x7e\xef\xb4\x0b\xd2\x3b\x5b\x6b\x44\x23\xa5\x16\x5f\x4d\x8e\xc9\xb4\x3d\xef\xf4\x16\x91\xed\x75\x22\x4b\xef\x06\x3d\x8f\xb0\xaf\x75\x22\xc1\x28\x8f\xae\xa2\x1c\x42\x90\x32\xb4\x5a\x8e\xa3\xf7\xda\xe8\x77\xe1\xc5\x0c\xc1\x3d\x6d\x91\x0b\xe6\xfe\x39\x99\x98\xac\x8c\x52\x6c\xe5\x1c\x42\xcc\x03\x58\xcc\xc4\x26\xdf\x18\x92\x39\xd5\x93\x30\x4b\x61\xbc\xdf\xc4\xb8\x2a\xad\xa4\x9e\x60\xae\x2b\x36\x68\x1e\x04\x2f\x02\xd7\xb7\x91\x60\x76\x1d\x3d\xc2\x48\x91\xd6\x6f\xc0\x82\xe3\x58\x1b\x39\x19\x59\x11\x4d\x54\x7e\x13\x93\x9e\x77\x89\x75\x51\x32\x4e\x0f\xc4\x34\xcf\xe7\xea\xa0\x56\x43\x50\x91\x71\x0a\xe9\xa9\xea\x24\x4d\x27\xb1\xac\x62\x93\xb5\x6b\x79\x01\x25\x85\xbe\x4a\x55\xdb\xd9\xda\x7e\x52\xdb\xde\xae\x79\x8b\xf9\x3c\xcd\xf2\x0a\xec\xa4\x52\xda\x40\x25\x4a\x2a\x8d\x69\x96\xe2\x7d\xf7\x7d\xfe\x68\x96\x6f\x0d\x4f\x9c\xae\x03\x36\x40\x46\x7e\xd7\x19\xd6\x61\xce\xc7\x60\xc5\xf9\xbb\xe3\xf1\xde\xee\x93\xdd\xf3\x5b\x3a\xa9\xf5\x48\x47\x1d\xec\x67\x1e\x07\x37\x60\xc7\x66\x58\x28\x13\x42\xe2\x7e\x37\x3a\x7a\xcc\xa1\xa2\xd9\xf6\x06\x9d\xfa\x2b\xad\x9f\x46\x37\xf7\x77\xf7\xf7\x9f\x6e\xed\xb3\x66\x55\x83\x70\x16\x25\xeb\xfa\x45\xa1\xe7\x61\x4d\xa0\x50\xbd\xae\x08\x7b\x5b\x77\x55\xf4\x41\x12\xae\x33\xe8\x3f\x48\x22\x49\x73\x00\x87\x87\x89\xf4\xfa\xc3\x76\xe3\xb6\x5e\xef\xad\x91\x49\xb3\x49\x90\x44\x9f\xe9\x60\xfb\x10\xad\xbe\x7b\x7c\x67\x3d\xd6\xeb\xc2\x9d\x12\x87\x1c\xf6\x98\xd0\x9a\x2c\xd4\xe1\xe9\x02\x41\xfc\x72\xe5\x9c\x0b\xb7\x09\xd8\xd0\xf4\x39\x1e\x1d\x21\x50\x3f\x2f\x81\x80\x22\x90\x8e\x10\xbd\xd2\x99\x38\x75\x3b\x15\x6f\x44\x2a\x52\xda\x66\xe1\xdd\x28\x5a\x47\xc9\x25\x22\xdf\x54\x26\x60\x68\x12\xca\x8c\x7c\x59\x77\x15\x61\xc8\x13\xcb\x37\xc1\x6c\x8e\x55\x01\x36\xd9\x70\x7c\x09\xc0\x8b\x46\x72\x3e\xa8\xfb\x5e\x83\x74\x4b\xfb\xb5\x5f\x25\x8a\x43\xa5\xf4\x4c\x32\xac\x51\x54\xd2\xeb\xe8\xde\x13\xd4\x1e\x8a\xdd\x9a\xc4\x7d\x81\x9b\xa8\x2d\xe3\xf0\xdd\x20\xde\x35\x8e\x74\x3d\x84\x7f\x65\xf0\xb6\x5e\x43\x53\x01\xc9\xce\x10\x08\xfb\xc3\x3e\x2c\x08\xdd\xc9\x60\xad\x66\xbf\x5b\x6f\xf7\xf0\xc6\x00\x73\x9a\xaa\x9c\x31\x20\xf1\x04\x8d\xef\x6d\x16\xfd\x1f\x93\x69\xbf\xb7\xa9\xbb\xe3\xe5\xbd\xcd\x93\xe1\x10\x71\xa8\xef\x0e\x1f\xab\x9a\xc5\x2f\xf5\x66\x93\x70\xe9\x56\x95\xff\x6f\x2d\x3b\x90\x97\x37\xf8\x88\x26\x11\x9b\xcd\xee\xc7\x8f\x49\xa6\x2c\x17\x42\xc1\x08\xe7\xd9\x25\xd9\xd2\x66\x81\x12\x3c\xef\x44\x68\x7f\xf1\x18\xee\x10\xea\xad\x48\xa4\xf0\x22\x42\x69\xa0\x5c\x05\xb9\x76\x82\x38\x07\xce\x8c\x02\x05\xfe\x11\x54\x0e\x53\x32\x07\x00\x4f\x8a\x7a\x29\xa1\x54\x82\xd2\x65\xcf\xc5\x18\x83\x06\xd7\xe3\x1c\xac\x27\x48\x99\xc4\x37\x06\x6a\x67\x3c\xaf\xe6\x15\x08\x01\x67\x44\x8a\x09\x12\x05\x45\xe8\x1e\x4b\xa3\x7d\xf1\xc7\xaa\xd5\xe9\x37\xea\x00\x85\x0f\x30\x6c\xc9\x98\xbb\x3c\x03\xa2\xd6\x4e\x96\x27\x1d\x03\xe6\x2e\xa0\xd5\xac\xc4\x34\x65\x70\x15\x44\x31\x7d\xb6\xe0\x9a\xd8\x5c\xa8\xdb\xca\x44\x96\x50\x45\xc1\xbe\x16\x51\x9c\xc3\x46\x4b\xab\x4f\x69\x03\x79\xd5\xf2\x86\x75\x77\x48\x43\x7d\xb8\xa2\x17\x9c\x38\x14\x14\x9a\xe9\x2c\xc0\x20\x9d\xb5\xb0\x97\x44\x30\x4c\x95\x36\xf7\x51\x4c\x06\x8f\x5d\x59\x34\x76\xa9\x26\x2b\x15\x20\x94\x03\xef\x5d\xc4\xed\x5f\x42\xc0\xe8\xc1\xce\xce\xad\x61\xf7\xac\x3c\x86\xf9\xc1\x08\x20\x17\x1e\xd9\x69\x7b\xd0\xf1\x82\xc0\x7b\x9b\x05\x35\x5e\x81\x9b\x82\x53\x73\x02\x5b\xb0\x57\xa2\x11\x46\x99\x1c\x51\x6e\xb0\x96\xf9\x3c\xfa\xed\x5a\x55\xa9\xe9\x23\x1b\xf3\xe5\xac\x28\x3a\xa2\xa5\xcc\xbd\x47\xb5\x29\x82\x4d\x0d\x8e\x41\xf7\xaa\xf2\xbc\x2c\x55\x8d\xb3\x58\x54\x86\x2e\xab\x15\xe5\x24\x18\x2e\x67\x88\x5f\x41\x76\x53\x18\x30\x89\x8e\xd3\x8a\xf9\xe2\x22\x8e\x46\x97\xe2\x52\xde\x60\x06\xd2\x5c\xd0\xad\xe0\x6d\x22\x13\x1b\xd4\x4a\x4b\x53\x37\xd8\xed\xac\x44\x6b\xb9\x03\xbd\x8c\xe7\xce\x2b\x40\x3e\xaf\xb4\x14\xc6\x96\x58\x45\x89\xe4\xda\x5e\x57\xed\x8f\x80\xe4\xe0\x81\x25\x79\x2d\x89\x30\x3e\x8e\xf0\x9a\x82\x03\xd7\xd3\x08\x66\x46\xf2\xa1\xdd\xc0\x91\x2e\xe7\x3a\x26\x56\x6b\x70\xb9\xa2\xc3\xa6\x16\x46\x23\xda\xf4\xb5\x51\x3b\xb6\x2e\x89\x3d\x22\x2a\x32\x94\xa1\xbd\x72\xe4\x65\x2f\x37\x4a\x33\x00\xd7\x79\x8a\x61\xd8\x3d\xe3\xc8\x6e\xbb\xd7\xee\x9e\x76\x79\x47\x14\x60\x91\x36\x3a\x8d\xb2\xd3\x2f\xcc\xa1\xd1\xec\x51\x02\x49\x10\xa5\x48\x68\x09\xf3\x5b\xfd\x56\x8b\x83\x85\xc9\x5e\xf5\xb0\xc2\x38\xdc\xfe\xe9\x10\xb1\xb6\xd3\x3f\x2e\xe7\x92\x32\x91\xec\x84\xc1\x63\x80\x13\xb4\xfc\x9a\xa8\xd6\x18\x56\x8f\x24\x94\xb0\x32\x0a\x0e\x09\xb1\x8b\x4a\xb8\xc8\x38\xf2\x1d\xee\x3f\x7b\xba\x35\xdd\x9a\x6d\x29\x51\x21\x6f\x78\x38\xbb\xa1\x9f\xaa\x89\x1e\x84\x65\xac\x0f\x08\x66\xc3\x6b\x03\xa2\xc0\x21\x57\xe7\xe3\x37\x45\xa8\x20\x38\x03\xed\xe7\x2f\xe4\x32\x5e\x82\xe1\x54\x08\xa0\xc9\xa2\xb1\x66\x20\x02\x1a\xcc\x7c\x33\x4c\x41\x85\xec\x1c\x3e\x10\xb8\x9f\xf8\xa9\xc7\xf3\x40\x93\x24\x13\x53\x1f\xeb\x65\x03\x51\x25\x4a\xc5\x62\x7e\x39\x52\xdb\x3b\xa2\x42\x16\x06\xaa\x3c\x7b\x85\x64\xaa\xdf\xa0\x4a\x95\x24\xc5\x30\xf5\xab\x8d\x42\xcf\x62\x10\x7d\x50\xf4\x80\xdc\xce\x6a\x38\xf0\x1a\x14\x62\xc0\x4d\x1d\x84\x6b\x0c\xf0\x6a\xc5\x34\x16\x89\xf1\xbe\x0e\x86\x22\xa6\x3f\x9d\x13\x86\x8f\x09\x0f\x92\x79\x92\x8a\xc7\xb4\x29\x52\x4a\xe4\x34\x40\x2d\x9a\x6f\x64\xbf\xeb\x46\xc1\x2c\x20\x35\x87\xb6\x81\x59\x1c\x22\xd0\x2c\xdf\xc8\xd1\x02\x0c\x26\xa7\x06\x3c\x73\xdb\x44\xcd\xf8\x79\x91\x7b\x51\x49\x86\x32\x24\xae\xb9\x34\xeb\xc0\x8b\xa5\xb4\x49\x97\x6c\x62\x92\x09\x57\x17\x78\x95\xc7\x1f\xb7\x07\x48\x54\x19\x96\x16\x20\x85\xdb\x4a\xc8\x24\xd0\x2a\xcd\x25\x9d\x31\x7b\xd9\xa4\x12\xa7\x93\x09\xe4\xce\x78\xd0\x86\x41\x25\xe4\x0b\x37\xc8\xab\x68\x34\x6d\x92\x8c\x0d\xab\x53\xe7\x1a\x12\xe1\x27\x62\x1c\xf5\xb0\xf4\xd2\x09\x26\x2d\x11\x4d\x3c\x41\xce\x92\x4f\x67\x8a\x79\x05\x6e\x44\xd9\x9a\x9d\xe9\x82\x85\xd8\x24\xef\x55\xd9\x26\xdd\x31\x78\x1d\xfa\x48\xb6\xf6\x18\x01\x5f\x4d\xab\x66\x88\x8f\x21\x3e\x99\xa6\x3a\xb3\x9c\xe6\xce\xde\xde\xf6\xfb\x0c\xff\x9e\x5a\x4e\xa3\xe9\xd5\x85\x30\x6f\x2e\x3f\xf3\xdb\xd6\x93\x7d\xab\xb9\x7c\xdd\xde\xda\x79\x02\x0c\x41\x6c\xbb\x40\xa8\x3d\x2b\x95\x9d\x66\x37\xea\xd3\x98\x0b\x4f\xb0\x92\x09\x4c\x5e\x6f\x18\x8d\xc0\x44\xbb\xf8\x10\xe5\x8f\x94\x0e\xad\xa3\x69\x4a\x05\xae\xe6\x51\x51\x57\xe2\xb1\xd6\x49\xdf\x23\xc7\xbe\xbd\xf3\x8c\x71\xc3\xf6\xc1\xee\xee\xd6\x53\xcb\x94\xc8\xc8\x54\x2d\x53\xef\xca\xe0\xeb\xad\x41\xdd\xf3\x5e\x36\x8b\x4a\xd3\xda\xb4\x08\xe3\xc8\x71\x8b\x72\x98\xc9\x5f\xb0\xb2\x4c\x7e\xba\x80\x4f\xd5\x0b\x43\x80\x89\xc6\x37\x95\xf1\x22\x8e\x37\xe0\xf3\x3a\xcb\x52\x98\xee\x5f\x90\x2d\xd6\xcf\xfc\xdf\xc8\xa3\xf0\x62\x83\xb3\x29\x11\x5c\xa8\x34\x86\x0e\x2e\xd5\x33\xe1\x70\xc2\x29\x3a\x81\x03\x83\x4e\xac\x72\x82\x4e\x9b\xa8\x86\x17\xe0\xa0\xc9\x21\x08\x8e\x8d\x16\x90\xf0\xcd\x99\xd5\xee\x41\x99\x3b\x1d\x38\xae\x35\x5f\xf8\xce\x3b\xba\xfe\xa8\xcb\x93\xc3\xbe\x78\xee\x38\x03\xf1\xaa\x7f\xea\x0a\x66\x07\xa9\xb3\xf0\xea\x2d\xe7\x9d\x77\x2c\xcf\x69\xb8\xce\x90\xfc\x2a\x08\xbc\xf3\xee\x87\xad\xa6\xf3\xd2\xc5\x7f\xbf\xfe\x1b\x9b\xa4\xe5\x8b\x3c\x25\x05\x8d\x08\x1b\xcf\x24\x47\xdd\x30\x80\x7f\x80\xab\x6c\xf7\x7c\x17\xb0\xb7\x7b\x04\xcf\xd9\xac\xbf\x22\x10\xf9\xcc\x6a\xf4\xfb\xcf\xdb\x0e\x57\x19\x4b\x52\xf0\x83\x6b\xa9\x48\x5d\xcd\xe7\xe5\xb8\x72\x9f\x28\x41\x68\x0c\x23\xcd\x48\x97\x8a\x80\x8a\x7c\x59\xfa\xe6\x46\x04\x0b\x08\x26\xc9\x0b\x7b\x9b\xca\x80\x90\x2f\x63\x0f\x93\x49\xf1\x0b\xd2\x1d\x80\x14\x8f\x0a\x83\xfd\x8f\x5e\xf9\xf5\x53\xe4\x7c\x3d\xd8\xba\x2e\xe3\x19\x4d\xf8\xa8\xf2\xd2\x39\xa2\x4f\x15\x6a\x30\xe8\x16\x5c\x3f\xb3\xea\x8d\x61\xfb\x05\xa5\x88\x4d\x07\xc0\x01\x4f\x08\x3a\x88\x0b\x5c\x21\xd8\xdf\x02\x71\xcf\x21\x8f\x41\x3a\xf4\x95\x9d\xe0\xb8\x78\x35\x05\x86\x4c\x93\x71\x94\xcd\x84\xac\x00\x2d\xc5\x6c\xf2\x99\x9c\x00\xa3\xe8\x80\x01\x9a\xc7\x84\x50\x5c\xdf\x01\x2e\xea\xf8\x5c\x16\x76\xbb\x6b\x30\x4b\x6a\x10\xc9\xe6\x6d\x06\x63\x02\x52\x2d\x56\x88\x02\x4f\x00\xe7\xa6\x8b\x44\x03\xd2\x55\x5c\x63\xf2\x2e\xef\xbf\x44\x94\x97\x38\xa3\xb4\x40\x45\x13\x8e\x94\x58\x2a\x97\xca\x82\xe4\x86\x6b\x39\x55\x8b\x8a\x95\x6d\x97\xb2\xd9\xe3\x1e\x24\x4d\x05\xb0\x12\x85\x2e\xed\x86\x72\xc7\xb1\x91\x49\xe1\xf0\x28\x57\x6c\xbd\xf2\x69\x37\xe5\xee\x14\xb5\x42\x99\x63\xd4\x2a\xd7\x07\x64\x9a\x2e\x2e\x38\xc1\x87\xfc\xa3\x5c\xb1\xae\xd7\x74\x89\xa4\xb6\xfd\x74\xaf\xa0\xf9\x90\x54\x97\x93\x7c\x55\xdf\xfe\x57\x31\xc1\xe4\x99\xa3\x60\x9e\x03\xe9\x0b\xae\x67\x68\xf5\xba\x23\x25\x43\xbb\x51\x1f\x0c\x61\x58\x45\xa1\xce\x7a\x8d\x8c\x62\x9a\xa6\x97\xe4\xd2\x4e\xf0\x2b\xf2\x40\x5d\xae\x55\x85\xad\x7b\x4a\xbd\xec\xb1\xe3\x88\xc0\x6a\x1e\xcd\x24\xc5\x51\x08\x00\x36\x0d\xb8\xa3\xac\xa6\x43\x4a\xe5\xfa\xc3\x76\xd7\x01\x28\x31\xb5\x9a\x3a\x0b\x3f\x4a\xd8\xf2\x65\x09\x11\xd0\xea\xbc\xe7\xed\x81\x3f\xec\x78\x3e\xc6\xd1\x99\xc4\x6a\x8b\xab\xfc\x7c\x1a\x29\xc6\x9f\x54\x6d\xc9\x66\x7a\x9b\x54\x12\xa5\xc2\x1b\xe7\xe5\xb7\xeb\x4d\x94\x93\x23\xbc\x22\xe9\xd3\x9b\x6f\x96\xc8\x1e\x2d\xc6\x63\x8e\xcd\x1c\x47\x28\xd1\x46\xa6\x94\xc8\xd8\x46\x78\x91\x73\x53\x03\x8f\x38\x16\x9b\x43\x88\x90\x0b\xae\x97\x09\x36\x71\x4d\x79\x30\x7f\x04\x6c\x74\x7a\x4d\xff\xe8\xb4\xd5\x22\xec\xe5\xf4\x34\x83\x68\xdd\x64\xd8\xab\xa2\x0b\x16\xca\xd6\xa3\xcf\x40\xbc\xd3\xa3\x6f\x39\x0d\x0d\xe7\x8b\xf3\x10\x86\xf3\xac\x93\x3a\x0d\x20\xf4\x36\x63\x65\x53\xb3\x7c\x5e\x9d\xd0\x33\x29\xda\xc1\xde\xfe\x33\x7c\xfb\xf6\xb7\xcd\x87\x4f\x3f\xe5\xd6\x27\x4f\xb9\x9a\x91\xe6\xd2\x2e\x0a\xc2\x0c\xa6\x90\x60\x9b\xbc\x7b\x03\x5d\xe0\xc4\xbd\xee\x70\xe0\xe9\xaa\x16\x62\x34\x15\xc8\xaa\x30\x26\x8a\xe8\x9c\x29\x41\x08\x54\x79\xe5\xb1\x98\x89\x18\x00\x38\x8e\x9c\x9b\x32\xf5\x90\x8b\x92\x6e\xab\x21\x9e\x3e\xd9\x7a\xbf\x2a\xda\x7a\x22\x93\xb7\x18\xdc\xa0\x56\x84\xc0\x23\x9e\x28\x88\xaf\xe1\x70\x97\xf3\x99\x90\x57\x42\xbc\x27\x4e\xa7\x4f\x58\x4d\x2b\xab\x0e\x2b\x04\x3b\xd9\x3d\x52\xad\x23\x8c\x48\x5e\xf0\x9f\xd5\xa5\x63\xe0\x31\x44\xa4\xa1\x6b\x24\xcb\xfe\xa4\xfb\xeb\x04\xd7\xf2\x03\x06\xa7\x3a\xeb\xc0\x4a\xd0\xcf\xa7\xe5\x68\x2f\xce\xde\x8a\x7d\x95\x8e\x93\xbc\xbd\x32\x78\x4d\xcb\x3b\xae\x8a\x3e\xa5\xce\x14\x16\xe1\x71\x14\x4f\xac\x64\x3c\xae\x90\x4b\x02\xb3\x4a\x03\x95\x56\xf1\x42\xbd\xb5\x03\x43\x8a\x18\x61\x4b\xe5\x7e\x14\xeb\x7d\xc2\x9e\xed\x16\x79\x87\x15\xcc\xbf\x07\x8f\x6a\xed\x7e\x08\x90\x9a\x1e\x2b\x44\xca\xfa\xa5\x71\x7b\x18\x02\x35\x00\xac\x91\x34\xf7\x76\x77\x76\xaa\x62\x48\x7b\x30\xd8\x8d\x0b\x2e\x78\x94\xac\xb5\xcb\xce\xd8\x20\x6d\xff\x7c\x83\xd4\x7b\x43\x7c\x83\x3f\x7f\x58\xca\x0d\xbe\x79\x2e\xb4\x75\x5a\x2d\xb7\xdf\x35\x55\x72\x5a\xc4\x2a\xc2\xb1\xdf\x9f\x07\x4a\x5d\xa7\x59\x68\xb0\x4d\x19\xd6\x10\x63\x72\xf9\x26\x07\x9c\x9e\xc5\x7c\x60\x42\x85\x8a\x04\x82\xbc\x92\x86\x38\x1b\x6c\x9a\x20\x4b\x5e\xa2\xd4\x93\x61\xb7\xe3\xd7\x3b\x43\x8a\xd9\x14\x02\x97\x8c\xb3\x5e\x8f\xe0\x21\xd6\x31\x9b\x9c\xc1\x91\x68\x68\x04\x13\xdd\xe0\x7d\x51\x2b\xf7\xbc\x75\x66\x68\x3a\x5b\xf5\x26\x5c\x27\x47\x5f\xdd\x52\x20\x25\xf3\xdd\xc0\xaf\xe3\x06\x4c\x1d\xcb\x85\x2b\x2e\xb9\xc4\x35\x8a\x4f\xb7\x80\x79\x40\xe9\x45\x9d\xc2\xcb\xd3\xad\x82\x90\x5e\x8b\x06\x5c\xa5\xb5\x80\x40\x82\x7c\x98\x31\x03\xd5\x7a\x8c\x2c\x30\x8a\x07\x1c\x20\x4e\xe7\x54\x3d\x3a\xcc\x47\x73\x9b\x3e\x1e\x1e\x3c\xdd\x7d\xf6\xbe\x5d\x70\xf8\x70\x16\x8c\x82\x0c\x36\x10\x5e\x1c\x6e\xd9\xf3\x34\x8d\x19\x0a\x1f\xc2\x4d\xd9\x51\x18\x4b\xdf\x78\xf0\x43\x1d\xfa\x8b\x99\x0f\xc4\xf9\x0a\x91\x6e\x6f\xef\x6c\x6f\x9f\x17\x66\x4b\x70\x43\x51\x8d\xee\x7e\x9e\x52\x4a\x63\x58\x5a\xb0\xf7\x3e\x7e\x22\xba\xbd\x68\x37\xd7\x19\x3a\xc8\xd2\xab\x88\x60\x11\x63\x8e\x09\x0c\x98\xf6\xad\xf4\xb2\xd0\xe5\x80\x4d\x53\x9f\xb8\x25\x37\x45\xaf\x1b\x49\xe7\xc0\x34\x2d\x5c\xa2\x5e\xd9\x2a\xaf\x32\xa7\x3e\xfa\xc4\xc9\x7c\x55\xe7\xff\x6f\xdc\x23\x44\x7f\x00\x2c\x58\xc1\x6f\x25\xcc\x28\x44\xd6\xb8\x51\x84\x2a\x29\x16\x8c\xa0\x0c\x7f\x5b\xac\x8c\x60\xfd\x41\x31\xdf\x87\xc5\x1a\xfd\x9c\x1c\xe3\xf9\x92\x4d\xbe\x39\x6e\x37\x90\xba\xd8\x09\x17\x5a\xf5\x96\x47\x08\xdf\x91\xd4\x20\xd2\x60\x54\x03\x4d\x23\x9f\x4e\x37\x7c\x8d\x50\xa8\x96\xa1\x23\x1a\xf9\xad\x82\x5f\xd0\x55\xc6\x34\x46\x8d\xcb\xee\x52\xbb\x1f\x4d\x10\x48\xfb\xd4\x75\xee\x22\x10\x85\x04\x5e\xcf\xbf\x36\x96\x31\x86\x31\x50\x02\x9e\x9a\xca\xea\x94\xb0\x58\x3a\xac\x86\xf8\xb8\x34\x9d\x35\x22\xfb\x88\x35\x5b\xd6\x71\xc3\x2f\xac\x86\x81\x05\x9d\x4e\xf0\x87\x15\x95\x38\x1a\x4b\xa6\x73\xcf\x70\xcf\xf1\x3c\x7d\x0e\xde\x72\xd6\xc7\x5b\xaf\xe7\xd1\x88\x2a\x8f\x00\xcf\x2f\x90\x54\xb8\xe6\x30\x73\xed\x88\x31\xb8\xc2\xdf\x4c\xf1\xe5\x04\x24\xaa\x4a\x9a\xa3\x0f\xf2\x96\x48\xeb\x52\x34\x6c\x84\x8b\x54\x4d\x17\xe9\x06\x3a\x41\xf7\x83\xa2\x74\xaf\x87\x0a\x85\x0c\x70\x84\x95\x91\x24\x34\x7e\x04\x7c\x1c\x25\xd5\x49\xa6\x3b\x30\x86\xd4\x8f\x35\xeb\xd8\x35\x4b\xf1\x90\xef\x34\x38\xbb\x30\xdd\x96\xd1\xaf\xe8\x52\xf2\x73\x41\x9e\xc3\x72\x11\xa8\xf3\xf2\x49\xee\xaa\xf5\x57\x3d\xcd\xbd\xe7\x14\xb7\x44\xe4\xbe\x93\xdc\xd2\xe7\xf3\xb5\xcc\xaf\xf4\xe1\x7f\x79\x34\x6b\xdd\x3a\x76\xbd\xbf\xd3\x57\x9c\xc5\xde\x73\x0a\x5b\x3a\x79\x7d\xf2\xf5\x0f\x5e\xcb\x27\xae\x7b\x60\x39\x69\x1b\x31\xdb\x9b\xcb\x11\x22\xb8\xd4\x95\x1b\x13\xa4\x88\x71\x94\x67\xdf\x50\xc9\x71\x4e\x75\x1b\xc1\xe7\x7f\xeb\x54\x11\x7f\xe1\x5e\x77\x0b\x22\x88\x1b\x06\x47\xa1\xbb\xb9\x0f\x40\x62\xa3\x7b\x26\x0d\x5b\x9c\x26\xd1\x9b\x66\x40\x20\xcf\x5d\x5c\xdc\x98\xa7\x56\x63\x7f\x67\xa7\xf8\xfd\x58\x3f\xec\x6d\xd9\x05\xe9\xe5\x83\xfe\xb4\xbb\xbb\xfb\xfe\xf2\xa1\x17\x24\xa9\x2d\x9e\x47\xc8\x1f\xa8\x8c\xea\xe5\x88\xe4\xe6\xa7\x0b\xe4\x16\x2d\x9f\x47\x59\xca\xa1\x89\x5f\x69\x94\x09\x5b\xb3\xe2\x00\xb4\x80\xe4\xc1\x05\xa5\x03\x25\x36\x28\x29\x0b\x7d\x9f\xa4\x71\x80\xc4\x2c\xcd\x26\xb5\xf9\xe5\xa4\x46\xdc\xab\xbd\x8b\xa7\x0a\x1c\xa3\xca\x03\xd2\x92\x56\xdf\xed\xd6\x75\x94\x41\xce\xae\x2f\xe4\xac\x4a\x5c\x45\xb4\xa1\xfe\xa9\xae\x6e\x98\x70\x43\x4d\x09\xfd\x12\x28\x36\x47\xb8\xa6\x5c\x73\x2b\x00\x15\x63\x0b\x0c\x46\xe7\x49\x5c\x4e\x2e\x0e\xac\x66\xe8\x19\xcd\x8b\x5b\x1e\x46\x37\x8b\x61\x36\x2b\xc9\x86\x65\xca\x26\xa6\xf5\xff\x32\xa3\xb8\x9d\x4c\xb0\x8f\x2b\x36\x3e\xcc\x82\x11\x6f\xb7\x29\x2f\x16\x13\x7a\x68\x83\xf7\xf4\xfb\x32\xc8\x78\xff\x0e\x5d\xa1\xa1\x87\x46\x16\x51\xb5\x21\xbe\xb5\x7d\x4d\xc1\xea\x20\xc9\x24\xfc\xc1\xaf\x56\x81\x41\x0a\xde\xe8\x3b\x26\x9c\x87\x93\x18\xaa\xa6\xfd\xac\x18\xb6\x1c\xc0\xcc\xb8\xdd\x9b\x1a\x57\x5d\x3f\xd0\xc0\x52\xfb\x1d\x45\x75\x90\x74\xc6\x77\x63\xd0\x55\x64\x69\x8e\xe7\x4d\x75\x4d\x1a\xc8\x26\x98\x92\x63\xa0\x74\xc4\x04\xff\xc7\x77\x23\x4a\xa7\x7f\xec\xbb\xfd\xa1\x86\xc7\xc6\x55\x91\x21\xf3\x51\xeb\xca\x9a\x29\xa9\x89\xf5\xbd\x98\x35\x1a\xcc\xd3\x2d\x6d\xcc\x54\x4f\xf7\x0a\x3e\x33\xa7\x97\x8e\x44\x4d\xa3\x71\xfe\x10\x9d\x9d\x7d\x73\x5d\x64\x5b\x7c\xe3\x1b\x78\xb3\xa9\x88\x58\x72\x31\xbe\x77\xd2\x6e\xf1\xa1\xcf\x3e\x47\xa9\x09\xf9\x41\xde\x75\x08\x48\x7c\x73\x77\x5f\xcd\x7a\xbb\xf3\xea\xce\xce\x9c\x37\xf3\x28\x63\xdf\x81\x14\x0a\xcb\x21\x02\xb4\x96\x4d\x7d\x51\x46\x04\x63\x2a\xa6\xcc\xb0\x6c\xea\xb1\xce\xae\x67\xfa\x68\xbf\xa8\x6c\x95\xc4\x9c\xdc\x27\xe3\xa4\x2c\x35\x57\x1a\xe8\xa9\x71\x27\x1f\x21\xf3\xad\x36\xc3\x8f\x19\xc2\x2e\xfc\xef\x3d\x60\xc1\x75\x00\x56\x7a\x48\x70\x7d\x44\xdc\xae\x57\x3e\x90\x18\xea\x03\xa4\x6c\x49\x9b\x53\xbd\x12\xc6\x05\x91\x18\xd3\x3d\x44\xb5\x0c\x3f\x8c\x59\x00\xbd\x91\xca\x2f\xe0\x1d\xb5\xed\x2f\xc2\xf9\x2d\xbd\xa7\x2e\xe5\xd3\x5f\xbc\x73\xcd\xa3\x04\xa9\xf5\xf9\xed\x92\x4b\xda\x93\xdc\xe2\x12\x35\x96\xb9\xf4\x50\x9e\xbf\xbe\x80\x66\x14\x4c\x12\x4c\x17\x8d\x0a\xd6\x99\x54\x94\x73\xc9\x8d\x52\x51\xe0\xe1\x9e\xb7\xca\x04\xcb\x5c\xfa\xeb\xe6\x59\x90\xaf\x24\x7c\xba\x2a\xd8\xa7\xab\xf8\x6c\xbc\xde\xeb\x8d\xed\x72\x76\xb7\x61\x6f\xec\xac\xbd\x9f\x91\x54\x1c\xaa\xf6\x78\x25\xc6\x2d\x1d\xef\x6d\xe6\xad\x0a\xe8\x2b\x06\xae\x17\xd2\xc5\x5a\x4d\xdb\x6a\xba\x6d\x3e\xb2\x25\xff\x1a\x28\x7d\x29\xec\x0d\xc2\x8a\x5e\xde\x01\x97\xc4\x0f\xe8\xcf\x87\xcb\xe3\x7b\xae\xc0\xfd\xa6\xb9\x9e\x79\xb8\xc8\xc7\xfb\x16\xe9\x0d\x47\x14\x04\xb1\xf2\xfd\x8c\x6c\x91\x24\xe4\x69\xa8\x99\x0b\x5f\x1c\xfb\xa3\x94\x4e\xfa\x10\xb6\xab\xa5\xba\x91\xb1\x45\x77\x91\x94\x7b\xb3\xf2\xf2\xe1\x0c\xd7\xbf\xe1\xbc\xe9\x72\x69\x7d\xe8\x73\x05\x64\x05\xcd\xe8\x28\x28\xe4\xd0\xc2\x17\x1c\x95\x5e\x49\x55\x9f\xef\xfb\xa6\xf1\xcc\xa2\x3b\x18\xcd\x53\x06\x60\x1f\x6a\x53\xdb\x9e\x5a\x2c\xa9\xe5\x85\xcf\xa9\x44\x36\x3c\xd5\x27\x8f\x86\x0a\xdd\xa0\xf1\x75\xbb\xcf\xed\xf7\x11\xda\x79\x32\xb5\x56\xf5\xb8\xa7\x5b\x04\xc7\xea\xd9\x64\xa1\x71\x21\xd9\x36\xc7\x41\x68\xcc\x23\x24\x09\x62\xac\x46\x97\x8f\x8a\xc8\x57\xa9\x2c\x92\x8c\x30\x15\x33\xad\x52\xc9\x83\x89\xa2\xe8\x49\x81\x9d\xc3\x7f\x9a\x2c\x03\x7c\x94\x57\xd4\x68\xc6\x60\x36\x4c\x47\x8a\x1b\x88\x58\x6d\xbb\xfa\xac\xba\x67\xd5\xdd\x63\xa3\x28\x0d\x3e\x3b\x2d\x5d\x65\xe5\x03\x31\xd2\xf9\x82\x3b\xbc\x17\x9f\x77\x47\xdf\xc0\x9f\x5b\xcc\x65\x99\xdc\xbf\x55\xeb\x35\x26\x3e\xbb\x83\xef\x28\x40\xa8\x25\xf4\x44\x43\x50\x76\xee\x64\xbc\x54\x67\xe2\x32\x72\x95\x3d\xe7\x71\x7b\xe8\x37\xdb\xad\xd6\x5a\x9c\xb8\x43\x96\x94\x2d\x18\xe5\x94\x10\x30\xcd\xb8\x7c\x96\xf5\x4b\x88\xf2\xdd\xe1\x7a\x63\xc8\x16\x24\xf6\xee\xa1\xae\x41\x29\xdd\x43\x4a\x1e\x22\xb6\xba\x08\xb8\xf5\xb0\x6c\x27\xa3\x92\x64\x83\x09\x19\x9a\xa2\xd2\x0a\x5e\x10\x9a\xbf\x8e\x60\x27\x23\x23\x56\x24\x67\x2b\xc9\xf6\x97\x65\xbc\x7b\x6a\xc3\x24\x97\xaa\x69\x3f\xb3\xba\x6d\xa4\x31\x1c\xeb\x9e\x52\x3c\x6e\xbb\x6e\xdf\xd5\x97\x65\xac\x46\xa7\xdf\x73\xcc\x33\xdd\x3c\x36\x8f\xc8\x72\xe6\xd1\x5d\xc1\x46\xb9\x9c\x29\x5d\x6b\xd4\xa7\xee\x8a\xa5\x19\xe8\xc2\x30\xf1\x49\xdf\x5f\xf7\x1c\xbf\x3d\x74\xba\x5e\x71\x69\x2b\xda\xde\xa7\x98\x57\xef\xd1\xe2\x01\x51\x2a\xa7\x9e\xfd\xd9\xb4\xd2\xe8\xd1\xdf\x93\xe7\xf4\x77\xf8\xd2\x0e\x65\xa5\xe9\xd8\xe3\xac\xd2\x72\xed\x24\xae\xf4\x3a\x76\x7c\x55\xe9\xbc\xb0\xb3\x45\xc5\x3d\xb5\x3f\x09\x2a\xdf\x1a\xd8\x52\x55\x1c\xcf\x9e\xe7\x95\x23\xd7\x9e\xc7\x95\x41\xc7\xbe\x98\x54\x8e\x8e\x6d\xb0\xa9\x3d\xb4\xc7\x51\xa5\xd5\xb6\xf3\xac\x32\x74\xed\x91\xaa\x34\x3e\xe6\xf3\x3d\x9a\xd3\x81\xfa\x45\x6a\x6a\xff\xec\x1f\xbf\xf3\xd3\x7f\xfb\xe3\x9f\xfe\xe8\x1f\xbe\xfc\xd3\xdf\xb5\x7f\xf6\xe3\xef\xfe\xfc\xef\xfe\x44\xbf\xfc\xe2\x27\xbf\xf7\xf3\xbf\xfd\xf3\x2f\x7f\xf4\x4f\xbf\xf8\xc9\xef\xdf\xfe\xf0\x5f\x7f\xf4\x83\x2f\x7f\xfc\xef\xf4\xa1\x29\x17\xb9\x1a\x4d\xed\x56\x16\x24\x9f\x7f\x2f\x88\x94\xdd\x93\xa1\xcc\x00\xb7\x43\x65\x77\x82\x1c\x0a\xf3\x9f\x7f\xbd\xb0\xdf\xfe\xd5\x17\xbf\xf3\xc5\x77\xbf\xf8\xee\xdb\x7f\x79\xfb\xa3\xb7\x3f\xb6\xbf\xfc\xb3\xbf\xf9\xf2\x2f\xfe\xfe\xbf\xbf\xff\x97\xb6\xa3\xe6\xc1\xe7\x3f\x4c\x63\x9b\xee\xa6\x2c\x26\x8b\xcf\xbf\xaf\xe8\x2e\xd1\x51\x16\xa8\x88\x1a\x63\x75\x19\xd9\x6f\x7f\xf8\xc5\x1f\xbc\xfd\xd7\xb7\xff\xfc\xf6\x07\x5f\x7c\x47\xd3\xb0\xdb\x79\x10\x47\x94\x43\x78\x0b\xa0\xba\x38\x80\xe6\x27\xf6\xf0\xf3\x9f\x64\x97\x9f\x7f\x4f\xda\xff\xf1\x87\x98\x35\x8f\x92\xc0\xd2\x60\x3b\x64\x6d\x24\xa7\x47\x2a\x80\xbc\xfb\x12\x01\x8c\x85\x40\xa1\x41\x52\x72\x70\x66\xb1\x14\x58\x1a\x16\x8b\x02\x8f\x9f\x4d\x2d\x96\x07\x3f\x42\x22\x16\xff\x5d\xbe\xb1\x7c\xf8\x3a\xbf\xc5\x42\x22\xc7\x9b\x59\x2c\x29\x3c\x26\xb1\xc5\xe2\xa2\x3b\x5e\x57\x16\xcb\x8c\x0e\x53\x17\x16\x0b\x0e\x8f\x9f\x04\x16\x4b\x8f\xe6\x54\x16\x8b\x10\x8f\xfc\x6b\xb1\x28\xe9\x2d\xb6\x58\x9e\x78\xbc\x98\x58\x2c\x54\xca\x45\x73\x8b\x25\x4b\x13\x46\x16\x8b\x97\xfd\x92\xc5\x32\xa6\xf4\x80\x65\xcd\x20\xae\xb8\xd7\x36\x0b\xe6\x73\xbe\x12\x92\x8a\x69\x34\x99\xc6\xf8\x97\x8b\x51\x1c\x70\x49\x8f\xcd\xb2\x0a\x80\x1c\x1f\x46\x49\x64\xbd\x5e\xf6\xa8\x9a\x61\x74\x76\x9a\x52\xc0\x84\x93\x3f\xe9\xbf\xf4\x5b\x48\x8f\x90\x2c\x1c\xb9\xfa\x5c\xbd\x04\x8d\x3c\xba\x1a\x4e\xe1\x5d\x97\x77\x6e\x27\x68\x7c\x07\x84\x7c\xc2\x24\x2d\x6e\xe0\x8f\x11\x47\x21\x8f\x32\x5d\x0a\xec\xfa\xc8\x89\x9d\xed\xff\x04\x00\x00\xff\xff\x04\xc0\xc7\xf6\x3f\x32\x00\x00") func confAppIniBytes() ([]byte, error) { return bindataRead( @@ -301,8 +301,8 @@ func confAppIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/app.ini", size: 11756, mode: os.FileMode(420), modTime: time.Unix(1468562280, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/app.ini", size: 12863, mode: os.FileMode(420), modTime: time.Unix(1468625438, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -321,8 +321,8 @@ func confGitignoreActionscript() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Actionscript", size: 300, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Actionscript", size: 300, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -341,8 +341,8 @@ func confGitignoreAda() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Ada", size: 51, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Ada", size: 51, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -361,8 +361,8 @@ func confGitignoreAgda() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Agda", size: 8, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Agda", size: 8, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -381,8 +381,8 @@ func confGitignoreAndroid() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Android", size: 394, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Android", size: 394, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -401,8 +401,8 @@ func confGitignoreAnjuta() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Anjuta", size: 78, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Anjuta", size: 78, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -421,8 +421,8 @@ func confGitignoreAppengine() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/AppEngine", size: 58, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/AppEngine", size: 58, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -441,8 +441,8 @@ func confGitignoreAppceleratortitanium() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/AppceleratorTitanium", size: 45, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/AppceleratorTitanium", size: 45, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -461,8 +461,8 @@ func confGitignoreArchlinuxpackages() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ArchLinuxPackages", size: 75, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ArchLinuxPackages", size: 75, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -481,8 +481,8 @@ func confGitignoreArchives() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Archives", size: 295, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Archives", size: 295, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -501,8 +501,8 @@ func confGitignoreAutotools() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Autotools", size: 181, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Autotools", size: 181, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -521,8 +521,8 @@ func confGitignoreBricxcc() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/BricxCC", size: 72, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/BricxCC", size: 72, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -541,8 +541,8 @@ func confGitignoreC() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/C", size: 246, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/C", size: 246, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -561,8 +561,8 @@ func confGitignoreCSharp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/C Sharp", size: 1521, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/C Sharp", size: 1521, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -581,8 +581,8 @@ func confGitignoreC2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/C++", size: 242, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/C++", size: 242, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -601,8 +601,8 @@ func confGitignoreCfwheels() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CFWheels", size: 205, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CFWheels", size: 205, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -621,8 +621,8 @@ func confGitignoreCmake() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CMake", size: 89, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CMake", size: 89, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -641,8 +641,8 @@ func confGitignoreCuda() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CUDA", size: 38, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CUDA", size: 38, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -661,8 +661,8 @@ func confGitignoreCvs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CVS", size: 39, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CVS", size: 39, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -681,8 +681,8 @@ func confGitignoreCakephp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CakePHP", size: 136, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CakePHP", size: 136, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -701,8 +701,8 @@ func confGitignoreChefcookbook() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ChefCookbook", size: 77, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ChefCookbook", size: 77, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -721,8 +721,8 @@ func confGitignoreCloud9() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Cloud9", size: 45, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Cloud9", size: 45, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -741,8 +741,8 @@ func confGitignoreCodeigniter() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CodeIgniter", size: 106, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CodeIgniter", size: 106, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -761,8 +761,8 @@ func confGitignoreCodekit() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CodeKit", size: 54, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CodeKit", size: 54, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -781,8 +781,8 @@ func confGitignoreCommonlisp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CommonLisp", size: 26, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CommonLisp", size: 26, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -801,8 +801,8 @@ func confGitignoreComposer() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Composer", size: 250, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Composer", size: 250, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -821,8 +821,8 @@ func confGitignoreConcrete5() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Concrete5", size: 42, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Concrete5", size: 42, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -841,8 +841,8 @@ func confGitignoreCoq() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Coq", size: 18, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Coq", size: 18, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -861,8 +861,8 @@ func confGitignoreCraftcms() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/CraftCMS", size: 120, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/CraftCMS", size: 120, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -881,8 +881,8 @@ func confGitignoreDm() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/DM", size: 29, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/DM", size: 29, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -901,8 +901,8 @@ func confGitignoreDart() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Dart", size: 234, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Dart", size: 234, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -921,8 +921,8 @@ func confGitignoreDarteditor() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/DartEditor", size: 19, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/DartEditor", size: 19, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -941,8 +941,8 @@ func confGitignoreDelphi() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Delphi", size: 1347, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Delphi", size: 1347, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -961,8 +961,8 @@ func confGitignoreDreamweaver() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Dreamweaver", size: 47, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Dreamweaver", size: 47, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -981,8 +981,8 @@ func confGitignoreDrupal() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Drupal", size: 605, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Drupal", size: 605, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1001,8 +1001,8 @@ func confGitignoreEpiserver() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/EPiServer", size: 81, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/EPiServer", size: 81, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1021,8 +1021,8 @@ func confGitignoreEagle() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Eagle", size: 401, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Eagle", size: 401, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1041,8 +1041,8 @@ func confGitignoreEclipse() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Eclipse", size: 458, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Eclipse", size: 458, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1061,8 +1061,8 @@ func confGitignoreEiffelstudio() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/EiffelStudio", size: 35, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/EiffelStudio", size: 35, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1081,8 +1081,8 @@ func confGitignoreElisp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Elisp", size: 36, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Elisp", size: 36, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1101,8 +1101,8 @@ func confGitignoreElixir() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Elixir", size: 34, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Elixir", size: 34, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1121,8 +1121,8 @@ func confGitignoreEmacs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Emacs", size: 320, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Emacs", size: 320, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1141,8 +1141,8 @@ func confGitignoreEnsime() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Ensime", size: 57, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Ensime", size: 57, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1161,8 +1161,8 @@ func confGitignoreErlang() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Erlang", size: 95, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Erlang", size: 95, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1181,8 +1181,8 @@ func confGitignoreEspresso() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Espresso", size: 9, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Espresso", size: 9, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1201,8 +1201,8 @@ func confGitignoreExpressionengine() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ExpressionEngine", size: 342, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ExpressionEngine", size: 342, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1221,8 +1221,8 @@ func confGitignoreExtjs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ExtJs", size: 38, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ExtJs", size: 38, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1241,8 +1241,8 @@ func confGitignoreFancy() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Fancy", size: 12, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Fancy", size: 12, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1261,8 +1261,8 @@ func confGitignoreFinale() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Finale", size: 184, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Finale", size: 184, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1281,8 +1281,8 @@ func confGitignoreFlexbuilder() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/FlexBuilder", size: 29, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/FlexBuilder", size: 29, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1301,8 +1301,8 @@ func confGitignoreForcedotcom() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ForceDotCom", size: 57, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ForceDotCom", size: 57, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1321,8 +1321,8 @@ func confGitignoreFuelphp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/FuelPHP", size: 39, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/FuelPHP", size: 39, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1341,8 +1341,8 @@ func confGitignoreGwt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/GWT", size: 395, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/GWT", size: 395, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1361,8 +1361,8 @@ func confGitignoreGcov() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Gcov", size: 56, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Gcov", size: 56, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1381,8 +1381,8 @@ func confGitignoreGitbook() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/GitBook", size: 353, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/GitBook", size: 353, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1401,8 +1401,8 @@ func confGitignoreGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Go", size: 266, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Go", size: 266, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1421,8 +1421,8 @@ func confGitignoreGradle() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Gradle", size: 157, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Gradle", size: 157, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1441,8 +1441,8 @@ func confGitignoreGrails() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Grails", size: 583, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Grails", size: 583, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1461,8 +1461,8 @@ func confGitignoreHaskell() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Haskell", size: 135, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Haskell", size: 135, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1481,8 +1481,8 @@ func confGitignoreIgorpro() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/IGORPro", size: 121, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/IGORPro", size: 121, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1501,8 +1501,8 @@ func confGitignoreIpythonnotebook() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/IPythonNotebook", size: 37, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/IPythonNotebook", size: 37, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1521,8 +1521,8 @@ func confGitignoreIdris() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Idris", size: 10, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Idris", size: 10, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1541,8 +1541,8 @@ func confGitignoreJdeveloper() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/JDeveloper", size: 255, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/JDeveloper", size: 255, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1561,8 +1561,8 @@ func confGitignoreJava() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Java", size: 189, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Java", size: 189, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1581,8 +1581,8 @@ func confGitignoreJboss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Jboss", size: 509, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Jboss", size: 509, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1601,8 +1601,8 @@ func confGitignoreJekyll() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Jekyll", size: 37, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Jekyll", size: 37, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1621,8 +1621,8 @@ func confGitignoreJetbrains() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/JetBrains", size: 860, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/JetBrains", size: 860, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1641,8 +1641,8 @@ func confGitignoreJoomla() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Joomla", size: 22387, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Joomla", size: 22387, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1661,8 +1661,8 @@ func confGitignoreKdevelop4() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/KDevelop4", size: 16, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/KDevelop4", size: 16, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1681,8 +1681,8 @@ func confGitignoreKate() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Kate", size: 34, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Kate", size: 34, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1701,8 +1701,8 @@ func confGitignoreKicad() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/KiCAD", size: 208, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/KiCAD", size: 208, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1721,8 +1721,8 @@ func confGitignoreKohana() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Kohana", size: 39, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Kohana", size: 39, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1741,8 +1741,8 @@ func confGitignoreLabview() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/LabVIEW", size: 142, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/LabVIEW", size: 142, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1761,8 +1761,8 @@ func confGitignoreLaravel() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Laravel", size: 49, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Laravel", size: 49, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1781,8 +1781,8 @@ func confGitignoreLazarus() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Lazarus", size: 407, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Lazarus", size: 407, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1801,8 +1801,8 @@ func confGitignoreLeiningen() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Leiningen", size: 138, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Leiningen", size: 138, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1821,8 +1821,8 @@ func confGitignoreLemonstand() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/LemonStand", size: 348, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/LemonStand", size: 348, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1841,8 +1841,8 @@ func confGitignoreLibreoffice() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/LibreOffice", size: 30, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/LibreOffice", size: 30, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1861,8 +1861,8 @@ func confGitignoreLilypond() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Lilypond", size: 33, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Lilypond", size: 33, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1881,8 +1881,8 @@ func confGitignoreLinux() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Linux", size: 118, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Linux", size: 118, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1901,8 +1901,8 @@ func confGitignoreLithium() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Lithium", size: 28, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Lithium", size: 28, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1921,8 +1921,8 @@ func confGitignoreLua() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Lua", size: 324, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Lua", size: 324, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1941,8 +1941,8 @@ func confGitignoreLyx() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/LyX", size: 75, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/LyX", size: 75, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1961,8 +1961,8 @@ func confGitignoreMagento() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Magento", size: 2599, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Magento", size: 2599, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -1981,8 +1981,8 @@ func confGitignoreMatlab() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Matlab", size: 360, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Matlab", size: 360, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2001,8 +2001,8 @@ func confGitignoreMaven() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Maven", size: 170, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Maven", size: 170, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2021,8 +2021,8 @@ func confGitignoreMercurial() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Mercurial", size: 50, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Mercurial", size: 50, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2041,8 +2041,8 @@ func confGitignoreMercury() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Mercury", size: 93, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Mercury", size: 93, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2061,8 +2061,8 @@ func confGitignoreMetaprogrammingsystem() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/MetaProgrammingSystem", size: 391, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/MetaProgrammingSystem", size: 391, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2081,8 +2081,8 @@ func confGitignoreMicrosoftoffice() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/MicrosoftOffice", size: 88, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/MicrosoftOffice", size: 88, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2101,8 +2101,8 @@ func confGitignoreModelsim() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ModelSim", size: 282, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ModelSim", size: 282, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2121,8 +2121,8 @@ func confGitignoreMomentics() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Momentics", size: 76, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Momentics", size: 76, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2141,8 +2141,8 @@ func confGitignoreMonodevelop() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/MonoDevelop", size: 93, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/MonoDevelop", size: 93, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2161,8 +2161,8 @@ func confGitignoreNanoc() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Nanoc", size: 197, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Nanoc", size: 197, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2181,8 +2181,8 @@ func confGitignoreNetbeans() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/NetBeans", size: 96, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/NetBeans", size: 96, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2201,8 +2201,8 @@ func confGitignoreNim() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Nim", size: 10, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Nim", size: 10, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2221,8 +2221,8 @@ func confGitignoreNinja() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Ninja", size: 23, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Ninja", size: 23, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2241,8 +2241,8 @@ func confGitignoreNode() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Node", size: 529, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Node", size: 529, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2261,8 +2261,8 @@ func confGitignoreNotepadpp() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/NotepadPP", size: 30, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/NotepadPP", size: 30, mode: os.FileMode(420), modTime: time.Unix(1468622566, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2281,8 +2281,8 @@ func confGitignoreOcaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/OCaml", size: 178, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/OCaml", size: 178, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2301,8 +2301,8 @@ func confGitignoreOsx() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/OSX", size: 356, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/OSX", size: 356, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2321,8 +2321,8 @@ func confGitignoreObjectiveC() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Objective-C", size: 837, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Objective-C", size: 837, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2341,8 +2341,8 @@ func confGitignoreOpa() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Opa", size: 90, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Opa", size: 90, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2361,8 +2361,8 @@ func confGitignoreOpencart() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/OpenCart", size: 115, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/OpenCart", size: 115, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2381,8 +2381,8 @@ func confGitignoreOracleforms() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/OracleForms", size: 100, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/OracleForms", size: 100, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2401,8 +2401,8 @@ func confGitignorePacker() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Packer", size: 55, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Packer", size: 55, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2421,8 +2421,8 @@ func confGitignorePerl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Perl", size: 191, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Perl", size: 191, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2441,8 +2441,8 @@ func confGitignorePhalcon() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Phalcon", size: 29, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Phalcon", size: 29, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2461,8 +2461,8 @@ func confGitignorePlayframework() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/PlayFramework", size: 170, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/PlayFramework", size: 170, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2481,8 +2481,8 @@ func confGitignorePlone() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Plone", size: 137, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Plone", size: 137, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2501,8 +2501,8 @@ func confGitignorePrestashop() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Prestashop", size: 483, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Prestashop", size: 483, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2521,8 +2521,8 @@ func confGitignoreProcessing() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Processing", size: 120, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Processing", size: 120, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2541,8 +2541,8 @@ func confGitignorePython() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Python", size: 713, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Python", size: 713, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2561,8 +2561,8 @@ func confGitignoreQooxdoo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Qooxdoo", size: 58, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Qooxdoo", size: 58, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2581,8 +2581,8 @@ func confGitignoreQt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Qt", size: 292, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Qt", size: 292, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2601,8 +2601,8 @@ func confGitignoreR() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/R", size: 255, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/R", size: 255, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2621,8 +2621,8 @@ func confGitignoreRos() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ROS", size: 493, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ROS", size: 493, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2641,8 +2641,8 @@ func confGitignoreRails() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Rails", size: 707, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Rails", size: 707, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2661,8 +2661,8 @@ func confGitignoreRedcar() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Redcar", size: 8, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Redcar", size: 8, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2681,8 +2681,8 @@ func confGitignoreRedis() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Redis", size: 51, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Redis", size: 51, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2701,8 +2701,8 @@ func confGitignoreRhodesrhomobile() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/RhodesRhomobile", size: 77, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/RhodesRhomobile", size: 77, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2721,8 +2721,8 @@ func confGitignoreRuby() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Ruby", size: 607, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Ruby", size: 607, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2741,8 +2741,8 @@ func confGitignoreRust() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Rust", size: 91, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Rust", size: 91, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2761,8 +2761,8 @@ func confGitignoreSbt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SBT", size: 186, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SBT", size: 186, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2781,8 +2781,8 @@ func confGitignoreScons() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SCons", size: 90, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SCons", size: 90, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2801,8 +2801,8 @@ func confGitignoreSvn() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SVN", size: 6, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SVN", size: 6, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2821,8 +2821,8 @@ func confGitignoreSass() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Sass", size: 23, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Sass", size: 23, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2841,8 +2841,8 @@ func confGitignoreScala() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Scala", size: 185, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Scala", size: 185, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2861,8 +2861,8 @@ func confGitignoreScrivener() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Scrivener", size: 140, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Scrivener", size: 140, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2881,8 +2881,8 @@ func confGitignoreSdcc() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Sdcc", size: 55, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Sdcc", size: 55, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2901,8 +2901,8 @@ func confGitignoreSeamgen() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SeamGen", size: 961, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SeamGen", size: 961, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2921,8 +2921,8 @@ func confGitignoreSketchup() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SketchUp", size: 6, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SketchUp", size: 6, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2941,8 +2941,8 @@ func confGitignoreSlickedit() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SlickEdit", size: 323, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SlickEdit", size: 323, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2961,8 +2961,8 @@ func confGitignoreStella() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Stella", size: 207, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Stella", size: 207, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -2981,8 +2981,8 @@ func confGitignoreSublimetext() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SublimeText", size: 354, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SublimeText", size: 354, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3001,8 +3001,8 @@ func confGitignoreSugarcrm() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SugarCRM", size: 734, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SugarCRM", size: 734, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3021,8 +3021,8 @@ func confGitignoreSwift() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Swift", size: 837, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Swift", size: 837, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3041,8 +3041,8 @@ func confGitignoreSymfony() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Symfony", size: 531, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Symfony", size: 531, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3061,8 +3061,8 @@ func confGitignoreSymphonycms() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SymphonyCMS", size: 90, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SymphonyCMS", size: 90, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3081,8 +3081,8 @@ func confGitignoreSynopsysvcs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/SynopsysVCS", size: 971, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/SynopsysVCS", size: 971, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3101,8 +3101,8 @@ func confGitignoreTags() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Tags", size: 177, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Tags", size: 177, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3121,8 +3121,8 @@ func confGitignoreTex() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/TeX", size: 1328, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/TeX", size: 1328, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3141,8 +3141,8 @@ func confGitignoreTextmate() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/TextMate", size: 28, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/TextMate", size: 28, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3161,8 +3161,8 @@ func confGitignoreTextpattern() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Textpattern", size: 177, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Textpattern", size: 177, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3181,8 +3181,8 @@ func confGitignoreTortoisegit() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/TortoiseGit", size: 38, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/TortoiseGit", size: 38, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3201,8 +3201,8 @@ func confGitignoreTurbogears2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/TurboGears2", size: 202, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/TurboGears2", size: 202, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3221,8 +3221,8 @@ func confGitignoreTypo3() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Typo3", size: 466, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Typo3", size: 466, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3241,8 +3241,8 @@ func confGitignoreUmbraco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Umbraco", size: 536, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Umbraco", size: 536, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3261,8 +3261,8 @@ func confGitignoreUnity() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Unity", size: 267, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Unity", size: 267, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3281,8 +3281,8 @@ func confGitignoreVvvv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/VVVV", size: 57, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/VVVV", size: 57, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3301,8 +3301,8 @@ func confGitignoreVagrant() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Vagrant", size: 10, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Vagrant", size: 10, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3321,8 +3321,8 @@ func confGitignoreVim() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Vim", size: 66, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Vim", size: 66, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3341,8 +3341,8 @@ func confGitignoreVirtualenv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/VirtualEnv", size: 151, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/VirtualEnv", size: 151, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3361,8 +3361,8 @@ func confGitignoreVisualstudio() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/VisualStudio", size: 3412, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/VisualStudio", size: 3412, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3381,8 +3381,8 @@ func confGitignoreVisualstudiocode() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/VisualStudioCode", size: 11, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/VisualStudioCode", size: 11, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3401,8 +3401,8 @@ func confGitignoreWaf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Waf", size: 87, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Waf", size: 87, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3421,8 +3421,8 @@ func confGitignoreWebmethods() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/WebMethods", size: 424, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/WebMethods", size: 424, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3441,8 +3441,8 @@ func confGitignoreWindows() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Windows", size: 211, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Windows", size: 211, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3461,8 +3461,8 @@ func confGitignoreWordpress() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/WordPress", size: 297, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/WordPress", size: 297, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3481,8 +3481,8 @@ func confGitignoreXcode() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Xcode", size: 361, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Xcode", size: 361, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3501,8 +3501,8 @@ func confGitignoreXilinxise() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/XilinxISE", size: 566, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/XilinxISE", size: 566, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3521,8 +3521,8 @@ func confGitignoreXojo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Xojo", size: 160, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Xojo", size: 160, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3541,8 +3541,8 @@ func confGitignoreYeoman() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Yeoman", size: 52, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Yeoman", size: 52, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3561,8 +3561,8 @@ func confGitignoreYii() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Yii", size: 120, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Yii", size: 120, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3581,8 +3581,8 @@ func confGitignoreZendframework() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/ZendFramework", size: 217, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/ZendFramework", size: 217, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3601,8 +3601,8 @@ func confGitignoreZephir() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/gitignore/Zephir", size: 387, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/gitignore/Zephir", size: 387, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3621,8 +3621,8 @@ func confLicenseAbstylesLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Abstyles License", size: 730, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Abstyles License", size: 730, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3641,8 +3641,8 @@ func confLicenseAcademicFreeLicenseV11() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Academic Free License v1.1", size: 4660, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Academic Free License v1.1", size: 4660, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3661,8 +3661,8 @@ func confLicenseAcademicFreeLicenseV12() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Academic Free License v1.2", size: 4949, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Academic Free License v1.2", size: 4949, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3681,8 +3681,8 @@ func confLicenseAcademicFreeLicenseV20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Academic Free License v2.0", size: 8937, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Academic Free License v2.0", size: 8937, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3701,8 +3701,8 @@ func confLicenseAcademicFreeLicenseV21() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Academic Free License v2.1", size: 8922, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Academic Free License v2.1", size: 8922, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3721,8 +3721,8 @@ func confLicenseAcademicFreeLicenseV30() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Academic Free License v3.0", size: 10306, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Academic Free License v3.0", size: 10306, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3741,8 +3741,8 @@ func confLicenseAfferoGeneralPublicLicenseV10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Affero General Public License v1.0", size: 15837, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Affero General Public License v1.0", size: 15837, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3761,8 +3761,8 @@ func confLicenseApacheLicense10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Apache License 1.0", size: 2475, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Apache License 1.0", size: 2475, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3781,8 +3781,8 @@ func confLicenseApacheLicense11() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Apache License 1.1", size: 2508, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Apache License 1.1", size: 2508, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3801,8 +3801,8 @@ func confLicenseApacheLicense20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Apache License 2.0", size: 10261, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Apache License 2.0", size: 10261, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3821,8 +3821,8 @@ func confLicenseArtisticLicense10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Artistic License 1.0", size: 4789, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Artistic License 1.0", size: 4789, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3841,8 +3841,8 @@ func confLicenseArtisticLicense20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Artistic License 2.0", size: 8661, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Artistic License 2.0", size: 8661, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3861,8 +3861,8 @@ func confLicenseBsd2ClauseLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/BSD 2-clause License", size: 1286, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/BSD 2-clause License", size: 1286, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3881,8 +3881,8 @@ func confLicenseBsd3ClauseLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/BSD 3-clause License", size: 1480, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/BSD 3-clause License", size: 1480, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3901,8 +3901,8 @@ func confLicenseBsd4ClauseLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/BSD 4-clause License", size: 1624, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/BSD 4-clause License", size: 1624, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3921,8 +3921,8 @@ func confLicenseCreativeCommonsCc010Universal() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Creative Commons CC0 1.0 Universal", size: 6894, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Creative Commons CC0 1.0 Universal", size: 6894, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3941,8 +3941,8 @@ func confLicenseEclipsePublicLicense10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Eclipse Public License 1.0", size: 11248, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Eclipse Public License 1.0", size: 11248, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3961,8 +3961,8 @@ func confLicenseEducationalCommunityLicenseV10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Educational Community License v1.0", size: 2394, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Educational Community License v1.0", size: 2394, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -3981,8 +3981,8 @@ func confLicenseEducationalCommunityLicenseV20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Educational Community License v2.0", size: 11085, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Educational Community License v2.0", size: 11085, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4001,8 +4001,8 @@ func confLicenseGnuAfferoGeneralPublicLicenseV30() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Affero General Public License v3.0", size: 33818, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Affero General Public License v3.0", size: 33818, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4021,8 +4021,8 @@ func confLicenseGnuFreeDocumentationLicenseV11() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.1", size: 17912, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.1", size: 17912, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4041,8 +4041,8 @@ func confLicenseGnuFreeDocumentationLicenseV12() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.2", size: 20209, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.2", size: 20209, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4061,8 +4061,8 @@ func confLicenseGnuFreeDocumentationLicenseV13() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.3", size: 22732, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Free Documentation License v1.3", size: 22732, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4081,8 +4081,8 @@ func confLicenseGnuGeneralPublicLicenseV10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU General Public License v1.0", size: 12165, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU General Public License v1.0", size: 12165, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4101,8 +4101,8 @@ func confLicenseGnuGeneralPublicLicenseV20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU General Public License v2.0", size: 17277, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU General Public License v2.0", size: 17277, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4121,8 +4121,8 @@ func confLicenseGnuGeneralPublicLicenseV30() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU General Public License v3.0", size: 34570, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU General Public License v3.0", size: 34570, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4141,8 +4141,8 @@ func confLicenseGnuLesserGeneralPublicLicenseV21() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Lesser General Public License v2.1", size: 25885, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Lesser General Public License v2.1", size: 25885, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4161,8 +4161,8 @@ func confLicenseGnuLesserGeneralPublicLicenseV30() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Lesser General Public License v3.0", size: 7355, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Lesser General Public License v3.0", size: 7355, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4181,8 +4181,8 @@ func confLicenseGnuLibraryGeneralPublicLicenseV20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/GNU Library General Public License v2.0", size: 24758, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/GNU Library General Public License v2.0", size: 24758, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4201,8 +4201,8 @@ func confLicenseIscLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/ISC license", size: 745, mode: os.FileMode(420), modTime: time.Unix(1464397101, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/ISC license", size: 745, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4221,8 +4221,8 @@ func confLicenseMitLicense() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/MIT License", size: 1077, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/MIT License", size: 1077, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4241,8 +4241,8 @@ func confLicenseMozillaPublicLicense10() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Mozilla Public License 1.0", size: 18026, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Mozilla Public License 1.0", size: 18026, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4261,8 +4261,8 @@ func confLicenseMozillaPublicLicense11() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Mozilla Public License 1.1", size: 23361, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Mozilla Public License 1.1", size: 23361, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4281,8 +4281,8 @@ func confLicenseMozillaPublicLicense20() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/license/Mozilla Public License 2.0", size: 14827, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/license/Mozilla Public License 2.0", size: 14827, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4301,8 +4301,8 @@ func confLocaleLocale_bgBgIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_bg-BG.ini", size: 77994, mode: os.FileMode(438), modTime: time.Unix(1468050982, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_bg-BG.ini", size: 77994, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4321,8 +4321,8 @@ func confLocaleLocale_csCzIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_cs-CZ.ini", size: 54527, mode: os.FileMode(438), modTime: time.Unix(1468050990, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_cs-CZ.ini", size: 54527, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4341,8 +4341,8 @@ func confLocaleLocale_deDeIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_de-DE.ini", size: 54740, mode: os.FileMode(438), modTime: time.Unix(1468051000, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_de-DE.ini", size: 54740, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4361,8 +4361,8 @@ func confLocaleLocale_enUsIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 51300, mode: os.FileMode(420), modTime: time.Unix(1468277636, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 51300, mode: os.FileMode(420), modTime: time.Unix(1468622566, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4381,8 +4381,8 @@ func confLocaleLocale_esEsIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_es-ES.ini", size: 55644, mode: os.FileMode(438), modTime: time.Unix(1468051024, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_es-ES.ini", size: 55644, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4401,8 +4401,8 @@ func confLocaleLocale_fiFiIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_fi-FI.ini", size: 52743, mode: os.FileMode(438), modTime: time.Unix(1468050996, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_fi-FI.ini", size: 52743, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4421,8 +4421,8 @@ func confLocaleLocale_frFrIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_fr-FR.ini", size: 55281, mode: os.FileMode(438), modTime: time.Unix(1468050998, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_fr-FR.ini", size: 55281, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4441,8 +4441,8 @@ func confLocaleLocale_itItIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_it-IT.ini", size: 53440, mode: os.FileMode(438), modTime: time.Unix(1468051006, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_it-IT.ini", size: 53440, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4461,8 +4461,8 @@ func confLocaleLocale_jaJpIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_ja-JP.ini", size: 60489, mode: os.FileMode(438), modTime: time.Unix(1468051008, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_ja-JP.ini", size: 60489, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4481,8 +4481,8 @@ func confLocaleLocale_lvLvIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_lv-LV.ini", size: 55630, mode: os.FileMode(438), modTime: time.Unix(1468051010, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_lv-LV.ini", size: 55630, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4501,8 +4501,8 @@ func confLocaleLocale_nlNlIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_nl-NL.ini", size: 52176, mode: os.FileMode(438), modTime: time.Unix(1468050992, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_nl-NL.ini", size: 52176, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4521,8 +4521,8 @@ func confLocaleLocale_plPlIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_pl-PL.ini", size: 53471, mode: os.FileMode(438), modTime: time.Unix(1468051016, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_pl-PL.ini", size: 53471, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4541,8 +4541,8 @@ func confLocaleLocale_ptBrIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_pt-BR.ini", size: 53912, mode: os.FileMode(438), modTime: time.Unix(1468051020, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_pt-BR.ini", size: 53912, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4561,8 +4561,8 @@ func confLocaleLocale_ruRuIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_ru-RU.ini", size: 78367, mode: os.FileMode(438), modTime: time.Unix(1468051020, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_ru-RU.ini", size: 78367, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4581,8 +4581,8 @@ func confLocaleLocale_trTrIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_tr-TR.ini", size: 53878, mode: os.FileMode(438), modTime: time.Unix(1468051026, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_tr-TR.ini", size: 53878, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4601,8 +4601,8 @@ func confLocaleLocale_zhCnIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_zh-CN.ini", size: 48960, mode: os.FileMode(438), modTime: time.Unix(1468050984, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_zh-CN.ini", size: 48960, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4621,8 +4621,8 @@ func confLocaleLocale_zhHkIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_zh-HK.ini", size: 48949, mode: os.FileMode(438), modTime: time.Unix(1468050986, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_zh-HK.ini", size: 48949, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4641,8 +4641,8 @@ func confLocaleLocale_zhTwIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/locale/locale_zh-TW.ini", size: 48838, mode: os.FileMode(438), modTime: time.Unix(1468050984, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/locale/locale_zh-TW.ini", size: 48838, mode: os.FileMode(420), modTime: time.Unix(1468605755, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4661,8 +4661,8 @@ func confReadmeDefault() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/readme/Default", size: 23, mode: os.FileMode(420), modTime: time.Unix(1441006036, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "conf/readme/Default", size: 23, mode: os.FileMode(420), modTime: time.Unix(1467819402, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -4685,7 +4685,7 @@ func Asset(name string) ([]byte, error) { // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { a, err := Asset(name) - if (err != nil) { + if err != nil { panic("asset: Asset(" + name + "): " + err.Error()) } @@ -4975,504 +4975,285 @@ func AssetDir(name string) ([]string, error) { } type bintree struct { - Func func() (*asset, error) + Func func() (*asset, error) Children map[string]*bintree } var _bintree = &bintree{nil, map[string]*bintree{ "conf": &bintree{nil, map[string]*bintree{ - "app.ini": &bintree{confAppIni, map[string]*bintree{ - }}, + "app.ini": &bintree{confAppIni, map[string]*bintree{}}, "gitignore": &bintree{nil, map[string]*bintree{ - "Actionscript": &bintree{confGitignoreActionscript, map[string]*bintree{ - }}, - "Ada": &bintree{confGitignoreAda, map[string]*bintree{ - }}, - "Agda": &bintree{confGitignoreAgda, map[string]*bintree{ - }}, - "Android": &bintree{confGitignoreAndroid, map[string]*bintree{ - }}, - "Anjuta": &bintree{confGitignoreAnjuta, map[string]*bintree{ - }}, - "AppEngine": &bintree{confGitignoreAppengine, map[string]*bintree{ - }}, - "AppceleratorTitanium": &bintree{confGitignoreAppceleratortitanium, map[string]*bintree{ - }}, - "ArchLinuxPackages": &bintree{confGitignoreArchlinuxpackages, map[string]*bintree{ - }}, - "Archives": &bintree{confGitignoreArchives, map[string]*bintree{ - }}, - "Autotools": &bintree{confGitignoreAutotools, map[string]*bintree{ - }}, - "BricxCC": &bintree{confGitignoreBricxcc, map[string]*bintree{ - }}, - "C": &bintree{confGitignoreC, map[string]*bintree{ - }}, - "C Sharp": &bintree{confGitignoreCSharp, map[string]*bintree{ - }}, - "C++": &bintree{confGitignoreC2, map[string]*bintree{ - }}, - "CFWheels": &bintree{confGitignoreCfwheels, map[string]*bintree{ - }}, - "CMake": &bintree{confGitignoreCmake, map[string]*bintree{ - }}, - "CUDA": &bintree{confGitignoreCuda, map[string]*bintree{ - }}, - "CVS": &bintree{confGitignoreCvs, map[string]*bintree{ - }}, - "CakePHP": &bintree{confGitignoreCakephp, map[string]*bintree{ - }}, - "ChefCookbook": &bintree{confGitignoreChefcookbook, map[string]*bintree{ - }}, - "Cloud9": &bintree{confGitignoreCloud9, map[string]*bintree{ - }}, - "CodeIgniter": &bintree{confGitignoreCodeigniter, map[string]*bintree{ - }}, - "CodeKit": &bintree{confGitignoreCodekit, map[string]*bintree{ - }}, - "CommonLisp": &bintree{confGitignoreCommonlisp, map[string]*bintree{ - }}, - "Composer": &bintree{confGitignoreComposer, map[string]*bintree{ - }}, - "Concrete5": &bintree{confGitignoreConcrete5, map[string]*bintree{ - }}, - "Coq": &bintree{confGitignoreCoq, map[string]*bintree{ - }}, - "CraftCMS": &bintree{confGitignoreCraftcms, map[string]*bintree{ - }}, - "DM": &bintree{confGitignoreDm, map[string]*bintree{ - }}, - "Dart": &bintree{confGitignoreDart, map[string]*bintree{ - }}, - "DartEditor": &bintree{confGitignoreDarteditor, map[string]*bintree{ - }}, - "Delphi": &bintree{confGitignoreDelphi, map[string]*bintree{ - }}, - "Dreamweaver": &bintree{confGitignoreDreamweaver, map[string]*bintree{ - }}, - "Drupal": &bintree{confGitignoreDrupal, map[string]*bintree{ - }}, - "EPiServer": &bintree{confGitignoreEpiserver, map[string]*bintree{ - }}, - "Eagle": &bintree{confGitignoreEagle, map[string]*bintree{ - }}, - "Eclipse": &bintree{confGitignoreEclipse, map[string]*bintree{ - }}, - "EiffelStudio": &bintree{confGitignoreEiffelstudio, map[string]*bintree{ - }}, - "Elisp": &bintree{confGitignoreElisp, map[string]*bintree{ - }}, - "Elixir": &bintree{confGitignoreElixir, map[string]*bintree{ - }}, - "Emacs": &bintree{confGitignoreEmacs, map[string]*bintree{ - }}, - "Ensime": &bintree{confGitignoreEnsime, map[string]*bintree{ - }}, - "Erlang": &bintree{confGitignoreErlang, map[string]*bintree{ - }}, - "Espresso": &bintree{confGitignoreEspresso, map[string]*bintree{ - }}, - "ExpressionEngine": &bintree{confGitignoreExpressionengine, map[string]*bintree{ - }}, - "ExtJs": &bintree{confGitignoreExtjs, map[string]*bintree{ - }}, - "Fancy": &bintree{confGitignoreFancy, map[string]*bintree{ - }}, - "Finale": &bintree{confGitignoreFinale, map[string]*bintree{ - }}, - "FlexBuilder": &bintree{confGitignoreFlexbuilder, map[string]*bintree{ - }}, - "ForceDotCom": &bintree{confGitignoreForcedotcom, map[string]*bintree{ - }}, - "FuelPHP": &bintree{confGitignoreFuelphp, map[string]*bintree{ - }}, - "GWT": &bintree{confGitignoreGwt, map[string]*bintree{ - }}, - "Gcov": &bintree{confGitignoreGcov, map[string]*bintree{ - }}, - "GitBook": &bintree{confGitignoreGitbook, map[string]*bintree{ - }}, - "Go": &bintree{confGitignoreGo, map[string]*bintree{ - }}, - "Gradle": &bintree{confGitignoreGradle, map[string]*bintree{ - }}, - "Grails": &bintree{confGitignoreGrails, map[string]*bintree{ - }}, - "Haskell": &bintree{confGitignoreHaskell, map[string]*bintree{ - }}, - "IGORPro": &bintree{confGitignoreIgorpro, map[string]*bintree{ - }}, - "IPythonNotebook": &bintree{confGitignoreIpythonnotebook, map[string]*bintree{ - }}, - "Idris": &bintree{confGitignoreIdris, map[string]*bintree{ - }}, - "JDeveloper": &bintree{confGitignoreJdeveloper, map[string]*bintree{ - }}, - "Java": &bintree{confGitignoreJava, map[string]*bintree{ - }}, - "Jboss": &bintree{confGitignoreJboss, map[string]*bintree{ - }}, - "Jekyll": &bintree{confGitignoreJekyll, map[string]*bintree{ - }}, - "JetBrains": &bintree{confGitignoreJetbrains, map[string]*bintree{ - }}, - "Joomla": &bintree{confGitignoreJoomla, map[string]*bintree{ - }}, - "KDevelop4": &bintree{confGitignoreKdevelop4, map[string]*bintree{ - }}, - "Kate": &bintree{confGitignoreKate, map[string]*bintree{ - }}, - "KiCAD": &bintree{confGitignoreKicad, map[string]*bintree{ - }}, - "Kohana": &bintree{confGitignoreKohana, map[string]*bintree{ - }}, - "LabVIEW": &bintree{confGitignoreLabview, map[string]*bintree{ - }}, - "Laravel": &bintree{confGitignoreLaravel, map[string]*bintree{ - }}, - "Lazarus": &bintree{confGitignoreLazarus, map[string]*bintree{ - }}, - "Leiningen": &bintree{confGitignoreLeiningen, map[string]*bintree{ - }}, - "LemonStand": &bintree{confGitignoreLemonstand, map[string]*bintree{ - }}, - "LibreOffice": &bintree{confGitignoreLibreoffice, map[string]*bintree{ - }}, - "Lilypond": &bintree{confGitignoreLilypond, map[string]*bintree{ - }}, - "Linux": &bintree{confGitignoreLinux, map[string]*bintree{ - }}, - "Lithium": &bintree{confGitignoreLithium, map[string]*bintree{ - }}, - "Lua": &bintree{confGitignoreLua, map[string]*bintree{ - }}, - "LyX": &bintree{confGitignoreLyx, map[string]*bintree{ - }}, - "Magento": &bintree{confGitignoreMagento, map[string]*bintree{ - }}, - "Matlab": &bintree{confGitignoreMatlab, map[string]*bintree{ - }}, - "Maven": &bintree{confGitignoreMaven, map[string]*bintree{ - }}, - "Mercurial": &bintree{confGitignoreMercurial, map[string]*bintree{ - }}, - "Mercury": &bintree{confGitignoreMercury, map[string]*bintree{ - }}, - "MetaProgrammingSystem": &bintree{confGitignoreMetaprogrammingsystem, map[string]*bintree{ - }}, - "MicrosoftOffice": &bintree{confGitignoreMicrosoftoffice, map[string]*bintree{ - }}, - "ModelSim": &bintree{confGitignoreModelsim, map[string]*bintree{ - }}, - "Momentics": &bintree{confGitignoreMomentics, map[string]*bintree{ - }}, - "MonoDevelop": &bintree{confGitignoreMonodevelop, map[string]*bintree{ - }}, - "Nanoc": &bintree{confGitignoreNanoc, map[string]*bintree{ - }}, - "NetBeans": &bintree{confGitignoreNetbeans, map[string]*bintree{ - }}, - "Nim": &bintree{confGitignoreNim, map[string]*bintree{ - }}, - "Ninja": &bintree{confGitignoreNinja, map[string]*bintree{ - }}, - "Node": &bintree{confGitignoreNode, map[string]*bintree{ - }}, - "NotepadPP": &bintree{confGitignoreNotepadpp, map[string]*bintree{ - }}, - "OCaml": &bintree{confGitignoreOcaml, map[string]*bintree{ - }}, - "OSX": &bintree{confGitignoreOsx, map[string]*bintree{ - }}, - "Objective-C": &bintree{confGitignoreObjectiveC, map[string]*bintree{ - }}, - "Opa": &bintree{confGitignoreOpa, map[string]*bintree{ - }}, - "OpenCart": &bintree{confGitignoreOpencart, map[string]*bintree{ - }}, - "OracleForms": &bintree{confGitignoreOracleforms, map[string]*bintree{ - }}, - "Packer": &bintree{confGitignorePacker, map[string]*bintree{ - }}, - "Perl": &bintree{confGitignorePerl, map[string]*bintree{ - }}, - "Phalcon": &bintree{confGitignorePhalcon, map[string]*bintree{ - }}, - "PlayFramework": &bintree{confGitignorePlayframework, map[string]*bintree{ - }}, - "Plone": &bintree{confGitignorePlone, map[string]*bintree{ - }}, - "Prestashop": &bintree{confGitignorePrestashop, map[string]*bintree{ - }}, - "Processing": &bintree{confGitignoreProcessing, map[string]*bintree{ - }}, - "Python": &bintree{confGitignorePython, map[string]*bintree{ - }}, - "Qooxdoo": &bintree{confGitignoreQooxdoo, map[string]*bintree{ - }}, - "Qt": &bintree{confGitignoreQt, map[string]*bintree{ - }}, - "R": &bintree{confGitignoreR, map[string]*bintree{ - }}, - "ROS": &bintree{confGitignoreRos, map[string]*bintree{ - }}, - "Rails": &bintree{confGitignoreRails, map[string]*bintree{ - }}, - "Redcar": &bintree{confGitignoreRedcar, map[string]*bintree{ - }}, - "Redis": &bintree{confGitignoreRedis, map[string]*bintree{ - }}, - "RhodesRhomobile": &bintree{confGitignoreRhodesrhomobile, map[string]*bintree{ - }}, - "Ruby": &bintree{confGitignoreRuby, map[string]*bintree{ - }}, - "Rust": &bintree{confGitignoreRust, map[string]*bintree{ - }}, - "SBT": &bintree{confGitignoreSbt, map[string]*bintree{ - }}, - "SCons": &bintree{confGitignoreScons, map[string]*bintree{ - }}, - "SVN": &bintree{confGitignoreSvn, map[string]*bintree{ - }}, - "Sass": &bintree{confGitignoreSass, map[string]*bintree{ - }}, - "Scala": &bintree{confGitignoreScala, map[string]*bintree{ - }}, - "Scrivener": &bintree{confGitignoreScrivener, map[string]*bintree{ - }}, - "Sdcc": &bintree{confGitignoreSdcc, map[string]*bintree{ - }}, - "SeamGen": &bintree{confGitignoreSeamgen, map[string]*bintree{ - }}, - "SketchUp": &bintree{confGitignoreSketchup, map[string]*bintree{ - }}, - "SlickEdit": &bintree{confGitignoreSlickedit, map[string]*bintree{ - }}, - "Stella": &bintree{confGitignoreStella, map[string]*bintree{ - }}, - "SublimeText": &bintree{confGitignoreSublimetext, map[string]*bintree{ - }}, - "SugarCRM": &bintree{confGitignoreSugarcrm, map[string]*bintree{ - }}, - "Swift": &bintree{confGitignoreSwift, map[string]*bintree{ - }}, - "Symfony": &bintree{confGitignoreSymfony, map[string]*bintree{ - }}, - "SymphonyCMS": &bintree{confGitignoreSymphonycms, map[string]*bintree{ - }}, - "SynopsysVCS": &bintree{confGitignoreSynopsysvcs, map[string]*bintree{ - }}, - "Tags": &bintree{confGitignoreTags, map[string]*bintree{ - }}, - "TeX": &bintree{confGitignoreTex, map[string]*bintree{ - }}, - "TextMate": &bintree{confGitignoreTextmate, map[string]*bintree{ - }}, - "Textpattern": &bintree{confGitignoreTextpattern, map[string]*bintree{ - }}, - "TortoiseGit": &bintree{confGitignoreTortoisegit, map[string]*bintree{ - }}, - "TurboGears2": &bintree{confGitignoreTurbogears2, map[string]*bintree{ - }}, - "Typo3": &bintree{confGitignoreTypo3, map[string]*bintree{ - }}, - "Umbraco": &bintree{confGitignoreUmbraco, map[string]*bintree{ - }}, - "Unity": &bintree{confGitignoreUnity, map[string]*bintree{ - }}, - "VVVV": &bintree{confGitignoreVvvv, map[string]*bintree{ - }}, - "Vagrant": &bintree{confGitignoreVagrant, map[string]*bintree{ - }}, - "Vim": &bintree{confGitignoreVim, map[string]*bintree{ - }}, - "VirtualEnv": &bintree{confGitignoreVirtualenv, map[string]*bintree{ - }}, - "VisualStudio": &bintree{confGitignoreVisualstudio, map[string]*bintree{ - }}, - "VisualStudioCode": &bintree{confGitignoreVisualstudiocode, map[string]*bintree{ - }}, - "Waf": &bintree{confGitignoreWaf, map[string]*bintree{ - }}, - "WebMethods": &bintree{confGitignoreWebmethods, map[string]*bintree{ - }}, - "Windows": &bintree{confGitignoreWindows, map[string]*bintree{ - }}, - "WordPress": &bintree{confGitignoreWordpress, map[string]*bintree{ - }}, - "Xcode": &bintree{confGitignoreXcode, map[string]*bintree{ - }}, - "XilinxISE": &bintree{confGitignoreXilinxise, map[string]*bintree{ - }}, - "Xojo": &bintree{confGitignoreXojo, map[string]*bintree{ - }}, - "Yeoman": &bintree{confGitignoreYeoman, map[string]*bintree{ - }}, - "Yii": &bintree{confGitignoreYii, map[string]*bintree{ - }}, - "ZendFramework": &bintree{confGitignoreZendframework, map[string]*bintree{ - }}, - "Zephir": &bintree{confGitignoreZephir, map[string]*bintree{ - }}, + "Actionscript": &bintree{confGitignoreActionscript, map[string]*bintree{}}, + "Ada": &bintree{confGitignoreAda, map[string]*bintree{}}, + "Agda": &bintree{confGitignoreAgda, map[string]*bintree{}}, + "Android": &bintree{confGitignoreAndroid, map[string]*bintree{}}, + "Anjuta": &bintree{confGitignoreAnjuta, map[string]*bintree{}}, + "AppEngine": &bintree{confGitignoreAppengine, map[string]*bintree{}}, + "AppceleratorTitanium": &bintree{confGitignoreAppceleratortitanium, map[string]*bintree{}}, + "ArchLinuxPackages": &bintree{confGitignoreArchlinuxpackages, map[string]*bintree{}}, + "Archives": &bintree{confGitignoreArchives, map[string]*bintree{}}, + "Autotools": &bintree{confGitignoreAutotools, map[string]*bintree{}}, + "BricxCC": &bintree{confGitignoreBricxcc, map[string]*bintree{}}, + "C": &bintree{confGitignoreC, map[string]*bintree{}}, + "C Sharp": &bintree{confGitignoreCSharp, map[string]*bintree{}}, + "C++": &bintree{confGitignoreC2, map[string]*bintree{}}, + "CFWheels": &bintree{confGitignoreCfwheels, map[string]*bintree{}}, + "CMake": &bintree{confGitignoreCmake, map[string]*bintree{}}, + "CUDA": &bintree{confGitignoreCuda, map[string]*bintree{}}, + "CVS": &bintree{confGitignoreCvs, map[string]*bintree{}}, + "CakePHP": &bintree{confGitignoreCakephp, map[string]*bintree{}}, + "ChefCookbook": &bintree{confGitignoreChefcookbook, map[string]*bintree{}}, + "Cloud9": &bintree{confGitignoreCloud9, map[string]*bintree{}}, + "CodeIgniter": &bintree{confGitignoreCodeigniter, map[string]*bintree{}}, + "CodeKit": &bintree{confGitignoreCodekit, map[string]*bintree{}}, + "CommonLisp": &bintree{confGitignoreCommonlisp, map[string]*bintree{}}, + "Composer": &bintree{confGitignoreComposer, map[string]*bintree{}}, + "Concrete5": &bintree{confGitignoreConcrete5, map[string]*bintree{}}, + "Coq": &bintree{confGitignoreCoq, map[string]*bintree{}}, + "CraftCMS": &bintree{confGitignoreCraftcms, map[string]*bintree{}}, + "DM": &bintree{confGitignoreDm, map[string]*bintree{}}, + "Dart": &bintree{confGitignoreDart, map[string]*bintree{}}, + "DartEditor": &bintree{confGitignoreDarteditor, map[string]*bintree{}}, + "Delphi": &bintree{confGitignoreDelphi, map[string]*bintree{}}, + "Dreamweaver": &bintree{confGitignoreDreamweaver, map[string]*bintree{}}, + "Drupal": &bintree{confGitignoreDrupal, map[string]*bintree{}}, + "EPiServer": &bintree{confGitignoreEpiserver, map[string]*bintree{}}, + "Eagle": &bintree{confGitignoreEagle, map[string]*bintree{}}, + "Eclipse": &bintree{confGitignoreEclipse, map[string]*bintree{}}, + "EiffelStudio": &bintree{confGitignoreEiffelstudio, map[string]*bintree{}}, + "Elisp": &bintree{confGitignoreElisp, map[string]*bintree{}}, + "Elixir": &bintree{confGitignoreElixir, map[string]*bintree{}}, + "Emacs": &bintree{confGitignoreEmacs, map[string]*bintree{}}, + "Ensime": &bintree{confGitignoreEnsime, map[string]*bintree{}}, + "Erlang": &bintree{confGitignoreErlang, map[string]*bintree{}}, + "Espresso": &bintree{confGitignoreEspresso, map[string]*bintree{}}, + "ExpressionEngine": &bintree{confGitignoreExpressionengine, map[string]*bintree{}}, + "ExtJs": &bintree{confGitignoreExtjs, map[string]*bintree{}}, + "Fancy": &bintree{confGitignoreFancy, map[string]*bintree{}}, + "Finale": &bintree{confGitignoreFinale, map[string]*bintree{}}, + "FlexBuilder": &bintree{confGitignoreFlexbuilder, map[string]*bintree{}}, + "ForceDotCom": &bintree{confGitignoreForcedotcom, map[string]*bintree{}}, + "FuelPHP": &bintree{confGitignoreFuelphp, map[string]*bintree{}}, + "GWT": &bintree{confGitignoreGwt, map[string]*bintree{}}, + "Gcov": &bintree{confGitignoreGcov, map[string]*bintree{}}, + "GitBook": &bintree{confGitignoreGitbook, map[string]*bintree{}}, + "Go": &bintree{confGitignoreGo, map[string]*bintree{}}, + "Gradle": &bintree{confGitignoreGradle, map[string]*bintree{}}, + "Grails": &bintree{confGitignoreGrails, map[string]*bintree{}}, + "Haskell": &bintree{confGitignoreHaskell, map[string]*bintree{}}, + "IGORPro": &bintree{confGitignoreIgorpro, map[string]*bintree{}}, + "IPythonNotebook": &bintree{confGitignoreIpythonnotebook, map[string]*bintree{}}, + "Idris": &bintree{confGitignoreIdris, map[string]*bintree{}}, + "JDeveloper": &bintree{confGitignoreJdeveloper, map[string]*bintree{}}, + "Java": &bintree{confGitignoreJava, map[string]*bintree{}}, + "Jboss": &bintree{confGitignoreJboss, map[string]*bintree{}}, + "Jekyll": &bintree{confGitignoreJekyll, map[string]*bintree{}}, + "JetBrains": &bintree{confGitignoreJetbrains, map[string]*bintree{}}, + "Joomla": &bintree{confGitignoreJoomla, map[string]*bintree{}}, + "KDevelop4": &bintree{confGitignoreKdevelop4, map[string]*bintree{}}, + "Kate": &bintree{confGitignoreKate, map[string]*bintree{}}, + "KiCAD": &bintree{confGitignoreKicad, map[string]*bintree{}}, + "Kohana": &bintree{confGitignoreKohana, map[string]*bintree{}}, + "LabVIEW": &bintree{confGitignoreLabview, map[string]*bintree{}}, + "Laravel": &bintree{confGitignoreLaravel, map[string]*bintree{}}, + "Lazarus": &bintree{confGitignoreLazarus, map[string]*bintree{}}, + "Leiningen": &bintree{confGitignoreLeiningen, map[string]*bintree{}}, + "LemonStand": &bintree{confGitignoreLemonstand, map[string]*bintree{}}, + "LibreOffice": &bintree{confGitignoreLibreoffice, map[string]*bintree{}}, + "Lilypond": &bintree{confGitignoreLilypond, map[string]*bintree{}}, + "Linux": &bintree{confGitignoreLinux, map[string]*bintree{}}, + "Lithium": &bintree{confGitignoreLithium, map[string]*bintree{}}, + "Lua": &bintree{confGitignoreLua, map[string]*bintree{}}, + "LyX": &bintree{confGitignoreLyx, map[string]*bintree{}}, + "Magento": &bintree{confGitignoreMagento, map[string]*bintree{}}, + "Matlab": &bintree{confGitignoreMatlab, map[string]*bintree{}}, + "Maven": &bintree{confGitignoreMaven, map[string]*bintree{}}, + "Mercurial": &bintree{confGitignoreMercurial, map[string]*bintree{}}, + "Mercury": &bintree{confGitignoreMercury, map[string]*bintree{}}, + "MetaProgrammingSystem": &bintree{confGitignoreMetaprogrammingsystem, map[string]*bintree{}}, + "MicrosoftOffice": &bintree{confGitignoreMicrosoftoffice, map[string]*bintree{}}, + "ModelSim": &bintree{confGitignoreModelsim, map[string]*bintree{}}, + "Momentics": &bintree{confGitignoreMomentics, map[string]*bintree{}}, + "MonoDevelop": &bintree{confGitignoreMonodevelop, map[string]*bintree{}}, + "Nanoc": &bintree{confGitignoreNanoc, map[string]*bintree{}}, + "NetBeans": &bintree{confGitignoreNetbeans, map[string]*bintree{}}, + "Nim": &bintree{confGitignoreNim, map[string]*bintree{}}, + "Ninja": &bintree{confGitignoreNinja, map[string]*bintree{}}, + "Node": &bintree{confGitignoreNode, map[string]*bintree{}}, + "NotepadPP": &bintree{confGitignoreNotepadpp, map[string]*bintree{}}, + "OCaml": &bintree{confGitignoreOcaml, map[string]*bintree{}}, + "OSX": &bintree{confGitignoreOsx, map[string]*bintree{}}, + "Objective-C": &bintree{confGitignoreObjectiveC, map[string]*bintree{}}, + "Opa": &bintree{confGitignoreOpa, map[string]*bintree{}}, + "OpenCart": &bintree{confGitignoreOpencart, map[string]*bintree{}}, + "OracleForms": &bintree{confGitignoreOracleforms, map[string]*bintree{}}, + "Packer": &bintree{confGitignorePacker, map[string]*bintree{}}, + "Perl": &bintree{confGitignorePerl, map[string]*bintree{}}, + "Phalcon": &bintree{confGitignorePhalcon, map[string]*bintree{}}, + "PlayFramework": &bintree{confGitignorePlayframework, map[string]*bintree{}}, + "Plone": &bintree{confGitignorePlone, map[string]*bintree{}}, + "Prestashop": &bintree{confGitignorePrestashop, map[string]*bintree{}}, + "Processing": &bintree{confGitignoreProcessing, map[string]*bintree{}}, + "Python": &bintree{confGitignorePython, map[string]*bintree{}}, + "Qooxdoo": &bintree{confGitignoreQooxdoo, map[string]*bintree{}}, + "Qt": &bintree{confGitignoreQt, map[string]*bintree{}}, + "R": &bintree{confGitignoreR, map[string]*bintree{}}, + "ROS": &bintree{confGitignoreRos, map[string]*bintree{}}, + "Rails": &bintree{confGitignoreRails, map[string]*bintree{}}, + "Redcar": &bintree{confGitignoreRedcar, map[string]*bintree{}}, + "Redis": &bintree{confGitignoreRedis, map[string]*bintree{}}, + "RhodesRhomobile": &bintree{confGitignoreRhodesrhomobile, map[string]*bintree{}}, + "Ruby": &bintree{confGitignoreRuby, map[string]*bintree{}}, + "Rust": &bintree{confGitignoreRust, map[string]*bintree{}}, + "SBT": &bintree{confGitignoreSbt, map[string]*bintree{}}, + "SCons": &bintree{confGitignoreScons, map[string]*bintree{}}, + "SVN": &bintree{confGitignoreSvn, map[string]*bintree{}}, + "Sass": &bintree{confGitignoreSass, map[string]*bintree{}}, + "Scala": &bintree{confGitignoreScala, map[string]*bintree{}}, + "Scrivener": &bintree{confGitignoreScrivener, map[string]*bintree{}}, + "Sdcc": &bintree{confGitignoreSdcc, map[string]*bintree{}}, + "SeamGen": &bintree{confGitignoreSeamgen, map[string]*bintree{}}, + "SketchUp": &bintree{confGitignoreSketchup, map[string]*bintree{}}, + "SlickEdit": &bintree{confGitignoreSlickedit, map[string]*bintree{}}, + "Stella": &bintree{confGitignoreStella, map[string]*bintree{}}, + "SublimeText": &bintree{confGitignoreSublimetext, map[string]*bintree{}}, + "SugarCRM": &bintree{confGitignoreSugarcrm, map[string]*bintree{}}, + "Swift": &bintree{confGitignoreSwift, map[string]*bintree{}}, + "Symfony": &bintree{confGitignoreSymfony, map[string]*bintree{}}, + "SymphonyCMS": &bintree{confGitignoreSymphonycms, map[string]*bintree{}}, + "SynopsysVCS": &bintree{confGitignoreSynopsysvcs, map[string]*bintree{}}, + "Tags": &bintree{confGitignoreTags, map[string]*bintree{}}, + "TeX": &bintree{confGitignoreTex, map[string]*bintree{}}, + "TextMate": &bintree{confGitignoreTextmate, map[string]*bintree{}}, + "Textpattern": &bintree{confGitignoreTextpattern, map[string]*bintree{}}, + "TortoiseGit": &bintree{confGitignoreTortoisegit, map[string]*bintree{}}, + "TurboGears2": &bintree{confGitignoreTurbogears2, map[string]*bintree{}}, + "Typo3": &bintree{confGitignoreTypo3, map[string]*bintree{}}, + "Umbraco": &bintree{confGitignoreUmbraco, map[string]*bintree{}}, + "Unity": &bintree{confGitignoreUnity, map[string]*bintree{}}, + "VVVV": &bintree{confGitignoreVvvv, map[string]*bintree{}}, + "Vagrant": &bintree{confGitignoreVagrant, map[string]*bintree{}}, + "Vim": &bintree{confGitignoreVim, map[string]*bintree{}}, + "VirtualEnv": &bintree{confGitignoreVirtualenv, map[string]*bintree{}}, + "VisualStudio": &bintree{confGitignoreVisualstudio, map[string]*bintree{}}, + "VisualStudioCode": &bintree{confGitignoreVisualstudiocode, map[string]*bintree{}}, + "Waf": &bintree{confGitignoreWaf, map[string]*bintree{}}, + "WebMethods": &bintree{confGitignoreWebmethods, map[string]*bintree{}}, + "Windows": &bintree{confGitignoreWindows, map[string]*bintree{}}, + "WordPress": &bintree{confGitignoreWordpress, map[string]*bintree{}}, + "Xcode": &bintree{confGitignoreXcode, map[string]*bintree{}}, + "XilinxISE": &bintree{confGitignoreXilinxise, map[string]*bintree{}}, + "Xojo": &bintree{confGitignoreXojo, map[string]*bintree{}}, + "Yeoman": &bintree{confGitignoreYeoman, map[string]*bintree{}}, + "Yii": &bintree{confGitignoreYii, map[string]*bintree{}}, + "ZendFramework": &bintree{confGitignoreZendframework, map[string]*bintree{}}, + "Zephir": &bintree{confGitignoreZephir, map[string]*bintree{}}, }}, "license": &bintree{nil, map[string]*bintree{ - "Abstyles License": &bintree{confLicenseAbstylesLicense, map[string]*bintree{ - }}, - "Academic Free License v1.1": &bintree{confLicenseAcademicFreeLicenseV11, map[string]*bintree{ - }}, - "Academic Free License v1.2": &bintree{confLicenseAcademicFreeLicenseV12, map[string]*bintree{ - }}, - "Academic Free License v2.0": &bintree{confLicenseAcademicFreeLicenseV20, map[string]*bintree{ - }}, - "Academic Free License v2.1": &bintree{confLicenseAcademicFreeLicenseV21, map[string]*bintree{ - }}, - "Academic Free License v3.0": &bintree{confLicenseAcademicFreeLicenseV30, map[string]*bintree{ - }}, - "Affero General Public License v1.0": &bintree{confLicenseAfferoGeneralPublicLicenseV10, map[string]*bintree{ - }}, - "Apache License 1.0": &bintree{confLicenseApacheLicense10, map[string]*bintree{ - }}, - "Apache License 1.1": &bintree{confLicenseApacheLicense11, map[string]*bintree{ - }}, - "Apache License 2.0": &bintree{confLicenseApacheLicense20, map[string]*bintree{ - }}, - "Artistic License 1.0": &bintree{confLicenseArtisticLicense10, map[string]*bintree{ - }}, - "Artistic License 2.0": &bintree{confLicenseArtisticLicense20, map[string]*bintree{ - }}, - "BSD 2-clause License": &bintree{confLicenseBsd2ClauseLicense, map[string]*bintree{ - }}, - "BSD 3-clause License": &bintree{confLicenseBsd3ClauseLicense, map[string]*bintree{ - }}, - "BSD 4-clause License": &bintree{confLicenseBsd4ClauseLicense, map[string]*bintree{ - }}, - "Creative Commons CC0 1.0 Universal": &bintree{confLicenseCreativeCommonsCc010Universal, map[string]*bintree{ - }}, - "Eclipse Public License 1.0": &bintree{confLicenseEclipsePublicLicense10, map[string]*bintree{ - }}, - "Educational Community License v1.0": &bintree{confLicenseEducationalCommunityLicenseV10, map[string]*bintree{ - }}, - "Educational Community License v2.0": &bintree{confLicenseEducationalCommunityLicenseV20, map[string]*bintree{ - }}, - "GNU Affero General Public License v3.0": &bintree{confLicenseGnuAfferoGeneralPublicLicenseV30, map[string]*bintree{ - }}, - "GNU Free Documentation License v1.1": &bintree{confLicenseGnuFreeDocumentationLicenseV11, map[string]*bintree{ - }}, - "GNU Free Documentation License v1.2": &bintree{confLicenseGnuFreeDocumentationLicenseV12, map[string]*bintree{ - }}, - "GNU Free Documentation License v1.3": &bintree{confLicenseGnuFreeDocumentationLicenseV13, map[string]*bintree{ - }}, - "GNU General Public License v1.0": &bintree{confLicenseGnuGeneralPublicLicenseV10, map[string]*bintree{ - }}, - "GNU General Public License v2.0": &bintree{confLicenseGnuGeneralPublicLicenseV20, map[string]*bintree{ - }}, - "GNU General Public License v3.0": &bintree{confLicenseGnuGeneralPublicLicenseV30, map[string]*bintree{ - }}, - "GNU Lesser General Public License v2.1": &bintree{confLicenseGnuLesserGeneralPublicLicenseV21, map[string]*bintree{ - }}, - "GNU Lesser General Public License v3.0": &bintree{confLicenseGnuLesserGeneralPublicLicenseV30, map[string]*bintree{ - }}, - "GNU Library General Public License v2.0": &bintree{confLicenseGnuLibraryGeneralPublicLicenseV20, map[string]*bintree{ - }}, - "ISC license": &bintree{confLicenseIscLicense, map[string]*bintree{ - }}, - "MIT License": &bintree{confLicenseMitLicense, map[string]*bintree{ - }}, - "Mozilla Public License 1.0": &bintree{confLicenseMozillaPublicLicense10, map[string]*bintree{ - }}, - "Mozilla Public License 1.1": &bintree{confLicenseMozillaPublicLicense11, map[string]*bintree{ - }}, - "Mozilla Public License 2.0": &bintree{confLicenseMozillaPublicLicense20, map[string]*bintree{ - }}, + "Abstyles License": &bintree{confLicenseAbstylesLicense, map[string]*bintree{}}, + "Academic Free License v1.1": &bintree{confLicenseAcademicFreeLicenseV11, map[string]*bintree{}}, + "Academic Free License v1.2": &bintree{confLicenseAcademicFreeLicenseV12, map[string]*bintree{}}, + "Academic Free License v2.0": &bintree{confLicenseAcademicFreeLicenseV20, map[string]*bintree{}}, + "Academic Free License v2.1": &bintree{confLicenseAcademicFreeLicenseV21, map[string]*bintree{}}, + "Academic Free License v3.0": &bintree{confLicenseAcademicFreeLicenseV30, map[string]*bintree{}}, + "Affero General Public License v1.0": &bintree{confLicenseAfferoGeneralPublicLicenseV10, map[string]*bintree{}}, + "Apache License 1.0": &bintree{confLicenseApacheLicense10, map[string]*bintree{}}, + "Apache License 1.1": &bintree{confLicenseApacheLicense11, map[string]*bintree{}}, + "Apache License 2.0": &bintree{confLicenseApacheLicense20, map[string]*bintree{}}, + "Artistic License 1.0": &bintree{confLicenseArtisticLicense10, map[string]*bintree{}}, + "Artistic License 2.0": &bintree{confLicenseArtisticLicense20, map[string]*bintree{}}, + "BSD 2-clause License": &bintree{confLicenseBsd2ClauseLicense, map[string]*bintree{}}, + "BSD 3-clause License": &bintree{confLicenseBsd3ClauseLicense, map[string]*bintree{}}, + "BSD 4-clause License": &bintree{confLicenseBsd4ClauseLicense, map[string]*bintree{}}, + "Creative Commons CC0 1.0 Universal": &bintree{confLicenseCreativeCommonsCc010Universal, map[string]*bintree{}}, + "Eclipse Public License 1.0": &bintree{confLicenseEclipsePublicLicense10, map[string]*bintree{}}, + "Educational Community License v1.0": &bintree{confLicenseEducationalCommunityLicenseV10, map[string]*bintree{}}, + "Educational Community License v2.0": &bintree{confLicenseEducationalCommunityLicenseV20, map[string]*bintree{}}, + "GNU Affero General Public License v3.0": &bintree{confLicenseGnuAfferoGeneralPublicLicenseV30, map[string]*bintree{}}, + "GNU Free Documentation License v1.1": &bintree{confLicenseGnuFreeDocumentationLicenseV11, map[string]*bintree{}}, + "GNU Free Documentation License v1.2": &bintree{confLicenseGnuFreeDocumentationLicenseV12, map[string]*bintree{}}, + "GNU Free Documentation License v1.3": &bintree{confLicenseGnuFreeDocumentationLicenseV13, map[string]*bintree{}}, + "GNU General Public License v1.0": &bintree{confLicenseGnuGeneralPublicLicenseV10, map[string]*bintree{}}, + "GNU General Public License v2.0": &bintree{confLicenseGnuGeneralPublicLicenseV20, map[string]*bintree{}}, + "GNU General Public License v3.0": &bintree{confLicenseGnuGeneralPublicLicenseV30, map[string]*bintree{}}, + "GNU Lesser General Public License v2.1": &bintree{confLicenseGnuLesserGeneralPublicLicenseV21, map[string]*bintree{}}, + "GNU Lesser General Public License v3.0": &bintree{confLicenseGnuLesserGeneralPublicLicenseV30, map[string]*bintree{}}, + "GNU Library General Public License v2.0": &bintree{confLicenseGnuLibraryGeneralPublicLicenseV20, map[string]*bintree{}}, + "ISC license": &bintree{confLicenseIscLicense, map[string]*bintree{}}, + "MIT License": &bintree{confLicenseMitLicense, map[string]*bintree{}}, + "Mozilla Public License 1.0": &bintree{confLicenseMozillaPublicLicense10, map[string]*bintree{}}, + "Mozilla Public License 1.1": &bintree{confLicenseMozillaPublicLicense11, map[string]*bintree{}}, + "Mozilla Public License 2.0": &bintree{confLicenseMozillaPublicLicense20, map[string]*bintree{}}, }}, "locale": &bintree{nil, map[string]*bintree{ - "locale_bg-BG.ini": &bintree{confLocaleLocale_bgBgIni, map[string]*bintree{ - }}, - "locale_cs-CZ.ini": &bintree{confLocaleLocale_csCzIni, map[string]*bintree{ - }}, - "locale_de-DE.ini": &bintree{confLocaleLocale_deDeIni, map[string]*bintree{ - }}, - "locale_en-US.ini": &bintree{confLocaleLocale_enUsIni, map[string]*bintree{ - }}, - "locale_es-ES.ini": &bintree{confLocaleLocale_esEsIni, map[string]*bintree{ - }}, - "locale_fi-FI.ini": &bintree{confLocaleLocale_fiFiIni, map[string]*bintree{ - }}, - "locale_fr-FR.ini": &bintree{confLocaleLocale_frFrIni, map[string]*bintree{ - }}, - "locale_it-IT.ini": &bintree{confLocaleLocale_itItIni, map[string]*bintree{ - }}, - "locale_ja-JP.ini": &bintree{confLocaleLocale_jaJpIni, map[string]*bintree{ - }}, - "locale_lv-LV.ini": &bintree{confLocaleLocale_lvLvIni, map[string]*bintree{ - }}, - "locale_nl-NL.ini": &bintree{confLocaleLocale_nlNlIni, map[string]*bintree{ - }}, - "locale_pl-PL.ini": &bintree{confLocaleLocale_plPlIni, map[string]*bintree{ - }}, - "locale_pt-BR.ini": &bintree{confLocaleLocale_ptBrIni, map[string]*bintree{ - }}, - "locale_ru-RU.ini": &bintree{confLocaleLocale_ruRuIni, map[string]*bintree{ - }}, - "locale_tr-TR.ini": &bintree{confLocaleLocale_trTrIni, map[string]*bintree{ - }}, - "locale_zh-CN.ini": &bintree{confLocaleLocale_zhCnIni, map[string]*bintree{ - }}, - "locale_zh-HK.ini": &bintree{confLocaleLocale_zhHkIni, map[string]*bintree{ - }}, - "locale_zh-TW.ini": &bintree{confLocaleLocale_zhTwIni, map[string]*bintree{ - }}, + "locale_bg-BG.ini": &bintree{confLocaleLocale_bgBgIni, map[string]*bintree{}}, + "locale_cs-CZ.ini": &bintree{confLocaleLocale_csCzIni, map[string]*bintree{}}, + "locale_de-DE.ini": &bintree{confLocaleLocale_deDeIni, map[string]*bintree{}}, + "locale_en-US.ini": &bintree{confLocaleLocale_enUsIni, map[string]*bintree{}}, + "locale_es-ES.ini": &bintree{confLocaleLocale_esEsIni, map[string]*bintree{}}, + "locale_fi-FI.ini": &bintree{confLocaleLocale_fiFiIni, map[string]*bintree{}}, + "locale_fr-FR.ini": &bintree{confLocaleLocale_frFrIni, map[string]*bintree{}}, + "locale_it-IT.ini": &bintree{confLocaleLocale_itItIni, map[string]*bintree{}}, + "locale_ja-JP.ini": &bintree{confLocaleLocale_jaJpIni, map[string]*bintree{}}, + "locale_lv-LV.ini": &bintree{confLocaleLocale_lvLvIni, map[string]*bintree{}}, + "locale_nl-NL.ini": &bintree{confLocaleLocale_nlNlIni, map[string]*bintree{}}, + "locale_pl-PL.ini": &bintree{confLocaleLocale_plPlIni, map[string]*bintree{}}, + "locale_pt-BR.ini": &bintree{confLocaleLocale_ptBrIni, map[string]*bintree{}}, + "locale_ru-RU.ini": &bintree{confLocaleLocale_ruRuIni, map[string]*bintree{}}, + "locale_tr-TR.ini": &bintree{confLocaleLocale_trTrIni, map[string]*bintree{}}, + "locale_zh-CN.ini": &bintree{confLocaleLocale_zhCnIni, map[string]*bintree{}}, + "locale_zh-HK.ini": &bintree{confLocaleLocale_zhHkIni, map[string]*bintree{}}, + "locale_zh-TW.ini": &bintree{confLocaleLocale_zhTwIni, map[string]*bintree{}}, }}, "readme": &bintree{nil, map[string]*bintree{ - "Default": &bintree{confReadmeDefault, map[string]*bintree{ - }}, + "Default": &bintree{confReadmeDefault, 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 + 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 + 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, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 5c396a7d6..5fbc522ef 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -110,6 +110,8 @@ var ( ForcePrivate bool MaxCreationLimit int PullRequestQueueLength int + LineWrapExtensions []string + PreviewTabApis []string } RepoRootPath string ScriptType string @@ -129,6 +131,7 @@ var ( Markdown struct { EnableHardLineBreak bool CustomURLSchemes []string `ini:"CUSTOM_URL_SCHEMES"` + MdFileExtensions []string } // Picture settings @@ -148,6 +151,13 @@ var ( AttachmentMaxFiles int AttachmentEnabled bool + // Repo Upload settings + UploadTempPath string + UploadAllowedTypes string + UploadMaxSize int64 + UploadMaxFiles int + UploadEnabled bool + // Time settings TimeFormat string @@ -437,6 +447,16 @@ func NewContext() { log.Fatal(4, "Fail to map Repository settings: %v", err) } + sec = Cfg.Section("upload") + UploadTempPath = sec.Key("UPLOAD_TEMP_PATH").MustString(path.Join(AppDataPath, "tmp/uploads")) + if !filepath.IsAbs(UploadTempPath) { + UploadTempPath = path.Join(workDir, UploadTempPath) + } + UploadAllowedTypes = strings.Replace(sec.Key("UPLOAD_ALLOWED_TYPES").MustString(""), "|", ",", -1) + UploadMaxSize = sec.Key("UPLOAD_FILE_MAX_SIZE").MustInt64(32) + UploadMaxFiles = sec.Key("UPLOAD_MAX_FILES").MustInt(10) + UploadEnabled = sec.Key("ENABLE_UPLOADS").MustBool(true) + // UI settings. sec = Cfg.Section("ui") ExplorePagingNum = sec.Key("EXPLORE_PAGING_NUM").MustInt(20) diff --git a/public/css/gogs.css b/public/css/gogs.css index 93a17628d..0b59e4817 100644 --- a/public/css/gogs.css +++ b/public/css/gogs.css @@ -1265,55 +1265,55 @@ footer .ui.language .menu { .repository.file.list #file-content .view-raw img { padding: 5px 5px 0 5px; } -.repository.file.list #file-content .code-view * { +#file-content .code-view * { font-size: 12px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; line-height: 20px; } -.repository.file.list #file-content .code-view table { +#file-content .code-view table { width: 100%; } -.repository.file.list #file-content .code-view .lines-num { +#file-content .code-view .lines-num { vertical-align: top; text-align: right; color: #999; background: #f5f5f5; width: 1%; } -.repository.file.list #file-content .code-view .lines-num span { +#file-content .code-view .lines-num span { line-height: 20px; padding: 0 10px; cursor: pointer; display: block; } -.repository.file.list #file-content .code-view .lines-num, -.repository.file.list #file-content .code-view .lines-code { +#file-content .code-view .lines-num, +#file-content .code-view .lines-code { padding: 0; } -.repository.file.list #file-content .code-view .lines-num pre, -.repository.file.list #file-content .code-view .lines-code pre, -.repository.file.list #file-content .code-view .lines-num ol, -.repository.file.list #file-content .code-view .lines-code ol, -.repository.file.list #file-content .code-view .lines-num .hljs, -.repository.file.list #file-content .code-view .lines-code .hljs { +#file-content .code-view .lines-num pre, +#file-content .code-view .lines-code pre, +#file-content .code-view .lines-num ol, +#file-content .code-view .lines-code ol, +#file-content .code-view .lines-num .hljs, +#file-content .code-view .lines-code .hljs { background-color: white; margin: 0; padding: 0 !important; } -.repository.file.list #file-content .code-view .lines-num pre li, -.repository.file.list #file-content .code-view .lines-code pre li, -.repository.file.list #file-content .code-view .lines-num ol li, -.repository.file.list #file-content .code-view .lines-code ol li, -.repository.file.list #file-content .code-view .lines-num .hljs li, -.repository.file.list #file-content .code-view .lines-code .hljs li { +#file-content .code-view .lines-num pre li, +#file-content .code-view .lines-code pre li, +#file-content .code-view .lines-num ol li, +#file-content .code-view .lines-code ol li, +#file-content .code-view .lines-num .hljs li, +#file-content .code-view .lines-code .hljs li { padding-left: 5px; } -.repository.file.list #file-content .code-view .lines-num pre li.active, -.repository.file.list #file-content .code-view .lines-code pre li.active, -.repository.file.list #file-content .code-view .lines-num ol li.active, -.repository.file.list #file-content .code-view .lines-code ol li.active, -.repository.file.list #file-content .code-view .lines-num .hljs li.active, -.repository.file.list #file-content .code-view .lines-code .hljs li.active { +#file-content .code-view .lines-num pre li.active, +#file-content .code-view .lines-code pre li.active, +#file-content .code-view .lines-num ol li.active, +#file-content .code-view .lines-code ol li.active, +#file-content .code-view .lines-num .hljs li.active, +#file-content .code-view .lines-code .hljs li.active { background: #ffffdd; } .repository.file.list .sidebar { @@ -1878,7 +1878,7 @@ footer .ui.language .menu { max-width: 100%; padding: 5px 5px 0 5px; } -.repository .code-view { +#file-content .code-view { overflow: auto; overflow-x: auto; overflow-y: hidden; @@ -2129,13 +2129,13 @@ footer .ui.language .menu { .page.buttons { padding-top: 15px; } -.ui.comments .dropzone { +.ui.comments .dropzone, .ui.upload .dropzone { width: 100%; margin-bottom: 10px; border: 2px dashed #0087F7; box-shadow: none!important; } -.ui.comments .dropzone .dz-error-message { +.ui.comments .dropzone .dz-error-message, .ui.upload .dropzone .dz-error-message { top: 140px; } .settings .content { @@ -2704,3 +2704,159 @@ footer .ui.language .menu { .ui.user.list .item .description a:hover { text-decoration: underline; } +.btn-octicon { + display: inline-block; + padding: 5px; + margin-left: 5px; + line-height: 1; + color: #767676; + vertical-align: middle; + background: transparent; + border: 0; + outline: none; +} +.btn-octicon:hover { + color: #4078c0; +} +.btn-octicon-danger:hover { + color: #bd2c00; +} +.inline-form { + display: inline-block; +} +.ui.form .breadcrumb input { + min-height: 34px; + padding: 7px 8px; + color: #333; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #ddd; + border-radius: 3px; + outline: none; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.075); + width: inherit; +} +#file-actions { + padding-left: 20px; +} +.CodeMirror.cm-s-default { + margin-top: 20px; + margin-bottom: 15px; + border: 1px solid #ddd; + border-radius: 3px; + height: 600px; + padding: 0 !important; +} +.commit-form-wrapper { + padding-left: 64px; +} +.commit-form { + position: relative; + padding: 15px; + margin-bottom: 10px; + border: 1px solid #ddd; + border-radius: 3px; +} +.commit-form-wrapper .commit-form-avatar { + float: left; + margin-left: -64px; + border-radius: 4px; +} +.commit-form::before { + border-width: 8px; + border-color: transparent; + border-right-color: #ddd; + position: absolute; + top: 11px; + right: 100%; + left: -16px; + display: block; + width: 0; + height: 0; + pointer-events: none; + content: " "; + border-style: solid solid outset; +} +.form-checkbox input[type=checkbox], .form-checkbox input[type=radio] { + float: left; + margin: 2px 0 0 -20px; + vertical-align: middle; + box-sizing: border-box; + padding: 0; +} +.branch-name { + display: inline-block; + padding: 2px 6px; + font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; + color: rgba(0,0,0,0.5); + background-color: rgba(209,227,237,0.5); + border-radius: 3px; +} +.form-control, .form-select { + min-height: 34px; + padding: 7px 8px; + font-size: 13px; + color: #333; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #ddd; + border-radius: 3px; + outline: none; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.075); +} +.form-control.input-contrast { + background-color: #fafafa; +} +.form-control.mr-2 { + margin-right: 6px !important; +} +.quick-pull-choice .new-branch-name-input input { + width: 240px !important; + padding-left: 26px !important; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; +} +.quick-pull-choice .new-branch-name-input .quick-pull-new-branch-icon { + position: absolute; + top: 9px; + left: 10px; + color: #b0c4ce; +} +.text-muted, .text-gray { + color: #767676 !important; +} +.quick-pull-choice .new-branch-name-input { + position: relative; + margin-top: 5px; +} +.quick-pull-choice .quick-pull-branch-name { + display: none; + padding-left: 48px; + margin-top: 5px; +} +.quick-pull-choice.will-create-branch .quick-pull-branch-name { + display: inline-block; +} +.nowrap { + white-space: nowrap; +} +#file-buttons { + padding-right: 15px; +} +.repository .ui.container .ui.breadcrumb { + font-size: 1.5em; + color: #767676; + max-width: 600px; +} +.repository .ui.container .item:first-child .ui.breadcrumb { + max-width: none; +} +.repository .ui.container .ui.breadcrumb.field { + margin-bottom: 10px !important; +} +.repo-edit-file-cancel { + padding-left: 10px; +} diff --git a/public/js/gogs.js b/public/js/gogs.js index 71e2205f2..3c3e5d517 100644 --- a/public/js/gogs.js +++ b/public/js/gogs.js @@ -28,6 +28,61 @@ function initCommentPreviewTab($form) { buttonsClickOnEnter(); } +var previewTab; +var previewTabApis; + +function initEditPreviewTab($form) { + var $tab_menu = $form.find('.tabular.menu'); + $tab_menu.find('.item').tab(); + previewTab = $tab_menu.find('.item[data-tab="' + $tab_menu.data('preview') + '"]'); + + if(previewTab.length) { + previewTabApis = previewTab.data('preview-apis').split(','); + previewTab.click(function () { + var $this = $(this); + $.post($this.data('url'), { + "_csrf": csrf, + "mode": "gfm", + "context": $this.data('context'), + "text": $form.find('.tab.segment[data-tab="' + $tab_menu.data('write') + '"] textarea').val() + }, + function (data) { + var $preview_tab = $form.find('.tab.segment[data-tab="' + $tab_menu.data('preview') + '"]'); + $preview_tab.html(data); + emojify.run($preview_tab[0]); + $('pre code', $preview_tab[0]).each(function (i, block) { + hljs.highlightBlock(block); + }); + } + ); + }); + } + + buttonsClickOnEnter(); +} + +function initEditDiffTab($form) { + var $tab_menu = $form.find('.tabular.menu'); + $tab_menu.find('.item').tab(); + $tab_menu.find('.item[data-tab="' + $tab_menu.data('diff') + '"]').click(function () { + var $this = $(this); + $.post($this.data('url'), { + "_csrf": csrf, + "context": $this.data('context'), + "content": $form.find('.tab.segment[data-tab="' + $tab_menu.data('write') + '"] textarea').val() + }, + function (data) { + var $diff_tab = $form.find('.tab.segment[data-tab="' + $tab_menu.data('diff') + '"]'); + $diff_tab.html(data); + emojify.run($diff_tab[0]); + initCodeView() + } + ); + }); + + buttonsClickOnEnter(); +} + function initCommentForm() { if ($('.comment.form').length == 0) { return @@ -145,6 +200,11 @@ function initCommentForm() { selectItem('.select-assignee', '#assignee_id'); } +function initEditForm(){ + initEditPreviewTab($('.edit.form')); + initEditDiffTab($('.edit.form')); +} + function initInstall() { if ($('.install').length == 0) { return; @@ -406,7 +466,7 @@ function initRepository() { // Change status var $status_btn = $('#status-button'); - $('#content').keyup(function () { + $('#edit_area').keyup(function () { if ($(this).val().length == 0) { $status_btn.text($status_btn.data('status')) } else { @@ -472,15 +532,10 @@ function initRepositoryCollaboration(){ }); } -function initWiki() { - if ($('.repository.wiki').length == 0) { - return; - } - - - if ($('.repository.wiki.new').length > 0) { - var $edit_area = $('#edit-area'); - var simplemde = new SimpleMDE({ +function initWikiForm() { + var $edit_area = $('.repository.wiki textarea#edit_area'); + if ($edit_area.length > 0) { + new SimpleMDE({ autoDownloadFontAwesome: false, element: $edit_area[0], forceSync: true, @@ -508,15 +563,279 @@ function initWiki() { spellChecker: false, tabSize: 4, toolbar: ["bold", "italic", "strikethrough", "|", - "heading", "heading-1", "heading-2", "heading-3", "|", + "heading-1", "heading-2", "heading-3", "heading-bigger", "heading-smaller", "|", "code", "quote", "|", "unordered-list", "ordered-list", "|", - "link", "image", "horizontal-rule", "|", - "preview", "fullscreen"] + "link", "image", "table", "horizontal-rule", "|", + "clean-block", "preview", "fullscreen", "side-by-side"] }) } } +function initIssueForm() { + var $edit_area = $('.repository.issue textarea.edit_area'); + console.log($edit_area); + console.log($edit_area.length); + if ($edit_area.length > 0) { + $edit_area.each(function(i, edit_area) { + new SimpleMDE({ + autoDownloadFontAwesome: false, + element: edit_area[0], + forceSync: true, + previewRender: function (plainText, preview) { // Async method + setTimeout(function () { + // FIXME: still send render request when return back to edit mode + $.post($edit_area.data('url'), { + "_csrf": csrf, + "mode": "gfm", + "context": $edit_area.data('context'), + "text": plainText + }, + function (data) { + preview.innerHTML = '
' + data + '
'; + emojify.run($('.editor-preview')[0]); + } + ); + }, 0); + + return "Loading..."; + }, + renderingConfig: { + singleLineBreaks: false + }, + spellChecker: false, + tabSize: 4, + toolbar: ["bold", "italic", "strikethrough", "|", + "code", "quote", "|", + "unordered-list", "ordered-list", "|", + "link", "image", "table"] + }) + }); + } +} + +var editArea; +var editFilename; +var smdEditor; +var cmEditor; +var mdFileExtensions; +var lineWrapExtensions; + +// For IE +String.prototype.endsWith = function(pattern) { + var d = this.length - pattern.length; + return d >= 0 && this.lastIndexOf(pattern) === d; +}; + +function initEditor() { + editFilename = $("#file-name"); + editArea = $('.repository.edit textarea#edit_area'); + + if (!editArea.length) + return; + + (function ($, undefined) { + $.fn.getCursorPosition = function () { + var el = $(this).get(0); + var pos = 0; + if ('selectionStart' in el) { + pos = el.selectionStart; + } else if ('selection' in document) { + el.focus(); + var Sel = document.selection.createRange(); + var SelLength = document.selection.createRange().text.length; + Sel.moveStart('character', -el.value.length); + pos = Sel.text.length - SelLength; + } + return pos; + } + })(jQuery); + + CodeMirror.modeURL = editArea.data("mode-url"); + mdFileExtensions = editArea.data("md-file-extensions").split(","); + lineWrapExtensions = editArea.data("line-wrap-extensions").split(","); + + editFilename.on("keyup", function (e) { + var val = editFilename.val(), m, mode, spec, extension, extWithDot, previewLink, dataUrl, apiCall; + extension = extWithDot = ""; + if(m = /.+\.([^.]+)$/.exec(val)) { + extension = m[1]; + extWithDot = "."+extension; + } + + var info = CodeMirror.findModeByExtension(extension); + previewLink = $('a[data-tab=preview]'); + if (info) { + mode = info.mode; + spec = info.mime; + apiCall = mode; + } + else { + apiCall = extension + } + + if(previewLink.length && apiCall && previewTabApis && previewTabApis.length && previewTabApis.indexOf(apiCall) >= 0) { + dataUrl = previewLink.attr('data-url'); + previewLink.attr('data-url', dataUrl.replace(/(.*)\/.*/i, '$1/' + mode)); + previewLink.show(); + } + else { + previewLink.hide(); + } + + // If this file is a Markdown extensions, we will load that editor and return + if (mdFileExtensions.indexOf(extWithDot) >= 0) { + if (setSimpleMDE()) { + return; + } + } + + // Else we are going to use CodeMirror + if(! cmEditor){ + if( ! setCodeMirror()) + return; + } + + if (mode) { + cmEditor.setOption("mode", spec); + CodeMirror.autoLoadMode(cmEditor, mode); + } + + if (lineWrapExtensions.indexOf(extWithDot) >= 0) { + cmEditor.setOption("lineWrapping", true); + } + else { + cmEditor.setOption("lineWrapping", false); + } + }) + .keyup(function (e) { + var sections = $('.breadcrumb span.section'); + var dividers = $('.breadcrumb div.divider'); + if (e.keyCode == 8) { + if ($(this).getCursorPosition() == 0) { + if (sections.length > 0) { + var value = sections.last().find('a').text(); + $(this).val(value + $(this).val()); + $(this)[0].setSelectionRange(value.length, value.length); + sections.last().remove(); + dividers.last().remove(); + } + } + } + if (e.keyCode == 191) { + var parts = $(this).val().split('/'); + for (var i = 0; i < parts.length; ++i) { + var value = parts[i]; + if (i < parts.length - 1) { + if (value.length) { + $('' + value + '').insertBefore($(this)); + $('
/
').insertBefore($(this)); + } + } + else { + $(this).val(value); + } + $(this)[0].setSelectionRange(0, 0); + } + } + var parts = []; + $('.breadcrumb span.section').each(function (i, element) { + element = $(element); + if (element.find('a').length) { + parts.push(element.find('a').text()); + } else { + parts.push(element.text()); + } + }); + if ($(this).val()) + parts.push($(this).val()); + $('#tree-name').val(parts.join('/')); + }).trigger('keyup'); +} + +function setSimpleMDE() { + if(cmEditor) { + cmEditor.toTextArea(); + cmEditor = null; + } + + if(smdEditor) { + return true; + } + + smdEditor = new SimpleMDE({ + autoDownloadFontAwesome: false, + element: editArea[0], + forceSync: true, + renderingConfig: { + singleLineBreaks: false + }, + tabSize: 4, + spellChecker: false, + previewRender: function (plainText, preview) { // Async method + setTimeout(function () { + // FIXME: still send render request when return back to edit mode + $.post(editArea.data('url'), { + "_csrf": csrf, + "mode": "gfm", + "context": editArea.data('context'), + "text": plainText + }, + function (data) { + preview.innerHTML = '
' + data + '
'; + emojify.run($('.editor-preview')[0]); + } + ); + }, 0); + + return "Loading..."; + }, + toolbar: ["bold", "italic", "strikethrough", "|", + "heading-1", "heading-2", "heading-3", "heading-bigger", "heading-smaller", "|", + "code", "quote", "|", + "unordered-list", "ordered-list", "|", + "link", "image", "table", "horizontal-rule", "|", + "clean-block", "preview", "fullscreen", "side-by-side"] + }); + + return true; +} + +function setCodeMirror() { + if(smdEditor) { + smdEditor.toTextArea(); + smdEditor = null; + } + + if(cmEditor){ + return true; + } + + cmEditor = CodeMirror.fromTextArea(editArea[0], { + lineNumbers: true + }); + cmEditor.on("change", function (cm, change) { + editArea.val(cm.getValue()); + }); + + return true; +} + +function initQuickPull(){ + $('.js-quick-pull-choice-option').change(function() { + quickPullChoiceChange(); + }); + quickPullChoiceChange(); +} + +function quickPullChoiceChange(){ + var radio = $('.js-quick-pull-choice-option:checked'); + if (radio.val() == 'commit-to-new-branch') + $('.quick-pull-branch-name').show(); + else + $('.quick-pull-branch-name').hide(); +} + function initOrganization() { if ($('.organization').length == 0) { return; @@ -823,6 +1142,53 @@ function searchRepositories() { hideWhenLostFocus('#search-repo-box .results', '#search-repo-box'); } +function initCodeView() { + if ($('.code-view .linenums').length > 0) { + var $block = $('.code-view .linenums'); + var lines = $block.html().split("\n"); + $block.html(''); + + var $num_list = $('.code-view .lines-num'); + + // Building blocks. + var $toappendblock = []; + var $toappendnum_list = []; + for (var i = 0; i < lines.length; i++) { + $toappendblock.push('
  • ' + lines[i] + '
  • '); + $toappendnum_list.push('' + (i + 1) + ''); + } + $block.append($toappendblock.join('')); + $num_list.append($toappendnum_list.join('')); + + $(document).on('click', '.lines-num span', function (e) { + var $select = $(this); + var $list = $select.parent().siblings('.lines-code').find('ol.linenums > li'); + selectRange($list, $list.filter('[rel=' + $select.attr('id') + ']'), (e.shiftKey ? $list.filter('.active').eq(0) : null)); + deSelect(); + }); + + $(window).on('hashchange', function (e) { + var m = window.location.hash.match(/^#(L\d+)\-(L\d+)$/); + var $list = $('.code-view ol.linenums > li'); + var $first; + if (m) { + $first = $list.filter('.' + m[1]); + selectRange($list, $first, $list.filter('.' + m[2])); + $("html, body").scrollTop($first.offset().top - 200); + return; + } + m = window.location.hash.match(/^#(L\d+)$/); + if (m) { + $first = $list.filter('.' + m[1]); + selectRange($list, $first); + $("html, body").scrollTop($first.offset().top - 200); + } + }).trigger('hashchange'); + } +} + +var $dropz; + $(document).ready(function () { csrf = $('meta[name=_csrf]').attr("content"); suburl = $('meta[name=_suburl]').attr("content"); @@ -872,12 +1238,12 @@ $(document).ready(function () { } // Dropzone - if ($('#dropzone').length > 0) { + var $dropz = $('#dropzone'); + if ($dropz.length > 0) { // Disable auto discover for all elements: Dropzone.autoDiscover = false; var filenameDict = {}; - var $dropz = $('#dropzone'); $dropz.dropzone({ url: $dropz.data('upload-url'), headers: {"X-Csrf-Token": csrf}, @@ -892,12 +1258,16 @@ $(document).ready(function () { init: function () { this.on("success", function (file, data) { filenameDict[file.name] = data.uuid; - $('.attachments').append(''); + var input = $('').val(data.uuid); + $('.files').append(input); }); this.on("removedfile", function (file) { if (file.name in filenameDict) { $('#' + filenameDict[file.name]).remove(); } + if($dropz.data('remove-url') && $dropz.data('csrf')) { + $.post($dropz.data('remove-url'), {file: filenameDict[file.name], _csrf: $dropz.data('csrf')}); + } }) } }); @@ -931,6 +1301,15 @@ $(document).ready(function () { e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')) }); + // Clipboard for copying filename on edit page + if($('.clipboard-tree-name').length) { + new Clipboard(document.querySelector('.clipboard-tree-name'), { + text: function () { + return $('#tree-name').val(); + } + }); + } + // Helpers. $('.delete-button').click(function () { var $this = $(this); @@ -994,10 +1373,14 @@ $(document).ready(function () { initCommentForm(); initInstall(); initRepository(); - initWiki(); + initWikiForm(); + initIssueForm(); + initEditForm(); + initEditor(); initOrganization(); initWebhook(); initAdmin(); + initQuickPull(); var routes = { 'div.user.settings': initUserSettings, @@ -1013,92 +1396,51 @@ $(document).ready(function () { } }); +function changeHash(hash) { + if (history.pushState) { + history.pushState(null, null, hash); + } + else { + location.hash = hash; + } +} + +function deSelect() { + if (window.getSelection) { + window.getSelection().removeAllRanges(); + } else { + document.selection.empty(); + } +} + +function selectRange($list, $select, $from) { + $list.removeClass('active'); + if ($from) { + var a = parseInt($select.attr('rel').substr(1)); + var b = parseInt($from.attr('rel').substr(1)); + var c; + if (a != b) { + if (a > b) { + c = a; + a = b; + b = c; + } + var classes = []; + for (i = a; i <= b; i++) { + classes.push('.L' + i); + } + $list.filter(classes.join(',')).addClass('active'); + changeHash('#L' + a + '-' + 'L' + b); + return + } + } + $select.addClass('active'); + changeHash('#' + $select.attr('rel')); +} + $(window).load(function () { - function changeHash(hash) { - if (history.pushState) { - history.pushState(null, null, hash); - } - else { - location.hash = hash; - } - } - - function deSelect() { - if (window.getSelection) { - window.getSelection().removeAllRanges(); - } else { - document.selection.empty(); - } - } - - function selectRange($list, $select, $from) { - $list.removeClass('active'); - if ($from) { - var a = parseInt($select.attr('rel').substr(1)); - var b = parseInt($from.attr('rel').substr(1)); - var c; - if (a != b) { - if (a > b) { - c = a; - a = b; - b = c; - } - var classes = []; - for (i = a; i <= b; i++) { - classes.push('.L' + i); - } - $list.filter(classes.join(',')).addClass('active'); - changeHash('#L' + a + '-' + 'L' + b); - return - } - } - $select.addClass('active'); - changeHash('#' + $select.attr('rel')); - } - // Code view. - if ($('.code-view .linenums').length > 0) { - var $block = $('.code-view .linenums'); - var lines = $block.html().split("\n"); - $block.html(''); - - var $num_list = $('.code-view .lines-num'); - - // Building blocks. - var $toappendblock = []; - var $toappendnum_list = []; - for (var i = 0; i < lines.length; i++) { - $toappendblock.push('
  • ' + lines[i] + '
  • '); - $toappendnum_list.push('' + (i + 1) + ''); - } - $block.append($toappendblock.join('')); - $num_list.append($toappendnum_list.join('')); - - $(document).on('click', '.lines-num span', function (e) { - var $select = $(this); - var $list = $select.parent().siblings('.lines-code').find('ol.linenums > li'); - selectRange($list, $list.filter('[rel=' + $select.attr('id') + ']'), (e.shiftKey ? $list.filter('.active').eq(0) : null)); - deSelect(); - }); - - $(window).on('hashchange', function (e) { - var m = window.location.hash.match(/^#(L\d+)\-(L\d+)$/); - var $list = $('.code-view ol.linenums > li'); - var $first; - if (m) { - $first = $list.filter('.' + m[1]); - selectRange($list, $first, $list.filter('.' + m[2])); - $("html, body").scrollTop($first.offset().top - 200); - return; - } - m = window.location.hash.match(/^#(L\d+)$/); - if (m) { - $first = $list.filter('.' + m[1]); - selectRange($list, $first); - $("html, body").scrollTop($first.offset().top - 200); - } - }).trigger('hashchange'); - } + initCodeView(); // Repo clone url. if ($('#repo-clone-url').length > 0) { @@ -1117,5 +1459,5 @@ $(window).load(function () { }); $(function() { - $('form').areYouSure(); + $('form').areYouSure(); }); diff --git a/routers/repo/delete.go b/routers/repo/delete.go new file mode 100644 index 000000000..f804099ad --- /dev/null +++ b/routers/repo/delete.go @@ -0,0 +1,54 @@ +// Copyright 2016 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package repo + +import ( + "github.com/gogits/gogs/modules/context" + "github.com/gogits/gogs/modules/auth" + "github.com/gogits/gogs/modules/log" + "github.com/gogits/gogs/models" +) + +func DeleteFilePost(ctx *context.Context, form auth.DeleteRepoFileForm) { + branchName := ctx.Repo.BranchName + treeName := ctx.Repo.TreeName + + if ctx.HasError() { + ctx.Redirect(ctx.Repo.RepoLink + "/src/" + branchName + "/" + treeName) + return + } + + if err := ctx.Repo.Repository.DeleteRepoFile(ctx.User, branchName, treeName, form.CommitSummary); err != nil { + ctx.Handle(500, "DeleteRepoFile", err) + return + } + + // Was successful, so now need to call models.CommitRepoAction() with the new commitID for webhooks and watchers + if branch, err := ctx.Repo.Repository.GetBranch(branchName); err != nil { + log.Error(4, "repo.Repository.GetBranch(%s): %v", branchName, err) + } else if commit, err := branch.GetCommit(); err != nil { + log.Error(4, "branch.GetCommit(): %v", err) + } else { + pc := &models.PushCommits{ + Len: 1, + Commits: []*models.PushCommit{&models.PushCommit{ + commit.ID.String(), + commit.Message(), + commit.Author.Email, + commit.Author.Name, + }}, + } + oldCommitID := ctx.Repo.CommitID + newCommitID := commit.ID.String() + if err := models.CommitRepoAction(ctx.User.Id, ctx.Repo.Owner.Id, ctx.User.LowerName, ctx.Repo.Owner.Email, + ctx.Repo.Repository.ID, ctx.Repo.Owner.LowerName, ctx.Repo.Repository.Name, "refs/heads/"+branchName, pc, + oldCommitID, newCommitID); err != nil { + log.Error(4, "models.CommitRepoAction(branch = %s): %v", branchName, err) + } + models.HookQueue.Add(ctx.Repo.Repository.ID) + } + + ctx.Redirect(ctx.Repo.RepoLink+"/src/"+branchName) +} diff --git a/routers/repo/edit.go b/routers/repo/edit.go new file mode 100644 index 000000000..455f3afcc --- /dev/null +++ b/routers/repo/edit.go @@ -0,0 +1,359 @@ +// Copyright 2016 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package repo + +import ( + "io/ioutil" + "strings" + "path" + + "github.com/gogits/git-module" + "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/modules/context" + "github.com/gogits/gogs/modules/log" + "github.com/gogits/gogs/modules/template" + "github.com/gogits/gogs/modules/auth" + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/setting" +) + +const ( + EDIT base.TplName = "repo/edit" + DIFF_PREVIEW base.TplName = "repo/diff_preview" + DIFF_PREVIEW_NEW base.TplName = "repo/diff_preview_new" +) + +func EditFile(ctx *context.Context) { + editFile(ctx, false) +} + +func EditNewFile(ctx *context.Context) { + editFile(ctx, true) +} + +func editFile(ctx *context.Context, isNewFile bool) { + ctx.Data["PageIsEdit"] = true + ctx.Data["IsNewFile"] = isNewFile + ctx.Data["RequireHighlightJS"] = true + + userName := ctx.Repo.Owner.Name + repoName := ctx.Repo.Repository.Name + branchName := ctx.Repo.BranchName + branchLink := ctx.Repo.RepoLink + "/src/" + branchName + treeName := ctx.Repo.TreeName + + var treeNames []string + if len(treeName) > 0 { + treeNames = strings.Split(treeName, "/") + } + + if ! isNewFile { + entry, err := ctx.Repo.Commit.GetTreeEntryByPath(treeName) + + if err != nil && git.IsErrNotExist(err) { + ctx.Handle(404, "GetTreeEntryByPath", err) + return + } + + if (ctx.Repo.IsViewCommit) || entry == nil || entry.IsDir() { + ctx.Handle(404, "repo.Home", nil) + return + } + + blob := entry.Blob() + + dataRc, err := blob.Data() + if err != nil { + ctx.Handle(404, "blob.Data", err) + return + } + + ctx.Data["FileSize"] = blob.Size() + ctx.Data["FileName"] = blob.Name() + + buf := make([]byte, 1024) + n, _ := dataRc.Read(buf) + if n > 0 { + buf = buf[:n] + } + + _, isTextFile := base.IsTextFile(buf) + + if ! isTextFile { + ctx.Handle(404, "repo.Home", nil) + return + } + + d, _ := ioutil.ReadAll(dataRc) + buf = append(buf, d...) + + if err, content := template.ToUtf8WithErr(buf); err != nil { + if err != nil { + log.Error(4, "Convert content encoding: %s", err) + } + ctx.Data["FileContent"] = string(buf) + } else { + ctx.Data["FileContent"] = content + } + } else { + treeNames = append(treeNames, "") + } + + ctx.Data["RequireSimpleMDE"] = true + + ctx.Data["UserName"] = userName + ctx.Data["RepoName"] = repoName + ctx.Data["BranchName"] = branchName + ctx.Data["TreeName"] = treeName + ctx.Data["TreeNames"] = treeNames + ctx.Data["BranchLink"] = branchLink + ctx.Data["CommitSummary"] = "" + ctx.Data["CommitMessage"] = "" + ctx.Data["CommitChoice"] = "direct" + ctx.Data["NewBranchName"] = "" + ctx.Data["CommitDirectlyToThisBranch"] = ctx.Tr("repo.commit_directly_to_this_branch", ""+branchName+"") + ctx.Data["CreateNewBranch"] = ctx.Tr("repo.create_new_branch", ""+ctx.Tr("repo.new_branch")+"") + ctx.Data["LastCommit"] = ctx.Repo.Commit.ID + ctx.Data["MdFileExtensions"] = strings.Join(setting.Markdown.MdFileExtensions, ",") + ctx.Data["LineWrapExtensions"] = strings.Join(setting.Repository.LineWrapExtensions, ",") + ctx.Data["PreviewTabApis"] = strings.Join(setting.Repository.PreviewTabApis, ",") + ctx.Data["PreviewDiffUrl"] = ctx.Repo.RepoLink + "/preview/" + branchName + "/" + treeName + + ctx.HTML(200, EDIT) +} + +func EditFilePost(ctx *context.Context, form auth.EditRepoFileForm) { + editFilePost(ctx, form, false) +} + +func EditNewFilePost(ctx *context.Context, form auth.EditRepoFileForm) { + editFilePost(ctx, form, true) +} + +func editFilePost(ctx *context.Context, form auth.EditRepoFileForm, isNewFile bool) { + ctx.Data["PageIsEdit"] = true + ctx.Data["IsNewFile"] = isNewFile + ctx.Data["RequireHighlightJS"] = true + + userName := ctx.Repo.Owner.Name + repoName := ctx.Repo.Repository.Name + oldBranchName := ctx.Repo.BranchName + branchName := oldBranchName + branchLink := ctx.Repo.RepoLink + "/src/" + branchName + oldTreeName := ctx.Repo.TreeName + content := form.Content + commitChoice := form.CommitChoice + lastCommit := form.LastCommit + + if commitChoice == "commit-to-new-branch" { + branchName = form.NewBranchName + } + + treeName := form.TreeName + treeName = strings.Trim(treeName, " ") + treeName = strings.Trim(treeName, "/") + + var treeNames []string + if len(treeName) > 0 { + treeNames = strings.Split(treeName, "/") + } + + ctx.Data["RequireSimpleMDE"] = true + + ctx.Data["UserName"] = userName + ctx.Data["RepoName"] = repoName + ctx.Data["BranchName"] = branchName + ctx.Data["TreeName"] = treeName + ctx.Data["TreeNames"] = treeNames + ctx.Data["BranchLink"] = branchLink + ctx.Data["FileContent"] = content + ctx.Data["CommitSummary"] = form.CommitSummary + ctx.Data["CommitMessage"] = form.CommitMessage + ctx.Data["CommitChoice"] = commitChoice + ctx.Data["NewBranchName"] = branchName + ctx.Data["CommitDirectlyToThisBranch"] = ctx.Tr("repo.commit_directly_to_this_branch", ""+oldBranchName+"") + ctx.Data["CreateNewBranch"] = ctx.Tr("repo.create_new_branch", ""+ctx.Tr("repo.new_branch")+"") + ctx.Data["LastCommit"] = ctx.Repo.Commit.ID + ctx.Data["MdFileExtensions"] = strings.Join(setting.Markdown.MdFileExtensions, ",") + ctx.Data["LineWrapExtensions"] = strings.Join(setting.Repository.LineWrapExtensions, ",") + ctx.Data["PreviewTabApis"] = strings.Join(setting.Repository.PreviewTabApis, ",") + ctx.Data["PreviewDiffUrl"] = ctx.Repo.RepoLink + "/preview/" + branchName + "/" + treeName + + if ctx.HasError() { + ctx.HTML(200, EDIT) + return + } + + if len(treeName) == 0 { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.filename_cannot_be_empty"), EDIT, &form) + log.Error(4, "%s: %s", "EditFile", "Filename can't be empty") + return + } + + if( oldBranchName != branchName ){ + if _, err := ctx.Repo.Repository.GetBranch(branchName); err == nil { + ctx.Data["Err_Branchname"] = true + ctx.RenderWithErr(ctx.Tr("repo.branch_already_exists"), EDIT, &form) + log.Error(4, "%s: %s - %s", "BranchName", branchName, "Branch already exists") + return + } + + } + + treepath := "" + for index,part := range treeNames { + treepath = path.Join(treepath, part) + entry, err := ctx.Repo.Commit.GetTreeEntryByPath(treepath) + if err != nil { + // Means there is no item with that name, so we're good + break + } + if index != len(treeNames)-1 { + if ! entry.IsDir() { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.directory_is_a_file"), EDIT, &form) + log.Error(4, "%s: %s - %s", "EditFile", treeName, "Directory given is a file") + return + } + } else { + if entry.IsDir() { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.filename_is_a_directory"), EDIT, &form) + log.Error(4, "%s: %s - %s", "EditFile", treeName, "Filename given is a dirctory") + return + } + } + } + + if ! isNewFile { + _, err := ctx.Repo.Commit.GetTreeEntryByPath(oldTreeName) + if err != nil && git.IsErrNotExist(err) { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.file_editing_no_longer_exists"), EDIT, &form) + log.Error(4, "%s: %s / %s - %s", "EditFile", branchName, oldTreeName, "File doesn't exist for editing") + return + } + if lastCommit != ctx.Repo.CommitID { + if files, err := ctx.Repo.Commit.GetFilesChangedSinceCommit(lastCommit); err == nil { + for _, file := range files { + if file == treeName { + name := ctx.Repo.Commit.Author.Name + if u, err := models.GetUserByEmail(ctx.Repo.Commit.Author.Email); err == nil { + name = `` + u.Name + `` + } + message := ctx.Tr("repo.user_has_committed_since_you_started_editing", name) + + ` ` + ctx.Tr("repo.see_what_changed") + `` + + " " + ctx.Tr("repo.pressing_commit_again_will_overwrite_those_changes", "" + ctx.Tr("repo.commit_changes") + "") + log.Error(4, "%s: %s / %s - %s", "EditFile", branchName, oldTreeName, "File updated by another user") + ctx.RenderWithErr(message, EDIT, &form) + return + } + } + } + } + } + if oldTreeName != treeName { + // We have a new filename (rename or completely new file) so we need to make sure it doesn't already exist, can't clobber + _, err := ctx.Repo.Commit.GetTreeEntryByPath(treeName) + if err == nil { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.file_already_exists"), EDIT, &form) + log.Error(4, "%s: %s - %s", "NewFile", treeName, "File already exists, can't create new") + return + } + } + + message := "" + if form.CommitSummary!="" { + message = strings.Trim(form.CommitSummary, " ") + } else { + if isNewFile { + message = ctx.Tr("repo.add") + " '" + treeName + "'" + } else { + message = ctx.Tr("repo.update") + " '" + treeName + "'" + } + } + if strings.Trim(form.CommitMessage, " ")!="" { + message += "\n\n" + strings.Trim(form.CommitMessage, " ") + } + + if err := ctx.Repo.Repository.UpdateRepoFile(ctx.User, oldBranchName, branchName, oldTreeName, treeName, content, message, isNewFile); err != nil { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.unable_to_update_file"), EDIT, &form) + log.Error(4, "%s: %v", "EditFile", err) + return + } + + if branch, err := ctx.Repo.Repository.GetBranch(branchName); err != nil { + log.Error(4, "repo.Repository.GetBranch(%s): %v", branchName, err) + } else if commit, err := branch.GetCommit(); err != nil { + log.Error(4, "branch.GetCommit(): %v", err) + } else { + pc := &models.PushCommits{ + Len: 1, + Commits: []*models.PushCommit{&models.PushCommit{ + commit.ID.String(), + commit.Message(), + commit.Author.Email, + commit.Author.Name, + }}, + } + oldCommitID := ctx.Repo.CommitID + newCommitID := commit.ID.String() + if branchName != oldBranchName { + oldCommitID = "0000000000000000000000000000000000000000" // New Branch so we use all 0s + } + if err := models.CommitRepoAction(ctx.User.Id, ctx.Repo.Owner.Id, ctx.User.LowerName, ctx.Repo.Owner.Email, + ctx.Repo.Repository.ID, ctx.Repo.Owner.LowerName, ctx.Repo.Repository.Name, "refs/heads/"+branchName, pc, + oldCommitID, newCommitID); err != nil { + log.Error(4, "models.CommitRepoAction(branch = %s): %v", branchName, err) + } + models.HookQueue.Add(ctx.Repo.Repository.ID) + } + + // Leaving this off until forked repos that get a branch can compare with forks master and not upstream + //if oldBranchName != branchName { + // ctx.Redirect(EscapeUrl(ctx.Repo.RepoLink + "/compare/" + oldBranchName + "..." + branchName)) + //} else { + ctx.Redirect(EscapeUrl(ctx.Repo.RepoLink + "/src/" + branchName + "/" + treeName)) + //} +} + +func DiffPreviewPost(ctx *context.Context, form auth.EditPreviewDiffForm) { + userName := ctx.Repo.Owner.Name + repoName := ctx.Repo.Repository.Name + branchName := ctx.Repo.BranchName + treeName := ctx.Repo.TreeName + content := form.Content + + entry, err := ctx.Repo.Commit.GetTreeEntryByPath(treeName) + if (err != nil && git.IsErrNotExist(err)) || entry.IsDir() { + ctx.Data["FileContent"] = content + ctx.HTML(200, DIFF_PREVIEW_NEW) + return + } + + diff, err := ctx.Repo.Repository.GetPreviewDiff(models.RepoPath(userName, repoName), branchName, treeName, content, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles) + if err != nil { + ctx.Error(404, err.Error()) + log.Error(4, "%s: %v", "GetPreviewDiff", err) + return + } + + if(diff.NumFiles() == 0){ + ctx.Error(200, ctx.Tr("repo.no_changes_to_show")) + return + } + + ctx.Data["IsSplitStyle"] = ctx.Query("style") == "split" + ctx.Data["File"] = diff.Files[0] + + ctx.HTML(200, DIFF_PREVIEW) +} + +func EscapeUrl(str string) string { + return strings.NewReplacer("?","%3F","%","%25","#","%23"," ","%20","^","%5E","\\","%5C","{","%7B","}","%7D","|","%7C").Replace(str) +} diff --git a/routers/repo/upload.go b/routers/repo/upload.go new file mode 100644 index 000000000..647913d35 --- /dev/null +++ b/routers/repo/upload.go @@ -0,0 +1,257 @@ +// Copyright 2016 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package repo + +import ( + "strings" + + "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/modules/context" + "github.com/gogits/gogs/modules/log" + "github.com/gogits/gogs/modules/auth" + "path" + "github.com/gogits/gogs/modules/setting" + "fmt" + "net/http" + "github.com/gogits/gogs/models" +) + +const ( + UPLOAD base.TplName = "repo/upload" +) + +func renderUploadSettings(ctx *context.Context) { + ctx.Data["RequireDropzone"] = true + ctx.Data["IsUploadEnabled"] = setting.UploadEnabled + ctx.Data["UploadAllowedTypes"] = setting.UploadAllowedTypes + ctx.Data["UploadMaxSize"] = setting.UploadMaxSize + ctx.Data["UploadMaxFiles"] = setting.UploadMaxFiles +} + +func UploadFile(ctx *context.Context) { + ctx.Data["PageIsUpload"] = true + + userName := ctx.Repo.Owner.Name + repoName := ctx.Repo.Repository.Name + branchName := ctx.Repo.BranchName + branchLink := ctx.Repo.RepoLink + "/src/" + branchName + treeName := ctx.Repo.TreeName + + treeNames := []string{""} + if len(treeName) > 0 { + treeNames = strings.Split(treeName, "/") + } + + ctx.Data["UserName"] = userName + ctx.Data["RepoName"] = repoName + ctx.Data["BranchName"] = branchName + ctx.Data["TreeName"] = treeName + ctx.Data["TreeNames"] = treeNames + ctx.Data["BranchLink"] = branchLink + ctx.Data["CommitSummary"] = "" + ctx.Data["CommitMessage"] = "" + ctx.Data["CommitChoice"] = "direct" + ctx.Data["NewBranchName"] = "" + ctx.Data["CommitDirectlyToThisBranch"] = ctx.Tr("repo.commit_directly_to_this_branch", ""+branchName+"") + ctx.Data["CreateNewBranch"] = ctx.Tr("repo.create_new_branch", ""+ctx.Tr("repo.new_branch")+"") + renderUploadSettings(ctx) + + ctx.HTML(200, UPLOAD) +} + +func UploadFilePost(ctx *context.Context, form auth.UploadRepoFileForm) { + ctx.Data["PageIsUpload"] = true + renderUploadSettings(ctx) + + userName := ctx.Repo.Owner.Name + repoName := ctx.Repo.Repository.Name + oldBranchName := ctx.Repo.BranchName + branchName := oldBranchName + branchLink := ctx.Repo.RepoLink + "/src/" + branchName + commitChoice := form.CommitChoice + files := form.Files + + if commitChoice == "commit-to-new-branch" { + branchName = form.NewBranchName + } + + treeName := form.TreeName + treeName = strings.Trim(treeName, " ") + treeName = strings.Trim(treeName, "/") + + treeNames := []string{""} + if len(treeName) > 0 { + treeNames = strings.Split(treeName, "/") + } + + ctx.Data["UserName"] = userName + ctx.Data["RepoName"] = repoName + ctx.Data["BranchName"] = branchName + ctx.Data["TreeName"] = treeName + ctx.Data["TreeNames"] = treeNames + ctx.Data["BranchLink"] = branchLink + ctx.Data["CommitSummary"] = form.CommitSummary + ctx.Data["CommitMessage"] = form.CommitMessage + ctx.Data["CommitChoice"] = commitChoice + ctx.Data["NewBranchName"] = branchName + ctx.Data["CommitDirectlyToThisBranch"] = ctx.Tr("repo.commit_directly_to_this_branch", ""+oldBranchName+"") + ctx.Data["CreateNewBranch"] = ctx.Tr("repo.create_new_branch", ""+ctx.Tr("repo.new_branch")+"") + + if ctx.HasError() { + ctx.HTML(200, UPLOAD) + return + } + + if( oldBranchName != branchName ){ + if _, err := ctx.Repo.Repository.GetBranch(branchName); err == nil { + ctx.Data["Err_Branchname"] = true + ctx.RenderWithErr(ctx.Tr("repo.branch_already_exists"), UPLOAD, &form) + log.Error(4, "%s: %s - %s", "BranchName", branchName, "Branch already exists") + return + } + + } + + treepath := "" + for _, part := range treeNames { + treepath = path.Join(treepath, part) + entry, err := ctx.Repo.Commit.GetTreeEntryByPath(treepath) + if err != nil { + // Means there is no item with that name, so we're good + break + } + if ! entry.IsDir() { + ctx.Data["Err_Filename"] = true + ctx.RenderWithErr(ctx.Tr("repo.directory_is_a_file"), UPLOAD, &form) + log.Error(4, "%s: %s - %s", "UploadFile", treeName, "Directory given is a file") + return + } + } + + message := "" + if form.CommitSummary!="" { + message = strings.Trim(form.CommitSummary, " ") + } else { + message = ctx.Tr("repo.add_files_to_dir", "'" + treeName + "'") + } + if strings.Trim(form.CommitMessage, " ")!="" { + message += "\n\n" + strings.Trim(form.CommitMessage, " ") + } + + if err := ctx.Repo.Repository.UploadRepoFiles(ctx.User, oldBranchName, branchName, treeName, message, files); err != nil { + ctx.Data["Err_Directory"] = true + ctx.RenderWithErr(ctx.Tr("repo.unable_to_upload_files"), UPLOAD, &form) + log.Error(4, "%s: %v", "UploadFile", err) + return + } + + // Was successful, so now need to call models.CommitRepoAction() with the new commitID for webhooks and watchers + if branch, err := ctx.Repo.Repository.GetBranch(branchName); err != nil { + log.Error(4, "repo.Repository.GetBranch(%s): %v", branchName, err) + } else if commit, err := branch.GetCommit(); err != nil { + log.Error(4, "branch.GetCommit(): %v", err) + } else { + pc := &models.PushCommits{ + Len: 1, + Commits: []*models.PushCommit{&models.PushCommit{ + commit.ID.String(), + commit.Message(), + commit.Author.Email, + commit.Author.Name, + }}, + } + oldCommitID := ctx.Repo.CommitID + newCommitID := commit.ID.String() + if branchName != oldBranchName { + oldCommitID = "0000000000000000000000000000000000000000" // New Branch so we use all 0s + } + if err := models.CommitRepoAction(ctx.User.Id, ctx.Repo.Owner.Id, ctx.User.LowerName, ctx.Repo.Owner.Email, + ctx.Repo.Repository.ID, ctx.Repo.Owner.LowerName, ctx.Repo.Repository.Name, "refs/heads/"+branchName, pc, + oldCommitID, newCommitID); err != nil { + log.Error(4, "models.CommitRepoAction(branch = %s): %v", branchName, err) + } + models.HookQueue.Add(ctx.Repo.Repository.ID) + } + + // Leaving this off until forked repos that get a branch can compare with forks master and not upstream + //if oldBranchName != branchName { + // ctx.Redirect(EscapeUrl(ctx.Repo.RepoLink + "/compare/" + oldBranchName + "..." + branchName)) + //} else { + ctx.Redirect(EscapeUrl(ctx.Repo.RepoLink + "/src/" + branchName + "/" + treeName)) + //} +} + +func UploadFileToServer(ctx *context.Context) { + if !setting.UploadEnabled { + ctx.Error(404, "upload is not enabled") + return + } + + file, header, err := ctx.Req.FormFile("file") + if err != nil { + ctx.Error(500, fmt.Sprintf("FormFile: %v", err)) + return + } + defer file.Close() + + buf := make([]byte, 1024) + n, _ := file.Read(buf) + if n > 0 { + buf = buf[:n] + } + fileType := http.DetectContentType(buf) + + if len(setting.UploadAllowedTypes) > 0 { + allowedTypes := strings.Split(setting.UploadAllowedTypes, ",") + allowed := false + for _, t := range allowedTypes { + t := strings.Trim(t, " ") + if t == "*/*" || t == fileType { + allowed = true + break + } + } + + if !allowed { + ctx.Error(400, ErrFileTypeForbidden.Error()) + return + } + } + + up, err := models.NewUpload(header.Filename, buf, file, ctx.User.Id, ctx.Repo.Repository.ID) + if err != nil { + ctx.Error(500, fmt.Sprintf("NewUpload: %v", err)) + return + } + + log.Trace("New file uploaded: %s", up.UUID) + ctx.JSON(200, map[string]string{ + "uuid": up.UUID, + }) +} + +func UploadRemoveFileFromServer(ctx *context.Context, form auth.UploadRemoveFileForm) { + if !setting.UploadEnabled { + ctx.Error(404, "upload is not enabled") + return + } + + if len(form.File) == 0 { + ctx.Error(404, "invalid params") + return + } + + uuid := form.File + + if err := models.RemoveUpload(uuid, ctx.User.Id, ctx.Repo.Repository.ID); err != nil { + ctx.Error(500, fmt.Sprintf("RemoveUpload: %v", err)) + return + } + + log.Trace("Upload file removed: %s", uuid) + ctx.JSON(200, map[string]string{ + "uuid": uuid, + }) +} \ No newline at end of file diff --git a/routers/repo/view.go b/routers/repo/view.go index e787879d8..2c1cae105 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -22,6 +22,7 @@ import ( "github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/template" "github.com/gogits/gogs/modules/template/highlight" + "strconv" ) const ( @@ -47,6 +48,10 @@ func Home(ctx *context.Context) { branchLink := ctx.Repo.RepoLink + "/src/" + branchName treeLink := branchLink rawLink := ctx.Repo.RepoLink + "/raw/" + branchName + editLink := ctx.Repo.RepoLink + "/edit/" + branchName + forkLink := setting.AppSubUrl + "/repo/fork/" + strconv.FormatInt(ctx.Repo.Repository.ID, 10) + newFileLink := ctx.Repo.RepoLink + "/new/" + branchName + uploadFileLink := ctx.Repo.RepoLink + "/upload/" + branchName // Get tree path treename := ctx.Repo.TreeName @@ -102,8 +107,10 @@ func Home(ctx *context.Context) { switch { case isPDFFile: ctx.Data["IsPDFFile"] = true + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.cannot_edit_binary_files") case isImageFile: ctx.Data["IsImageFile"] = true + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.cannot_edit_binary_files") case isTextFile: if blob.Size() >= setting.MaxDisplayFileSize { ctx.Data["IsFileTooLarge"] = true @@ -112,8 +119,10 @@ func Home(ctx *context.Context) { d, _ := ioutil.ReadAll(dataRc) buf = append(buf, d...) readmeExist := markdown.IsMarkdownFile(blob.Name()) || markdown.IsReadmeFile(blob.Name()) + isMarkdown := readmeExist || markdown.IsMarkdownFile(blob.Name()) ctx.Data["ReadmeExist"] = readmeExist - if readmeExist { + ctx.Data["IsMarkdown"] = isMarkdown + if isMarkdown { ctx.Data["FileContent"] = string(markdown.Render(buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) } else { if err, content := template.ToUtf8WithErr(buf); err != nil { @@ -126,7 +135,21 @@ func Home(ctx *context.Context) { } } } + if ctx.Repo.IsWriter() && ctx.Repo.IsViewBranch { + ctx.Data["FileEditLink"] = editLink + "/" + treename + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.edit_this_file") + } else { + if ! ctx.Repo.IsViewBranch { + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.must_be_on_branch") + } else if ! ctx.Repo.IsWriter() { + ctx.Data["FileEditLink"] = forkLink + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.fork_before_edit") + } + } + default: + ctx.Data["FileEditLinkTooltip"] = ctx.Tr("repo.cannot_edit_binary_files") } + } } else { // Directory and file list. @@ -203,6 +226,12 @@ func Home(ctx *context.Context) { } ctx.Data["LastCommit"] = lastCommit ctx.Data["LastCommitUser"] = models.ValidateCommitWithEmail(lastCommit) + if ctx.Repo.IsWriter() && ctx.Repo.IsViewBranch { + ctx.Data["NewFileLink"] = newFileLink + "/" + treename + if setting.UploadEnabled { + ctx.Data["UploadFileLink"] = uploadFileLink + "/" + treename + } + } } ctx.Data["Username"] = userName diff --git a/templates/repo/diff_preview.tmpl b/templates/repo/diff_preview.tmpl new file mode 100644 index 000000000..1c4787a33 --- /dev/null +++ b/templates/repo/diff_preview.tmpl @@ -0,0 +1,32 @@ +{{$highlightClass := .File.GetHighlightClass}} +
    +
    +
    + + + {{range $j, $section := .File.Sections}} + {{range $k, $line := $section.Lines}} + + {{if eq .GetType 4}} + + {{else}} + + + {{end}} + + + {{end}} + {{end}} + +
    + {{/* {{if gt $j 0}}{{end}} */}} + + {{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}} + + {{if $line.RightIdx}}{{$line.RightIdx}}{{end}} + +
    {{$section.GetComputedInlineDiffFor $line}}
    +
    +
    +
    +
    diff --git a/templates/repo/diff_preview_new.tmpl b/templates/repo/diff_preview_new.tmpl new file mode 100644 index 000000000..34abfe182 --- /dev/null +++ b/templates/repo/diff_preview_new.tmpl @@ -0,0 +1,12 @@ +
    +
    + + + + + + + +
      {{.FileContent}}
    +
    +
    diff --git a/templates/repo/edit.tmpl b/templates/repo/edit.tmpl new file mode 100644 index 000000000..133a73df2 --- /dev/null +++ b/templates/repo/edit.tmpl @@ -0,0 +1,98 @@ +{{template "base/head" .}} +
    + {{template "repo/header" .}} +
    + {{.branchName}} + {{template "base/alert" .}} +
    + {{.CsrfTokenHtml}} + + +
    + +
    + +
    +
    + {{.i18n.Tr "repo.release.loading"}} +
    +
    + {{.i18n.Tr "repo.release.loading"}} +
    +
    +
    + +
    +

    {{.i18n.Tr "repo.commit_changes"}}

    +
    + '{{else}}{{.i18n.Tr "repo.update"}} '{{.TreeName}}'{{end}}" value="{{.CommitSummary}}"> +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    + + {{.i18n.Tr "repo.cancel"}} +
    +
    +
    +
    +{{template "base/footer" .}} diff --git a/templates/repo/upload.tmpl b/templates/repo/upload.tmpl new file mode 100644 index 000000000..9253b5cc9 --- /dev/null +++ b/templates/repo/upload.tmpl @@ -0,0 +1,79 @@ +{{template "base/head" .}} +
    + {{template "repo/header" .}} +
    + {{.branchName}} + {{template "base/alert" .}} +
    + {{.CsrfTokenHtml}} + +
    +
    +
    +
    +
    + +
    +

    {{.i18n.Tr "repo.commit_changes"}}

    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    + + {{.i18n.Tr "repo.cancel"}} +
    +
    +
    +
    +{{template "base/footer" .}}