From 0a2f87f9414b184759c45a4da63c72470557b0f1 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sat, 18 Feb 2017 19:35:59 -0500 Subject: [PATCH] cron: add repository archive cleanup (#4061) --- conf/app.ini | 7 ++ gogs.go | 2 +- models/repo.go | 97 +++++++++++++++---- modules/bindata/bindata.go | 4 +- modules/cron/cron.go | 17 +++- modules/setting/setting.go | 6 ++ templates/.VERSION | 2 +- .../gogits/git-module/repo_commit.go | 2 +- vendor/vendor.json | 6 +- 9 files changed, 115 insertions(+), 28 deletions(-) diff --git a/conf/app.ini b/conf/app.ini index cec404466..d46c17cba 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -341,6 +341,13 @@ ARGS = RUN_AT_START = true SCHEDULE = @every 24h +; Cleanup repository archives +[cron.repo_archive_cleanup] +RUN_AT_START = false +SCHEDULE = @every 24h +; Time duration to check if archive should be cleaned +OLDER_THAN = 24h + [git] ; Disables highlight of added and removed changes DISABLE_DIFF_HIGHLIGHT = false diff --git a/gogs.go b/gogs.go index 15b722811..75e5a8717 100644 --- a/gogs.go +++ b/gogs.go @@ -16,7 +16,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.9.158.0218" +const APP_VER = "0.9.159.0218" func init() { setting.AppVer = APP_VER diff --git a/models/repo.go b/models/repo.go index c788611d7..62a998167 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1597,8 +1597,70 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos []*Repository, _ int return repos, count, sess.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&repos) } +func DeleteOldRepositoryArchives() { + if taskStatusTable.IsRunning(_CLEAN_OLD_ARCHIVES) { + return + } + taskStatusTable.Start(_CLEAN_OLD_ARCHIVES) + defer taskStatusTable.Stop(_CLEAN_OLD_ARCHIVES) + + log.Trace("Doing: DeleteOldRepositoryArchives") + + formats := []string{"zip", "targz"} + oldestTime := time.Now().Add(-setting.Cron.RepoArchiveCleanup.OlderThan) + if err := x.Where("id > 0").Iterate(new(Repository), + func(idx int, bean interface{}) error { + repo := bean.(*Repository) + basePath := filepath.Join(repo.RepoPath(), "archives") + for _, format := range formats { + dirPath := filepath.Join(basePath, format) + if !com.IsDir(dirPath) { + continue + } + + dir, err := os.Open(dirPath) + if err != nil { + log.Error(3, "Fail to open directory '%s': %v", dirPath, err) + continue + } + + fis, err := dir.Readdir(0) + dir.Close() + if err != nil { + log.Error(3, "Fail to read directory '%s': %v", dirPath, err) + continue + } + + for _, fi := range fis { + if fi.IsDir() || fi.ModTime().After(oldestTime) { + continue + } + + archivePath := filepath.Join(dirPath, fi.Name()) + if err = os.Remove(archivePath); err != nil { + desc := fmt.Sprintf("Fail to health delete archive '%s': %v", archivePath, err) + log.Warn(desc) + if err = CreateRepositoryNotice(desc); err != nil { + log.Error(3, "CreateRepositoryNotice: %v", err) + } + } + } + } + + return nil + }); err != nil { + log.Error(2, "DeleteOldRepositoryArchives: %v", err) + } +} + // DeleteRepositoryArchives deletes all repositories' archives. func DeleteRepositoryArchives() error { + if taskStatusTable.IsRunning(_CLEAN_OLD_ARCHIVES) { + return nil + } + taskStatusTable.Start(_CLEAN_OLD_ARCHIVES) + defer taskStatusTable.Stop(_CLEAN_OLD_ARCHIVES) + return x.Where("id > 0").Iterate(new(Repository), func(idx int, bean interface{}) error { repo := bean.(*Repository) @@ -1688,9 +1750,10 @@ func SyncRepositoryHooks() error { var taskStatusTable = sync.NewStatusTable() const ( - _MIRROR_UPDATE = "mirror_update" - _GIT_FSCK = "git_fsck" - _CHECK_REPOs = "check_repos" + _MIRROR_UPDATE = "mirror_update" + _GIT_FSCK = "git_fsck" + _CHECK_REPO_STATS = "check_repos_stats" + _CLEAN_OLD_ARCHIVES = "clean_old_archives" ) // GitFsck calls 'git fsck' to check repository health. @@ -1708,15 +1771,15 @@ func GitFsck() { repo := bean.(*Repository) repoPath := repo.RepoPath() if err := git.Fsck(repoPath, setting.Cron.RepoHealthCheck.Timeout, setting.Cron.RepoHealthCheck.Args...); err != nil { - desc := fmt.Sprintf("Fail to health check repository (%s): %v", repoPath, err) + desc := fmt.Sprintf("Fail to health check repository '%s': %v", repoPath, err) log.Warn(desc) if err = CreateRepositoryNotice(desc); err != nil { - log.Error(4, "CreateRepositoryNotice: %v", err) + log.Error(3, "CreateRepositoryNotice: %v", err) } } return nil }); err != nil { - log.Error(4, "GitFsck: %v", err) + log.Error(2, "GitFsck: %v", err) } } @@ -1747,7 +1810,7 @@ type repoChecker struct { func repoStatsCheck(checker *repoChecker) { results, err := x.Query(checker.querySQL) if err != nil { - log.Error(4, "Select %s: %v", checker.desc, err) + log.Error(2, "Select %s: %v", checker.desc, err) return } for _, result := range results { @@ -1755,17 +1818,17 @@ func repoStatsCheck(checker *repoChecker) { log.Trace("Updating %s: %d", checker.desc, id) _, err = x.Exec(checker.correctSQL, id, id) if err != nil { - log.Error(4, "Update %s[%d]: %v", checker.desc, id, err) + log.Error(2, "Update %s[%d]: %v", checker.desc, id, err) } } } func CheckRepoStats() { - if taskStatusTable.IsRunning(_CHECK_REPOs) { + if taskStatusTable.IsRunning(_CHECK_REPO_STATS) { return } - taskStatusTable.Start(_CHECK_REPOs) - defer taskStatusTable.Stop(_CHECK_REPOs) + taskStatusTable.Start(_CHECK_REPO_STATS) + defer taskStatusTable.Stop(_CHECK_REPO_STATS) log.Trace("Doing: CheckRepoStats") @@ -1809,14 +1872,14 @@ func CheckRepoStats() { desc := "repository count 'num_closed_issues'" results, err := x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, false) if err != nil { - log.Error(4, "Select %s: %v", desc, err) + log.Error(2, "Select %s: %v", desc, err) } else { for _, result := range results { id := com.StrTo(result["id"]).MustInt64() log.Trace("Updating %s: %d", desc, id) _, err = x.Exec("UPDATE `repository` SET num_closed_issues=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=? AND is_pull=?) WHERE id=?", id, true, false, id) if err != nil { - log.Error(4, "Update %s[%d]: %v", desc, id, err) + log.Error(2, "Update %s[%d]: %v", desc, id, err) } } } @@ -1826,7 +1889,7 @@ func CheckRepoStats() { // ***** START: Repository.NumForks ***** results, err = x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_forks!=(SELECT COUNT(*) FROM `repository` WHERE fork_id=repo.id)") if err != nil { - log.Error(4, "Select repository count 'num_forks': %v", err) + log.Error(2, "Select repository count 'num_forks': %v", err) } else { for _, result := range results { id := com.StrTo(result["id"]).MustInt64() @@ -1834,19 +1897,19 @@ func CheckRepoStats() { repo, err := GetRepositoryByID(id) if err != nil { - log.Error(4, "GetRepositoryByID[%d]: %v", id, err) + log.Error(2, "GetRepositoryByID[%d]: %v", id, err) continue } rawResult, err := x.Query("SELECT COUNT(*) FROM `repository` WHERE fork_id=?", repo.ID) if err != nil { - log.Error(4, "Select count of forks[%d]: %v", repo.ID, err) + log.Error(2, "Select count of forks[%d]: %v", repo.ID, err) continue } repo.NumForks = int(parseCountResult(rawResult)) if err = UpdateRepository(repo, false); err != nil { - log.Error(4, "UpdateRepository[%d]: %v", id, err) + log.Error(2, "UpdateRepository[%d]: %v", id, err) continue } } diff --git a/modules/bindata/bindata.go b/modules/bindata/bindata.go index 7b0ef4b94..baf96544c 100644 --- a/modules/bindata/bindata.go +++ b/modules/bindata/bindata.go @@ -292,7 +292,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x7b\x6f\x8f\xdc\x48\x7a\xdf\xfb\xfa\x14\xb5\x73\xb9\x48\x0a\xd8\xdd\x33\x23\xcd\xec\xac\xe6\xfa\xb0\x54\x37\xbb\x87\x56\xff\x5b\x92\x2d\xad\x56\x18\x50\x35\x64\x75\xb3\x6e\x48\x16\x97\x55\x9c\x51\x2f\x02\xe3\x16\x79\x91\x3f\x48\x90\x17\x49\x6c\x04\x30\x82\x1c\x82\xc4\x80\x13\x27\x67\x24\x01\xee\x9c\x73\xf2\x62\xe3\xf7\xd2\x77\x70\xd6\x71\x90\xc0\x5f\x21\x78\x9e\x22\xbb\xd9\xd2\x48\x5e\x03\xc9\x2e\xa0\x26\x8b\x55\x4f\x55\x3d\x7f\x7f\xcf\x53\x35\x3f\xa2\x9f\x7c\xf2\x09\x9d\x39\xcf\x1c\x8f\xe2\x3f\xd3\xf9\xd0\x1d\xbd\xa0\xc1\x85\xeb\xd3\x91\x3b\x71\xe0\x3b\x31\xbd\x16\x13\xc7\xf6\x1d\x3a\xb5\x9f\x3a\x74\x70\x61\xcf\xc6\x8e\x4f\xe7\x33\x3a\x98\x7b\x9e\xe3\x2f\xe6\xb3\xa1\x3b\x1b\xd3\xc1\xd2\x0f\xe6\x53\x3a\x98\xcf\x46\xee\xf8\x5d\x0a\xee\x88\xbe\x98\x2f\xa9\xed\x39\x74\x61\x0f\x9e\xda\x63\x18\xb1\xf0\xe6\xcf\xdc\xa1\xe3\x59\x7b\x13\xcc\x9f\x03\xe5\xc5\x0b\x3a\x1f\x51\x37\x40\x1a\xe4\x9c\xda\x45\x41\x73\x96\x71\xaa\x13\xa6\xa9\x4a\xe4\xad\xa2\x32\xa7\xfc\x86\x97\x1b\x5a\xb0\x35\xa7\x5a\xe8\x94\x13\x7b\xb1\x08\x67\xf6\xd4\xa1\x7d\x3a\x96\x6b\x45\xce\x69\x90\x70\x33\x52\xae\xa8\x4e\x38\x55\x1b\xa5\x79\x46\x2b\xc5\x4b\x43\xac\xac\x72\x65\x3a\x7b\xcb\x59\xb8\xf4\x1d\x8f\xf6\xe9\x5a\x68\x72\x4e\x1d\xa1\x13\x5e\xd2\x83\x98\xdf\x1c\x58\xf4\xa0\x28\x65\x7c\x40\x65\x49\x0f\x34\x57\xfa\x00\xfb\x4f\xe7\x43\x98\x2c\xe6\x37\x84\xbc\x54\xbc\xbc\xe1\xe5\x25\x59\x78\xf3\x60\x3e\x98\x4f\x68\x9f\x26\x5a\x17\x64\x38\x9f\xda\xee\x8c\xf6\x69\x2a\x23\x96\x26\x52\x69\xe2\xcd\xe7\x41\xb8\xf4\xa0\xcb\x8f\xef\x37\xfd\x1f\xa8\xc7\xbd\xde\x8f\xef\x9b\xee\x0f\xd4\xe3\x1f\xdf\xbf\x08\x82\x45\xb8\x98\x7b\xc1\x03\xd5\x23\xf8\x62\x0f\x87\xb0\xc0\xc3\x2e\xfe\x4f\xb6\x1d\x68\x9f\x3e\x3c\x3c\x3c\x24\xe7\x74\xc1\xcb\x4c\x28\x25\x64\x4e\x57\xb2\xa4\x55\x2e\x5e\x53\x25\xa3\x6b\xae\xc9\x72\xe6\x7e\x19\xfa\xf3\xc1\x53\x27\x08\x17\x8e\x37\x75\x7d\xdf\x9d\xc3\xc2\x4e\x4f\x4f\xc9\x39\x9d\xc0\xf2\xe8\xfd\xe1\xf4\xab\x07\x14\xd6\x06\xc3\x81\x33\xf4\x56\x96\xd7\xbc\x54\xf4\xbe\xaa\xa2\x84\x32\x45\x7d\xff\x82\x56\x45\xcc\x34\x7f\x40\x59\x14\x71\xa5\x44\xbe\xa6\xb7\xfc\x8a\x02\x0f\x44\xc4\xbb\xe4\x9c\xba\x39\xcd\xa4\xd2\x34\x62\x8a\x2b\xba\x91\x15\x8d\x25\xcd\xa5\xa6\x39\xe7\x31\xd5\x92\x46\x09\xcb\x41\x74\x09\xa7\x31\x5f\xb1\x2a\xd5\xf4\x86\xa5\x15\x0e\xb6\x53\xcd\x4b\x2a\x34\x95\x79\xba\xa1\x62\x05\xe3\x4b\x9c\xd7\x70\x99\xe6\x32\xe6\x54\x28\x24\x88\x82\x05\x21\x33\x45\x81\x23\xf8\xb1\x4b\x26\xf3\x81\x3d\x09\x3f\xc6\xea\x2d\x4b\xdf\xe7\xf6\x39\x1d\x0a\xc5\xae\x52\x8e\x93\xae\x38\xd3\x55\xc9\xe9\x6d\xc2\x73\x9c\x92\xdd\x30\x91\xc2\x67\x32\x74\x7d\xfb\xc9\xc4\x09\xa1\x5b\x9f\xae\x58\xaa\x38\x39\xa7\xcf\x13\x8e\xca\x53\x29\x4e\xaf\x2a\x91\x6a\x91\xb7\x57\x2f\x61\x03\xba\x4b\xfc\xc0\xf6\x02\x18\x1a\xfa\x8e\xf7\x0c\x75\xaf\xa1\x30\x94\x19\x13\x79\xad\xf6\x92\x5e\x71\xca\x5f\x17\x52\xf1\x98\xd6\xa4\xa2\x54\xe6\x1c\x04\x45\x60\xfc\x56\xc9\x76\x0a\x04\xca\x20\x4b\x4d\xf3\x2a\xbb\x02\x75\xff\xab\x89\xd4\x9a\x74\x7c\x4c\xce\xe9\x8c\x6b\x90\x3b\x15\xb9\xe6\xe5\x8a\x45\x77\xee\x23\x15\x4a\xf3\x1c\x8c\x11\xc7\x4f\x5c\x3f\x70\x66\xe1\xc5\xdc\x0f\x5a\x4a\xba\xbf\x8c\x1f\x4c\xa5\x5e\xcc\x8f\xef\x37\x2b\xc3\x1d\x79\x52\x6a\x5a\x30\x9d\x80\x45\x03\x8d\x58\x94\x3c\xd2\xb2\xdc\x58\x5b\x2d\x12\x8a\xde\xfb\xed\x5e\x57\xa9\xe4\x9e\x45\xaf\x2a\x8d\xca\x97\xb0\x1b\x64\x24\x48\xe4\x5e\x2f\x91\x19\xef\xad\x85\x36\xbd\xba\x38\x2f\x6a\xca\xc2\x0e\x2e\x68\x9f\x9c\xd3\x41\x22\xa5\x32\xda\x19\x89\x22\x01\xfd\xd7\x92\xaa\xaa\x28\x60\x33\x60\x1b\xc8\x3f\x99\xe7\x3c\xd2\x42\xe6\x8a\xec\xc4\x18\x0e\xdc\xc5\x85\xe3\xf9\xb4\x4f\x19\x57\x47\xc7\x67\x9d\x48\x97\x16\x3e\x7f\x76\xbc\x7d\x3e\x3e\x39\xdd\xb5\x1f\x9f\x75\xd6\x51\xf6\xb9\x2c\x78\xae\x54\xd2\x8d\x64\x66\x51\x56\x46\x2b\x59\x95\xc7\x27\xa7\xdb\xe7\xa3\xe3\x33\x54\xcd\x7a\xcf\x68\x46\x25\x67\x9a\x53\xcd\xb3\x42\x96\xac\xdc\xd0\x95\x48\xb9\x32\xaa\x0a\x9e\x8a\x16\xd5\x55\x2a\xa2\x6b\x7a\xcd\x37\xb4\x42\x4b\x55\x2a\xe9\x5c\xf3\xcd\x9a\xe7\x16\x39\x6f\xb3\xad\x76\x8f\x3b\x5a\x5b\xee\x1a\x16\x3d\x75\x5e\x84\x81\xe3\xb7\xd8\xb4\x00\x51\x00\x63\x76\x24\xf7\xe4\xb0\x6b\xbf\x47\x59\x1e\xd3\x94\x83\x03\xe7\x69\x4a\x57\x22\x8f\xa9\xac\x34\xbd\x4d\x44\x94\x50\xd0\x43\xd8\x0d\x4b\xd3\xed\x5c\x63\x50\x03\x9c\xa9\x45\x1f\x5d\x4b\x2c\x22\xd8\xf4\x6d\x6d\x66\xe8\x4d\x78\x74\x4d\x33\x91\x8b\xac\xca\x70\xaf\x4a\x7c\xc3\xe9\xad\xd0\x09\x8d\x64\x59\x72\x55\xc8\x3c\x86\xdd\xeb\x4d\xc1\xc9\xd4\x9d\xb9\xd3\xe5\x14\x77\xe4\xbb\x5f\x39\xe1\xe0\xc2\x19\x3c\x6d\xdb\x5f\x6d\xfe\x83\xe1\x0c\x02\x4d\x0e\x16\x53\xc7\x80\x4c\xc6\x9c\xcc\x47\xa3\x89\x3b\x73\x9a\x10\x60\x86\x35\xce\xc0\x9b\x2f\x03\xc7\x0b\x27\xf3\x71\x8b\xe2\x98\xe7\xbc\x84\x55\x2b\xcd\x0b\xf5\x98\x9c\xd3\xbf\x41\xbb\xbd\x35\x78\xd8\x88\x97\x9a\x76\x22\xd6\xd7\x65\xc5\x69\x27\xae\x4a\x06\x3a\xd5\x3f\xfb\xf4\xf4\x30\x39\xcc\x0e\x15\xed\x40\xdc\xe8\x67\x1b\xf8\xe9\xf2\xd7\x2c\x2b\x52\x0e\x5a\x42\xce\xc9\x39\x9d\x97\x74\x55\xca\x8c\x32\xda\x2d\x56\xaf\x51\x01\xd0\xd0\x4b\xcd\x63\xf3\x05\xd4\xf8\xb9\xc8\x63\x88\x9c\x30\x99\x58\x19\x06\x2a\x2d\x4b\x4e\xef\xc7\x92\x9c\xa3\x5f\x5b\xc9\x72\xcd\x35\xf0\xd3\x8c\xc7\x81\x45\x29\x6e\xa0\xf3\x35\xdf\x3c\x30\xcb\x36\x6a\x9a\xd2\xe2\x3a\x52\x47\xc7\xb4\x23\x72\xa4\x8a\xb3\x77\x40\xa6\xe6\x8d\x67\xb4\x93\xcb\x6b\xbe\x51\x3f\x6c\xd4\x35\xdf\x34\x83\xe0\x83\x82\x87\x98\x2b\x32\x70\xbc\x20\x44\x50\xd1\xa7\x51\xa5\xb4\xcc\x7a\x10\x59\x55\xaf\x99\x86\x80\x18\xef\xea\x50\x53\x24\xe7\x74\x59\x14\xe0\x6a\xf8\x0d\x4f\x11\x0c\xf0\xac\x48\x61\x53\xa0\x94\x4a\x33\x2d\x22\xc3\x37\xf0\x2d\xfb\x46\x81\x2c\x00\x35\xbf\x4d\x78\xc9\x4d\x48\x14\x8a\xf2\xd7\x3c\xaa\x34\x8f\xc1\x89\x07\xee\xe0\x1d\xf7\x31\xac\xc7\xe3\x40\xf0\x16\x80\x61\x62\xa6\x19\x82\x94\xa1\x1d\xd8\x8d\x66\x63\x23\x62\x9c\x14\x64\x02\x81\xdb\xac\x72\xfc\x95\xbb\x68\x1c\x0e\x71\x66\xa8\x58\xd8\xb6\x53\xa9\x09\x33\x2a\x8d\x18\x68\x85\x51\x25\xef\xa4\x72\xbd\xe6\x31\x62\x1c\x65\xd1\x88\xe5\xe0\xf7\x0f\xc0\xe3\x19\xf8\xc2\x5f\x17\xa9\x2c\xf9\x01\x99\xd8\x08\xde\xc2\x85\x3d\x06\xc6\x41\x0f\x42\x5e\x96\xbc\x90\x4a\x80\xcd\x5f\xee\xf9\x5b\x20\x0f\xea\x02\xf3\x6d\xfb\x08\xae\xee\x29\xdc\xc2\x9e\xd9\x1f\xfc\x76\xef\x27\x30\x3f\x44\xaf\x9f\xa2\x8a\x77\xda\x43\x0e\x10\x00\x21\x9f\x00\xa0\xa9\xa8\x14\x85\x46\xbb\x6c\x42\x42\xbd\x6d\x65\x51\x25\x33\xae\x45\xc6\x15\x8d\x64\x95\xc6\xb8\x17\x95\x1c\x10\x7f\xe0\xb9\x8b\x20\x0c\x5e\x2c\x60\xed\x57\x4c\x25\x2d\xae\xdb\x33\xdf\x05\x7c\x51\x2a\x6e\x7c\x35\xcb\x69\x95\x97\x3c\x92\xeb\x5c\x7c\xc3\xe3\xe6\x1b\x81\x8e\xe1\xe0\xc2\xf6\x7c\xc7\xac\x67\x24\xcb\x88\xd7\xc8\x32\xe7\xb7\xbb\x9d\x6e\xea\x00\x5a\x1b\x03\x19\xcd\xbd\x81\x13\x2e\x3c\xf7\x99\x1d\x38\x6d\x2b\x4f\xe5\x15\x4b\x69\xc6\x5e\xa3\x23\x42\xef\x8c\x32\x15\x19\xc0\x99\x55\x9b\x62\x61\x10\x42\x69\xd1\xce\x11\xcd\x38\xcb\x01\xcf\x98\x9e\x64\x6a\x7f\x19\x0e\x3c\xc7\x0e\xdc\xf9\x2c\x9c\xb8\x53\x17\x82\x61\xe7\x88\x9c\xd3\xa9\x28\x4b\x90\xc5\x26\x8f\xe8\xd7\x15\xaf\x38\x4d\x79\xbe\xd6\x89\x45\x45\x0e\xd3\x29\x0e\x80\x29\xdb\xf5\x42\x97\xaf\x19\x18\x14\x40\x2e\x91\xaf\xc9\xd4\xf5\xbc\xb9\x17\x7e\xb1\x74\x96\x4e\x38\x71\x66\x63\x54\xc5\xa3\x1a\x42\x32\x1d\x25\x26\x76\x7c\x98\x7e\x51\xa5\x29\x2d\xf9\xd7\x15\x86\x98\xed\x88\x3b\xe6\x5a\x2c\x27\x93\xd0\x73\xbe\x58\x42\xe0\xf8\xc0\x8c\x25\x5f\xf1\xb2\xe4\x31\x9d\x88\x88\xe7\x00\x18\xb5\xa4\x45\x0a\xb0\x83\x19\x27\xa4\x65\xd1\x80\x78\xc0\x0b\x80\x50\x00\x1a\x65\x95\xd2\x34\xc3\xe9\xd1\x7c\x11\x2f\x81\x63\x91\xf9\xaa\x97\x1a\x62\xa0\xf5\xb5\x57\x68\x37\x93\x85\xe7\x8c\x1c\xcf\x73\x86\xe1\xc4\x1d\x38\x33\xdf\x81\x80\x6d\x17\x2c\x4a\x78\xb3\x0e\x7a\xdc\x3d\xb4\x80\xf7\xf5\x7b\x2b\x30\xb0\x2b\x91\x0a\x8d\x6a\x81\x18\x89\x45\xda\x44\x9b\xb6\xa6\xd3\xab\x8d\x81\xa4\x45\x29\xb5\x8c\x64\xba\x0d\x11\x88\x36\xc7\x28\xd5\x46\x75\x9c\xfc\x5d\xc2\x99\x58\x63\xc4\x68\xe9\xcc\xd5\xc6\xe4\x11\xc6\x51\xd5\x6e\xc1\x40\x5d\x70\x28\xe1\xd4\x1d\x7b\xa8\x34\x2d\xc2\x03\x99\x47\x55\x59\xf2\x3c\xda\x80\x75\x56\xca\x00\xf0\x92\xeb\x52\xf0\x1b\x4e\x23\x99\x65\x42\x2b\x2a\xf2\x95\x2c\x33\xd4\xd7\x2e\x0d\x12\xa1\xe8\x0d\x2b\x05\x2e\x2a\xe6\x2b\x91\x03\x2d\x10\x40\xa3\xdc\x35\xa4\x03\xb1\x30\x75\xad\x4c\x46\x55\x3b\x9c\xb2\xca\x1b\xd1\x21\x36\x07\x1b\xee\xd2\xa5\xaa\x58\x9a\x6e\x2c\x68\x27\xe7\x06\xef\xd3\x98\x17\x1c\xb0\xc0\x8a\x26\xf2\x96\x66\x2c\xdf\xd0\xc1\x62\xa9\xe8\xfd\x48\x96\x5c\x3d\xd8\xc2\xb7\x2e\x75\x8d\x02\x98\x61\x80\x57\x4c\xac\xfa\x86\x97\x10\xc0\x30\xdd\x89\xc1\x9c\xc6\xf3\xb1\x4f\x6f\x45\x9a\x52\x56\x69\x09\x3b\x02\x5c\xb1\xa1\x31\xd7\x3c\x32\x8b\xda\xad\x1d\xe7\xc2\xfc\xa2\x86\x3f\x30\x17\x19\xcc\xa7\x53\x37\xf0\xc3\x91\x13\x0c\x2e\xc2\xc1\x7c\x36\x58\x7a\x9e\x33\x1b\xbc\x00\x64\xbb\xe7\x26\xbb\x3c\x86\x5f\xf0\x96\x13\xa1\xd0\xc6\xeb\x08\x0c\xa8\x16\xa0\xe1\x36\x6f\x05\x07\x86\x40\x34\x15\x39\xa7\xb7\x25\x2b\x80\xe9\xb8\x9e\x81\x8c\x79\x6d\xd9\x86\x1e\xa4\x41\x3e\x2f\x18\x2a\x40\x8b\x16\xea\x18\x43\x99\xb1\x2e\x0d\xe4\x8e\x56\x83\xfc\x84\x4e\x20\x9a\x6e\xc7\x58\xf4\x67\x15\xe2\x40\xdd\x8c\x23\x08\x5d\x9e\x7b\xf6\x22\x74\xbe\x0c\x9c\x19\xe4\x81\xa0\xfc\x5d\xfd\x5a\x5b\xdd\x2c\xb6\xba\x19\x2b\xaf\x63\x79\x9b\xc3\x9b\xf9\xb9\x8e\x01\x2c\x3e\x63\xa9\x88\xcd\xfe\x00\x06\xd5\x5b\xc3\x3d\x31\x5a\x94\xfc\x46\xf0\x5b\x6a\x2f\x5c\xca\x94\x92\x91\x60\x80\x40\x70\xc5\x3a\xe1\x99\x45\x9b\x0c\x92\x15\xa2\x77\x73\xd4\x6b\x66\xd9\xdb\x2b\x4a\x17\x2d\x07\xd7\xaa\xba\xe0\x1e\x90\xae\x66\x57\xc0\x2e\xe0\x0f\xce\x4e\x6f\x65\x7e\xcf\x14\x04\xc0\x25\x01\x1b\xf7\x39\x4f\x63\xc9\x15\x74\x41\x0f\x01\x06\xff\xcc\x75\x9e\xa3\xc9\x00\x5a\x40\xf0\x06\xfb\x6e\xd6\xb1\x2f\xd7\xaa\x48\x25\x8b\x2f\x77\x96\xd9\x32\x43\x9c\xc7\x74\x50\xdd\xda\x0c\x87\xb4\x4f\x01\xc0\xb5\x60\x71\x83\xa4\x45\xba\xa9\xb1\x56\x3d\x86\xde\x8f\xdb\x08\x61\xcd\xb5\xa2\x51\xca\x59\xce\x63\xd8\xb9\x01\x19\x4d\x89\x03\x1d\xea\x03\x12\x38\xd3\x45\x1b\x35\xf4\x74\x56\xf4\x6a\x7a\x10\xba\x60\x49\x10\x44\x6b\xa1\xb0\x92\x53\x96\xa6\xf2\xd6\x58\xfb\x55\x33\x37\x8f\x2d\xca\xbb\xeb\x2e\x15\x19\x5b\xf3\xde\xcf\x0a\xbe\xfe\xdb\xe6\xb1\xc8\xd7\x5d\x3a\xe1\x20\x4c\x9e\x15\x7a\x53\xc7\x24\x24\x42\xc1\x2c\x57\xcd\x14\xc4\x9e\x4c\xe6\xcf\x9d\x21\xc6\x5f\x1f\x23\xe7\xb4\x76\x0a\x08\xbb\xe5\x8a\x72\xd6\xf8\x64\x91\xd3\xe9\x13\x62\x18\x6e\x7f\x89\x70\x9b\xf6\xe9\xc3\xd6\x98\x9d\x31\x1a\x15\xc6\xc0\x88\x8b\xc5\x38\x08\x43\x41\x4c\x27\x84\xbc\x6c\x44\xd5\x12\x4b\xc2\xca\xd8\x58\xc1\x55\xc9\xd9\xf5\x4e\xfc\x8d\x7b\xbc\xb0\x3d\xf0\xf1\x33\x27\x7c\xe2\x39\x76\x1b\xe5\x37\x06\x6b\xc2\x03\x24\xc2\x1d\x3f\x4a\x78\x76\x17\x0f\x99\x82\x49\xae\xeb\xd4\xaa\xe4\xe0\x6a\x20\xdc\x4d\x1b\xe5\x39\x47\xa8\x51\x83\x73\xba\x16\xda\xca\xd8\x3a\xe7\x9a\x98\xea\x58\xb8\xf4\x26\xa1\x3f\xb8\x70\xa6\x35\xc7\x7e\x88\xb7\x00\x4f\x8a\x33\xf1\xb8\x07\x7a\x6f\xd6\xd1\x9a\xf2\x07\xb9\x08\x43\xa2\xf1\x0f\x3d\xd9\xb2\x10\xa6\xb6\xda\x7f\x87\x9f\x40\xa1\xed\xbb\x88\x0f\x79\x07\x42\x5e\x02\xe6\xbe\x34\x4e\xa2\x32\x78\xd4\xc6\xea\x50\x67\x20\x73\x5d\xca\xb4\x63\x03\x2b\x3b\xf3\x52\xac\x45\x4e\x13\xce\xd0\x59\xb7\x70\x23\x56\x73\x24\xf8\x11\xc5\x73\x4d\xec\xc1\xc0\xf1\x7d\x70\xbe\x81\x37\x9f\x84\xa8\x73\xe1\xdc\x73\xc7\x58\xe9\x20\x06\xf0\x81\xdc\xb7\x22\x4a\xd7\xb2\x14\x3a\xc9\x14\xe2\x7a\x9d\x70\x51\xee\xe5\x84\x06\xc9\xd0\xfb\x95\xe2\x80\xb9\xb4\xa4\x71\x13\xce\x51\xaf\x1f\x90\x97\x90\x7e\xd7\x43\xc2\x6b\xbe\x09\x41\x9f\xd5\x25\x71\x86\xc7\x27\x27\x47\x9f\xd1\x3e\x3d\x3e\x39\x25\xce\x60\xe8\xdb\x94\xd6\x6f\x1e\x3e\xe3\xdb\xe1\xa3\x33\x32\xdc\xbe\x1e\x1d\x1e\x3f\x22\xe4\x25\x18\xeb\x15\x53\xfc\xb2\x55\x55\xcc\x36\xea\xeb\x14\xeb\x8a\x52\xe9\x75\xc9\x95\x01\xe7\xea\xeb\x54\x68\xfe\xf0\xc0\xc2\xa8\x07\xb1\xb4\x2e\x31\xc0\x5a\x03\x31\x7c\x62\x84\x3b\xdd\xf8\x5f\x4c\x5a\xa0\xe2\x49\x03\x84\x91\x2c\xa9\x2b\x30\x47\xc7\x9f\x62\x0d\xe6\xe8\xf1\xc3\x87\x87\xa7\xa4\x2e\x8d\x02\x1c\x27\x75\xa5\xb3\x94\x52\x93\x85\xed\xfb\xcf\x87\x0d\xfc\xdd\x5b\x51\x0e\xb1\x9a\x37\x85\x50\xc3\x2a\x58\x34\x00\x3f\x51\xd6\x09\xc5\x0d\x2f\xc5\x6a\xd3\x59\x55\x69\x7a\x40\x7c\x7f\xb2\x2d\x8b\x9a\xfe\x0d\xd9\x66\x6b\x28\x9a\x03\x2d\xe2\xab\x03\x0b\xcb\x31\xec\x4a\xc9\xb4\xd2\xbb\x2c\x2b\xc7\xcd\xa3\xd7\x03\xfd\xac\x8b\x8a\xa4\xed\xfa\x60\x13\xdd\xf8\x8a\x90\x97\x2c\xce\x04\x7a\x83\x06\x98\x95\x7c\x5d\xa5\xac\xa4\xf7\x21\x19\xc2\xaf\x0f\x4c\x32\xd4\xaa\x96\xc8\x72\xcd\x72\xf1\x0d\x33\x95\x9b\x6d\xda\xee\x8c\x97\x13\xdb\x0b\xe7\xde\x78\x8b\xbd\xb7\xce\x82\xbc\x54\x3c\xaa\x4a\xa1\x37\x97\xc4\x9d\xf9\x81\x3d\x99\x00\xee\x6a\x7b\x93\x4f\x3e\x31\x05\x72\x53\x47\x0f\xe6\xf4\xa9\xe3\x2c\xe8\x8b\xf9\xd2\xa3\xc8\x6f\x48\xfb\xa8\x6f\x8f\x9c\x4f\x3e\x21\xbe\x33\xf0\x9c\x20\x7c\xea\x00\xa0\xf8\xe4\x47\x9f\x8f\x86\xce\x73\xcf\x79\xee\xfd\xcd\xbf\x75\x1f\xb2\xc1\x4a\x4b\x48\xe4\x04\x38\x9a\x8c\xa3\x77\x8c\xd9\x46\x91\xc9\x7c\xec\xce\x42\xcf\x99\x3a\xd3\x27\x8e\x17\x0e\xed\x17\x60\x94\x9f\x92\xc1\x7c\xfe\xd4\x75\xb0\x80\xdd\x12\x73\xc8\x6e\x39\x24\x50\xcd\xe7\xed\xb8\x76\x1f\x44\xf5\xb1\x00\x49\xd5\xdd\x7c\x67\xb0\xf4\xda\x49\x8d\x07\x71\x48\x41\xf2\x23\x5f\x6f\x00\x53\x25\x3c\xd7\x4d\xb6\x6a\xec\x78\x5b\x66\xc7\xda\x3a\xbc\x10\xcf\x79\xe6\x78\x3e\x24\x49\xf3\x2f\x5f\x84\xf6\x32\xb8\x70\x66\x81\x3b\x30\x29\x4d\xad\x80\x5f\x76\x9e\x3b\x4f\xe0\x53\x07\x1a\xea\x2a\xba\x88\xf8\x25\xb1\x07\x81\xfb\xcc\x09\x07\xf3\xa1\x13\x4e\xe0\x69\xea\xce\x96\x01\xc6\x81\xa3\xb3\x43\xe2\x39\xbe\x03\xf9\x36\xa8\xee\x07\x3b\x9d\xd3\x25\xae\xa6\xa9\x38\xcb\x7c\x25\xca\x8c\xf2\x4e\xc6\x44\x8a\x0e\xaa\xe4\x6b\xa1\xb4\x29\xb7\x10\xcf\x19\xbb\x7e\xe0\x78\xa1\x33\xb5\xdd\x49\x88\xa7\x19\xde\x74\xaf\x28\xcb\x8d\x93\x32\x21\xd1\x0c\xe6\x25\x6a\x34\x6a\x5a\xa3\x5f\x2c\x8a\x64\x95\x9b\xf2\x75\x5b\xbd\x5c\x3f\x78\x0f\x9d\xe3\x12\x31\x8f\x51\x62\x8d\x75\x26\x2d\x29\xe2\x1d\x96\x6f\x74\x22\xf2\x75\x97\x40\xfa\xe4\x7a\x4e\xe8\xbb\xe3\x99\x3b\x0b\x01\xc5\xb4\x28\x4c\x61\x37\xb9\xac\xab\x3a\xad\xc0\x37\x9b\x07\xee\xe8\x45\x08\xbb\x69\x77\x07\x1c\x12\x73\xcd\x44\xfa\x18\x8f\x28\xd4\xe3\x5e\x6f\x2d\x74\x52\x5d\x75\x23\x99\x81\x6d\x09\xad\xd0\xc4\x7a\x42\xa9\x8a\xab\xde\xd1\xe9\x49\x43\xf3\x63\x52\xdd\x4e\xf2\xa1\xbe\xf3\x0f\x31\xa1\x0e\xe5\x11\x2b\x74\x94\x30\xc0\x80\x22\x36\xea\xf5\x9e\x94\x6a\xda\x03\x7b\x11\x0c\x2e\xec\x06\x73\x91\x97\xb7\xfc\x2a\x91\xf2\x1a\x5c\xc1\x85\x94\xd7\x98\x93\x7c\x24\x81\xad\xbb\x43\xa0\x95\x77\xa5\xad\x77\x67\xaa\x43\x9e\x8a\x1b\x5e\x62\x3a\x03\x20\x5b\xe4\x54\xf1\x48\xe6\xb1\x22\x43\x07\x34\xd0\x0b\x03\x77\xea\xcc\x97\x01\xe2\x95\x73\x8a\x21\x8f\x8a\x1c\x9d\x07\x6f\x15\xdf\x60\x2b\xfe\x53\x77\x11\x06\x13\x3f\x7c\xe6\x78\xee\xe8\x45\x8b\x1f\xb3\x2d\x22\x4a\x84\x42\xc4\xd9\x4a\xce\x10\x19\x02\xbc\x2a\xd8\x1a\xdc\xe2\xd8\x9d\x8d\xc3\xd9\x72\x8a\xcb\x44\x8c\x24\x52\x5e\x5e\xb6\x60\x69\x43\xf6\x49\xb5\x5a\x61\x19\x0c\xc3\x20\x00\x9f\x84\xe5\x39\x4f\x2d\x7a\xcd\x79\x41\x05\xfa\x5b\x81\xb1\xd8\x1c\xba\xd0\x18\x21\xf6\x75\x2e\x6f\xe9\x2d\xe0\x12\xfc\xd8\x25\xbe\x33\x1b\x86\x4f\x96\xa3\x91\xe3\x01\x8f\x0c\x83\x9a\xa4\x3c\x16\xaa\x48\xd9\xc6\x1c\x33\xa0\xa9\x99\xf3\x39\x7f\xf9\xe4\xb7\x9c\x81\xa9\xea\x37\x67\x75\x58\xd5\x47\x05\x36\xa5\x1f\x72\x4e\xc7\x19\x6a\xa6\xca\x74\xd1\x5d\xc3\x33\x68\xe5\xe3\x93\xb3\x4f\xc9\x39\xfd\xe2\x8b\xfa\xc3\xd7\x5f\x63\xeb\xa3\x53\x60\xf2\x4c\x6a\x6e\x35\x29\x00\xd6\x2d\x79\x1e\xd7\x38\xe8\xe0\xd1\xe9\xc9\x81\x45\xfd\x69\xb0\xa8\x73\x42\x40\xc2\x8a\xc7\x90\x8d\x82\xdc\xf1\x10\x26\x98\xf8\x54\xe6\x66\xec\xc9\xd9\xa7\xc0\x80\x92\x03\x06\x02\xe4\x14\x23\x20\xf5\x46\x03\x7a\xfa\xe8\xf0\xb3\x6d\x1a\xfa\x4e\xad\x6a\x47\x48\xe8\x3a\xf9\x4c\x6f\xd9\x46\x6d\xe7\xab\xc3\x72\x2b\x54\x5d\x38\x93\x39\x95\x05\x37\x9a\x6d\x42\x5f\x22\x95\x46\x5f\x0a\xd8\x33\x16\x20\x2f\x9e\xeb\xee\xae\x70\x00\x63\xf0\x84\xc2\x60\xd6\x6d\x7f\x30\x94\x7d\x82\x7b\xd8\x0a\xeb\xc0\x26\xc3\xed\x12\xe8\x87\xe7\x34\x26\x10\xa0\x6b\x43\xc7\x66\x62\xb9\x39\xf6\x68\xd5\x89\x65\x7b\xc7\x5d\x3a\xcf\xd3\x0d\x86\x6e\x9d\x00\x65\x59\x52\xc5\xd3\x55\x07\xfc\x17\x8f\xdb\x03\x95\x51\xf1\x46\xbd\x8d\xb7\xa3\x51\x2a\x78\xae\xdb\xfd\x00\x8f\x84\x03\xc7\x0b\xdc\x11\xb8\x92\x5d\xec\xb9\xa3\xf4\x6b\xb4\xfb\x63\xb5\xdf\xba\xc7\xae\xf8\x8b\xfa\x65\x4a\xe4\x71\x5c\x72\xa5\x2c\x94\xe6\xc9\xc3\xe3\xe3\xba\xd0\x51\x57\x2d\x10\x00\xb3\x9c\x72\xd4\xda\x6d\x67\x59\xe2\xf6\x5f\x1d\x80\x7a\x1f\xd0\x9f\xe0\xe7\xcf\x5b\x65\xf8\x9f\xbe\xa2\xc6\x3a\xc9\xc8\x9b\x4f\xeb\x7c\x08\x16\xb1\x0b\x87\x18\x24\x0a\xa6\xd4\xad\x2c\xe3\x1a\x7f\xb5\xa1\x17\x30\x46\xf3\xd7\xba\x97\xe8\x2c\xc5\x1c\x39\xd5\xbc\xcc\x99\x16\x37\xbc\x26\x8e\x06\x2b\x73\x0d\xd8\xb8\x49\x6d\x82\x29\x00\xe3\x00\xc2\x3e\xc4\xcb\x16\x5c\x89\x58\x94\xec\x43\x4e\x9e\xc9\x72\x63\xe0\x5b\x2c\xd4\x01\xee\x0b\x5a\xb1\xe7\xc1\x7e\x05\xb7\xee\x4c\xec\xa1\xbd\x08\x30\x54\x9b\x96\x06\xcd\xd5\xdf\x6b\x88\x38\x1e\x98\x22\xd8\x0d\x4b\x5b\x2e\x71\x8f\xe2\xe9\x21\x71\x67\x81\xe3\x3d\xb3\x21\x16\x9d\x1e\x36\x84\xcc\x5a\x0c\x28\x6c\xad\x65\x77\xb2\x86\x1a\xde\xc8\x82\x9c\x53\x1c\xf0\x98\xe6\xe6\x80\xb2\xaf\xa3\xc2\x82\x8f\xfd\xc7\xa7\x0f\x3f\xfd\xcc\x6a\x38\xdc\xcf\x58\xc4\x4a\x99\x5b\xf1\x55\xff\xd0\x2a\xa4\x4c\x11\xc9\xf7\x8f\x0e\x0f\x2d\x11\xa7\x3c\xac\x3d\x78\xdf\xe0\x84\x66\xe6\xc7\xf4\xd5\x0e\x35\x1f\x1d\x1d\x1f\x1d\xbd\x6a\xcc\x16\xb0\x09\x1e\xac\xdf\xcd\x53\x48\xae\x6a\x96\x36\xec\xbd\x8b\x9f\xcd\xbd\x87\x36\x43\x17\xa5\xbc\x11\x80\xa1\x10\xa0\xac\xa9\x2c\x0c\x2e\x3d\xaf\xbb\x3c\x46\xd3\x34\x45\x96\x7c\xd3\xf4\xda\x70\x0d\x29\xa7\x48\xf9\x63\x5a\xaf\x6c\x77\x84\x51\xa7\xf8\xaf\x10\x2c\xd7\x5f\xd5\xab\xff\x6f\xdc\x83\xac\xe3\x31\x5d\xcb\x8e\xfa\x3a\xed\xc4\x25\x84\xc8\x1e\x36\xd2\x58\xe5\xcd\x82\x95\x86\x7c\xb9\x59\x19\xa4\x1e\x8f\x9b\xf9\x3e\x6f\xd6\x18\x6a\x70\x8c\xaf\xb6\x6c\x0a\xeb\x2b\x25\x35\xec\x6f\x76\x82\x89\xaf\xd9\x72\x24\xe5\xb5\x30\x85\xdf\x06\xbf\xd6\xe8\x56\x84\xa9\xb8\xe6\xa1\x81\x33\xe4\x1c\xdc\x36\x44\x34\xf0\x5b\x0d\xbf\x20\x0d\x05\x00\x54\xab\x71\xdb\x5d\x1a\xf7\xf3\x01\x40\x5c\xc3\x15\xc5\x75\x3d\xff\xde\x58\x04\x24\xb5\x81\x02\x4a\x35\x54\x76\xd5\xa1\x66\xe9\xe3\x01\xe2\x88\xad\xe9\xec\x11\x39\x3b\x7d\x74\x78\x48\xc6\x83\xb0\xb1\x1a\x04\x16\xb4\x5f\x7f\xd8\x51\x49\xc5\xca\x94\x57\xef\x18\xee\x3b\x78\xc7\x23\x9c\xb8\x23\x67\x7f\x3c\x79\x59\x88\x48\x57\x25\x7a\x88\xed\x29\xae\x29\x51\xa9\x6d\xf9\x05\x72\xea\x1b\xa6\x59\xa9\x88\xfd\xcc\x0e\x6c\x2f\x5c\x2e\x26\x73\x7b\xb8\x57\x86\x6a\x7a\x9c\xd3\x41\x22\x72\xae\x78\x9d\x6e\x61\xf6\x6a\x8e\xd1\x0f\xe2\x4a\xaa\xa4\x92\x07\xa6\x4c\xcb\x9a\x82\x8b\x19\x4a\x95\xac\xca\x88\x5b\x14\xe4\x65\x20\xe9\xe3\x5e\x2f\xca\xbb\xeb\xd2\x74\x40\x58\x6a\x1e\x7b\x64\xec\xd5\x4b\xf1\xe7\x4b\x6f\x80\x69\x4c\xdd\x0d\xcf\x93\xb0\x6a\x9d\x56\x7c\x1b\xeb\x57\xb2\x8c\xb6\x25\x30\x3c\x60\x15\x39\x95\xab\x15\x56\x8c\x32\xbc\x2a\xd2\xc4\xd6\x86\x74\x4b\xd2\x23\x1e\xe3\xa9\x6d\xc3\x08\x9a\x4a\x79\x5d\x15\xb0\x45\x45\x87\x33\xbf\xae\x21\x44\x12\xa0\x40\xdd\x65\x57\xfb\x24\xe7\x06\x84\x60\xc0\x50\x16\x55\x9c\x6f\x11\xf7\xed\xed\x6d\x37\x15\x57\xcd\x16\x65\xb9\xfe\x01\xeb\xc7\x65\xbd\xbb\x01\x60\xe9\xb8\xa6\x03\xb2\x8f\x85\xba\x62\x29\x20\x8e\x5a\x09\x47\xce\xd0\xf1\xec\xc0\x19\x86\xdb\xfd\xd5\xa0\x99\x69\xcd\xa2\x24\xe3\xb9\xbe\x6c\x5d\x5b\xd9\xb5\x2a\x84\x21\x1c\xd5\x3d\xee\x36\x07\x6c\x98\x4a\xbf\x02\x12\xaf\xea\x29\xde\x29\x7d\xe2\x99\xdb\x8e\xc8\x3b\x03\x8d\xd6\xec\x3e\xbf\xda\x4b\xed\x5b\x1f\xc8\x39\x9d\xe7\xb8\xbd\x4c\xb6\xab\x99\x9b\x82\xab\x8f\x14\x31\xdf\xad\x4e\xde\xdd\x09\xcb\x8f\xef\x97\x2b\xf7\xd7\xfa\xf0\x78\xfa\x84\xb4\xaa\x96\x8f\xea\x61\x1f\xae\x58\xee\x8f\x3f\x3a\x7c\xaf\x82\x09\xa6\x0a\xcc\xf6\x0b\x1e\x89\x95\xe0\xe6\x84\xb9\x8e\xf0\xc0\xb8\x55\x95\xa6\x1b\x2a\x2b\x5d\x54\xa0\x77\x31\xe0\xa8\x7d\xaa\xde\x68\x70\x74\x74\xfc\xb0\x21\xc2\xd2\x06\x84\xf2\xb8\x29\x9f\x83\xd8\xec\x99\xef\x0e\x2c\xba\xcc\xc5\xeb\x21\x03\x84\xec\x55\x57\x9b\xfa\x69\x34\x38\x3b\x3e\x6e\x7e\xbf\x32\x0f\x27\x87\x56\x43\x7a\xfb\x60\x3e\x3d\x7c\xf8\xf0\xb3\xed\xc3\x8c\xe5\xd2\xa2\x4f\x85\x8e\x12\x9e\x5b\xd4\xd7\x2c\x2b\xea\x9f\xa9\x48\x53\xb1\x7d\x8e\x4a\x89\x71\x1d\x5f\x61\x54\x1d\xf3\x51\x98\xed\x7c\x86\x5d\x41\x2e\xd5\x62\x43\x63\x27\x90\x98\xca\x94\xe5\x6b\x30\x8f\x5e\x71\xbd\xee\x01\xf7\x7a\x3f\x2a\xae\xd7\x9d\x48\xe6\x4a\x33\xd0\x92\xd1\xdc\x9b\xda\x18\xa2\x9b\x5b\x16\x90\x4d\x68\xc8\xea\x14\x88\x08\x4f\xc4\x4b\x45\x5e\xa6\x72\x7d\x49\xde\xb9\xe7\x53\x9f\x8f\x03\x35\x99\xf2\x1a\x88\xd4\xc1\xbc\x1d\xc0\x9b\x0e\x0d\x86\x95\x59\xc6\xd0\x67\x36\x05\xd8\xac\x4a\xb5\x28\x9a\x83\x91\x5a\x3d\x9b\x61\x16\xea\xc9\x01\xa9\x4b\x63\x75\xeb\xff\xcb\x8c\xec\x8e\x64\xac\x01\x29\x41\xc9\x22\x2c\xdb\xb9\xf9\x4a\xc2\xef\x73\x56\xe6\xf0\xeb\x94\xa5\x2c\xe1\x61\xc4\x34\x4b\xdf\xd9\xb0\x19\x45\x26\xce\x33\x07\x10\x1b\xbe\x92\x06\xb5\x6d\xd9\x65\xfc\x4f\x9e\x6e\x90\xbb\xdd\xba\x1d\xf4\x3b\x6d\x1d\x24\xe0\x21\x69\xc2\x4b\xa1\x1b\x7a\x5b\x4a\xc8\x97\x77\xc9\x40\xe3\x0f\xa0\x51\xfb\x4b\xe3\x9e\x54\x73\xd8\xc7\x63\x90\x38\x2d\xa5\x06\xb1\xdc\x57\xb7\xa0\xa9\x68\xaa\x12\x1c\x08\xe4\x7c\x35\xc2\x7a\x40\x26\xf3\x71\xe8\xcd\x03\x93\x72\x6c\xc3\xf3\x1a\xbc\x0f\x12\x89\x99\x48\x37\x64\x68\xbb\x93\x17\xef\xf5\xdb\xba\x0f\x95\x88\x15\x82\x73\xc8\x27\x53\x73\x08\xb5\xc7\xcb\xe3\xb3\xfa\x28\xe5\x88\xfe\xe4\x27\xf4\xf8\xcc\xa2\xc7\x27\xa7\x2d\xc7\x12\xfa\x17\xee\x08\xaf\xde\x9d\xd5\x74\xd1\xb7\xef\x9c\x4c\x8b\x30\x0e\x9a\xb8\x33\x53\xe4\x3a\xc4\xff\x40\xd6\xaf\x0b\x51\xa2\xb7\xd8\x34\x3a\x6f\xd0\xe0\xfd\x98\xa7\x5c\x73\xca\x56\x9a\x97\x34\x63\xaf\xb1\xcb\x03\x24\xb3\x2d\x1f\x6e\x6b\xb4\x29\x8b\xae\xdf\x93\x06\xb6\xfe\x20\x71\x3c\xaf\x8b\x2a\x4b\x6f\x42\xcc\xa5\x4b\x48\x44\x4a\xd9\x3e\xae\x29\xab\x3c\x07\x19\x40\x73\x7d\x70\x5c\xf0\x52\xc8\xd8\x1c\xd2\xde\x71\x9a\xe6\x55\x79\xbb\x37\xa6\xc9\x78\x42\x66\x4a\x36\x5d\xbc\x8b\x6b\x07\x21\x26\xe0\xbb\x0c\xe8\x9c\x2e\xf1\x92\x6a\x7d\x17\x42\x99\x95\x74\xcd\xcd\xd5\xb0\x6e\xbc\x24\xfe\xe0\xc2\x19\x2e\x31\x84\x7d\x6e\xce\xdb\x8e\x0e\x33\x82\x55\xcf\xed\x71\x5f\xc2\x59\xaa\x13\x73\xc9\xac\x26\x53\xf2\x42\x86\xa6\x3d\xc4\xf6\xbb\x28\x1d\x3f\x4a\xc8\xae\x1e\x74\x7a\x08\x11\xcd\x2e\xd7\x95\x09\xad\xe0\xec\xd1\x8f\xe4\x31\xbd\xb7\x16\x9a\xae\x54\x74\x7d\xaf\xf1\x1c\x9d\x4e\x95\x97\x10\x96\x90\x6b\x9d\x8e\x66\x6b\x05\xde\x07\x7c\x23\x7a\x50\x99\x6f\x7d\xa4\xd0\x1d\x15\x65\x08\x93\x62\x19\x29\x6c\x00\x62\xbd\xa3\xee\xa7\xdd\x13\x62\x7b\x63\xdf\x98\xdc\x00\xaf\xc9\xb5\x0e\x32\xf1\xee\x93\xd2\x22\x6a\xd8\x83\x7b\x09\x71\x77\xf0\x4d\x5d\xbe\xcb\x5d\x14\xca\xdd\x5b\x25\x2f\xd7\x42\xb7\x6a\xf1\x8a\x26\x62\x9d\xa4\x62\x9d\xa0\x79\xb0\x18\x01\x65\x1e\xd3\x92\x67\xf2\xc6\xdc\xc3\xc9\xd7\x7c\x57\x81\x1f\xba\xa3\x51\x78\xe1\x8e\x2f\x26\xee\xf8\x22\xd8\x2b\x71\xb6\x63\x2e\x58\x87\xda\xc2\x01\xa0\xdc\xb6\x10\x80\x47\xb1\x58\xad\xb0\x88\x8a\x7a\x3e\x76\x03\x43\xba\x6d\x37\xef\x51\x8d\x12\x56\xb2\x48\x03\x74\x45\x92\x69\xfb\x68\xe9\xe3\x34\xf1\x0e\x91\x3d\x08\xcc\xa5\xcf\x93\x3b\x88\x1b\x98\xa0\x12\x79\x9b\x7f\x84\x56\x83\x13\x8c\xff\xfe\x88\xa6\xac\xa3\x96\x9e\xb0\xf5\x1a\x72\x63\x71\x03\x6a\x02\x4e\xf0\xaf\xa3\x26\xeb\xa8\x56\x92\xf1\x20\xdc\xe9\xc9\x7c\x5b\x94\xba\xa3\xd2\x09\x52\xee\xd6\xed\x97\xc4\xdc\x38\x71\x50\xbf\x0f\xeb\x9b\x45\xe6\x3e\x3a\x19\x4c\xe6\x33\xa7\x7e\x5e\x2c\x27\x93\xfa\x71\x3c\x30\x15\x00\xf2\xd2\x18\xe1\x65\xeb\xea\x56\xbb\x8c\x90\xc8\xaa\x54\xf4\x8a\xeb\x5b\xce\xeb\x8a\xa7\xb1\xc0\xa1\x33\xb2\x97\x93\x20\x6c\x15\x14\xce\x00\xcc\x16\xe2\xf2\x3d\xc6\x0b\xcd\x33\x65\xc0\xb4\xb9\x04\x6a\xf0\x33\x33\xc5\x53\xe0\xbe\xf9\x3b\x06\xdf\x09\xdd\xc0\x99\x1a\xf9\x11\xf2\xb2\x42\x5a\xbb\x3a\xec\xde\xb5\x9e\xed\xe1\x30\x08\xd4\x68\x87\xcc\xf1\xd2\x65\x0a\x2c\x47\xd2\xce\x97\x8b\xc9\xdc\x73\xc2\xbd\xfa\xec\xf1\xe1\x1e\x51\x53\x5e\xff\x10\x39\x24\xe3\xfa\xfe\xf2\x1d\x22\x47\xfb\x44\xb6\x77\xcd\xea\x6b\x3c\xfb\x44\x58\xa4\xc5\x8d\xd0\x1b\xba\xe2\x3c\x26\x23\xc7\x19\xe2\x29\xbc\xb9\xdf\x52\x13\x3c\xd9\x1e\xda\xca\x15\x3d\xd0\x09\xcf\x78\x27\x92\xa9\x2c\x0f\x68\xc6\x35\xa3\x9a\xad\x2d\x73\x6d\xe8\x6a\x43\xed\x3c\x2e\xa5\x88\xe9\x4f\xfb\xf4\x04\xaf\x77\xdb\xa0\xd1\x58\xb1\xa7\x38\x08\xd3\x38\x7a\x90\xcb\xbc\x3e\x20\x6c\x0e\x0e\x8d\x14\xcc\x4d\xec\xd6\xad\x7f\xa5\x37\xe9\xf6\x5c\x02\x60\xe1\xee\x54\x22\xe6\x37\x3c\x95\x05\x2f\x55\x77\x2d\xe5\xda\x14\xdb\x7a\xb7\xfc\xaa\x67\xbc\xb8\xea\x1d\x1f\x1e\x3d\xea\x1d\x1d\xf5\x7c\x03\x80\x3b\x2b\x59\x76\x5a\x1b\xe8\x88\xbc\x33\x48\x4a\x99\xf1\xce\xc3\xcf\xf0\x63\xbd\x7c\x12\x5c\x38\x53\x27\x1c\xcc\x27\x73\x2f\x9c\x3a\x81\x1d\x06\xf6\x98\xf6\xe9\xab\x1f\xad\x56\x27\x0f\x1f\x3d\x7c\xd5\x0e\xf0\x22\xa7\x57\x1b\xcd\xd5\xce\x90\x4d\x36\xb6\x2b\x74\xdf\x6f\xa7\xde\xd3\x27\x75\x78\x75\xfd\xc5\xc4\x36\xd5\xc9\x26\x81\x38\x7b\x78\x76\x76\x7a\x78\x86\x0a\xd6\xdd\x9e\x5d\xee\x84\x59\x9f\x54\x7e\x44\x21\x96\xbe\xe3\xed\xeb\xc3\xc9\xe1\xfb\x9a\xfa\x51\x12\x9e\xb3\x98\x7f\x94\x44\x2e\xb5\x88\xfe\x0a\xc5\x9c\xcd\x03\x77\xf0\xae\x7a\x9f\xec\x91\x69\x1f\xb3\x7e\x94\xd6\xdc\x1b\xbf\xb7\x1e\xe4\x10\xb0\xe3\x0e\x3b\xfc\x6b\xee\xee\x08\xf2\x2e\x71\x74\x96\x5f\x92\x89\x3d\x03\x1f\x47\x79\xde\x59\xfa\xd6\x37\x49\x67\x30\x83\x7f\x2f\x9e\xc2\xbf\xc1\x73\x2b\xe6\x9d\xa1\x63\xad\xca\xce\xc8\xb3\xf2\xb4\x33\x9b\x58\xe9\x4d\x67\xf2\xcc\x2a\xab\x8e\xb7\xb4\x7e\xc6\x3a\xbf\xb5\xb0\xb8\xea\x38\xbe\x55\xe8\xce\x13\xcf\x2a\xd2\xce\x62\x62\x5d\xad\x3b\x4f\xc6\x96\xd0\x1d\x37\xb0\x56\xa2\x33\x72\x2d\x5d\x76\x02\xcf\x8a\x54\x67\xf0\x95\xa5\xca\x8e\xbf\xb0\xd4\x4d\xc7\x77\xac\x6b\xd9\x79\xea\x59\xeb\x14\x28\x54\xd7\x9d\xa5\x8d\xc7\xf2\xb0\x22\x27\x5f\xa7\x42\x25\xd6\x9f\xff\xfb\x9f\xff\xd9\x9f\xfc\x93\x3f\xfb\xd5\x1f\x7e\xff\x3b\x7f\xd7\xfa\xf3\x5f\x7f\xfb\x17\xff\xf6\x9f\x9a\x97\xbf\xfc\xcd\xdf\xfb\x8b\x7f\xf3\xcf\xbf\xff\xd5\x7f\xf8\xcb\xdf\xfc\xfd\x77\x3f\xfc\x8f\x7f\xfc\xcb\xef\x7f\xfd\x5f\xe1\xc3\x90\x57\x5a\x45\x89\x35\x2a\x59\xfe\xdd\xef\x33\xa1\xac\x19\x8f\x79\x99\xb2\x3c\x56\xd6\x84\xe9\x1b\xc1\xff\xf4\x17\x95\xf5\xe6\x5f\xbe\xfd\x3b\x6f\xbf\x7d\xfb\xed\x9b\x3f\x7e\xf3\xab\x37\xbf\xb6\xbe\xff\xdd\x7f\xfd\xfd\xef\xfd\xbb\xff\xf9\x07\xff\xc2\x72\x54\xc1\xbe\xfb\x23\x99\x5a\x0b\x59\xea\x6a\x5d\x7d\xf7\x07\x8a\xc6\x92\x3e\x29\x99\x12\xd0\x98\xaa\x6b\x61\xbd\xf9\xa3\xb7\xff\xe0\xcd\x7f\x79\xf3\x1f\xdf\xfc\xf2\xed\xcf\x0d\x0d\xcb\xd5\x2c\x15\x90\x19\xfa\x95\xcc\x58\xca\x44\xce\x73\x2b\xf8\xee\x37\xe5\xf5\x77\xbf\xcf\xad\xff\xfe\x8f\xf8\x9f\xfe\x42\x8b\x9c\x59\x6f\x7e\xf1\xf6\xe7\x6f\xfe\x5b\x3d\xc8\xbf\xe1\xb9\xba\x66\xd6\xff\xf9\x67\xbf\xf7\xbf\xfe\xf3\x1f\xfe\xef\xdf\xf9\x4f\xd6\x98\xa5\x7c\x2d\xad\x37\xff\xea\xcd\x1f\xbf\xfd\xf9\x9b\x5f\xbe\xfd\xdd\x37\x7f\xf2\xf6\xdb\xb7\xff\xd0\x2c\x93\x98\xe4\x2b\xc6\x78\x08\xf6\x0f\x41\xa8\x10\xd1\x35\x2f\x8d\x7c\xbb\xd0\x08\xf9\xe2\x25\x41\x01\xa3\xa0\x09\x4a\x99\xf6\xe9\x37\x09\x41\x51\xe3\x63\x27\x78\x4e\xf0\xdf\xed\x1b\x8a\x1e\xff\x9c\x8b\xa0\xfc\x01\x7e\x94\x04\x95\x80\xf6\x69\x9e\x12\xd4\x04\xda\xa7\xe9\x0d\x41\x75\xa0\x7d\x5a\x56\x04\x75\x82\xf6\xe9\xcf\x18\x41\xc5\x80\x39\x15\x41\xed\xa0\x7d\x8a\xbf\x04\xb5\x04\xde\x52\x82\xaa\x42\xfb\xf4\x6a\x4d\x50\x5f\x68\x9f\x0a\x4d\x50\x69\x60\x42\x41\x50\x73\x10\x67\x11\x54\x1f\x48\x17\xe1\x97\xa0\x1a\xd1\x3e\x55\x25\x41\x5d\x82\xc7\x1b\x82\x0a\x45\xfb\xf4\x5a\x12\xd4\x2a\xda\xa7\xeb\x94\xa0\x6a\xd1\x3e\xad\xae\x09\x26\x07\xcd\x75\x9f\x8c\x15\x05\xfe\x11\x84\x6c\x41\xb3\x28\x65\x58\x59\x47\x3c\xd1\xd5\x32\x4b\xfb\x22\x17\xe4\xe5\xb6\x47\xb7\x1e\x76\x49\xc8\x4b\x09\x39\xe5\x25\xf1\x2f\xe6\xcf\xc3\xd1\x7c\x1e\x38\x5e\xf8\xc4\x33\x37\xc9\x5b\x78\xcd\x4f\xe4\x2d\xbd\xe1\x65\x5d\x65\x7d\x37\xd5\x47\xf4\x0e\x60\x66\x2c\x9b\x0b\x90\x2b\x29\x35\x2f\xf7\xe8\x3e\x73\xbc\xfa\x2f\xd4\x9a\xcc\x0c\xa8\x62\xc9\xb4\x7d\x85\xdf\xdc\xc4\xaf\xcb\xb9\x1f\x20\x15\x38\xd3\xc5\xc4\x0e\x9c\x10\xab\x97\x75\x25\x14\xa9\xfe\xdf\x00\x00\x00\xff\xff\x57\xce\x40\x07\x0c\x39\x00\x00") +var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x7b\x6f\x8f\xdc\x48\x7a\xdf\xfb\xfa\x14\xb5\x73\xb9\x48\x0a\xd8\xdd\x33\x23\xcd\xec\xac\xe6\xfa\xb0\x54\x37\xbb\x87\x56\xff\x5b\x92\x2d\xad\x56\x18\x50\x35\x64\x75\xb3\x6e\x48\x16\x97\x55\x9c\x51\x2f\x02\xe3\x16\x79\x91\x3f\x48\x90\x17\x49\x6c\x04\x30\x82\x1c\x82\xc4\x80\x13\x27\x67\x24\x01\xee\x9c\x73\xf2\x62\xe3\xf7\xd2\x77\x70\xd6\x71\x90\xc0\x5f\x21\x78\x9e\x22\xbb\xd9\xd2\x48\x5e\x03\xc9\x2e\xa0\x26\x8b\x55\x4f\x55\x3d\x7f\x7f\xcf\x53\x35\x3f\xa2\x9f\x7c\xf2\x09\x9d\x39\xcf\x1c\x8f\xe2\x3f\xd3\xf9\xd0\x1d\xbd\xa0\xc1\x85\xeb\xd3\x91\x3b\x71\xe0\x3b\x31\xbd\x16\x13\xc7\xf6\x1d\x3a\xb5\x9f\x3a\x74\x70\x61\xcf\xc6\x8e\x4f\xe7\x33\x3a\x98\x7b\x9e\xe3\x2f\xe6\xb3\xa1\x3b\x1b\xd3\xc1\xd2\x0f\xe6\x53\x3a\x98\xcf\x46\xee\xf8\x5d\x0a\xee\x88\xbe\x98\x2f\xa9\xed\x39\x74\x61\x0f\x9e\xda\x63\x18\xb1\xf0\xe6\xcf\xdc\xa1\xe3\x59\x7b\x13\xcc\x9f\x03\xe5\xc5\x0b\x3a\x1f\x51\x37\x40\x1a\xe4\x9c\xda\x45\x41\x73\x96\x71\xaa\x13\xa6\xa9\x4a\xe4\xad\xa2\x32\xa7\xfc\x86\x97\x1b\x5a\xb0\x35\xa7\x5a\xe8\x94\x13\x7b\xb1\x08\x67\xf6\xd4\xa1\x7d\x3a\x96\x6b\x45\xce\x69\x90\x70\x33\x52\xae\xa8\x4e\x38\x55\x1b\xa5\x79\x46\x2b\xc5\x4b\x43\xac\xac\x72\x65\x3a\x7b\xcb\x59\xb8\xf4\x1d\x8f\xf6\xe9\x5a\x68\x72\x4e\x1d\xa1\x13\x5e\xd2\x83\x98\xdf\x1c\x58\xf4\xa0\x28\x65\x7c\x40\x65\x49\x0f\x34\x57\xfa\x00\xfb\x4f\xe7\x43\x98\x2c\xe6\x37\x84\xbc\x54\xbc\xbc\xe1\xe5\x25\x59\x78\xf3\x60\x3e\x98\x4f\x68\x9f\x26\x5a\x17\x64\x38\x9f\xda\xee\x8c\xf6\x69\x2a\x23\x96\x26\x52\x69\xe2\xcd\xe7\x41\xb8\xf4\xa0\xcb\x8f\xef\x37\xfd\x1f\xa8\xc7\xbd\xde\x8f\xef\x9b\xee\x0f\xd4\xe3\x1f\xdf\xbf\x08\x82\x45\xb8\x98\x7b\xc1\x03\xd5\x23\xf8\x62\x0f\x87\xb0\xc0\xc3\x2e\xfe\x4f\xb6\x1d\x68\x9f\x3e\x3c\x3c\x3c\x24\xe7\x74\xc1\xcb\x4c\x28\x25\x64\x4e\x57\xb2\xa4\x55\x2e\x5e\x53\x25\xa3\x6b\xae\xc9\x72\xe6\x7e\x19\xfa\xf3\xc1\x53\x27\x08\x17\x8e\x37\x75\x7d\xdf\x9d\xc3\xc2\x4e\x4f\x4f\xc9\x39\x9d\xc0\xf2\xe8\xfd\xe1\xf4\xab\x07\x14\xd6\x06\xc3\x81\x33\xf4\x56\x96\xd7\xbc\x54\xf4\xbe\xaa\xa2\x84\x32\x45\x7d\xff\x82\x56\x45\xcc\x34\x7f\x40\x59\x14\x71\xa5\x44\xbe\xa6\xb7\xfc\x8a\x02\x0f\x44\xc4\xbb\xe4\x9c\xba\x39\xcd\xa4\xd2\x34\x62\x8a\x2b\xba\x91\x15\x8d\x25\xcd\xa5\xa6\x39\xe7\x31\xd5\x92\x46\x09\xcb\x41\x74\x09\xa7\x31\x5f\xb1\x2a\xd5\xf4\x86\xa5\x15\x0e\xb6\x53\xcd\x4b\x2a\x34\x95\x79\xba\xa1\x62\x05\xe3\x4b\x9c\xd7\x70\x99\xe6\x32\xe6\x54\x28\x24\x88\x82\x05\x21\x33\x45\x81\x23\xf8\xb1\x4b\x26\xf3\x81\x3d\x09\x3f\xc6\xea\x2d\x4b\xdf\xe7\xf6\x39\x1d\x0a\xc5\xae\x52\x8e\x93\xae\x38\xd3\x55\xc9\xe9\x6d\xc2\x73\x9c\x92\xdd\x30\x91\xc2\x67\x32\x74\x7d\xfb\xc9\xc4\x09\xa1\x5b\x9f\xae\x58\xaa\x38\x39\xa7\xcf\x13\x8e\xca\x53\x29\x4e\xaf\x2a\x91\x6a\x91\xb7\x57\x2f\x61\x03\xba\x4b\xfc\xc0\xf6\x02\x18\x1a\xfa\x8e\xf7\x0c\x75\xaf\xa1\x30\x94\x19\x13\x79\xad\xf6\x92\x5e\x71\xca\x5f\x17\x52\xf1\x98\xd6\xa4\xa2\x54\xe6\x1c\x04\x45\x60\xfc\x56\xc9\x76\x0a\x04\xca\x20\x4b\x4d\xf3\x2a\xbb\x02\x75\xff\xab\x89\xd4\x9a\x74\x7c\x4c\xce\xe9\x8c\x6b\x90\x3b\x15\xb9\xe6\xe5\x8a\x45\x77\xee\x23\x15\x4a\xf3\x1c\x8c\x11\xc7\x4f\x5c\x3f\x70\x66\xe1\xc5\xdc\x0f\x5a\x4a\xba\xbf\x8c\x1f\x4c\xa5\x5e\xcc\x8f\xef\x37\x2b\xc3\x1d\x79\x52\x6a\x5a\x30\x9d\x80\x45\x03\x8d\x58\x94\x3c\xd2\xb2\xdc\x58\x5b\x2d\x12\x8a\xde\xfb\xed\x5e\x57\xa9\xe4\x9e\x45\xaf\x2a\x8d\xca\x97\xb0\x1b\x64\x24\x48\xe4\x5e\x2f\x91\x19\xef\xad\x85\x36\xbd\xba\x38\x2f\x6a\xca\xc2\x0e\x2e\x68\x9f\x9c\xd3\x41\x22\xa5\x32\xda\x19\x89\x22\x01\xfd\xd7\x92\xaa\xaa\x28\x60\x33\x60\x1b\xc8\x3f\x99\xe7\x3c\xd2\x42\xe6\x8a\xec\xc4\x18\x0e\xdc\xc5\x85\xe3\xf9\xb4\x4f\x19\x57\x47\xc7\x67\x9d\x48\x97\x16\x3e\x7f\x76\xbc\x7d\x3e\x3e\x39\xdd\xb5\x1f\x9f\x75\xd6\x51\xf6\xb9\x2c\x78\xae\x54\xd2\x8d\x64\x66\x51\x56\x46\x2b\x59\x95\xc7\x27\xa7\xdb\xe7\xa3\xe3\x33\x54\xcd\x7a\xcf\x68\x46\x25\x67\x9a\x53\xcd\xb3\x42\x96\xac\xdc\xd0\x95\x48\xb9\x32\xaa\x0a\x9e\x8a\x16\xd5\x55\x2a\xa2\x6b\x7a\xcd\x37\xb4\x42\x4b\x55\x2a\xe9\x5c\xf3\xcd\x9a\xe7\x16\x39\x6f\xb3\xad\x76\x8f\x3b\x5a\x5b\xee\x1a\x16\x3d\x75\x5e\x84\x81\xe3\xb7\xd8\xb4\x00\x51\x00\x63\x76\x24\xf7\xe4\xb0\x6b\xbf\x47\x59\x1e\xd3\x94\x83\x03\xe7\x69\x4a\x57\x22\x8f\xa9\xac\x34\xbd\x4d\x44\x94\x50\xd0\x43\xd8\x0d\x4b\xd3\xed\x5c\x63\x50\x03\x9c\xa9\x45\x1f\x5d\x4b\x2c\x22\xd8\xf4\x6d\x6d\x66\xe8\x4d\x78\x74\x4d\x33\x91\x8b\xac\xca\x70\xaf\x4a\x7c\xc3\xe9\xad\xd0\x09\x8d\x64\x59\x72\x55\xc8\x3c\x86\xdd\xeb\x4d\xc1\xc9\xd4\x9d\xb9\xd3\xe5\x14\x77\xe4\xbb\x5f\x39\xe1\xe0\xc2\x19\x3c\x6d\xdb\x5f\x6d\xfe\x83\xe1\x0c\x02\x4d\x0e\x16\x53\xc7\x80\x4c\xc6\x9c\xcc\x47\xa3\x89\x3b\x73\x9a\x10\x60\x86\x35\xce\xc0\x9b\x2f\x03\xc7\x0b\x27\xf3\x71\x8b\xe2\x98\xe7\xbc\x84\x55\x2b\xcd\x0b\xf5\x98\x9c\xd3\xbf\x41\xbb\xbd\x35\x78\xd8\x88\x97\x9a\x76\x22\xd6\xd7\x65\xc5\x69\x27\xae\x4a\x06\x3a\xd5\x3f\xfb\xf4\xf4\x30\x39\xcc\x0e\x15\xed\x40\xdc\xe8\x67\x1b\xf8\xe9\xf2\xd7\x2c\x2b\x52\x0e\x5a\x42\xce\xc9\x39\x9d\x97\x74\x55\xca\x8c\x32\xda\x2d\x56\xaf\x51\x01\xd0\xd0\x4b\xcd\x63\xf3\x05\xd4\xf8\xb9\xc8\x63\x88\x9c\x30\x99\x58\x19\x06\x2a\x2d\x4b\x4e\xef\xc7\x92\x9c\xa3\x5f\x5b\xc9\x72\xcd\x35\xf0\xd3\x8c\xc7\x81\x45\x29\x6e\xa0\xf3\x35\xdf\x3c\x30\xcb\x36\x6a\x9a\xd2\xe2\x3a\x52\x47\xc7\xb4\x23\x72\xa4\x8a\xb3\x77\x40\xa6\xe6\x8d\x67\xb4\x93\xcb\x6b\xbe\x51\x3f\x6c\xd4\x35\xdf\x34\x83\xe0\x83\x82\x87\x98\x2b\x32\x70\xbc\x20\x44\x50\xd1\xa7\x51\xa5\xb4\xcc\x7a\x10\x59\x55\xaf\x99\x86\x80\x18\xef\xea\x50\x53\x24\xe7\x74\x59\x14\xe0\x6a\xf8\x0d\x4f\x11\x0c\xf0\xac\x48\x61\x53\xa0\x94\x4a\x33\x2d\x22\xc3\x37\xf0\x2d\xfb\x46\x81\x2c\x00\x35\xbf\x4d\x78\xc9\x4d\x48\x14\x8a\xf2\xd7\x3c\xaa\x34\x8f\xc1\x89\x07\xee\xe0\x1d\xf7\x31\xac\xc7\xe3\x40\xf0\x16\x80\x61\x62\xa6\x19\x82\x94\xa1\x1d\xd8\x8d\x66\x63\x23\x62\x9c\x14\x64\x02\x81\xdb\xac\x72\xfc\x95\xbb\x68\x1c\x0e\x71\x66\xa8\x58\xd8\xb6\x53\xa9\x09\x33\x2a\x8d\x18\x68\x85\x51\x25\xef\xa4\x72\xbd\xe6\x31\x62\x1c\x65\xd1\x88\xe5\xe0\xf7\x0f\xc0\xe3\x19\xf8\xc2\x5f\x17\xa9\x2c\xf9\x01\x99\xd8\x08\xde\xc2\x85\x3d\x06\xc6\x41\x0f\x42\x5e\x96\xbc\x90\x4a\x80\xcd\x5f\xee\xf9\x5b\x20\x0f\xea\x02\xf3\x6d\xfb\x08\xae\xee\x29\xdc\xc2\x9e\xd9\x1f\xfc\x76\xef\x27\x30\x3f\x44\xaf\x9f\xa2\x8a\x77\xda\x43\x0e\x10\x00\x21\x9f\x00\xa0\xa9\xa8\x14\x85\x46\xbb\x6c\x42\x42\xbd\x6d\x65\x51\x25\x33\xae\x45\xc6\x15\x8d\x64\x95\xc6\xb8\x17\x95\x1c\x10\x7f\xe0\xb9\x8b\x20\x0c\x5e\x2c\x60\xed\x57\x4c\x25\x2d\xae\xdb\x33\xdf\x05\x7c\x51\x2a\x6e\x7c\x35\xcb\x69\x95\x97\x3c\x92\xeb\x5c\x7c\xc3\xe3\xe6\x1b\x81\x8e\xe1\xe0\xc2\xf6\x7c\xc7\xac\x67\x24\xcb\x88\xd7\xc8\x32\xe7\xb7\xbb\x9d\x6e\xea\x00\x5a\x1b\x03\x19\xcd\xbd\x81\x13\x2e\x3c\xf7\x99\x1d\x38\x6d\x2b\x4f\xe5\x15\x4b\x69\xc6\x5e\xa3\x23\x42\xef\x8c\x32\x15\x19\xc0\x99\x55\x9b\x62\x61\x10\x42\x69\xd1\xce\x11\xcd\x38\xcb\x01\xcf\x98\x9e\x64\x6a\x7f\x19\x0e\x3c\xc7\x0e\xdc\xf9\x2c\x9c\xb8\x53\x17\x82\x61\xe7\x88\x9c\xd3\xa9\x28\x4b\x90\xc5\x26\x8f\xe8\xd7\x15\xaf\x38\x4d\x79\xbe\xd6\x89\x45\x45\x0e\xd3\x29\x0e\x80\x29\xdb\xf5\x42\x97\xaf\x19\x18\x14\x40\x2e\x91\xaf\xc9\xd4\xf5\xbc\xb9\x17\x7e\xb1\x74\x96\x4e\x38\x71\x66\x63\x54\xc5\xa3\x1a\x42\x32\x1d\x25\x26\x76\x7c\x98\x7e\x51\xa5\x29\x2d\xf9\xd7\x15\x86\x98\xed\x88\x3b\xe6\x5a\x2c\x27\x93\xd0\x73\xbe\x58\x42\xe0\xf8\xc0\x8c\x25\x5f\xf1\xb2\xe4\x31\x9d\x88\x88\xe7\x00\x18\xb5\xa4\x45\x0a\xb0\x83\x19\x27\xa4\x65\xd1\x80\x78\xc0\x0b\x80\x50\x00\x1a\x65\x95\xd2\x34\xc3\xe9\xd1\x7c\x11\x2f\x81\x63\x91\xf9\xaa\x97\x1a\x62\xa0\xf5\xb5\x57\x68\x37\x93\x85\xe7\x8c\x1c\xcf\x73\x86\xe1\xc4\x1d\x38\x33\xdf\x81\x80\x6d\x17\x2c\x4a\x78\xb3\x0e\x7a\xdc\x3d\xb4\x80\xf7\xf5\x7b\x2b\x30\xb0\x2b\x91\x0a\x8d\x6a\x81\x18\x89\x45\xda\x44\x9b\xb6\xa6\xd3\xab\x8d\x81\xa4\x45\x29\xb5\x8c\x64\xba\x0d\x11\x88\x36\xc7\x28\xd5\x46\x75\x9c\xfc\x5d\xc2\x99\x58\x63\xc4\x68\xe9\xcc\xd5\xc6\xe4\x11\xc6\x51\xd5\x6e\xc1\x40\x5d\x70\x28\xe1\xd4\x1d\x7b\xa8\x34\x2d\xc2\x03\x99\x47\x55\x59\xf2\x3c\xda\x80\x75\x56\xca\x00\xf0\x92\xeb\x52\xf0\x1b\x4e\x23\x99\x65\x42\x2b\x2a\xf2\x95\x2c\x33\xd4\xd7\x2e\x0d\x12\xa1\xe8\x0d\x2b\x05\x2e\x2a\xe6\x2b\x91\x03\x2d\x10\x40\xa3\xdc\x35\xa4\x03\xb1\x30\x75\xad\x4c\x46\x55\x3b\x9c\xb2\xca\x1b\xd1\x21\x36\x07\x1b\xee\xd2\xa5\xaa\x58\x9a\x6e\x2c\x68\x27\xe7\x06\xef\xd3\x98\x17\x1c\xb0\xc0\x8a\x26\xf2\x96\x66\x2c\xdf\xd0\xc1\x62\xa9\xe8\xfd\x48\x96\x5c\x3d\xd8\xc2\xb7\x2e\x75\x8d\x02\x98\x61\x80\x57\x4c\xac\xfa\x86\x97\x10\xc0\x30\xdd\x89\xc1\x9c\xc6\xf3\xb1\x4f\x6f\x45\x9a\x52\x56\x69\x09\x3b\x02\x5c\xb1\xa1\x31\xd7\x3c\x32\x8b\xda\xad\x1d\xe7\xc2\xfc\xa2\x86\x3f\x30\x17\x19\xcc\xa7\x53\x37\xf0\xc3\x91\x13\x0c\x2e\xc2\xc1\x7c\x36\x58\x7a\x9e\x33\x1b\xbc\x00\x64\xbb\xe7\x26\xbb\x3c\x86\x5f\xf0\x96\x13\xa1\xd0\xc6\xeb\x08\x0c\xa8\x16\xa0\xe1\x36\x6f\x05\x07\x86\x40\x34\x15\x39\xa7\xb7\x25\x2b\x80\xe9\xb8\x9e\x81\x8c\x79\x6d\xd9\x86\x1e\xa4\x41\x3e\x2f\x18\x2a\x40\x8b\x16\xea\x18\x43\x99\xb1\x2e\x0d\xe4\x8e\x56\x83\xfc\x84\x4e\x20\x9a\x6e\xc7\x58\xf4\x67\x15\xe2\x40\xdd\x8c\x23\x08\x5d\x9e\x7b\xf6\x22\x74\xbe\x0c\x9c\x19\xe4\x81\xa0\xfc\x5d\xfd\x5a\x5b\xdd\x2c\xb6\xba\x19\x2b\xaf\x63\x79\x9b\xc3\x9b\xf9\xb9\x8e\x01\x2c\x3e\x63\xa9\x88\xcd\xfe\x00\x06\xd5\x5b\xc3\x3d\x31\x5a\x94\xfc\x46\xf0\x5b\x6a\x2f\x5c\xca\x94\x92\x91\x60\x80\x40\x70\xc5\x3a\xe1\x99\x45\x9b\x0c\x92\x15\xa2\x77\x73\xd4\x6b\x66\xd9\xdb\x2b\x4a\x17\x2d\x07\xd7\xaa\xba\xe0\x1e\x90\xae\x66\x57\xc0\x2e\xe0\x0f\xce\x4e\x6f\x65\x7e\xcf\x14\x04\xc0\x25\x01\x1b\xf7\x39\x4f\x63\xc9\x15\x74\x41\x0f\x01\x06\xff\xcc\x75\x9e\xa3\xc9\x00\x5a\x40\xf0\x06\xfb\x6e\xd6\xb1\x2f\xd7\xaa\x48\x25\x8b\x2f\x77\x96\xd9\x32\x43\x9c\xc7\x74\x50\xdd\xda\x0c\x87\xb4\x4f\x01\xc0\xb5\x60\x71\x83\xa4\x45\xba\xa9\xb1\x56\x3d\x86\xde\x8f\xdb\x08\x61\xcd\xb5\xa2\x51\xca\x59\xce\x63\xd8\xb9\x01\x19\x4d\x89\x03\x1d\xea\x03\x12\x38\xd3\x45\x1b\x35\xf4\x74\x56\xf4\x6a\x7a\x10\xba\x60\x49\x10\x44\x6b\xa1\xb0\x92\x53\x96\xa6\xf2\xd6\x58\xfb\x55\x33\x37\x8f\x2d\xca\xbb\xeb\x2e\x15\x19\x5b\xf3\xde\xcf\x0a\xbe\xfe\xdb\xe6\xb1\xc8\xd7\x5d\x3a\xe1\x20\x4c\x9e\x15\x7a\x53\xc7\x24\x24\x42\xc1\x2c\x57\xcd\x14\xc4\x9e\x4c\xe6\xcf\x9d\x21\xc6\x5f\x1f\x23\xe7\xb4\x76\x0a\x08\xbb\xe5\x8a\x72\xd6\xf8\x64\x91\xd3\xe9\x13\x62\x18\x6e\x7f\x89\x70\x9b\xf6\xe9\xc3\xd6\x98\x9d\x31\x1a\x15\xc6\xc0\x88\x8b\xc5\x38\x08\x43\x41\x4c\x27\x84\xbc\x6c\x44\xd5\x12\x4b\xc2\xca\xd8\x58\xc1\x55\xc9\xd9\xf5\x4e\xfc\x8d\x7b\xbc\xb0\x3d\xf0\xf1\x33\x27\x7c\xe2\x39\x76\x1b\xe5\x37\x06\x6b\xc2\x03\x24\xc2\x1d\x3f\x4a\x78\x76\x17\x0f\x99\x82\x49\xae\xeb\xd4\xaa\xe4\xe0\x6a\x20\xdc\x4d\x1b\xe5\x39\x47\xa8\x51\x83\x73\xba\x16\xda\xca\xd8\x3a\xe7\x9a\x98\xea\x58\xb8\xf4\x26\xa1\x3f\xb8\x70\xa6\x35\xc7\x7e\x88\xb7\x00\x4f\x8a\x33\xf1\xb8\x07\x7a\x6f\xd6\xd1\x9a\xf2\x07\xb9\x08\x43\xa2\xf1\x0f\x3d\xd9\xb2\x10\xa6\xb6\xda\x7f\x87\x9f\x40\xa1\xed\xbb\x88\x0f\x79\x07\x42\x5e\x02\xe6\xbe\x34\x4e\xa2\x32\x78\xd4\xc6\xea\x50\x67\x20\x73\x5d\xca\xb4\x63\x03\x2b\x3b\xf3\x52\xac\x45\x4e\x13\xce\xd0\x59\xb7\x70\x23\x56\x73\x24\xf8\x11\xc5\x73\x4d\xec\xc1\xc0\xf1\x7d\x70\xbe\x81\x37\x9f\x84\xa8\x73\xe1\xdc\x73\xc7\x58\xe9\x20\x06\xf0\x81\xdc\xb7\x22\x4a\xd7\xb2\x14\x3a\xc9\x14\xe2\x7a\x9d\x70\x51\xee\xe5\x84\x06\xc9\xd0\xfb\x95\xe2\x80\xb9\xb4\xa4\x71\x13\xce\x51\xaf\x1f\x90\x97\x90\x7e\xd7\x43\xc2\x6b\xbe\x09\x41\x9f\xd5\x25\x71\x86\xc7\x27\x27\x47\x9f\xd1\x3e\x3d\x3e\x39\x25\xce\x60\xe8\xdb\x94\xd6\x6f\x1e\x3e\xe3\xdb\xe1\xa3\x33\x32\xdc\xbe\x1e\x1d\x1e\x3f\x22\xe4\x25\x18\xeb\x15\x53\xfc\xb2\x55\x55\xcc\x36\xea\xeb\x14\xeb\x8a\x52\xe9\x75\xc9\x95\x01\xe7\xea\xeb\x54\x68\xfe\xf0\xc0\xc2\xa8\x07\xb1\xb4\x2e\x31\xc0\x5a\x03\x31\x7c\x62\x84\x3b\xdd\xf8\x5f\x4c\x5a\xa0\xe2\x49\x03\x84\x91\x2c\xa9\x2b\x30\x47\xc7\x9f\x62\x0d\xe6\xe8\xf1\xc3\x87\x87\xa7\xa4\x2e\x8d\x02\x1c\x27\x75\xa5\xb3\x94\x52\x93\x85\xed\xfb\xcf\x87\x0d\xfc\xdd\x5b\x51\x0e\xb1\x9a\x37\x85\x50\xc3\x2a\x58\x34\x00\x3f\x51\xd6\x09\xc5\x0d\x2f\xc5\x6a\xd3\x59\x55\x69\x7a\x40\x7c\x7f\xb2\x2d\x8b\x9a\xfe\x0d\xd9\x66\x6b\x28\x9a\x03\x2d\xe2\xab\x03\x0b\xcb\x31\xec\x4a\xc9\xb4\xd2\xbb\x2c\x2b\xc7\xcd\xa3\xd7\x03\xfd\xac\x8b\x8a\xa4\xed\xfa\x60\x13\xdd\xf8\x8a\x90\x97\x2c\xce\x04\x7a\x83\x06\x98\x95\x7c\x5d\xa5\xac\xa4\xf7\x21\x19\xc2\xaf\x0f\x4c\x32\xd4\xaa\x96\xc8\x72\xcd\x72\xf1\x0d\x33\x95\x9b\x6d\xda\xee\x8c\x97\x13\xdb\x0b\xe7\xde\x78\x8b\xbd\xb7\xce\x82\xbc\x54\x3c\xaa\x4a\xa1\x37\x97\xc4\x9d\xf9\x81\x3d\x99\x00\xee\x6a\x7b\x93\x4f\x3e\x31\x05\x72\x53\x47\x0f\xe6\xf4\xa9\xe3\x2c\xe8\x8b\xf9\xd2\xa3\xc8\x6f\x48\xfb\xa8\x6f\x8f\x9c\x4f\x3e\x21\xbe\x33\xf0\x9c\x20\x7c\xea\x00\xa0\xf8\xe4\x47\x9f\x8f\x86\xce\x73\xcf\x79\xee\xfd\xcd\xbf\x75\x1f\xb2\xc1\x4a\x4b\x48\xe4\x04\x38\x9a\x8c\xa3\x77\x8c\xd9\x46\x91\xc9\x7c\xec\xce\x42\xcf\x99\x3a\xd3\x27\x8e\x17\x0e\xed\x17\x60\x94\x9f\x92\xc1\x7c\xfe\xd4\x75\xb0\x80\xdd\x12\x73\xc8\x6e\x39\x24\x50\xcd\xe7\xed\xb8\x76\x1f\x44\xf5\xb1\x00\x49\xd5\xdd\x7c\x67\xb0\xf4\xda\x49\x8d\x07\x71\x48\x41\xf2\x23\x5f\x6f\x00\x53\x25\x3c\xd7\x4d\xb6\x6a\xec\x78\x5b\x66\xc7\xda\x3a\xbc\x10\xcf\x79\xe6\x78\x3e\x24\x49\xf3\x2f\x5f\x84\xf6\x32\xb8\x70\x66\x81\x3b\x30\x29\x4d\xad\x80\x5f\x76\x9e\x3b\x4f\xe0\x53\x07\x1a\xea\x2a\xba\x88\xf8\x25\xb1\x07\x81\xfb\xcc\x09\x07\xf3\xa1\x13\x4e\xe0\x69\xea\xce\x96\x01\xc6\x81\xa3\xb3\x43\xe2\x39\xbe\x03\xf9\x36\xa8\xee\x07\x3b\x9d\xd3\x25\xae\xa6\xa9\x38\xcb\x7c\x25\xca\x8c\xf2\x4e\xc6\x44\x8a\x0e\xaa\xe4\x6b\xa1\xb4\x29\xb7\x10\xcf\x19\xbb\x7e\xe0\x78\xa1\x33\xb5\xdd\x49\x88\xa7\x19\xde\x74\xaf\x28\xcb\x8d\x93\x32\x21\xd1\x0c\xe6\x25\x6a\x34\x6a\x5a\xa3\x5f\x2c\x8a\x64\x95\x9b\xf2\x75\x5b\xbd\x5c\x3f\x78\x0f\x9d\xe3\x12\x31\x8f\x51\x62\x8d\x75\x26\x2d\x29\xe2\x1d\x96\x6f\x74\x22\xf2\x75\x97\x40\xfa\xe4\x7a\x4e\xe8\xbb\xe3\x99\x3b\x0b\x01\xc5\xb4\x28\x4c\x61\x37\xb9\xac\xab\x3a\xad\xc0\x37\x9b\x07\xee\xe8\x45\x08\xbb\x69\x77\x07\x1c\x12\x73\xcd\x44\xfa\x18\x8f\x28\xd4\xe3\x5e\x6f\x2d\x74\x52\x5d\x75\x23\x99\x81\x6d\x09\xad\xd0\xc4\x7a\x42\xa9\x8a\xab\xde\xd1\xe9\x49\x43\xf3\x63\x52\xdd\x4e\xf2\xa1\xbe\xf3\x0f\x31\xa1\x0e\xe5\x11\x2b\x74\x94\x30\xc0\x80\x22\x36\xea\xf5\x9e\x94\x6a\xda\x03\x7b\x11\x0c\x2e\xec\x06\x73\x91\x97\xb7\xfc\x2a\x91\xf2\x1a\x5c\xc1\x85\x94\xd7\x98\x93\x7c\x24\x81\xad\xbb\x43\xa0\x95\x77\xa5\xad\x77\x67\xaa\x43\x9e\x8a\x1b\x5e\x62\x3a\x03\x20\x5b\xe4\x54\xf1\x48\xe6\xb1\x22\x43\x07\x34\xd0\x0b\x03\x77\xea\xcc\x97\x01\xe2\x95\x73\x8a\x21\x8f\x8a\x1c\x9d\x07\x6f\x15\xdf\x60\x2b\xfe\x53\x77\x11\x06\x13\x3f\x7c\xe6\x78\xee\xe8\x45\x8b\x1f\xb3\x2d\x22\x4a\x84\x42\xc4\xd9\x4a\xce\x10\x19\x02\xbc\x2a\xd8\x1a\xdc\xe2\xd8\x9d\x8d\xc3\xd9\x72\x8a\xcb\x44\x8c\x24\x52\x5e\x5e\xb6\x60\x69\x43\xf6\x49\xb5\x5a\x61\x19\x0c\xc3\x20\x00\x9f\x84\xe5\x39\x4f\x2d\x7a\xcd\x79\x41\x05\xfa\x5b\x81\xb1\xd8\x1c\xba\xd0\x18\x21\xf6\x75\x2e\x6f\xe9\x2d\xe0\x12\xfc\xd8\x25\xbe\x33\x1b\x86\x4f\x96\xa3\x91\xe3\x01\x8f\x0c\x83\x9a\xa4\x3c\x16\xaa\x48\xd9\xc6\x1c\x33\xa0\xa9\x99\xf3\x39\x7f\xf9\xe4\xb7\x9c\x81\xa9\xea\x37\x67\x75\x58\xd5\x47\x05\x36\xa5\x1f\x72\x4e\xc7\x19\x6a\xa6\xca\x74\xd1\x5d\xc3\x33\x68\xe5\xe3\x93\xb3\x4f\xc9\x39\xfd\xe2\x8b\xfa\xc3\xd7\x5f\x63\xeb\xa3\x53\x60\xf2\x4c\x6a\x6e\x35\x29\x00\xd6\x2d\x79\x1e\xd7\x38\xe8\xe0\xd1\xe9\xc9\x81\x45\xfd\x69\xb0\xa8\x73\x42\x40\xc2\x8a\xc7\x90\x8d\x82\xdc\xf1\x10\x26\x98\xf8\x54\xe6\x66\xec\xc9\xd9\xa7\xc0\x80\x92\x03\x06\x02\xe4\x14\x23\x20\xf5\x46\x03\x7a\xfa\xe8\xf0\xb3\x6d\x1a\xfa\x4e\xad\x6a\x47\x48\xe8\x3a\xf9\x4c\x6f\xd9\x46\x6d\xe7\xab\xc3\x72\x2b\x54\x5d\x38\x93\x39\x95\x05\x37\x9a\x6d\x42\x5f\x22\x95\x46\x5f\x0a\xd8\x33\x16\x20\x2f\x9e\xeb\xee\xae\x70\x00\x63\xf0\x84\xc2\x60\xd6\x6d\x7f\x30\x94\x7d\x82\x7b\xd8\x0a\xeb\xc0\x26\xc3\xed\x12\xe8\x87\xe7\x34\x26\x10\xa0\x6b\x43\xc7\x66\x62\xb9\x39\xf6\x68\xd5\x89\x65\x7b\xc7\x5d\x3a\xcf\xd3\x0d\x86\x6e\x9d\x00\x65\x59\x52\xc5\xd3\x55\x07\xfc\x17\x8f\xdb\x03\x95\x51\xf1\x46\xbd\x8d\xb7\xa3\x51\x2a\x78\xae\xdb\xfd\x00\x8f\x84\x03\xc7\x0b\xdc\x11\xb8\x92\x5d\xec\xb9\xa3\xf4\x6b\xb4\xfb\x63\xb5\xdf\xba\xc7\xae\xf8\x8b\xfa\x65\x4a\xe4\x71\x5c\x72\xa5\x2c\x94\xe6\xc9\xc3\xe3\xe3\xba\xd0\x51\x57\x2d\x10\x00\xb3\x9c\x72\xd4\xda\x6d\x67\x59\xe2\xf6\x5f\x1d\x80\x7a\x1f\xd0\x9f\xe0\xe7\xcf\x5b\x65\xf8\x9f\xbe\xa2\xc6\x3a\xc9\xc8\x9b\x4f\xeb\x7c\x08\x16\xb1\x0b\x87\x18\x24\x0a\xa6\xd4\xad\x2c\xe3\x1a\x7f\xb5\xa1\x17\x30\x46\xf3\xd7\xba\x97\xe8\x2c\xc5\x1c\x39\xd5\xbc\xcc\x99\x16\x37\xbc\x26\x8e\x06\x2b\x73\x0d\xd8\xb8\x49\x6d\x82\x29\x00\xe3\x00\xc2\x3e\xc4\xcb\x16\x5c\x89\x58\x94\xec\x43\x4e\x9e\xc9\x72\x63\xe0\x5b\x2c\xd4\x01\xee\x0b\x5a\xb1\xe7\xc1\x7e\x05\xb7\xee\x4c\xec\xa1\xbd\x08\x30\x54\x9b\x96\x06\xcd\xd5\xdf\x6b\x88\x38\x1e\x98\x22\xd8\x0d\x4b\x5b\x2e\x71\x8f\xe2\xe9\x21\x71\x67\x81\xe3\x3d\xb3\x21\x16\x9d\x1e\x36\x84\xcc\x5a\x0c\x28\x6c\xad\x65\x77\xb2\x86\x1a\xde\xc8\x82\x9c\x53\x1c\xf0\x98\xe6\xe6\x80\xb2\xaf\xa3\xc2\x82\x8f\xfd\xc7\xa7\x0f\x3f\xfd\xcc\x6a\x38\xdc\xcf\x58\xc4\x4a\x99\x5b\xf1\x55\xff\xd0\x2a\xa4\x4c\x11\xc9\xf7\x8f\x0e\x0f\x2d\x11\xa7\x3c\xac\x3d\x78\xdf\xe0\x84\x66\xe6\xc7\xf4\xd5\x0e\x35\x1f\x1d\x1d\x1f\x1d\xbd\x6a\xcc\x16\xb0\x09\x1e\xac\xdf\xcd\x53\x48\xae\x6a\x96\x36\xec\xbd\x8b\x9f\xcd\xbd\x87\x36\x43\x17\xa5\xbc\x11\x80\xa1\x10\xa0\xac\xa9\x2c\x0c\x2e\x3d\xaf\xbb\x3c\x46\xd3\x34\x45\x96\x7c\xd3\xf4\xda\x70\x0d\x29\xa7\x48\xf9\x63\x5a\xaf\x6c\x77\x84\x51\xa7\xf8\xaf\x10\x2c\xd7\x5f\xd5\xab\xff\x6f\xdc\x83\xac\xe3\x31\x5d\xcb\x8e\xfa\x3a\xed\xc4\x25\x84\xc8\x1e\x36\xd2\x58\xe5\xcd\x82\x95\x86\x7c\xb9\x59\x19\xa4\x1e\x8f\x9b\xf9\x3e\x6f\xd6\x18\x6a\x70\x8c\xaf\xb6\x6c\x0a\xeb\x2b\x25\x35\xec\x6f\x76\x82\x89\xaf\xd9\x72\x24\xe5\xb5\x30\x85\xdf\x06\xbf\xd6\xe8\x56\x84\xa9\xb8\xe6\xa1\x81\x33\xe4\x1c\xdc\x36\x44\x34\xf0\x5b\x0d\xbf\x20\x0d\x05\x00\x54\xab\x71\xdb\x5d\x1a\xf7\xf3\x01\x40\x5c\xc3\x15\xc5\x75\x3d\xff\xde\x58\x04\x24\xb5\x81\x02\x4a\x35\x54\x76\xd5\xa1\x66\xe9\xe3\x01\xe2\x88\xad\xe9\xec\x11\x39\x3b\x7d\x74\x78\x48\xc6\x83\xb0\xb1\x1a\x04\x16\xb4\x5f\x7f\xd8\x51\x49\xc5\xca\x94\x57\xef\x18\xee\x3b\x78\xc7\x23\x9c\xb8\x23\x67\x7f\x3c\x79\x59\x88\x48\x57\x25\x7a\x88\xed\x29\xae\x29\x51\xa9\x6d\xf9\x05\x72\xea\x1b\xa6\x59\xa9\x88\xfd\xcc\x0e\x6c\x2f\x5c\x2e\x26\x73\x7b\xb8\x57\x86\x6a\x7a\x9c\xd3\x41\x22\x72\xae\x78\x9d\x6e\x61\xf6\x6a\x8e\xd1\x0f\xe2\x4a\xaa\xa4\x92\x07\xa6\x4c\xcb\x9a\x82\x8b\x19\x4a\x95\xac\xca\x88\x5b\x14\xe4\x65\x20\xe9\xe3\x5e\x2f\xca\xbb\xeb\xd2\x74\x40\x58\x6a\x1e\x7b\x64\xec\xd5\x4b\xf1\xe7\x4b\x6f\x80\x69\x4c\xdd\x0d\xcf\x93\xb0\x6a\x9d\x56\x7c\x1b\xeb\x57\xb2\x8c\xb6\x25\x30\x3c\x60\x15\x39\x95\xab\x15\x56\x8c\x32\xbc\x2a\xd2\xc4\xd6\x86\x74\x4b\xd2\x23\x1e\xe3\xa9\x6d\xc3\x08\x9a\x4a\x79\x5d\x15\xb0\x45\x45\x87\x33\xbf\xae\x21\x44\x12\xa0\x40\xdd\x65\x57\xfb\x24\xe7\x06\x84\x60\xc0\x50\x16\x55\x9c\x6f\x11\xf7\xed\xed\x6d\x37\x15\x57\xcd\x16\x65\xb9\xfe\x01\xeb\xc7\x65\xbd\xbb\x01\x60\xe9\xb8\xa6\x03\xb2\x8f\x85\xba\x62\x29\x20\x8e\x5a\x09\x47\xce\xd0\xf1\xec\xc0\x19\x86\xdb\xfd\xd5\xa0\x99\x69\xcd\xa2\x24\xe3\xb9\xbe\x6c\x5d\x5b\xd9\xb5\x2a\x84\x21\x1c\xd5\x3d\xee\x36\x07\x6c\x98\x4a\xbf\x02\x12\xaf\xea\x29\xde\x29\x7d\xe2\x99\xdb\x8e\xc8\x3b\x03\x8d\xd6\xec\x3e\xbf\xda\x4b\xed\x5b\x1f\xc8\x39\x9d\xe7\xb8\xbd\x4c\xb6\xab\x99\x9b\x82\xab\x8f\x14\x31\xdf\xad\x4e\xde\xdd\x09\xcb\x8f\xef\x97\x2b\xf7\xd7\xfa\xf0\x78\xfa\x84\xb4\xaa\x96\x8f\xea\x61\x1f\xae\x58\xee\x8f\x3f\x3a\x7c\xaf\x82\x09\xa6\x0a\xcc\xf6\x0b\x1e\x89\x95\xe0\xe6\x84\xb9\x8e\xf0\xc0\xb8\x55\x95\xa6\x1b\x2a\x2b\x5d\x54\xa0\x77\x31\xe0\xa8\x7d\xaa\xde\x68\x70\x74\x74\xfc\xb0\x21\xc2\xd2\x06\x84\xf2\xb8\x29\x9f\x83\xd8\xec\x99\xef\x0e\x2c\xba\xcc\xc5\xeb\x21\x03\x84\xec\x55\x57\x9b\xfa\x69\x34\x38\x3b\x3e\x6e\x7e\xbf\x32\x0f\x27\x87\x56\x43\x7a\xfb\x60\x3e\x3d\x7c\xf8\xf0\xb3\xed\xc3\x8c\xe5\xd2\xa2\x4f\x85\x8e\x12\x9e\x5b\xd4\xd7\x2c\x2b\xea\x9f\xa9\x48\x53\xb1\x7d\x8e\x4a\x89\x71\x1d\x5f\x61\x54\x1d\xf3\x51\x98\xed\x7c\x86\x5d\x41\x2e\xd5\x62\x43\x63\x27\x90\x98\xca\x94\xe5\x6b\x30\x8f\x5e\x71\xbd\xee\x01\xf7\x7a\x3f\x2a\xae\xd7\x9d\x48\xe6\x4a\x33\xd0\x92\xd1\xdc\x9b\xda\x18\xa2\x9b\x5b\x16\x90\x4d\x68\xc8\xea\x14\x88\x08\x4f\xc4\x4b\x45\x5e\xa6\x72\x7d\x49\xde\xb9\xe7\x53\x9f\x8f\x03\x35\x99\xf2\x1a\x88\xd4\xc1\xbc\x1d\xc0\x9b\x0e\x0d\x86\x95\x59\xc6\xd0\x67\x36\x05\xd8\xac\x4a\xb5\x28\x9a\x83\x91\x5a\x3d\x9b\x61\x16\xea\xc9\x01\xa9\x4b\x63\x75\xeb\xff\xcb\x8c\xec\x8e\x64\xac\x01\x29\x41\xc9\x22\x2c\xdb\xb9\xf9\x4a\xc2\xef\x73\x56\xe6\xf0\xeb\x94\xa5\x2c\xe1\x61\xc4\x34\x4b\xdf\xd9\xb0\x19\x45\x26\xce\x33\x07\x10\x1b\xbe\x92\x06\xb5\x6d\xd9\x65\xfc\x4f\x9e\x6e\x90\xbb\xdd\xba\x1d\xf4\x3b\x6d\x1d\x24\xe0\x21\x69\xc2\x4b\xa1\x1b\x7a\x5b\x4a\xc8\x97\x77\xc9\x40\xe3\x0f\xa0\x51\xfb\x4b\xe3\x9e\x54\x73\xd8\xc7\x63\x90\x38\x2d\xa5\x06\xb1\xdc\x57\xb7\xa0\xa9\x68\xaa\x12\x1c\x08\xe4\x7c\x35\xc2\x7a\x40\x26\xf3\x71\xe8\xcd\x03\x93\x72\x6c\xc3\xf3\x1a\xbc\x0f\x12\x89\x99\x48\x37\x64\x68\xbb\x93\x17\xef\xf5\xdb\xba\x0f\x95\x88\x15\x82\x73\xc8\x27\x53\x73\x08\xb5\xc7\xcb\xe3\xb3\xfa\x28\xe5\x88\xfe\xe4\x27\xf4\xf8\xcc\xa2\xc7\x27\xa7\x2d\xc7\x12\xfa\x17\xee\x08\xaf\xde\x9d\xd5\x74\xd1\xb7\xef\x9c\x4c\x8b\x30\x0e\x9a\xb8\x33\x53\xe4\x3a\xc4\xff\x40\xd6\xaf\x0b\x51\xa2\xb7\xd8\x34\x3a\x6f\xd0\xe0\xfd\x98\xa7\x5c\x73\xca\x56\x9a\x97\x34\x63\xaf\xb1\xcb\x03\x24\xb3\x2d\x1f\x6e\x6b\xb4\x29\x8b\xae\xdf\x93\x06\xb6\xfe\x20\x71\x3c\xaf\x8b\x2a\x4b\x6f\x42\xcc\xa5\x4b\x48\x44\x4a\xd9\x3e\xae\x29\xab\x3c\x07\x19\x40\x73\x7d\x70\x5c\xf0\x52\xc8\xd8\x1c\xd2\xde\x71\x9a\xe6\x55\x79\xbb\x37\xa6\xc9\x78\x42\x66\x4a\x36\x5d\xbc\x8b\x6b\x07\x21\x26\xe0\xbb\x0c\xe8\x9c\x2e\xf1\x92\x6a\x7d\x17\x42\x99\x95\x74\xcd\xcd\xd5\xb0\x6e\xbc\x24\xfe\xe0\xc2\x19\x2e\x31\x84\x7d\x6e\xce\xdb\x8e\x0e\x33\x82\x55\xcf\xed\x71\x5f\xc2\x59\xaa\x13\x73\xc9\xac\x26\x53\xf2\x42\x86\xa6\x3d\xc4\xf6\xbb\x28\x1d\x3f\x4a\xc8\xae\x1e\x74\x7a\x08\x11\xcd\x2e\xd7\x95\x09\xad\xe0\xec\xd1\x8f\xe4\x31\xbd\xb7\x16\x9a\xae\x54\x74\x7d\xaf\xf1\x1c\x9d\x4e\x95\x97\x10\x96\x90\x6b\x9d\x8e\x66\x6b\x05\xde\x07\x7c\x23\x7a\x50\x99\x6f\x7d\xa4\xd0\x1d\x15\x65\x08\x93\x62\x19\x29\x6c\x00\x62\xbd\xa3\xee\xa7\xdd\x13\x62\x7b\x63\xdf\x98\xdc\x00\xaf\xc9\xb5\x0e\x32\xf1\xee\x93\xd2\x22\x6a\xd8\x83\x7b\x09\x71\x77\xf0\x4d\x5d\xbe\xcb\x5d\x14\xca\xdd\x5b\x85\x09\x52\xce\xf2\xaa\x68\x4f\xc1\xca\x28\x11\x37\x5c\xb5\x19\x57\xb7\x85\x91\xe9\xfe\xde\x24\x46\x84\x77\xcf\x72\x4e\x03\x40\xcd\xcd\x2d\xb9\xdd\xed\x3f\xb1\x6a\xe6\x6a\x1d\x9f\xd5\xa7\xaa\x64\x3e\x81\x74\x22\xb8\xb0\xc1\x3f\xe2\x62\x5f\xae\x85\x6e\x1d\x1c\x28\x9a\x88\x75\x92\x8a\x75\x82\xb6\xcc\x62\x44\xbf\x79\x4c\x4b\x9e\xc9\x1b\x73\x69\x28\x5f\xf3\xdd\x71\xc1\xd0\x1d\x8d\xc2\x0b\x77\x7c\x31\x71\xc7\x17\xc1\x5e\x3d\xb6\x0d\x10\xc0\x94\xd5\x16\xbb\x00\xe5\xb6\x39\x03\x96\x8b\xc5\x6a\x85\x15\x5f\x34\xca\xb1\x1b\x18\xd2\x6d\x23\x7f\x8f\x6a\x94\xb0\x92\x45\x1a\x70\x36\x92\x4c\xdb\xe7\x60\x1f\xa7\x89\x17\x9e\xec\x41\x60\x6e\xa8\x9e\xdc\x41\xdc\x60\x1a\x95\xc8\xdb\xfc\x23\xb4\x1a\x50\x63\x82\xcd\x47\xd4\x7a\x1d\xb5\x94\x9a\xad\xd7\x90\xc8\x83\x90\x3a\x1d\xf0\xd8\x7f\x1d\x9d\x5e\x47\xb5\x46\x8f\x07\xe1\x4e\xa9\xe7\xdb\x0a\xda\x1d\x65\x59\x90\x72\xb7\x6e\xbf\x24\xe6\x7a\x8c\x83\xc6\x78\x58\x5f\x83\x32\x97\xe7\xc9\x60\x32\x9f\x39\xf5\xf3\x62\x39\x99\xd4\x8f\xe3\x81\x29\x57\x90\x97\xc6\x63\x5c\xb6\xee\x99\xb5\x6b\x1e\x89\xac\x4a\x45\xaf\xb8\xbe\xe5\xbc\x2e\xcf\x1a\x77\x31\x74\x46\xf6\x72\x12\x84\xad\xea\xc7\x19\x20\xef\x42\x5c\xbe\xc7\x78\xa1\x79\xa6\x0c\xf2\x37\x37\x56\x0d\xd8\x67\xa6\xd2\x0b\xdc\x37\x7f\x74\xe1\x3b\xa1\x1b\x38\x53\x23\x3f\x42\x5e\x56\x48\x6b\x57\x34\xde\xbb\x83\xb4\x3d\xc9\x06\x81\x1a\xed\x90\x39\xde\x10\x4d\x81\xe5\x48\xda\xf9\x72\x31\x99\x7b\x4e\xb8\x57\x4c\x3e\x3e\xdc\x23\x6a\xce\x02\x3e\x44\x0e\xc9\xb8\xbe\xbf\x7c\x87\xc8\xd1\x3e\x91\xed\xc5\xb8\xfa\xce\xd1\x3e\x11\x16\x69\x71\x23\xf4\x86\xae\x38\x8f\xc9\xc8\x71\x86\x78\x65\xc0\x5c\xc6\xa9\x09\x9e\x6c\x4f\x98\xe5\x8a\x1e\xe8\x84\x67\xbc\x13\xc9\x54\x96\x07\x34\xe3\x9a\x51\xcd\xd6\x96\xb9\xe3\x74\xb5\xa1\x76\x1e\x97\x52\xc4\xf4\xa7\x7d\x7a\x82\x77\xd1\x6d\xd0\x68\x3c\x5e\xa0\x38\x08\x73\x4e\x7a\x90\xcb\xbc\x3e\xcd\x6c\x4e\x39\x8d\x14\xcc\xb5\xf1\xd6\x9f\x28\x28\xbd\x49\xb7\x87\x28\x80\x61\x77\x47\x28\x31\xbf\xe1\xa9\x2c\x78\xa9\xba\x6b\x29\xd7\xa6\x32\xd8\xbb\xe5\x57\x3d\x13\x72\x54\xef\xf8\xf0\xe8\x51\xef\xe8\xa8\xe7\x1b\xb4\xde\x59\xc9\xb2\xd3\xda\x40\x47\xe4\x9d\x41\x52\xca\x8c\x77\x1e\x7e\x86\x1f\xeb\xe5\x93\xe0\xc2\x99\x3a\xe1\x60\x3e\x99\x7b\xe1\xd4\x09\xec\x30\xb0\xc7\xb4\x4f\x5f\xfd\x68\xb5\x3a\x79\xf8\xe8\xe1\xab\x36\x1a\x11\x39\xbd\xda\x68\xae\x76\x86\x6c\x52\xc7\x5d\x55\xfe\x7e\xbb\x4e\x30\x7d\x52\x63\x01\xd7\x5f\x4c\x6c\x53\x4a\x6d\xb2\x9d\xb3\x87\x67\x67\xa7\x87\x67\xa8\x60\xdd\xed\x41\xeb\x4e\x98\xf5\xb1\xea\x47\x14\x62\xe9\x3b\xde\xbe\x3e\x9c\x1c\xbe\xaf\xa9\x1f\x25\xe1\x39\x8b\xf9\x47\x49\xe4\x52\x8b\xe8\xaf\x50\xcc\xd9\x3c\x70\x07\xef\xaa\xf7\xc9\x1e\x99\xf6\x99\xf0\x47\x69\xcd\xbd\xf1\x7b\xeb\x41\x0e\x01\x3b\xee\xb0\xc3\xbf\xe6\xee\x8e\x20\x49\x14\x47\x67\xf9\x25\x99\xd8\x33\xf0\x71\x94\xe7\x9d\xa5\x6f\x7d\x93\x74\x06\x33\xf8\xf7\xe2\x29\xfc\x1b\x3c\xb7\x62\xde\x19\x3a\xd6\xaa\xec\x8c\x3c\x2b\x4f\x3b\xb3\x89\x95\xde\x74\x26\xcf\xac\xb2\xea\x78\x4b\xeb\x67\xac\xf3\x5b\x0b\x8b\xab\x8e\xe3\x5b\x85\xee\x3c\xf1\xac\x22\xed\x2c\x26\xd6\xd5\xba\xf3\x64\x6c\x09\xdd\x71\x03\x6b\x25\x3a\x23\xd7\xd2\x65\x27\xf0\xac\x48\x75\x06\x5f\x59\xaa\xec\xf8\x0b\x4b\xdd\x74\x7c\xc7\xba\x96\x9d\xa7\x9e\xb5\x4e\x81\x42\x75\xdd\x59\xda\x78\x87\x00\x56\xe4\xe4\xeb\x54\xa8\xc4\xfa\xf3\x7f\xff\xf3\x3f\xfb\x93\x7f\xf2\x67\xbf\xfa\xc3\xef\x7f\xe7\xef\x5a\x7f\xfe\xeb\x6f\xff\xe2\xdf\xfe\x53\xf3\xf2\x97\xbf\xf9\x7b\x7f\xf1\x6f\xfe\xf9\xf7\xbf\xfa\x0f\x7f\xf9\x9b\xbf\xff\xee\x87\xff\xf1\x8f\x7f\xf9\xfd\xaf\xff\x2b\x7c\x18\xf2\x4a\xab\x28\xb1\x46\x25\xcb\xbf\xfb\x7d\x26\x94\x35\xe3\x31\x2f\x53\x96\xc7\xca\x9a\x30\x7d\x23\xf8\x9f\xfe\xa2\xb2\xde\xfc\xcb\xb7\x7f\xe7\xed\xb7\x6f\xbf\x7d\xf3\xc7\x6f\x7e\xf5\xe6\xd7\xd6\xf7\xbf\xfb\xaf\xbf\xff\xbd\x7f\xf7\x3f\xff\xe0\x5f\x58\x8e\x2a\xd8\x77\x7f\x24\x53\x6b\x21\x4b\x5d\xad\xab\xef\xfe\x40\xd1\x58\xd2\x27\x25\x53\x02\x1a\x53\x75\x2d\xac\x37\x7f\xf4\xf6\x1f\xbc\xf9\x2f\x6f\xfe\xe3\x9b\x5f\xbe\xfd\xb9\xa1\x61\xb9\x9a\xa5\x02\xd2\x58\xbf\x92\x19\x4b\x99\xc8\x79\x6e\x05\xdf\xfd\xa6\xbc\xfe\xee\xf7\xb9\xf5\xdf\xff\x11\xff\xd3\x5f\x68\x91\x33\xeb\xcd\x2f\xde\xfe\xfc\xcd\x7f\xab\x07\xf9\x37\x3c\x57\xd7\xcc\xfa\x3f\xff\xec\xf7\xfe\xd7\x7f\xfe\xc3\xff\xfd\x3b\xff\xc9\x1a\xb3\x94\xaf\xa5\xf5\xe6\x5f\xbd\xf9\xe3\xb7\x3f\x7f\xf3\xcb\xb7\xbf\xfb\xe6\x4f\xde\x7e\xfb\xf6\x1f\x9a\x65\x12\x93\x29\xc6\x18\x0f\xc1\xfe\x21\x08\x15\x22\xba\xe6\xa5\x91\x6f\x17\x1a\x21\xb9\xbd\x24\x28\x60\x14\x34\x41\x29\xd3\x3e\xfd\x26\x21\x28\x6a\x7c\xec\x04\xcf\x09\xfe\xbb\x7d\x43\xd1\xe3\xdf\x9e\x11\x94\x3f\xc0\x8f\x92\xa0\x12\xd0\x3e\xcd\x53\x82\x9a\x40\xfb\x34\xbd\x21\xa8\x0e\xb4\x4f\xcb\x8a\xa0\x4e\xd0\x3e\xfd\x19\x23\xa8\x18\x30\xa7\x22\xa8\x1d\xb4\x4f\xf1\x97\xa0\x96\xc0\x5b\x4a\x50\x55\x68\x9f\x5e\xad\x09\xea\x0b\xed\x53\xa1\x09\x2a\x0d\x4c\x28\x08\x6a\x0e\x82\x42\x82\xea\x03\xb9\x2d\xfc\x12\x54\x23\xda\xa7\xaa\x24\xa8\x4b\xf0\x78\x43\x50\xa1\x68\x9f\x5e\x4b\x82\x5a\x45\xfb\x74\x9d\x12\x54\x2d\xda\xa7\xd5\x35\xc1\x4c\xa6\xb9\x9b\x94\xb1\xa2\xc0\xbf\xd8\x90\x2d\x68\x16\xa5\x0c\x8f\x01\x10\x4f\x74\xb5\xcc\xd2\xbe\xc8\x05\x79\xb9\xed\xd1\xad\x87\x5d\x12\xf2\x52\x42\x02\x7c\x49\xfc\x8b\xf9\xf3\x70\x34\x9f\x07\x8e\x17\x3e\xf1\xcc\xb5\xf7\x16\x5e\xf3\x13\x79\x4b\x6f\x78\x59\x97\x84\xdf\xad\x4b\x60\xaa\x01\x60\x66\x2c\x9b\xdb\x9a\x2b\x29\x35\x2f\xf7\xe8\x3e\x73\xbc\xfa\xcf\xe9\x9a\x34\x12\xa8\x62\x7d\xb7\xfd\xf7\x06\xe6\xcf\x06\xea\xda\xf3\x07\x48\x05\xce\x74\x31\xb1\x03\x27\xc4\x52\x6b\x5d\xb6\x45\xaa\xff\x37\x00\x00\xff\xff\x96\x09\x27\x55\xb9\x39\x00\x00") func confAppIniBytes() ([]byte, error) { return bindataRead( @@ -307,7 +307,7 @@ func confAppIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "conf/app.ini", size: 14604, mode: os.FileMode(420), modTime: time.Unix(1487446067, 0)} + info := bindataFileInfo{name: "conf/app.ini", size: 14777, mode: os.FileMode(420), modTime: time.Unix(1487462012, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/modules/cron/cron.go b/modules/cron/cron.go index d11de18c2..79d7b76c3 100644 --- a/modules/cron/cron.go +++ b/modules/cron/cron.go @@ -25,7 +25,7 @@ func NewContext() { if setting.Cron.UpdateMirror.Enabled { entry, err = c.AddFunc("Update mirrors", setting.Cron.UpdateMirror.Schedule, models.MirrorUpdate) if err != nil { - log.Fatal(4, "Cron[Update mirrors]: %v", err) + log.Fatal(2, "Cron.(update mirrors): %v", err) } if setting.Cron.UpdateMirror.RunAtStart { entry.Prev = time.Now() @@ -36,7 +36,7 @@ func NewContext() { if setting.Cron.RepoHealthCheck.Enabled { entry, err = c.AddFunc("Repository health check", setting.Cron.RepoHealthCheck.Schedule, models.GitFsck) if err != nil { - log.Fatal(4, "Cron[Repository health check]: %v", err) + log.Fatal(2, "Cron.(repository health check): %v", err) } if setting.Cron.RepoHealthCheck.RunAtStart { entry.Prev = time.Now() @@ -47,7 +47,7 @@ func NewContext() { if setting.Cron.CheckRepoStats.Enabled { entry, err = c.AddFunc("Check repository statistics", setting.Cron.CheckRepoStats.Schedule, models.CheckRepoStats) if err != nil { - log.Fatal(4, "Cron[Check repository statistics]: %v", err) + log.Fatal(2, "Cron.(check repository statistics): %v", err) } if setting.Cron.CheckRepoStats.RunAtStart { entry.Prev = time.Now() @@ -55,6 +55,17 @@ func NewContext() { go models.CheckRepoStats() } } + if setting.Cron.RepoArchiveCleanup.Enabled { + entry, err = c.AddFunc("Repository archive cleanup", setting.Cron.RepoArchiveCleanup.Schedule, models.DeleteOldRepositoryArchives) + if err != nil { + log.Fatal(2, "Cron.(repository archive cleanup): %v", err) + } + if setting.Cron.RepoArchiveCleanup.RunAtStart { + entry.Prev = time.Now() + entry.ExecTimes++ + go models.DeleteOldRepositoryArchives() + } + } c.Start() } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 575e36706..f0960aef5 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -208,6 +208,12 @@ var ( RunAtStart bool Schedule string } `ini:"cron.check_repo_stats"` + RepoArchiveCleanup struct { + Enabled bool + RunAtStart bool + Schedule string + OlderThan time.Duration + } `ini:"cron.repo_archive_cleanup"` } // Git settings diff --git a/templates/.VERSION b/templates/.VERSION index 12da8012b..2e342e329 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.9.158.0218 \ No newline at end of file +0.9.159.0218 \ No newline at end of file diff --git a/vendor/github.com/gogits/git-module/repo_commit.go b/vendor/github.com/gogits/git-module/repo_commit.go index 6424c5a64..54aca6c2a 100644 --- a/vendor/github.com/gogits/git-module/repo_commit.go +++ b/vendor/github.com/gogits/git-module/repo_commit.go @@ -209,7 +209,7 @@ func (repo *Repository) CommitsByRangeSize(revision string, page, size int) (*li return repo.parsePrettyFormatLogToList(stdout) } -const DEFAULT_COMMITS_PAGE_SIZE = 50 +const DEFAULT_COMMITS_PAGE_SIZE = 30 func (repo *Repository) CommitsByRange(revision string, page int) (*list.List, error) { return repo.CommitsByRangeSize(revision, page, DEFAULT_COMMITS_PAGE_SIZE) diff --git a/vendor/vendor.json b/vendor/vendor.json index 298dac149..81ec3600e 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -159,10 +159,10 @@ "revisionTime": "2016-08-10T03:50:02Z" }, { - "checksumSHA1": "mR45j8svu6CZu81VqN+lfgpCVjA=", + "checksumSHA1": "JPQWxQRYFpezMThuSqcPhvbJdq4=", "path": "github.com/gogits/git-module", - "revision": "fa2ace85ecb113f89f6862d8a6e3075a7aa425b9", - "revisionTime": "2017-02-18T23:35:37Z" + "revision": "c882f3d24df5fb730d3b3c1b6cc64416dd22660c", + "revisionTime": "2017-02-18T23:44:51Z" }, { "checksumSHA1": "xvG+RgJODQqlmdAkHUQK2TyLR88=",