From 3c911197caf0204950c3ec267559f9d685ac35c4 Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Thu, 26 Oct 2023 10:06:00 +0200 Subject: [PATCH 01/13] some xormigrate mig --- cmd/server/setup.go | 4 +- go.mod | 1 + go.sum | 6 + server/store/datastore/engine.go | 5 +- .../migration/000_legacy_to_xormigrate.go | 73 +++++ .../{ => legacy}/000_legacy_to_xorm.go | 2 +- .../{ => legacy}/001_repos_drop_fallback.go | 2 +- ...002_repos_drop_allow_deploys_allow_tags.go | 2 +- .../003_fix_pr_secret_event_name.go | 2 +- .../004_repos_drop_repo_counter.go | 2 +- .../{ => legacy}/005_drop_senders.go | 2 +- .../{ => legacy}/006_log_data_type.go | 2 +- .../{ => legacy}/007_secrets_add_user.go | 2 +- .../008_lowercase_secret_names.go | 2 +- .../{ => legacy}/008_recreate_agents_table.go | 2 +- .../009_rename_builds_to_pipeline.go | 2 +- .../010_columns_rename_builds_to_pipeline.go | 2 +- .../011_columns_rename_procs_to_steps.go | 2 +- .../012_rename_remote_to_forge.go | 2 +- .../013_rename_forge_id_to_forge_remote_id.go | 2 +- .../014_remove_active_from_users.go | 2 +- .../{ => legacy}/015_remove_inactive_repos.go | 2 +- .../{ => legacy}/016_remove_files_table.go | 2 +- .../{ => legacy}/017_remove_machine_col.go | 2 +- .../{ => legacy}/018_drop_old_cols.go | 2 +- .../{ => legacy}/019_alter_logs_table.go | 2 +- .../020_parent_steps_to_workflows.go | 2 +- .../migration/{ => legacy}/021_add_orgs.go | 2 +- .../migration/{ => legacy}/022_add_org_id.go | 2 +- .../{ => legacy}/023_task_data_type.go | 2 +- .../{ => legacy}/024_config_data_type.go | 2 +- .../025_remove_secrets_plugin_only_col.go | 2 +- .../datastore/migration/legacy/common.go | 255 ++++++++++++++++++ .../datastore/migration/legacy/common_test.go | 65 +++++ .../datastore/migration/legacy/migration.go | 227 ++++++++++++++++ .../migration/{ => legacy}/migration_test.go | 2 +- server/store/datastore/migration/migration.go | 190 +------------ server/store/store.go | 2 +- 38 files changed, 673 insertions(+), 211 deletions(-) create mode 100644 server/store/datastore/migration/000_legacy_to_xormigrate.go rename server/store/datastore/migration/{ => legacy}/000_legacy_to_xorm.go (99%) rename server/store/datastore/migration/{ => legacy}/001_repos_drop_fallback.go (97%) rename server/store/datastore/migration/{ => legacy}/002_repos_drop_allow_deploys_allow_tags.go (97%) rename server/store/datastore/migration/{ => legacy}/003_fix_pr_secret_event_name.go (98%) rename server/store/datastore/migration/{ => legacy}/004_repos_drop_repo_counter.go (97%) rename server/store/datastore/migration/{ => legacy}/005_drop_senders.go (97%) rename server/store/datastore/migration/{ => legacy}/006_log_data_type.go (98%) rename server/store/datastore/migration/{ => legacy}/007_secrets_add_user.go (98%) rename server/store/datastore/migration/{ => legacy}/008_lowercase_secret_names.go (97%) rename server/store/datastore/migration/{ => legacy}/008_recreate_agents_table.go (98%) rename server/store/datastore/migration/{ => legacy}/009_rename_builds_to_pipeline.go (98%) rename server/store/datastore/migration/{ => legacy}/010_columns_rename_builds_to_pipeline.go (99%) rename server/store/datastore/migration/{ => legacy}/011_columns_rename_procs_to_steps.go (99%) rename server/store/datastore/migration/{ => legacy}/012_rename_remote_to_forge.go (98%) rename server/store/datastore/migration/{ => legacy}/013_rename_forge_id_to_forge_remote_id.go (97%) rename server/store/datastore/migration/{ => legacy}/014_remove_active_from_users.go (97%) rename server/store/datastore/migration/{ => legacy}/015_remove_inactive_repos.go (98%) rename server/store/datastore/migration/{ => legacy}/016_remove_files_table.go (97%) rename server/store/datastore/migration/{ => legacy}/017_remove_machine_col.go (98%) rename server/store/datastore/migration/{ => legacy}/018_drop_old_cols.go (98%) rename server/store/datastore/migration/{ => legacy}/019_alter_logs_table.go (99%) rename server/store/datastore/migration/{ => legacy}/020_parent_steps_to_workflows.go (99%) rename server/store/datastore/migration/{ => legacy}/021_add_orgs.go (99%) rename server/store/datastore/migration/{ => legacy}/022_add_org_id.go (98%) rename server/store/datastore/migration/{ => legacy}/023_task_data_type.go (98%) rename server/store/datastore/migration/{ => legacy}/024_config_data_type.go (98%) rename server/store/datastore/migration/{ => legacy}/025_remove_secrets_plugin_only_col.go (98%) create mode 100644 server/store/datastore/migration/legacy/common.go create mode 100644 server/store/datastore/migration/legacy/common_test.go create mode 100644 server/store/datastore/migration/legacy/migration.go rename server/store/datastore/migration/{ => legacy}/migration_test.go (99%) diff --git a/cmd/server/setup.go b/cmd/server/setup.go index 052bc2750d..8cea73d5a6 100644 --- a/cmd/server/setup.go +++ b/cmd/server/setup.go @@ -52,7 +52,7 @@ import ( ) func setupStore(c *cli.Context) (store.Store, error) { - // TODO: find a better way than global var to pass down to allow long migrations + // TODO: find a better way than global var to pass down to allow long migrations -> remove for 3.x server.Config.Server.Migrations.AllowLong = c.Bool("migrations-allow-long") datasource := c.String("datasource") driver := c.String("driver") @@ -90,7 +90,7 @@ func setupStore(c *cli.Context) (store.Store, error) { log.Fatal().Err(err).Msg("could not open datastore") } - if err := store.Migrate(); err != nil { + if err := store.Migrate(c.Bool("migrations-allow-long")); err != nil { log.Fatal().Err(err).Msg("could not migrate datastore") } diff --git a/go.mod b/go.mod index 6832fce756..1d389436fa 100644 --- a/go.mod +++ b/go.mod @@ -58,6 +58,7 @@ require ( k8s.io/api v0.28.3 k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 + src.techknowlogick.com/xormigrate v1.6.0 xorm.io/builder v0.3.13 xorm.io/xorm v1.3.3 ) diff --git a/go.sum b/go.sum index 417ddfd680..6124937a7b 100644 --- a/go.sum +++ b/go.sum @@ -60,6 +60,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0= github.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE= +github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw= github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= @@ -143,7 +144,9 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -234,6 +237,7 @@ github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jellydator/ttlcache/v3 v3.1.0 h1:0gPFG0IHHP6xyUyXq+JaD8fwkDCqgqwohXNJBcYE71g= github.com/jellydator/ttlcache/v3 v3.1.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -661,6 +665,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kF sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +src.techknowlogick.com/xormigrate v1.6.0 h1:uHpHrQuHYoa7G8wVNNOuEZbVoc///NBdqS1EN3Zgjzw= +src.techknowlogick.com/xormigrate v1.6.0/go.mod h1:YGNBdj8prENlySwIKmfoEXp7ILGjAltyKFXD0qLgD7U= xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= xorm.io/builder v0.3.13 h1:a3jmiVVL19psGeXx8GIurTp7p0IIgqeDmwhcR6BAOAo= xorm.io/builder v0.3.13/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= diff --git a/server/store/datastore/engine.go b/server/store/datastore/engine.go index d856f6acda..cf9838c2d5 100644 --- a/server/store/datastore/engine.go +++ b/server/store/datastore/engine.go @@ -16,6 +16,7 @@ package datastore import ( "github.com/rs/zerolog" + "github.com/woodpecker-ci/woodpecker/server/store" "github.com/woodpecker-ci/woodpecker/server/store/datastore/migration" @@ -54,8 +55,8 @@ func (s storage) Ping() error { } // Migrate old storage or init new one -func (s storage) Migrate() error { - return migration.Migrate(s.engine) +func (s storage) Migrate(allowLong bool) error { + return migration.Migrate(s.engine, allowLong) } func (s storage) Close() error { diff --git a/server/store/datastore/migration/000_legacy_to_xormigrate.go b/server/store/datastore/migration/000_legacy_to_xormigrate.go new file mode 100644 index 0000000000..2b3f1a5d2f --- /dev/null +++ b/server/store/datastore/migration/000_legacy_to_xormigrate.go @@ -0,0 +1,73 @@ +package migration + +import ( + "fmt" + + "github.com/rs/zerolog/log" + "src.techknowlogick.com/xormigrate" + "xorm.io/xorm" + + "github.com/woodpecker-ci/woodpecker/server/store/datastore/migration/legacy" +) + +type v000Migrations struct { + Name string `xorm:"UNIQUE"` +} + +func (m *v000Migrations) TableName() string { + return "migrations" +} + +var legacyToXormigrate = xormigrate.Migration{ + ID: "legacy-to-xormigrate", + Migrate: func(engine *xorm.Engine) error { + legacyMigrations := []string{ + "xorm", + "alter-table-drop-repo-fallback", + "drop-allow-push-tags-deploys-columns", + "fix-pr-secret-event-name", + "alter-table-drop-counter", + "drop-senders", + "alter-table-logs-update-type-of-data", + "alter-table-add-secrets-user-id", + "recreate-agents-table", + "lowercase-secret-names", + "rename-builds-to-pipeline", + "rename-columns-builds-to-pipeline", + "rename-procs-to-steps", + "rename-remote-to-forge", + "rename-forge-id-to-forge-remote-id", + "remove-active-from-users", + "remove-inactive-repos", + "drop-files", + "remove-machine-col", + "parent-steps-to-workflows", + "drop-old-col", + "init-log_entries", + //"migrate-logs-to-log_entries", -> not required so we just skip it + "add-orgs", + "add-org-id", + "alter-table-tasks-update-type-of-task-data", + "alter-table-config-update-type-of-config-data", + "remove-plugin-only-option-from-secrets-table", + } + + // TODO remove in 3.x + if err := legacy.Migrate(engine); err != nil { + return err + } + + for _, mig := range legacyMigrations { + exist, err := engine.Exist(&v000Migrations{mig}) + if err != nil { + return fmt.Errorf("test migration existence: %w", err) + } + if !exist { + log.Error().Msgf("migration step '%s' missing, please upgrade to last stable v2.x version first", mig) + return fmt.Errorf("legacy migration step missing") + } + } + + return engine.DropTables("migrations") + }, +} diff --git a/server/store/datastore/migration/000_legacy_to_xorm.go b/server/store/datastore/migration/legacy/000_legacy_to_xorm.go similarity index 99% rename from server/store/datastore/migration/000_legacy_to_xorm.go rename to server/store/datastore/migration/legacy/000_legacy_to_xorm.go index a56bde1cd4..556336fa9a 100644 --- a/server/store/datastore/migration/000_legacy_to_xorm.go +++ b/server/store/datastore/migration/legacy/000_legacy_to_xorm.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "fmt" diff --git a/server/store/datastore/migration/001_repos_drop_fallback.go b/server/store/datastore/migration/legacy/001_repos_drop_fallback.go similarity index 97% rename from server/store/datastore/migration/001_repos_drop_fallback.go rename to server/store/datastore/migration/legacy/001_repos_drop_fallback.go index 4ad5d56b64..feb26b26fa 100644 --- a/server/store/datastore/migration/001_repos_drop_fallback.go +++ b/server/store/datastore/migration/legacy/001_repos_drop_fallback.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/002_repos_drop_allow_deploys_allow_tags.go b/server/store/datastore/migration/legacy/002_repos_drop_allow_deploys_allow_tags.go similarity index 97% rename from server/store/datastore/migration/002_repos_drop_allow_deploys_allow_tags.go rename to server/store/datastore/migration/legacy/002_repos_drop_allow_deploys_allow_tags.go index f13be09487..3a65ecadad 100644 --- a/server/store/datastore/migration/002_repos_drop_allow_deploys_allow_tags.go +++ b/server/store/datastore/migration/legacy/002_repos_drop_allow_deploys_allow_tags.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/003_fix_pr_secret_event_name.go b/server/store/datastore/migration/legacy/003_fix_pr_secret_event_name.go similarity index 98% rename from server/store/datastore/migration/003_fix_pr_secret_event_name.go rename to server/store/datastore/migration/legacy/003_fix_pr_secret_event_name.go index a7f104a394..584cbde518 100644 --- a/server/store/datastore/migration/003_fix_pr_secret_event_name.go +++ b/server/store/datastore/migration/legacy/003_fix_pr_secret_event_name.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/004_repos_drop_repo_counter.go b/server/store/datastore/migration/legacy/004_repos_drop_repo_counter.go similarity index 97% rename from server/store/datastore/migration/004_repos_drop_repo_counter.go rename to server/store/datastore/migration/legacy/004_repos_drop_repo_counter.go index b2f82d5b6d..b847287015 100644 --- a/server/store/datastore/migration/004_repos_drop_repo_counter.go +++ b/server/store/datastore/migration/legacy/004_repos_drop_repo_counter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/005_drop_senders.go b/server/store/datastore/migration/legacy/005_drop_senders.go similarity index 97% rename from server/store/datastore/migration/005_drop_senders.go rename to server/store/datastore/migration/legacy/005_drop_senders.go index 736b18f01c..61af79e696 100644 --- a/server/store/datastore/migration/005_drop_senders.go +++ b/server/store/datastore/migration/legacy/005_drop_senders.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/006_log_data_type.go b/server/store/datastore/migration/legacy/006_log_data_type.go similarity index 98% rename from server/store/datastore/migration/006_log_data_type.go rename to server/store/datastore/migration/legacy/006_log_data_type.go index 72efef147a..5c713040f7 100644 --- a/server/store/datastore/migration/006_log_data_type.go +++ b/server/store/datastore/migration/legacy/006_log_data_type.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/007_secrets_add_user.go b/server/store/datastore/migration/legacy/007_secrets_add_user.go similarity index 98% rename from server/store/datastore/migration/007_secrets_add_user.go rename to server/store/datastore/migration/legacy/007_secrets_add_user.go index 4c1f91ee2b..904893450f 100644 --- a/server/store/datastore/migration/007_secrets_add_user.go +++ b/server/store/datastore/migration/legacy/007_secrets_add_user.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/008_lowercase_secret_names.go b/server/store/datastore/migration/legacy/008_lowercase_secret_names.go similarity index 97% rename from server/store/datastore/migration/008_lowercase_secret_names.go rename to server/store/datastore/migration/legacy/008_lowercase_secret_names.go index 24dfabcd20..9dbfc7dd70 100644 --- a/server/store/datastore/migration/008_lowercase_secret_names.go +++ b/server/store/datastore/migration/legacy/008_lowercase_secret_names.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/008_recreate_agents_table.go b/server/store/datastore/migration/legacy/008_recreate_agents_table.go similarity index 98% rename from server/store/datastore/migration/008_recreate_agents_table.go rename to server/store/datastore/migration/legacy/008_recreate_agents_table.go index 3728678146..e89a89e396 100644 --- a/server/store/datastore/migration/008_recreate_agents_table.go +++ b/server/store/datastore/migration/legacy/008_recreate_agents_table.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/009_rename_builds_to_pipeline.go b/server/store/datastore/migration/legacy/009_rename_builds_to_pipeline.go similarity index 98% rename from server/store/datastore/migration/009_rename_builds_to_pipeline.go rename to server/store/datastore/migration/legacy/009_rename_builds_to_pipeline.go index 9f263c6ed1..15dd8148eb 100644 --- a/server/store/datastore/migration/009_rename_builds_to_pipeline.go +++ b/server/store/datastore/migration/legacy/009_rename_builds_to_pipeline.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/010_columns_rename_builds_to_pipeline.go b/server/store/datastore/migration/legacy/010_columns_rename_builds_to_pipeline.go similarity index 99% rename from server/store/datastore/migration/010_columns_rename_builds_to_pipeline.go rename to server/store/datastore/migration/legacy/010_columns_rename_builds_to_pipeline.go index dd4ca2e682..03f916d827 100644 --- a/server/store/datastore/migration/010_columns_rename_builds_to_pipeline.go +++ b/server/store/datastore/migration/legacy/010_columns_rename_builds_to_pipeline.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "strings" diff --git a/server/store/datastore/migration/011_columns_rename_procs_to_steps.go b/server/store/datastore/migration/legacy/011_columns_rename_procs_to_steps.go similarity index 99% rename from server/store/datastore/migration/011_columns_rename_procs_to_steps.go rename to server/store/datastore/migration/legacy/011_columns_rename_procs_to_steps.go index 8af344e64e..ef1b6696b6 100644 --- a/server/store/datastore/migration/011_columns_rename_procs_to_steps.go +++ b/server/store/datastore/migration/legacy/011_columns_rename_procs_to_steps.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "strings" diff --git a/server/store/datastore/migration/012_rename_remote_to_forge.go b/server/store/datastore/migration/legacy/012_rename_remote_to_forge.go similarity index 98% rename from server/store/datastore/migration/012_rename_remote_to_forge.go rename to server/store/datastore/migration/legacy/012_rename_remote_to_forge.go index ddcc43ca0d..f09237297e 100644 --- a/server/store/datastore/migration/012_rename_remote_to_forge.go +++ b/server/store/datastore/migration/legacy/012_rename_remote_to_forge.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/013_rename_forge_id_to_forge_remote_id.go b/server/store/datastore/migration/legacy/013_rename_forge_id_to_forge_remote_id.go similarity index 97% rename from server/store/datastore/migration/013_rename_forge_id_to_forge_remote_id.go rename to server/store/datastore/migration/legacy/013_rename_forge_id_to_forge_remote_id.go index 4065b30033..cff019c612 100644 --- a/server/store/datastore/migration/013_rename_forge_id_to_forge_remote_id.go +++ b/server/store/datastore/migration/legacy/013_rename_forge_id_to_forge_remote_id.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/014_remove_active_from_users.go b/server/store/datastore/migration/legacy/014_remove_active_from_users.go similarity index 97% rename from server/store/datastore/migration/014_remove_active_from_users.go rename to server/store/datastore/migration/legacy/014_remove_active_from_users.go index 41bb21af02..84b314e912 100644 --- a/server/store/datastore/migration/014_remove_active_from_users.go +++ b/server/store/datastore/migration/legacy/014_remove_active_from_users.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/015_remove_inactive_repos.go b/server/store/datastore/migration/legacy/015_remove_inactive_repos.go similarity index 98% rename from server/store/datastore/migration/015_remove_inactive_repos.go rename to server/store/datastore/migration/legacy/015_remove_inactive_repos.go index 1c6de6b296..28f646f684 100644 --- a/server/store/datastore/migration/015_remove_inactive_repos.go +++ b/server/store/datastore/migration/legacy/015_remove_inactive_repos.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/016_remove_files_table.go b/server/store/datastore/migration/legacy/016_remove_files_table.go similarity index 97% rename from server/store/datastore/migration/016_remove_files_table.go rename to server/store/datastore/migration/legacy/016_remove_files_table.go index 9396ba0308..1ee7a169b3 100644 --- a/server/store/datastore/migration/016_remove_files_table.go +++ b/server/store/datastore/migration/legacy/016_remove_files_table.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/017_remove_machine_col.go b/server/store/datastore/migration/legacy/017_remove_machine_col.go similarity index 98% rename from server/store/datastore/migration/017_remove_machine_col.go rename to server/store/datastore/migration/legacy/017_remove_machine_col.go index 9c02121ce6..c602285d1f 100644 --- a/server/store/datastore/migration/017_remove_machine_col.go +++ b/server/store/datastore/migration/legacy/017_remove_machine_col.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/018_drop_old_cols.go b/server/store/datastore/migration/legacy/018_drop_old_cols.go similarity index 98% rename from server/store/datastore/migration/018_drop_old_cols.go rename to server/store/datastore/migration/legacy/018_drop_old_cols.go index c13a4091d7..5657a4d720 100644 --- a/server/store/datastore/migration/018_drop_old_cols.go +++ b/server/store/datastore/migration/legacy/018_drop_old_cols.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/019_alter_logs_table.go b/server/store/datastore/migration/legacy/019_alter_logs_table.go similarity index 99% rename from server/store/datastore/migration/019_alter_logs_table.go rename to server/store/datastore/migration/legacy/019_alter_logs_table.go index 419b84ef92..452eead00d 100644 --- a/server/store/datastore/migration/019_alter_logs_table.go +++ b/server/store/datastore/migration/legacy/019_alter_logs_table.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "context" diff --git a/server/store/datastore/migration/020_parent_steps_to_workflows.go b/server/store/datastore/migration/legacy/020_parent_steps_to_workflows.go similarity index 99% rename from server/store/datastore/migration/020_parent_steps_to_workflows.go rename to server/store/datastore/migration/legacy/020_parent_steps_to_workflows.go index 18c21cbb80..2c486d6bfb 100644 --- a/server/store/datastore/migration/020_parent_steps_to_workflows.go +++ b/server/store/datastore/migration/legacy/020_parent_steps_to_workflows.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/021_add_orgs.go b/server/store/datastore/migration/legacy/021_add_orgs.go similarity index 99% rename from server/store/datastore/migration/021_add_orgs.go rename to server/store/datastore/migration/legacy/021_add_orgs.go index 011d6e7d34..76bb67e744 100644 --- a/server/store/datastore/migration/021_add_orgs.go +++ b/server/store/datastore/migration/legacy/021_add_orgs.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "fmt" diff --git a/server/store/datastore/migration/022_add_org_id.go b/server/store/datastore/migration/legacy/022_add_org_id.go similarity index 98% rename from server/store/datastore/migration/022_add_org_id.go rename to server/store/datastore/migration/legacy/022_add_org_id.go index 0ffc8de1ea..57f555b614 100644 --- a/server/store/datastore/migration/022_add_org_id.go +++ b/server/store/datastore/migration/legacy/022_add_org_id.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "fmt" diff --git a/server/store/datastore/migration/023_task_data_type.go b/server/store/datastore/migration/legacy/023_task_data_type.go similarity index 98% rename from server/store/datastore/migration/023_task_data_type.go rename to server/store/datastore/migration/legacy/023_task_data_type.go index 9b788c7e40..48a6efc412 100644 --- a/server/store/datastore/migration/023_task_data_type.go +++ b/server/store/datastore/migration/legacy/023_task_data_type.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/024_config_data_type.go b/server/store/datastore/migration/legacy/024_config_data_type.go similarity index 98% rename from server/store/datastore/migration/024_config_data_type.go rename to server/store/datastore/migration/legacy/024_config_data_type.go index a0fcfa91da..2cf6ec1dac 100644 --- a/server/store/datastore/migration/024_config_data_type.go +++ b/server/store/datastore/migration/legacy/024_config_data_type.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/025_remove_secrets_plugin_only_col.go b/server/store/datastore/migration/legacy/025_remove_secrets_plugin_only_col.go similarity index 98% rename from server/store/datastore/migration/025_remove_secrets_plugin_only_col.go rename to server/store/datastore/migration/legacy/025_remove_secrets_plugin_only_col.go index 5978de16de..03e994029b 100644 --- a/server/store/datastore/migration/025_remove_secrets_plugin_only_col.go +++ b/server/store/datastore/migration/legacy/025_remove_secrets_plugin_only_col.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "xorm.io/xorm" diff --git a/server/store/datastore/migration/legacy/common.go b/server/store/datastore/migration/legacy/common.go new file mode 100644 index 0000000000..f833234427 --- /dev/null +++ b/server/store/datastore/migration/legacy/common.go @@ -0,0 +1,255 @@ +// Copyright 2021 Woodpecker Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package legacy + +import ( + "fmt" + "regexp" + "strings" + + "xorm.io/xorm" + "xorm.io/xorm/schemas" +) + +func renameTable(sess *xorm.Session, old, new string) error { + dialect := sess.Engine().Dialect().URI().DBType + switch dialect { + case schemas.MYSQL: + _, err := sess.Exec(fmt.Sprintf("RENAME TABLE `%s` TO `%s`;", old, new)) + return err + case schemas.POSTGRES, schemas.SQLITE: + _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` RENAME TO `%s`;", old, new)) + return err + default: + return fmt.Errorf("dialect '%s' not supported", dialect) + } +} + +// WARNING: YOU MUST COMMIT THE SESSION AT THE END +func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...string) (err error) { + // Copyright 2017 The Gitea Authors. All rights reserved. + // Use of this source code is governed by a MIT-style + // license that can be found in the LICENSE file. + + if tableName == "" || len(columnNames) == 0 { + return nil + } + // TODO: This will not work if there are foreign keys + + dialect := sess.Engine().Dialect().URI().DBType + switch dialect { + case schemas.SQLITE: + // First drop the indexes on the columns + res, errIndex := sess.Query(fmt.Sprintf("PRAGMA index_list(`%s`)", tableName)) + if errIndex != nil { + return errIndex + } + for _, row := range res { + indexName := row["name"] + indexRes, err := sess.Query(fmt.Sprintf("PRAGMA index_info(`%s`)", indexName)) + if err != nil { + return err + } + if len(indexRes) != 1 { + continue + } + indexColumn := string(indexRes[0]["name"]) + for _, name := range columnNames { + if name == indexColumn { + _, err := sess.Exec(fmt.Sprintf("DROP INDEX `%s`", indexName)) + if err != nil { + return err + } + } + } + } + + // Here we need to get the columns from the original table + sql := fmt.Sprintf("SELECT sql FROM sqlite_master WHERE tbl_name='%s' and type='table'", tableName) + res, err := sess.Query(sql) + if err != nil { + return err + } + tableSQL := normalizeSQLiteTableSchema(string(res[0]["sql"])) + + // Separate out the column definitions + tableSQL = tableSQL[strings.Index(tableSQL, "("):] + + // Remove the required columnNames + tableSQL = removeColumnFromSQLITETableSchema(tableSQL, columnNames...) + + // Ensure the query is ended properly + tableSQL = strings.TrimSpace(tableSQL) + if tableSQL[len(tableSQL)-1] != ')' { + if tableSQL[len(tableSQL)-1] == ',' { + tableSQL = tableSQL[:len(tableSQL)-1] + } + tableSQL += ")" + } + + // Find all the columns in the table + var columns []string + for _, rawColumn := range strings.Split(strings.ReplaceAll(tableSQL[1:len(tableSQL)-1], ", ", ",\n"), "\n") { + if strings.ContainsAny(rawColumn, "()") { + continue + } + rawColumn = strings.TrimSpace(rawColumn) + columns = append(columns, + strings.ReplaceAll(rawColumn[0:strings.Index(rawColumn, " ")], "`", ""), + ) + } + + tableSQL = fmt.Sprintf("CREATE TABLE `new_%s_new` ", tableName) + tableSQL + if _, err := sess.Exec(tableSQL); err != nil { + return err + } + + // Now restore the data + columnsSeparated := strings.Join(columns, ",") + insertSQL := fmt.Sprintf("INSERT INTO `new_%s_new` (%s) SELECT %s FROM %s", tableName, columnsSeparated, columnsSeparated, tableName) + if _, err := sess.Exec(insertSQL); err != nil { + return err + } + + // Now drop the old table + if _, err := sess.Exec(fmt.Sprintf("DROP TABLE `%s`", tableName)); err != nil { + return err + } + + // Rename the table + if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `new_%s_new` RENAME TO `%s`", tableName, tableName)); err != nil { + return err + } + case schemas.POSTGRES: + cols := "" + for _, col := range columnNames { + if cols != "" { + cols += ", " + } + cols += "DROP COLUMN `" + col + "` CASCADE" + } + if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil { + return fmt.Errorf("drop table `%s` columns %v: %w", tableName, columnNames, err) + } + case schemas.MYSQL: + // Drop indexes on columns first + sql := fmt.Sprintf("SHOW INDEX FROM %s WHERE column_name IN ('%s')", tableName, strings.Join(columnNames, "','")) + res, err := sess.Query(sql) + if err != nil { + return err + } + for _, index := range res { + indexName := index["column_name"] + if len(indexName) > 0 { + _, err := sess.Exec(fmt.Sprintf("DROP INDEX `%s` ON `%s`", indexName, tableName)) + if err != nil { + return err + } + } + } + + // Now drop the columns + cols := "" + for _, col := range columnNames { + if cols != "" { + cols += ", " + } + cols += "DROP COLUMN `" + col + "`" + } + if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil { + return fmt.Errorf("drop table `%s` columns %v: %w", tableName, columnNames, err) + } + default: + return fmt.Errorf("dialect '%s' not supported", dialect) + } + + return nil +} + +func alterColumnDefault(sess *xorm.Session, table, column, defValue string) error { + dialect := sess.Engine().Dialect().URI().DBType + switch dialect { + case schemas.MYSQL, schemas.POSTGRES: + _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` ALTER COLUMN `%s` SET DEFAULT %s;", table, column, defValue)) + return err + case schemas.SQLITE: + return nil + default: + return fmt.Errorf("dialect '%s' not supported", dialect) + } +} + +func alterColumnNull(sess *xorm.Session, table, column string, null bool) error { + val := "NULL" + if !null { + val = "NOT NULL" + } + dialect := sess.Engine().Dialect().URI().DBType + switch dialect { + case schemas.MYSQL: + _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` COLUMN `%s` SET %s;", table, column, val)) + return err + case schemas.POSTGRES: + _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` ALTER COLUMN `%s` SET %s;", table, column, val)) + return err + case schemas.SQLITE: + return nil + default: + return fmt.Errorf("dialect '%s' not supported", dialect) + } +} + +func renameColumn(sess *xorm.Session, table, column, newName string) error { + dialect := sess.Engine().Dialect().URI().DBType + switch dialect { + case schemas.MYSQL, + schemas.POSTGRES, + schemas.SQLITE: + _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` RENAME COLUMN `%s` TO `%s`;", table, column, newName)) + return err + default: + return fmt.Errorf("dialect '%s' not supported", dialect) + } +} + +var ( + whitespaces = regexp.MustCompile(`\s+`) + columnSeparator = regexp.MustCompile(`\s?,\s?`) +) + +func removeColumnFromSQLITETableSchema(schema string, names ...string) string { + if len(names) == 0 { + return schema + } + for i := range names { + if len(names[i]) == 0 { + continue + } + schema = regexp.MustCompile(`\s(`+ + regexp.QuoteMeta("`"+names[i]+"`")+ + "|"+ + regexp.QuoteMeta(names[i])+ + ")[^`,)]*?[,)]").ReplaceAllString(schema, "") + } + return schema +} + +func normalizeSQLiteTableSchema(schema string) string { + return columnSeparator.ReplaceAllString( + whitespaces.ReplaceAllString( + strings.ReplaceAll(schema, "\n", " "), + " "), + ", ") +} diff --git a/server/store/datastore/migration/legacy/common_test.go b/server/store/datastore/migration/legacy/common_test.go new file mode 100644 index 0000000000..1887e83f1a --- /dev/null +++ b/server/store/datastore/migration/legacy/common_test.go @@ -0,0 +1,65 @@ +// Copyright 2023 Woodpecker Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package legacy + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRemoveColumnFromSQLITETableSchema(t *testing.T) { + schema := "CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, repo_user_id INTEGER, repo_owner TEXT, " + + "repo_name TEXT, repo_full_name TEXT, `repo_avatar` TEXT, repo_branch TEXT, repo_timeout INTEGER, " + + "repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, " + + "repo_fallback BOOLEAN, UNIQUE(repo_full_name) )" + + assert.EqualValues(t, schema, removeColumnFromSQLITETableSchema(schema, "")) + + assert.EqualValues(t, "CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, repo_user_id INTEGER, repo_owner TEXT, "+ + "repo_name TEXT, repo_full_name TEXT, repo_branch TEXT, repo_timeout INTEGER, "+ + "repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+ + "repo_fallback BOOLEAN, UNIQUE(repo_full_name) )", removeColumnFromSQLITETableSchema(schema, "repo_avatar")) + + assert.EqualValues(t, "CREATE TABLE repos ( repo_user_id INTEGER, repo_owner TEXT, "+ + "repo_name TEXT, repo_full_name TEXT, `repo_avatar` TEXT, repo_timeout INTEGER, "+ + "repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+ + "repo_fallback BOOLEAN, UNIQUE(repo_full_name) )", removeColumnFromSQLITETableSchema(schema, "repo_id", "repo_branch", "invalid", "")) +} + +func TestNormalizeSQLiteTableSchema(t *testing.T) { + assert.EqualValues(t, "", normalizeSQLiteTableSchema(``)) + assert.EqualValues(t, + "CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, "+ + "repo_user_id INTEGER, repo_owner TEXT, repo_name TEXT, repo_full_name TEXT, "+ + "`repo_avatar` TEXT, repo_link TEXT, repo_clone TEXT, repo_branch TEXT, "+ + "repo_timeout INTEGER, repo_allow_pr BOOLEAN, repo_config_path TEXT, "+ + "repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+ + "repo_fallback BOOLEAN, UNIQUE(repo_full_name) )", + normalizeSQLiteTableSchema(`CREATE TABLE repos ( + repo_id INTEGER PRIMARY KEY AUTOINCREMENT +,repo_user_id INTEGER +,repo_owner TEXT, + repo_name TEXT +,repo_full_name TEXT +,`+"`"+`repo_avatar`+"`"+` TEXT +,repo_link TEXT +,repo_clone TEXT +,repo_branch TEXT ,repo_timeout INTEGER +,repo_allow_pr BOOLEAN +,repo_config_path TEXT +, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, repo_fallback BOOLEAN,UNIQUE(repo_full_name) +)`)) +} diff --git a/server/store/datastore/migration/legacy/migration.go b/server/store/datastore/migration/legacy/migration.go new file mode 100644 index 0000000000..cda3a398a0 --- /dev/null +++ b/server/store/datastore/migration/legacy/migration.go @@ -0,0 +1,227 @@ +// Copyright 2021 Woodpecker Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package legacy + +import ( + "context" + "errors" + "fmt" + "reflect" + "time" + + "github.com/rs/zerolog/log" + "xorm.io/xorm" + + "github.com/woodpecker-ci/woodpecker/server/model" +) + +// APPEND NEW MIGRATIONS +// they are executed in order and if one fails woodpecker will try to rollback that specific one and quits +var migrationTasks = []*task{ + &legacy2Xorm, + &alterTableReposDropFallback, + &alterTableReposDropAllowDeploysAllowTags, + &fixPRSecretEventName, + &alterTableReposDropCounter, + &dropSenders, + &alterTableLogUpdateColumnLogDataType, + &alterTableSecretsAddUserCol, + &recreateAgentsTable, + &lowercaseSecretNames, + &renameBuildsToPipeline, + &renameColumnsBuildsToPipeline, + &renameTableProcsToSteps, + &renameRemoteToForge, + &renameForgeIDToForgeRemoteID, + &removeActiveFromUsers, + &removeInactiveRepos, + &dropFiles, + &removeMachineCol, + &dropOldCols, + &initLogsEntriesTable, + &migrateLogs2LogEntries, + &parentStepsToWorkflows, + &addOrgs, + &addOrgID, + &alterTableTasksUpdateColumnTaskDataType, + &alterTableConfigUpdateColumnConfigDataType, + &removePluginOnlyOptionFromSecretsTable, +} + +var allBeans = []interface{}{ + new(model.Agent), + new(model.Pipeline), + new(model.PipelineConfig), + new(model.Config), + new(model.LogEntry), + new(model.Perm), + new(model.Step), + new(model.Registry), + new(model.Repo), + new(model.Secret), + new(model.Task), + new(model.User), + new(model.ServerConfig), + new(model.Cron), + new(model.Redirection), + new(model.Workflow), + new(model.Org), +} + +type migrations struct { + Name string `xorm:"UNIQUE"` +} + +type task struct { + name string + required bool + fn func(sess *xorm.Session) error + // engineFn does manage session on it's own. only use it if you really need to + engineFn func(e *xorm.Engine) error +} + +func Migrate(e *xorm.Engine) error { + e.SetDisableGlobalCache(true) + + if err := e.Sync(new(migrations)); err != nil { + return fmt.Errorf("error to create migrations table: %w", err) + } + + sess := e.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return fmt.Errorf("could not create initial migration session: %w", err) + } + + // check if we have a fresh installation or need to check for migrations + c, err := sess.Count(new(migrations)) + if err != nil { + return fmt.Errorf("could not count migrations: %w", err) + } + + if c == 0 { + // skip if nothing's there yet -> will be handled by Xormigrate + return sess.Commit() + } + + if err := sess.Commit(); err != nil { + return fmt.Errorf("could not commit initial migration session: %w", err) + } + + if err := runTasks(e, migrationTasks); err != nil { + return fmt.Errorf("run tasks failed: %w", err) + } + + e.SetDisableGlobalCache(false) + + if err := syncAll(e); err != nil { + return fmt.Errorf("msg: %w", err) + } + + return nil +} + +func runTasks(e *xorm.Engine, tasks []*task) error { + // cache migrations in db + migCache := make(map[string]bool) + var migList []*migrations + if err := e.Find(&migList); err != nil { + return err + } + for i := range migList { + migCache[migList[i].Name] = true + } + + for _, task := range tasks { + if migCache[task.name] { + log.Trace().Msgf("migration task '%s' already applied", task.name) + continue + } + + log.Trace().Msgf("start migration task '%s'", task.name) + aliveMsgCancel := showBeAliveSign(task.name) + defer aliveMsgCancel(nil) + var taskErr error + if task.fn != nil { + sess := e.NewSession().NoCache() + defer sess.Close() + if err := sess.Begin(); err != nil { + return fmt.Errorf("could not begin session for '%s': %w", task.name, err) + } + + if taskErr = task.fn(sess); taskErr != nil { + aliveMsgCancel(nil) + if err := sess.Rollback(); err != nil { + taskErr = errors.Join(taskErr, err) + } + } else if err := sess.Commit(); err != nil { + return fmt.Errorf("could not commit session for '%s': %w", task.name, err) + } + } else if task.engineFn != nil { + taskErr = task.engineFn(e) + } else { + log.Trace().Msgf("skip migration task '%s'", task.name) + aliveMsgCancel(nil) + continue + } + + aliveMsgCancel(nil) + if taskErr != nil { + if task.required { + return fmt.Errorf("migration task '%s' failed: %w", task.name, taskErr) + } + log.Error().Err(taskErr).Msgf("migration task '%s' failed but is not required", task.name) + continue + } + log.Debug().Msgf("migration task '%s' done", task.name) + + if _, err := e.Insert(&migrations{task.name}); err != nil { + return fmt.Errorf("migration task '%s' could not be marked as finished: %w", task.name, err) + } + + migCache[task.name] = true + } + return nil +} + +type syncEngine interface { + Sync(beans ...interface{}) error +} + +func syncAll(sess syncEngine) error { + for _, bean := range allBeans { + if err := sess.Sync(bean); err != nil { + return fmt.Errorf("Sync error '%s': %w", reflect.TypeOf(bean), err) + } + } + return nil +} + +var showBeAliveSignDelay = time.Second * 20 + +func showBeAliveSign(taskName string) context.CancelCauseFunc { + ctx, cancel := context.WithCancelCause(context.Background()) + go func() { + for { + select { + case <-ctx.Done(): + return + case <-time.After(showBeAliveSignDelay): + log.Info().Msgf("Migration '%s' is still running, please be patient", taskName) + } + } + }() + return cancel +} diff --git a/server/store/datastore/migration/migration_test.go b/server/store/datastore/migration/legacy/migration_test.go similarity index 99% rename from server/store/datastore/migration/migration_test.go rename to server/store/datastore/migration/legacy/migration_test.go index 32e14a5b57..46bba81f0d 100644 --- a/server/store/datastore/migration/migration_test.go +++ b/server/store/datastore/migration/legacy/migration_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package migration +package legacy import ( "os" diff --git a/server/store/datastore/migration/migration.go b/server/store/datastore/migration/migration.go index ca35f73cad..6c497167b4 100644 --- a/server/store/datastore/migration/migration.go +++ b/server/store/datastore/migration/migration.go @@ -15,13 +15,10 @@ package migration import ( - "context" - "errors" "fmt" "reflect" - "time" - "github.com/rs/zerolog/log" + "src.techknowlogick.com/xormigrate" "xorm.io/xorm" "github.com/woodpecker-ci/woodpecker/server/model" @@ -29,35 +26,8 @@ import ( // APPEND NEW MIGRATIONS // they are executed in order and if one fails woodpecker will try to rollback that specific one and quits -var migrationTasks = []*task{ - &legacy2Xorm, - &alterTableReposDropFallback, - &alterTableReposDropAllowDeploysAllowTags, - &fixPRSecretEventName, - &alterTableReposDropCounter, - &dropSenders, - &alterTableLogUpdateColumnLogDataType, - &alterTableSecretsAddUserCol, - &recreateAgentsTable, - &lowercaseSecretNames, - &renameBuildsToPipeline, - &renameColumnsBuildsToPipeline, - &renameTableProcsToSteps, - &renameRemoteToForge, - &renameForgeIDToForgeRemoteID, - &removeActiveFromUsers, - &removeInactiveRepos, - &dropFiles, - &removeMachineCol, - &dropOldCols, - &initLogsEntriesTable, - &migrateLogs2LogEntries, - &parentStepsToWorkflows, - &addOrgs, - &addOrgID, - &alterTableTasksUpdateColumnTaskDataType, - &alterTableConfigUpdateColumnConfigDataType, - &removePluginOnlyOptionFromSecretsTable, +var migrationTasks = []*xormigrate.Migration{ + &legacyToXormigrate, } var allBeans = []interface{}{ @@ -80,70 +50,18 @@ var allBeans = []interface{}{ new(model.Org), } -type migrations struct { - Name string `xorm:"UNIQUE"` -} - -type task struct { - name string - required bool - fn func(sess *xorm.Session) error - // engineFn does manage session on it's own. only use it if you really need to - engineFn func(e *xorm.Engine) error -} - -// initNew create tables for new instance -func initNew(sess *xorm.Session) error { - if err := syncAll(sess); err != nil { - return err - } - - // dummy run migrations - for _, task := range migrationTasks { - if _, err := sess.Insert(&migrations{task.name}); err != nil { - return err - } - } - - return nil -} - -func Migrate(e *xorm.Engine) error { +func Migrate(e *xorm.Engine, allowLong bool) error { e.SetDisableGlobalCache(true) - if err := e.Sync(new(migrations)); err != nil { - return fmt.Errorf("error to create migrations table: %w", err) - } - - sess := e.NewSession() - defer sess.Close() - if err := sess.Begin(); err != nil { - return fmt.Errorf("could not create initial migration session: %w", err) - } - - // check if we have a fresh installation or need to check for migrations - c, err := sess.Count(new(migrations)) - if err != nil { - return fmt.Errorf("could not count migrations: %w", err) - } - - if c == 0 { - if err := initNew(sess); err != nil { - return fmt.Errorf("could not init a new database: %w", err) - } - if err := sess.Commit(); err != nil { - return fmt.Errorf("could not commit initial migration session: %w", err) - } - + m := xormigrate.New(e, migrationTasks) + m.InitSchema(func(engine *xorm.Engine) error { + // do nothing on schema init, models are synced in any case below return nil - } - - if err := sess.Commit(); err != nil { - return fmt.Errorf("could not commit initial migration session: %w", err) - } + }) + m.AllowLong(allowLong) - if err := runTasks(e, migrationTasks); err != nil { - return fmt.Errorf("run tasks failed: %w", err) + if err := m.Migrate(); err != nil { + return err } e.SetDisableGlobalCache(false) @@ -155,74 +73,7 @@ func Migrate(e *xorm.Engine) error { return nil } -func runTasks(e *xorm.Engine, tasks []*task) error { - // cache migrations in db - migCache := make(map[string]bool) - var migList []*migrations - if err := e.Find(&migList); err != nil { - return err - } - for i := range migList { - migCache[migList[i].Name] = true - } - - for _, task := range tasks { - if migCache[task.name] { - log.Trace().Msgf("migration task '%s' already applied", task.name) - continue - } - - log.Trace().Msgf("start migration task '%s'", task.name) - aliveMsgCancel := showBeAliveSign(task.name) - defer aliveMsgCancel(nil) - var taskErr error - if task.fn != nil { - sess := e.NewSession().NoCache() - defer sess.Close() - if err := sess.Begin(); err != nil { - return fmt.Errorf("could not begin session for '%s': %w", task.name, err) - } - - if taskErr = task.fn(sess); taskErr != nil { - aliveMsgCancel(nil) - if err := sess.Rollback(); err != nil { - taskErr = errors.Join(taskErr, err) - } - } else if err := sess.Commit(); err != nil { - return fmt.Errorf("could not commit session for '%s': %w", task.name, err) - } - } else if task.engineFn != nil { - taskErr = task.engineFn(e) - } else { - log.Trace().Msgf("skip migration task '%s'", task.name) - aliveMsgCancel(nil) - continue - } - - aliveMsgCancel(nil) - if taskErr != nil { - if task.required { - return fmt.Errorf("migration task '%s' failed: %w", task.name, taskErr) - } - log.Error().Err(taskErr).Msgf("migration task '%s' failed but is not required", task.name) - continue - } - log.Debug().Msgf("migration task '%s' done", task.name) - - if _, err := e.Insert(&migrations{task.name}); err != nil { - return fmt.Errorf("migration task '%s' could not be marked as finished: %w", task.name, err) - } - - migCache[task.name] = true - } - return nil -} - -type syncEngine interface { - Sync(beans ...interface{}) error -} - -func syncAll(sess syncEngine) error { +func syncAll(sess *xorm.Engine) error { for _, bean := range allBeans { if err := sess.Sync(bean); err != nil { return fmt.Errorf("Sync error '%s': %w", reflect.TypeOf(bean), err) @@ -230,20 +81,3 @@ func syncAll(sess syncEngine) error { } return nil } - -var showBeAliveSignDelay = time.Second * 20 - -func showBeAliveSign(taskName string) context.CancelCauseFunc { - ctx, cancel := context.WithCancelCause(context.Background()) - go func() { - for { - select { - case <-ctx.Done(): - return - case <-time.After(showBeAliveSignDelay): - log.Info().Msgf("Migration '%s' is still running, please be patient", taskName) - } - } - }() - return cancel -} diff --git a/server/store/store.go b/server/store/store.go index 42aa951293..b1d4974188 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -198,5 +198,5 @@ type Store interface { // Store operations Ping() error Close() error - Migrate() error + Migrate(bool) error } From 7abce10f0ee42d55c37aa3d776337b8c43b83e22 Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Fri, 27 Oct 2023 11:26:43 +0200 Subject: [PATCH 02/13] new xormigrate --- go.mod | 4 ++-- go.sum | 4 ++++ server/store/datastore/migration/000_legacy_to_xormigrate.go | 2 +- server/store/datastore/migration/legacy/migration.go | 4 ---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 1d389436fa..df89127a5d 100644 --- a/go.mod +++ b/go.mod @@ -58,9 +58,9 @@ require ( k8s.io/api v0.28.3 k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 - src.techknowlogick.com/xormigrate v1.6.0 + src.techknowlogick.com/xormigrate v1.7.0 xorm.io/builder v0.3.13 - xorm.io/xorm v1.3.3 + xorm.io/xorm v1.3.4 ) require ( diff --git a/go.sum b/go.sum index 6124937a7b..258ea6fd77 100644 --- a/go.sum +++ b/go.sum @@ -667,8 +667,12 @@ sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= src.techknowlogick.com/xormigrate v1.6.0 h1:uHpHrQuHYoa7G8wVNNOuEZbVoc///NBdqS1EN3Zgjzw= src.techknowlogick.com/xormigrate v1.6.0/go.mod h1:YGNBdj8prENlySwIKmfoEXp7ILGjAltyKFXD0qLgD7U= +src.techknowlogick.com/xormigrate v1.7.0 h1:xLphJv5BbeeiVWNL817xiQXxJkKy9Q6ryp3gpLMZDWU= +src.techknowlogick.com/xormigrate v1.7.0/go.mod h1:YGNBdj8prENlySwIKmfoEXp7ILGjAltyKFXD0qLgD7U= xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= xorm.io/builder v0.3.13 h1:a3jmiVVL19psGeXx8GIurTp7p0IIgqeDmwhcR6BAOAo= xorm.io/builder v0.3.13/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= xorm.io/xorm v1.3.3 h1:L5/GOhvgMcwJYYRjzPf3lTTTf6JcaTd1Mb9A/Iqvccw= xorm.io/xorm v1.3.3/go.mod h1:qFJGFoVYbbIdnz2vaL5OxSQ2raleMpyRRalnq3n9OJo= +xorm.io/xorm v1.3.4 h1:vWFKzR3DhGUDl5b4srhUjhDwjxkZAc4C7BFszpu0swI= +xorm.io/xorm v1.3.4/go.mod h1:qFJGFoVYbbIdnz2vaL5OxSQ2raleMpyRRalnq3n9OJo= diff --git a/server/store/datastore/migration/000_legacy_to_xormigrate.go b/server/store/datastore/migration/000_legacy_to_xormigrate.go index 2b3f1a5d2f..ce077fdae4 100644 --- a/server/store/datastore/migration/000_legacy_to_xormigrate.go +++ b/server/store/datastore/migration/000_legacy_to_xormigrate.go @@ -52,7 +52,7 @@ var legacyToXormigrate = xormigrate.Migration{ "remove-plugin-only-option-from-secrets-table", } - // TODO remove in 3.x + // TODO remove in 3.x and move to MigrateSession if err := legacy.Migrate(engine); err != nil { return err } diff --git a/server/store/datastore/migration/legacy/migration.go b/server/store/datastore/migration/legacy/migration.go index cda3a398a0..783c0439ff 100644 --- a/server/store/datastore/migration/legacy/migration.go +++ b/server/store/datastore/migration/legacy/migration.go @@ -93,8 +93,6 @@ type task struct { } func Migrate(e *xorm.Engine) error { - e.SetDisableGlobalCache(true) - if err := e.Sync(new(migrations)); err != nil { return fmt.Errorf("error to create migrations table: %w", err) } @@ -124,8 +122,6 @@ func Migrate(e *xorm.Engine) error { return fmt.Errorf("run tasks failed: %w", err) } - e.SetDisableGlobalCache(false) - if err := syncAll(e); err != nil { return fmt.Errorf("msg: %w", err) } From 42d847be319171c2069608f0f13c60f7c4d86c8c Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Fri, 3 Nov 2023 09:30:27 +0100 Subject: [PATCH 03/13] generate --- pipeline/rpc/proto/woodpecker.pb.go | 2 +- pipeline/rpc/proto/woodpecker_grpc.pb.go | 2 +- server/store/mocks/store.go | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pipeline/rpc/proto/woodpecker.pb.go b/pipeline/rpc/proto/woodpecker.pb.go index 891e2af9c2..3c8cdc9739 100644 --- a/pipeline/rpc/proto/woodpecker.pb.go +++ b/pipeline/rpc/proto/woodpecker.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.24.4 +// protoc v4.24.3 // source: woodpecker.proto package proto diff --git a/pipeline/rpc/proto/woodpecker_grpc.pb.go b/pipeline/rpc/proto/woodpecker_grpc.pb.go index 787f8f6e70..941e19f548 100644 --- a/pipeline/rpc/proto/woodpecker_grpc.pb.go +++ b/pipeline/rpc/proto/woodpecker_grpc.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.4 +// - protoc v4.24.3 // source: woodpecker.proto package proto diff --git a/server/store/mocks/store.go b/server/store/mocks/store.go index 88d88ba24e..d31b37fd31 100644 --- a/server/store/mocks/store.go +++ b/server/store/mocks/store.go @@ -1155,13 +1155,13 @@ func (_m *Store) LogSave(_a0 *model.Step, _a1 []*model.LogEntry) error { return r0 } -// Migrate provides a mock function with given fields: -func (_m *Store) Migrate() error { - ret := _m.Called() +// Migrate provides a mock function with given fields: _a0 +func (_m *Store) Migrate(_a0 bool) error { + ret := _m.Called(_a0) var r0 error - if rf, ok := ret.Get(0).(func() error); ok { - r0 = rf() + if rf, ok := ret.Get(0).(func(bool) error); ok { + r0 = rf(_a0) } else { r0 = ret.Error(0) } From 6a101e7ae8c838b02885d5cef755960c0dc8da67 Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Fri, 3 Nov 2023 09:42:01 +0100 Subject: [PATCH 04/13] fix new db init --- .../migration/legacy/testfiles/.gitignore | 1 + .../migration/legacy/testfiles/sqlite.db | Bin 0 -> 28319744 bytes server/store/datastore/migration/migration.go | 14 ++- .../datastore/migration/migration_test.go | 112 ++++++++++++++++++ 4 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 server/store/datastore/migration/legacy/testfiles/.gitignore create mode 100644 server/store/datastore/migration/legacy/testfiles/sqlite.db create mode 100644 server/store/datastore/migration/migration_test.go diff --git a/server/store/datastore/migration/legacy/testfiles/.gitignore b/server/store/datastore/migration/legacy/testfiles/.gitignore new file mode 100644 index 0000000000..ab1a9904f3 --- /dev/null +++ b/server/store/datastore/migration/legacy/testfiles/.gitignore @@ -0,0 +1 @@ +tmp_* diff --git a/server/store/datastore/migration/legacy/testfiles/sqlite.db b/server/store/datastore/migration/legacy/testfiles/sqlite.db new file mode 100644 index 0000000000000000000000000000000000000000..219e5184afbec16e01ab8478d8f6a22fc64eb450 GIT binary patch literal 28319744 zcmeEv37lJ1z5lH3Y)OFb8x1X`&}nAwz7$HCP8SN@_kyMO+-({eKiCo_ljMHyn3 z_dDlze(U$QX4TSo#){g>R1e8S`KnW@s;jFmh(@cbs;aB1Ce`4#_cIZH)Or8GZ@fR~ zPjyw>h70TI$&tU|II-3FHRxrP6Dky_P@qDA3I!?@s8FCnfeHmG6sS<3LV*eeDio+t z;FwWh;yK|EZpJl9RgvFBeh_&u@}H4h#EPtl@R8Fa4dLI0zZd>;_}1|5un}GwmcmoR zBSXIleJAws&~>59LkmM^g+{cz-1424FSOj!a#hQgmUCOiHUF{s`^{f$zNLA4^X6uy zc|y}0O+RY7tLet3t$0Y~r$T`W1u7J%P@qDA3I!?@s8HZvlmZM_6YuLaNydt0h~90* z(pDzcm$p*rSSGp6O2kOQ#A`+hFLzssuFTdm*qV#;SLl85ZZqv%Vr(UeF3a3v$Gffc z8BEQ^#5801_lw?(8OiRxp2S)0HS0>Ao3eV7F`IOE>%`a=BV8n(h_=-%Ir4c^V>OFO zcg9NPzW{x3(T%3euIU_jLWZQb#ZrBVSTZrawPr=&+osiPB}^+}#I5wWSv7KRvbV3B z63Y2n_#O#6-gWvpH495VpZiuUL3*qyXO}+Q_x7ZjHS<8*e)1RH`>dLU{!f;F4kdA{ z$I6iDGfF>s;mufjTfDc|GN+wcv&?@JN}m3cY=WDa)21KkoL-VnTjs=RHFE>+(;GJ@ zoKbUb{#(RBv7NDAE7g;BrqP6G;9HbIqo>xeMc>`I>h#kC2udepEWImXSmu-|r3Cf8 zefs2p%bn>!j7)sHHDyxi<-WJ4Ppnx{!cOP?v~@+yv~1GXotZSDX5L{>nmE3cPTmcs zjjLG}eBt(ZIFOd3;|G%mT*be^W1S)U#|x<)Lbs{3Yo%%~c^ z=ylR%B{J#Jrww2NT^Z>yrw%yTowAcpsp%-A(%CVlb^yWi z-=${2hoI-CM^_Jc)sfdt*nzmF`l_b4H7A?@+%lp0sh0CYElp2^dPDa#hnrq)dA#}a zk#|Hs64AoH2tU%Yqvg`b?C{#~yFxz-hnn9L`D*yQ@c%`|w)}f!NjM#OHvGBJpTjdE zziAell;-6vzis+V(>p_}L$gEgYWXZ4Qu(P+phAHP1u7J%P@qDA3I!?@_~)PiR~xS` zu`rHk&U4diFZM3+lv&vNMK(K2&l$v^XU?u&=iR5@li*lB#TI@0wAv+uoY;0o?c(Y{ zBdBnzskNOYXZVcz*)wWa1i$aM>RTt&%GH5p{j6y1!qN}vGu+P!`T)N7&z@2{ue!+K zaEP1t8qB1(_kY1W&kBb5SwWw_@UCau&p5MoSe3EP3PoG>nH~3C4@25?w zJ=gm#1MT}W4)Y#md~|Fr>s{wg3CF^p8c18e4Ie~X-}_SnZ{SQd*T|n7bOYb}lPGmd zmWgwM&&;1lS$Np9CInH;yTy1)^WaPS&G>Q7syec%Kh`&mN^Siy<7>rY0_TnW(c^0Q z;x}Ate^d!a9CQD)lGELpeCp}79o}u+r+X&7W4fP0mrv0g_uh^Kd~BSUH~GT>AKQ61 zL}{A8q5C}7uy;)FmXdqAZ@NOOx#XKU?>3F8ZTIfzPC;t-H~zhTTDGx>?2dq^@&DS;?Nt#bya~T5 zKNSj8C{Uq5g#r}{R47oPK!pMo3REaip+JQKCx!yM<=U32DQiLv?disbtLsQYPa*3g zvAqL73lj5_WW&xh**L%BlEv%eWW%Dqj#Wz*%WIW)C+o$tkITCb#2XLded{- z+sSs4A*pm*S3I+|Pp3v8%y!%}(`F=l+WXoil~n{mn74hduy7%_Vd=*C7cE+H(Yj@u zRxDVvXvvBWPF&ZqaGAJ%(V~TyEL%DMqRwUFI+@$JgqPN@S}AwT#Si)D#0k6C)`Y6Y z?4A&6nAz9Rcy*m53cSwG@75E`uOyvp>XMDyGUnwA=@;pkzgXO^_pGCTF4TL}zDrio zKb@cX^tfyXJ!Y;nxUS448|a`Uwjkan-KnYuD{uLBB@l{Pin#^le+)Asd$6w{y`>P*>V+^e#<_>BTDx z*T3m6Byft#@GSj4!n)3t8$0Lo8#irQD6d$*fLps}>FSM_T->?-!lf%#%wM){rMy(! z)UkR+$NbKV)=8_DbauMm=M(SxGL8S&M*f@T|NnR7PbX%QSDsp-K!pMo3REaip+JQK z6$(@+P@zDD0u>5WC{Uq5g#tsMKuhhEYR?Z;+fX~Enz~MET56{@7W@u0{@)P!a8=~B z$p4Ex7x`Y~o00n>pTi54p9%#k6sS<3LV*eeDio+tphAHP1u7J%P@qDA3I!?@I6f3; zX@CLmRY%k`kF1?k?SiVLPj4JiJEn$KCCq)WslIkxjZ5WDDc)%VD~j&SUjPsVamD7(&?)vG`K&ZQK5zq{`7)3JCaGW*D|&NuFHt$ zGk4qKN$>6U!@PeKDZkz&Zg#Mf5?t<6-oz#JEA)^w;P>!Hwsrq06RN6bPCd7e#3xiY zG&D9MVR%$)!-VR_hMJTi^{(-K{6X$M z_?i9R@4O`|xwR|TE?g_FUa~}9E%5x}C9=dVy!aBlG=F}l%q?BLYU%vt@|sJQE!u#j zW4Uvslbnl(wDo_Ewp~5ly?uIj+!&v2|J-Uyt~2KL8QXm1YCJ5taI5}1VFG#dqTi#; zr0}C5nD6%V&pzFmO^5p=K9cdvE?Tr;%?fGl;nEmQjg6Twy>H2?foqJ$L^D=8)47EH)$aaT zE?xX-<=!>EFB@>j;CK7KJ>JjG{_uhcRgD8VJfm?!O=Ck5{rdmY{}*L&|Np!Xbxc=8 z>Fs^rs{hU6PtyMt&%0>(B9s-ZUD&Z)xM<1RWg9kbxOnNZCEV)Hg&Q|6Sj26TR<2$n zUo5X*+PQLNN9XE`Hm$jM6|F14Q+#Wp-CYp%(X2WVqY&se zQ^^DXFag9E?~V6b-SLD~c&|O+&2kCn%ft6B@e!k}N0fWMkAkZ&S+i{I`UM>;R>|v@ z2`ks|OVuGx^2pC3?~7z255IMrUFFUd3REaip+JQK6$(@+P@zDD0u>5WC{Uq5g#r}{oD3A0 zQM;^WFn8(r?@X>ex7e-eIpos(xc5$}og4fnyaZ#ue@gB28lO|?v?-;h_xoSMk5EL^ zBf20aQc(W)w0w#Z|MtjVBY%#(8u@kP1yln3DDrgVvB)Elhfoi2Pvp+Xry?JX+!}d* zb4SVt8~o9Bv5Lg#I`5dgu@6Mfl6m&q6;AeLwU> z=-Z)(L-&UcgzgI65&Br@w$Lr1_lEX`_Jpnp?F^+t-61=qg)RxL4J{8{7@8kCFC>MS z(5%pzq0>X-L#KsWLL)*|Eq`tKbIYqOzixS<<++w0wLIPOSj!_V54GIaa!<>hE{RTt zIa>J+6$(@+P@zDD0u>5WC{Uq5g#r}{{0mUvBR5@+Px;}SG#qccX# z#}D2#2geWG#NzlLH=T{+EjOKx&Eps-gM(K9B;gl-gDoL^qx1|$l!SWjWck(?#78Y?!7UBZyS!g_YoZ5xsQIrckH8|@S1&#aJ+ioc{sj(ACKcz`_94f%6(BBckLUCh`f%*Kfqvi24fJlQ8#dy2#SJTQ?7d+zj>#M5;+VKW#IfgwSvYpz5XEuZ z4fJl8-$1`_{DvAFw_d*!$FA!WINH~nI9k_Vilce`Y8;L0FT_#5{(KzC^#YFC_4ICA zuAhqIW!F>cZN8pw0k9be)0Y#_KlWxZ%1LIIh2LA&%>=I~T{b z*U`JJxh{s|>g&$LapiTBa9nZSsW>jbZX}M&_Fj$S(!CiRFWyV3chO$@eV6Q|)Vpvm z<;CK?loyNkQeG_FOZmHCFXeCNUit~=?;VX}$KEC!FW5^z;k;|K(9e0+o|!n#*fRykGxyNXIeicP zoYVH;P<2LbJC4y@H;z+tl#-|CC?%)lC?zN7=-npeR2(Pf+HjnZqcd=PZZeMJa+HQ+ zbCiZ-vXq9SvvfX>%F_9KT2{mH)GYmMr)248i)88D!dd#+LfLj4Te9?S&DjZbiqu6O z!LjOnk^h0^|E&8T`aR}d%TCh??+RbBM}MY9aivV*Yq`(5 zbaR$u#~0C<-K?r5G_DV%@ywXE-x+QA{To%_3C}3RwnT*pf+_I=uM(3}MBXHfB}$5| z+mb1l(pYk7Y$lC#z8&qGB<=!S8C|z}Y1DTx8pR3NgJ9alu;z=>QJ zNaPu+w%-|Z@cR!8!w4e7DF$Pr>4(T$3L{&rYUwIrE!&a}i5Q?fUrOYYeIn;-vSW*A zEN|Yhp=2W0`e~f*GYl)8);=F<$&Zls`S9Jgt%?v5iphuyD+$DuWZGZG;2B+36~h)y zK_{HZ4x}+F3+_bjC7G>sBAanK4d3Kk?l8@0y05o4naV`%WGd?1tQR6FzLQRG_nu{) zblhe-zPLBjbJMe9ra@$n$&2jv(6-R-NW;`LySo!YyAeWrDizu_y?yDe9{ulpWtLVL zzrR=)6kTCh9zt1?ZAO+hOQFJ=Ww;^w8T9N9Cx-H2INpRkS2NT@BvcAH#B|Un|k>zNr z)DzFNmrJk0!!F&No0c67HZ>lGO>}Q{*hIPHZK-$uc7j$Iugoa-sTD3AJ(t$)UNEhy z+P9ecLc6y(i)k4aQ?<*biP$&#xzzF7ZJIl_ z8c$={(F@X$Zge_FRmp^IX7fBJ$=K~644}4&f@-P~;S`f&IYLB1(%TB3Y1wZMvF!Pvsh zz}M#8^UfHsU{@5@tH)Mn@AIT;$FFCBopiKfsO3)nW60J)*Jt|F7>nZ!P85k^ z5@;u~Ot`m-8;+PPe4!Ic{&GoC__UX9cI|(;Dtuc=ZvKAL(uUhd{J!3(eY*O4Rq_$c z|J>;8j3PyT#g=8u8YX#G|J1rkRDnFjugH6g>7I}MO{3$$V`+?AIl`KXp-8;N2{sgY zl~F7~kSty@ZQBr4p40IvTWTz^tj{7v7fb93yPb2T;3ru=n$KEq4lVGB0y-Sr9b+DsJ94z_JA% zY6l(#mX7m%Al$Cbo=H{vf;UFovb$q%!zLcY`|CK9F(=SNNdV&(6u7Uc#?QrTl94D~S8= zXa&FWlq2jt`A|@kU(k6<;eO%Enmg{(_KTNElB^rHVHgZg44x2!svtZ| zc!QX5s&lf=z_Bh`z9ly7<(((u5G`ClvXWsbw%^0*$di*lwCvjdU#SXT(ejVx%Nu{( zuyn*@^%vHDqo$+kD@U;ZPyAcCx@`Ly1A~Ne#PLxe|=SR#{=4dpFGZ+40eA5 zIy9qjERl&Ii-ea|&K4}ruvj`jBt}0*iot5DC%N5<_9f7G!Gs^(w5Va~IxeDTPe=B{ zIfcFSL~Z)zQl#)f;lH~&+cuC73rqPhp@+u{Sc%90V8u3X zs1he&t@5nN;Y9(Va)r0WW5kCIDbgFI)|KPeS-PZi;qo;L9R>&|o&n{O!p8t;U9o`- zaQ)ddm|L)D#uqW*@qcIs=y>8&+JUF;A~0lVxCVkyS4B~kWZqy+#?~c9RTSAIvce<( z#=p@I!J^q0E4~k`QO?I}!g$Xe7kp@L$ z>Z?kZ!8po=ZSn4I*!Bk=hntO#C+ck^KIw+Ys4OgdowMN#l|XNvVc-QNx~UUOWbw^TE@(N)Te(M7y?bQApkbX-EC zGw>`*;D9d6aCg~^B*Ej0R7^vWS%d*#39`_oW$qYl%WJ5spCG{}A9aZ)2pskUefN|j zjB?^RQZ8-$962R>c9AvHzGc&T9U=W zGB@Cxhu4u4WPuZH!a}FjMb#&(Tx*8S=ND2%G-h{`t~VW(Sw>Y@dSw*(AMu2fJ4cz6 zNk*-mnG}h_6=|i*JL@<`OIWeM2oNz*h?ZoN*_jScJlFiZEwWs~lhgb>DY)kE`OG2> zLs1o7uq+9C2a;h-*+$;7pje{78LH0Mmd)Allkk4sDbI|2A|iS^Sc$Y1+X1~a=IEtw zHf|ZH(FVSFJV`G2NlpqR&oyVyDq051wk%v&Lh@7nB=?N^d+vBjqvOC+`(ZlFQB9ca zDlZul4%o3773prGsUyQyMiR3v!`4UW*snC@DbKs{$$Zc_ zJJNf{lO4Q|9Zwu6u!GwFja7P8IMMRKrrR1GAMyA4vuod1{eO7r82#iXWakvEF}7#T znuc@wQw7eUsRGme3@@y)ukT)@VZbVp71)gm-xGw-Z)BmoUzI{ zrT7u$nm5RAX4Rui6yT(OzCZTrq2dn!mwh;^7BQ!jtXkDDrJp%dD08L-GpFrT?dxr) z5+nu4q9j_jVe10i!7NgyLGvIQB_V+nWIbK;CwsMW3T?zdo(yQ zDytO9$Hf*nGNvzIPcyY{4CTlfevWwZ@!@;EuQ}u1IoiVqo?%4ZuvycxERHuJ5_Ltl zWm6V(RW(cmj19}=bxSJUnYg@sbQrS*I$3f@ER)=3C1OWjKopoXhIIIC0~2c;`hz+2 zPEjb`spwLyu|#wS+5$z_(mM}+2EBQ?j2WaWPk%N|VBHPp6O|9&tI`L9EvvF}QDV*J zExW6CSC?#DPLjG;=;SfxYp4I0M#sa}e`pVPjU`BMQaI#RAh$`@1>JEs}`#_2z4Hs16>GM?)(e^8QMigX1Jy9sQNZ zbMx~h%RFq|QrP@*7iA@fsh;|G7^Y73ueQSG^w74^8ipbnJZ}>$EJTt8luyA@vZ=F1 zgg*g1l?ZGmQ!WkQRJeI`qLcM=^Yf{GZZ6C6CAk7dsm*)3-{$@5d1EzqOwhi1{s(o| zwmDH?kxK(_10$O>E8pT(*-%+qLSdqUh#azUd`oi(jyPH_Q8J~+P18zDqXsa?p3~ISnRKLaGG&=Deb=05x;qm+FHL&-tnRk% zWXjljLAo~vKPw#FZKid8K?^8Xh92wWk8&wn_@I!vyRux7%$-Sg&)Yq(VM_mI=%^=C z{L9mmx%Y3Fqd8;C725q|Ji>bn%c;;74MR~Zg@p=fLQ@goZH2u6O9Gi7$ZYd5mfp1; z#CDAZ_l?8rCFx#^WUlPC2IwV=z+z`}L*R$zK~i;uDwqlQz@tnX%e67B?mlRxQjo7@ zPlUJZ#@-hxccMW1lQ}^+TK&|Q$a?>lUhm<~hRYT)|1h$7auD;sC~wf{xbOaJwfi2R zF+4?N8890~t_bWQqm^SVl|!Hpi9eQtKaps{`klKj^D82H=py>Q`?LKbI-F(7@Jded zOXveXo}oG8Cr@eze)=LS>87FDU?R&3$e`9On1q5!M0mVVf~2A>NkRI!e<2S+LYL>s za{R>NiT6sDOBsi5tHNC^-)#CzqdoG85mMcQwF{~rucG*nNAZ*G%PuG~DLbsW zb4v`En19(8RH`RW+o)kEG_g_yUloHF@lTR?jv(zwMsAG4=n@a78)C)&l8(HvE@YlV zS2ZlhnL{m-9+Ek{gO-o4e~UO$c|icbZ4^4c-3i2}lR4o>*l zhar4D2w#s98jET@w2;r@5E2$_)bJ9x*bs=+B^#wryr@{EmI*g334dyV@bd>Jd}}b_ zPo1DWdFlj<;RHqH4VvLiWCoZFgpmw})p?77b5l~m0wjr52v765pS-rEK=_Wq2|p{C z@Qr6`Pd1(@Gb|x2YaqW~KzW1ADk_0GKo^2(sX7O=3?zz?Qb3I1Ipdw?Gf>V>%U&>W zAHM=Jex?H;&=AUdsm}55<4^o%r$)!qlNM`FPq`imB?c;pc%ri+e7Xz+Qgf1|b38)u zGU~r<3k4{w-)%UAeS8gEO~zIlO{BTkR0&U5JLunNsUAgZ>S(+N?hI5p_a+?+OFrjl zg*m-$C_n+_(xtG6Yfn%3mb)BsW3%&$mILzFjFO%A?7-#l#Ql3U3V2m4+5M*)@|u)|f-f7>(Z^#isivIQ1q@Jz8#hMi8v@;0EUX zzQlZG9w+-b^HiQQk?i>nXFQOkz!IRDe$IGy?BkbxMWf@1xBW_c;<9hRnM6bI7S;%l zO_^5>3l1h4@nv+D7c8DPC8Wofs794aAi8rr@wQ)jY4W*6*|{a&qIIR-qO<%m?6E)H zthwVB?XlNxgWrGw$blf+rp+=o(zX>_P$aAxY$dkH8AxFyga|&T!VqLw8Sy1Yc1iFK z&5A-F8I6v|{_q~{u|G~XOyn9N;SMz>s1%Y_c#2?c7zjSX zJue76>LFPJ5iK7->0RL@s>B(K;*77B#2LqA&n@CnV4U&HARc}Fhch%f9((n7;M2R| zu|ZOpjzWJpa}+_O`hv&+a7YkU(-36?LeW57S1FGw;l}PH6@rhw`rH0+qig@)QWf5Z z{Qp$ruNu~jc%lA^+RLi{r|OoYF#eCxCD{$xO(H!CPQ6EF*G~V@rwfqoW#xwIrJ`CXm`#R5_LE_k7;(3m<*Vfp|CyUB-yd zK|<6{7fGk+KgUlW;ZdtC@F2yPT~#C-&n_z>t%yRp64FY6q(DzxVoYd2UG)fipREFN8_Ja=z7$# zk>PqLdEAHxy>=Xl&A7yV@HLm%dm`DT1C@+y+Gi-`XR=6@jKU0l-~sI!XFLv4M|5QO z5tJ*5$aO&&QRW%L5DZWp3WloE92odKxgyuV5R{AncbB77D2`I$`oE&Sgz>Ye9zk=a zTty<@)0?6xf^8Ns@Zf?=ChT~Z`xf#8Ekuo%k!=*HGk?C7_paq{LYW9(oqGXYIq6;L_2-!a z&)oll=8iWoLG}ap23Z24W!i9E&@3p^(oyKlGf45E7@o-f;DCeUx1i}=p{*QKXI;RI z33%yfndIrAZ^8gmT!P>KMuFfL4Nh=Ah~Q5@*QB{)jP~?@e}w{`Ag777bpvRJ5<*Bk z!3xx6fPDfLLl$IJR5-3Q;c!?G{ORXLxdhKevP+5x9%$@xK?HyD_jhP?JUwAQ{6vcs z$Tfh{0(}PVAw+Fa1%qlB9a*0eyri~4U$%i5JaC7p7`qPa#e~lnjNOLpg$_%+M3+F8 zuzr^G$7Ei)S9|i6dx4f<3E1jwq}@XD0p}CxEtYB08VyNM6;))Z4P2r~Re0g@;$9yw z77xw~<}kd#`gr9IL6t0o#Gugv+(I@bk-&=zvBUsYSQKQ0%Vg13On+qtyqNXDs~i zwzq3^{N#VWsr}^7wYp;Rw5}f8HZo;^u1H}qc}9Xt1<_@p%p0;xD%D+C*{c~NY1&+2 z$^7XofDuq5et3UKT<`53kOsFdO(BLoVsE%M|xY_GbILdX#?AkgGO^ynNJ`WU02#q{_rRNqv52!FuT4SUe5FL z(vxpLy!9oGj-UMD_u%I@P*ou!BUMMrF=t6YfYW)HAyAM78{r13haqsM2&lQDEbDKS zQQ>8JPJ4UVmSjIKUmd{9rtG?+ovK)y9^+yxp6}DseXH={K!?1pWZ=f)Ht zH`WZ!jq?Jz(fmH`Svtah)t)_-;Sq|1ZI1`o7J8`wj23#FDIhgaWQfVzHp>2ZQ>_^P zCEN(VQQ*d^?COF3=iNI>{m>_Y8a%`m!YeZT(LNb9B>%IMC12#zrw(YIaU9TYyny|sW!HF1qm#H??Z97KMz0%+2f19*I*aU??~b6q z0W}lPt}0q$ff1ZJK}+nJM|Xj>7~lPe_RJIGLRTU1aFdR& zf!e>)MUFNm;bg|bhRq{=R+2EmRUiRS1Ro09OE}K-BZm$_S{21~9Wlk8u*AV~zqu<+ zzLlTfZvFpRRpC_gJDNfbyGOiMzqhWsrmyNOzwx{0;;c4sAIWVi<;)U4XAUliY0g;m zkalp%L=G*x5Ojxdfj0*E<=DJUBB2`^>W2hfkWgtSqOQX~|A)XCnk+SFhc0joDhxK3 zP}9Plq^GyrniFc$G;J5@=?*pRKqVgjA9cEW&56#O)z)Lqbl#`C3!v%yx>0OSXkMv< zXXa!HIEXbnw#M-yD*0gXI_+|hjAfbaF3Q6c%0f;L%`BUQ&P^jQNG)E?#6&J%X}okuAyC8qQG( zmlyM+d0td!FLQVi92&}t+{J!g6kOm3I~IT$3vAOAkalXQXvCspCF=kof{TJjA3h>j z-~~aFh*eZH>+Eb5Cd{AcG9kMyySZpVbZkaazyz<(HP3`aekOPxg@fn(Kg}7lAZ2Gi zD_KYgmXIlegdC_E0s;005zw8_Kt8u*aw>!`qIM-QYIuxXmCi;PYpkm~sgv$l+A>mB z<_I8BohhPUm>l5iqj#7Sb#DPbAH7AuOYWuR$}Cj-DM)ltj?O8EOeM%2?cl6_`SZ3S zatF$vg@NQA-=ZCK#{0B`6CaRSSz*xuQRe~m1b{jlhLTNCqR0TjSutez4{XL%E0MT? zM(V-w@6F4fhU}$-^I}0DFPb^+ARR4NX$Ql17_wwTwL=EBhzxiD2oi~?Krpo| zP;?VTgXrEQNHVenW%QKMRog%biH`|G(DK%~IbjQ|UZj>;2_tT$={G4?svJvOzT7YF zN}`5Nm*UqZvzrDg)_Vg;KEH_MBfh8|q+=u{`va0<>Hz;O?V=GvN?YA_ zs0m@CSlY?>T;I7Sx^9Wn6N=(zAUlvI83J2@MwW0<3!y964ht>6XtBf&OW&GIZo_|Qn^_0NA=HFh>ja-XVa}#C7AZ89qGe_D zaXn;LRHvxk`P)*EoD6NAX%Kup_@ta$(Bd;Qp6>0&*_}(G=?uyAxzEcR3l1t0y$Stj zxNoQlSM=9SMCtdWCW78yLULEHu|rqPCt?F4$L%HxMS6K-}sCpM{Y zwyS89;>m^${kWK8>Kx#yl|h@-b9Fg}w$cjLYtiC~ej*cz1_8hsDH$huq1|!e~=O7x++OQ7= z8)<=nI6+G*!JsXI_yDYpV_88+9n^F;Wbo=X)rM0k*o>GTY`?4K10!2 z7sJ9)^?zS--D8;cp{!X%@P$QiuzAnmvOt1w{;PJ7jx7o8AbA^ND}eEb7f=OwJppDs zux4lscxikGH{S<_ zU~I84dQd-v>Sg%J1;aGapv*=+5!~bya|s2jSPBIFDgpC9a0R@@42hQNlg0c9IN=1a zgH}4wWQc3BdJ#JYZVL`OF7~sd;5lD=p?1(2aqZyxZ6br>ewIPwDT>c41BpgKydKV6 zAYbXSLC`8xK-N*|`Z%UI)<=;2M|jH<(BAYOEX8#wn{$3!IJnkP?y(@|WJwVR)>u1e zic#@`xG0bVtHx^wo$+q%;F^yJC>;hoCmM_ZKHMY}g$#+w95!Pp&qR>{gKiVU4oFAw zZ_HcrVc%FU$!rAzTmqG-P=b#_P*H+=F=SXakQu;wr$!gbP^o{&c|b4nYf-3Lc+OE> zbR5@@yQv>s^)7e)xbgo7s=^nw+|=~<#;ZpBZ~YB*V{2Ng9{A_C`4Kfs4Rlw>O0Bg^ z{npycHJdbN)PF{MdF0QK#Rkk4z_{qZ_~6ij3k^8YbQW=BU=I>N2iWMt1%d06!9%dt zXsh2j(M6apDI=O8C(Jr7_gm8`qP<+Z-JL4AuIv>h*75XGdS6mR@9LMem+7e0w3qAe zKx7OWo@tuG;~(E3`4O zl)+JpSfD7%E>4c&od=lvB;3JH)q3=7PntRlpBk|=cibZFh11V*-6vgE!b;KF^uinN z>s~Q@2Hx7EUE%b)p`;j=OYl6aom5Eds>y7xBh$U4fOD;R^Gam;CcjKCBn7-&eJ416 zr-gJ~h6B1D`Z*c^)kEPf78c^9I!s^=AouWy*c>TIrUqZ~xrGI$xO_Vb0e)EiANGx- zWs`5Jl!+52xVRiI*Ir7W>5x1*ILS92hU79xjuJP*LB}V$46q1vHbreHaHtfN_&@~) zG7hl?q)|)$*c-iF`>-SVI+x^ouF56`3bZ{JmkP8Eeu4Jl{8gGWI_GIGE~-NFAv9J5u{vsTB;)`9RqEJmAV*LEsYv5!Y;D$&nxI6H?hJf+ivQ)_ zt2-0WD#h(|Q#d!&1RZBi)SKh|CQ_SQP>A&EWS`ky+`*-t%D^>nG6SDJY1SJtk8^K)A)kEUlC)CGS?j&%8?2DawA0teco+8CL&~#bvU-6#l@*?-V z=8ivTFN)(7h*dO25-m$dyBG8?)^!7EuZXiF35&1*^5p=R#rU-tci|6D)8$3(6;}Yj zmhT>@K=zcb|8@TL|3cM5%^e%H7iv$lV6)Ta#S}J{AoT|kcvCjf5su*np0*q3Wft9= z{G=a(LPOW=G-`HCD>Y2u=ck`D>V~Xo$%J^qa*@lWinAbIsM?Tc$DHi8q6HCXNv;iA z5Wo1luDK(t{o?;VhDug6Jwhiq^fZ<&pu_V#azTNKfOJFw&@H-ZA_3X(tC{YC;47A7 zxj?6YWvAxBFaEwW&pj@Cc@g*KZo1-%l3L|8LEQWK(obu2{NhhYdbPPtSFGI zcJA_bWTBxn_yIQLlUJOilf~2`c=K2I3rf9xbug#R(CU(1H|8(?bjbhcOE_RFk*yW_r2OvtFQRyxBveoKVfci_UfW#0zWTln9^U;??e{Opk?yhuxua)6t;5-|o%E}x1G=*eQGI<`G-?Kr$J^S;FZJ~{DS zr;Q&Xj!^icUYA9u`h_K&jnjNbpBrNvEW`LdsPwl&LwCz zI*@yM5cgi&Jx!zI(1q7f4oc`R3T!1bN<`la8_@2R9^7CJ+Hf6nB7HrG{eKEpG$T(?rtnuI9lMsx#lkIHHJjotu1^v$mvn)Tv3V~>J^ zj^sP)tG$VTeAb)OofI3`4)3v!2;4ci2;36P$r^C7Mmy9Q1~=~lE)XhOMBt#SHlP>K zFb`dsfG@+VCWD9^gCp`KW7fYpGaJXhKK(Fns=L9xk_(Jx1zz$@hEb9)`n}J9y-6rdo0#QeRlicjMyB+ zh(9&`PNU<{y!*k79$f+IB|2O4mX4+<==s1vv7@R1%9the4B~BuVUgVD+mZ5XWB4)x zJx*Oa!eK<;;EZ^ipAlXb%^&;zrqOZe{7We_Oa{1%=n98oa^3_ouY~e)Kx0~Pdvb(T z(aj7pN-xET<%aQ!xTK#E)c$X(da)|JtL2Z)+Zun_aQ(>9_3x@1QFA$7JUM=HwYiZ4 z=30PFknqnn&(Hq1si$Zdr2fLnRJQ4!{^J#EMB86RN0>#6Y z(K;-^COBq`en$$jmL_IH0LPq4Bc#L>3*X>VJeD6v*-Pp_{2uSISn}g@BTDRm`cgZf z$8QJxW%(iv19zH8>Tmx#;8Bo2Eddz~Fdqhj$~Nlzd6acx_hXPP2OB^}xYN&oq1gd* zqHor2rux6goG|^rTnbUWA5g)E9*ZSX zo2wg~4cq)|@Fdlt@9xv+c;l3nU_&!1K%osnTSvwmoEJJLSOQdbl&TY!s0L>UEQ2KY zQV85*w<`wI_@9;yEBe`x?akE=3=7Jog6eX=pgMH^SM6|pfeKwL10 z$XJq&5-{ZZBJ~ALXIR}JNP)3XnBr3phajld#?4*PzFsKj#O$#g3B;c;2~_S^&wC*L z)0IHkjk%hlsejIvbIxg)bVVVHbP`3njR#Ksb05+U(Xswi?a+qL!UGPS96j6%{pDh=$w1I76Fv9U&zj>0JpV@~-~@@l|7Mj6J-S6i+w-q5)pkVkQ*-FMmb3 zf(31k5wSl?pEjQ-?49|CI%1`|h_=&%oT6I;X?wS30JH>}B8$RG?L-rkmv%wBx!|UIKEgbZVMSR0@}Gj5J{zENmPvbM!3!Nw&o^vW zgU>2+?f(b+?f>2pf2`kD`^%cmRS*8toBz4Vxl@bg&`h#zTS-mm&VV^Y8vlN`Ge-UC z1v2WjkHVCcMG>f+5|ItWWmyiY14=?s5Qom-s)@Qen>Xdsr7Ur-(%@eFpVedFKkLfA%$Z{P2HB{f}3H^Z@Wc^%Ck?&`k(IZWc6`(98k-zGX{B zB{f>su>@K3>2`XX_I&A4$qSxfMqSZhWg~4kC$MaVenam*gQXDqOQGp?L#Zq(mkJIC z>VGhW{zjQgZ?2^b-%8r&TLI~B$d6Bu`X9bh?t^`M!4P~a|H3qXHt$=3;n_U6;7J7u zp4y*|BXrb%^3w={yo(5|Ald*F)zN3hR*~C*nj$#efqBEKJai>uE9gU43Y{@bx8eE^ z`*YK3b4`P@;fg>u+-El!A_;a}zStkOPHWLxX{L9m)~@$#B9c zR;ji+Y}p|9%YUqf#=+Up8_0&cKSydY>i_dGu;L47e1XI!#5B+V766ynlZl9qur`{= zSnvbz7D^0w*{-l5zYW)acyv2RF zOqr8dL08c`7JgqHWq2sVsl+-8Y?$892DkqIFVz13Y4drFcaD6#{x@}vHM^_+@=tI5 z5A6fy>T;7Y|7r>;kAb#n)$X7PIO%sg2_2J1{)J3#{0y``f;uBZLX$lfAkaW#<-(<+)=&Gt_~@L^IJe0XOdAAbE6G6`ey2noD+Lxcv-ny7k! z_(lI3+O`XsL1;8#qxuW=LlSxdz)Y$*3G#wqa&@bZ51Vrni&B6M!$|?2+8=_ON<(n( z2x7$e=g%c{Os=~D%n%6BhS7iCLbf(V*Px)>v=W68C=@y;5?*kixl6MYrF>gERHkg{ zFEic(9Lg>6#1=D25rek?h@m%`K0+4bHfwu4K@!%E0nRpBh0=f5DDE2FPEv6vpWD}j z(#1alrmy=vBq2M`8`{-{&s46d#=_mDut({ObD(y~gA*ACNu;m+m@s%+ zF@wjK!{Dof8N3w?-ikRhnKGFdkiiPv4g^*ZN2KM_7j5qJEMjQw&1sfs!eM+_7aT@qRJYcV*&pwNkS zAQfc12z)>kJRKX~iGdOt>bJ5;TRhpGHn+I|I#Jgh#ztf3JAaC849!`QPF&7PxnyyC zSz`}8>-w^ClX7E=OqdP}rJMti&#nquZezdjcjAnDTFBUYzXn4Rg=Q!S6cN(r7!}EK z6sW}jlE1~7sF^{CnUM+WV+*}&J80&HpIn5#m_zGWS26}#A3hdEKYbuFWBL3l|4jO@ za`!yHd(yk64A*ELsZnw=U&z>dn)B?Lm>X4+aN1b9Uas`7mr<|ogO?rSP!AdPmzU9? z4_Mv;;(-==$pQaQ1&RPFI8_;63(;jLoQNDse)QfU_!=*TvoV!PZ+5U*$`1=Vi-$X5 z318*Xh;jwA{av0rwYk%Z7Ehr4wJT`xgqd1G2jaGrPv}~%Li<2FSQg$F>|4A535o8FLES_QN4IB09ulm(~xBfp|72er0z3D@Zqek91qPFhznp>*FLo=`c zHLr#-I-?9@bYIY{Jblh*2pvIzjaYeCZa)6qOFUTk9~D4pZ;0_wj+`reh23cao`O_srch{iTZzzHZg^eoo{| z1IXkRzjMdN-;&9j_DBM!!Uv-x4;mPCSQ-?J8dy~pFpeRyB{b|388iVXj5s_d1ok6LU$6)f+$)BbqACOeo@BFJc@ft&tP%fV}N==Ca?60Kk9PR z%2;gI`C05m#wRbFPn@wqA(J=$Mprllz)@~z%V;dkB1Xsy5OtzK5F7*$9s{f_Rw(Kf zKCBnpbD38R z11c$u2Bc}D1_4;tP>59^#;KKjDbFLl^3)Cdjk1zmP{tov3db`@rrFQEYhSn z39A99?iP=(EGm+OEwl&YSWaiq4*}IsCCw&=X{I*zhDbjj_N>aCPL+T$d2kS#FqP{o zwWF(YenWb4(`&>TD?{MId;mNfG&jluj6RwZqW;X}ke*FbNMKFd$XAeLm}U}W{SwzosoP8HqZZC2N(zNu{ zj(ib)^gNQtBoh~0-X}39vITg#oOR6q$tzp(=6_voN*Rkg8??A5z4}=~2STr8a&w%Z zaST;8fC2>AGX)_(+H#8!gR^u7?YA6I0Q3p3Y<6xo zuB!V}?IqP;uR6Qfg3pb~wH5Je6_`1Bdr zS*=Bk3G_Tyy*G$4Gq=qpbhJL-K$&9z5DS?milqY@P(jKWqTeWhplN^TB81{VaLhzi zTFHtTrgm2A^CNwdt1dUI3_iRkh!4}|wGuj}|9h59zc~ri6%m>}s=kq-jKX`#sl{Z0 zdH~Ea!~`s~qOjqAt?px?jSuisC7a2#>QLobu5UvC2z znQR-_!BqssEDFSAp?40Feo%|70+=2fyMU?{|E4~KK-n>MzBzaaZZnwj@0(ZlVIJhM zA!)Pk6uN|48MN#^JKq_`(H_#t?(OIbjwGT~CTi?5x~(7!fU3pO^XTz{q;92p`r;>2 zsV|qEj#5AM!D)G=p5)Fh%U%4gpfx@9ftQFg9z26gedt#@Aixo0Rb^ndL$MdoB}lMY zG%rL7ilFnnjrL47kTpuybj4k4r7$Uh*X*Sl9Se8y)CZ#lCeJL3$v63#?AZcS_y3YO zK8wb75|tf{Qz!$y(3UHG_|k1pIf0;5gdV_p3J<|?i#Jip~j z&8r(Ra$~z)x1osgBy_^#)@}dwZ!T;3NKt;WY;%v%dW^IxK}4 zyo!DeaL>>JRvt24*BKO2B1mMjsIIh;wH*)&RPyEa`FtmM*^a{GcW|}){d8%HNi_%f zNha;#MsMkn=eTeM1p_oOruF$Q@3E+o)N)E0H2!cfjUO0AW<4-UW*JbD6$KqlmWd7( zSl5XR^B!1vl)Ahj3O4ZQOZLx`n8v?(u878R88p5vn8x?LPG;Trx(Vi?-46#kvOt7% zLZ1Nk=Ls6gGCYG+4-Vx=reEu&w`=E4Vj4exWf6^~GHCpvU>e{1aWd=Pk3-Ru4N(W8 zAh5eQi&Il)T|ZWM5rB+< zOovG$$v`hfK$uYIV%oD2?G1Q__Pj5$kWYSD@y;R|^JUQZ1Hm-@?8nHg&wk9rl;u%; zgt)D(plh_vq3}zU&{ZAUhDv~1ZzBhVEwvd>=6URM^+2!S%AoOo1k?DAuaQ}Ie9Z>V z4tm`Ypos!`9{L3OyGlCduMIJ5!j9uj!Xb<>ob-z4b4Bx*ErZ6l1k?D_=aE^TJ`YKv zfNez|dSZxhprP4`ZHTC%Qvh>@&W^yd1n@C>J`F1x@9C#;t|7-bH1_(HEG7#Vmf9dU z`)TZXAZFeA3ZbL*mp>=1FJ(Dk#sSF^BEkZOyaXf*4i0?9WDsW&P|^m(DN9FPe<`W+ zU9@OJ`0Z8_!!-TFy@}`MrT3zFps*3+ znfR4fRPT#-n@;yEH&*=SF7Y0Ie7NT{%mVkOdXM$&|MymfZwo2SKWOT0Y#DjShy`^& zuiaSv=c@MxnE!9_OW2_nlp#Goo2&QqzM@ehPM-hjH@e43Gz>S$4dU5F{WGIJ% zdq_(FaagK|#@GQJR!?S4OYL7*2r|zvl8V7W=1==+>`BGe^G_$v`1RjN>u+vjF`Gq{ z(!*CKsv>nZP+vJ`KqcU5ULzU-0Rc6jkKnKkGSBVj1Lk^18FT$pem?Zelers7>)ee< zOhP3lK?gb*$f&~<0YfPotd8V%TQC$f{SYPU%N$nnq@#$&7nDKcPX^QY+vBqKM_o0^q6f$b6B8q zm=v^=c5=hs2+Rfpg*d3kKyMB>;&mCBxu_2qR`Ymy5sl9;gT@~Zrg7{p(i*$V5ETHh z0pvtS8Mi2dtb{}6mI;g?j)kn2;h0b@Yj}AeRu|EDZW%QGSTK!S|4v#lbVG%M9S{bv z&UpMG=r$42YX)`m6pK?t^a$P8N(;$OW?6Az5sl9)gU0_EOye`JC#@LB8IWzbbY!IL z1J4J3OA9U6Ed=9r3ps8`-v`nx8(@l^#5(k)MKnIQ3>tqlkjAr~c!*%2{ueea0vTxA zAfQGa)p9xu!2v1@B5(#c9+^|{4-YGOyrqc7bIPFc?ZGsD6p`jfe`do-LH#cypk=8k z+vpNtz?TMGcfdF>G9s^r0}nX7WQDI0BhCMJ;{P{?W;K7aX=TGpBd@GKSl3%SqWZSO z#Q*Kw3WqD6?~P`_mY|+g9q@C-vutLM{S0x&_}OIkgs-7vsRhV90J$q7QvP`r`OU1r zp|vSIa;gcv8x1z$3N2j#{WxKCt~LPUOB(w^sj_NdXs9arM_S0upA z$tD^NqIgrcp^+%aDUzZ1S=c-QLoJ~JFYNQ-M(I(zTuP%k%EbfIx_37Rq;=ozPwQ@d zt8=0C=BAofVw*1YCzYa2q)+h7Ep$A5*tK^ZucpYUAZM?koqn^ zsXdjY^>>dFXB_$nB{vimiHF863kDAdxS?CvLj?}Vh^!9aJV{nfmI11aZ$Z$zp41s% zhkQ-$vdP?qz$h##7Uu(m&gZGn@dSJ8?;vcPu>rsT2Z$9S(m*Mq7rOl*jS-M|CIEaG z0#Fg)u+dCARxFy%Ll8PNVAs>vory<#n6%RIQjWB~4DEzRpv;g}#n5%6BLQ#|IUX>2ko6%esBz&< zMgUCGa3b^bOp&}^SO%#-8%XL4WztH=%Mxk*^A%Yyz|08eW++LO-dg{ohpekE(DkG`{%@O^X_SI{wFssx2b5N zts*N{l;*BH6g1IdqwXWl7`uhU#{Ei^oSJL_nX@QEWeITq5tRk>74m2iS&?iMYNL>? zR55s~YqY&x&C6hMa1#8m27xDdGo;*Ya7ZO)`SSVL=r4MYh4Z5;x3P#d!RqmYe%5&U zL~PU~um)qy$4G4KWiSj_PF0|~p)0Oxs_5g$A)yFuxq^TZjW-v&beC)#JCYqcyQ-Nr@}I`q+mpOq#nGJyI) z`nWD4XhVuRG!8*&D|OR3)}Ra8gQTw%3VED7Fe_o~f`1R-Isg)Oi+0oTgn>o?R^I6s zZEI_zmAe@WUB7WrCheX^h#Bo6+pK7Yq`Cn9H`DbI&ZOC2`C1|Om8hNUHUS@Ub`MGP zk#3xy-gd&kc*|vjqe8|`o1E8e?A-dI#TM+-{i=Vlc?MGKls^$?oc3K38-1x|qWK`O z;sr@y(3w{yh&jV#LTZp?>*xoe8Vakx*;uOEoXq~O*l80ATI9MSN(YOz`vWN*UQJ?j zobn$ecG{yr&60RqF%*$Dou;Vna57?#;Ruh6H$+7h)ew=PT}tVbHbfT-@8}n6*g@8o zLF%srlX?|MO-CQdeM^PZXuOigy2;loQp)6!$ehi3O&O%VFObyDJtRg)iw<)4Vk1U_ z3AFApkoXHv3yO~<7Bw>*2R{H}qO6W;BsC!0?Ihl;L79G18@bg-B(-bpf7ws!f?hP@ zDH5Y&o1J0?;%8ov%?JYC~m}QHP{k3}}v&3Sfr@gx^kH0W$L3f}CD; zL^8Y9{+EKtJbT|a2_3PKszYi8fXB#QS8bHp!C}auJQUtp8x5>E1;uqDFCmB14v15n z#ANoR%4T=vRu+-^9I|AI-w1PO^cVf4_LPs=<6bAunD8(H%HLwpf)qJdC=W#|4bFzc zP*+7;MmIL(QUDIu63~=Quu2^(qU`q3NLk$$IZ|&aZy^q>7H~?)f$@?;El4zf7c`qn zZL_^0=5<$fTrEh}q-!y7Sz%|7TW(FKhWx^K$h6du7D>x~FOvRqwBw z=`;V4&TJI%C^((@Q9q9gQm3tn#GG*_et(fyRn*s@WdlJ1A`(7PmTub&0~as4ilcN7 z`0R-JvlYy&JSJ|e?M`oo0PSy7PA}raK!=69R=yL+hgbuNIb$?_f5-sVx}+)+oV^m# zkPs^ZR+??usGS6CF^+Ve2u!K;uQ)6?&tVbs;8N;xq=+rS%j4UDY-!y^VsylA!}tV? zmZeB9mpK^Bpg(XhX=h(*Qd0y602PBvz{@YKM;oTu{;^mww4YW6AHEgL2dMk47_nxI z(a<^3u8;-7B7Avp%Zq4qhr}e#=8(XP{0L`6Fv95+KAAG1X5K~)<_z*0n9tq^b ztZ$K+Grk9Ym=g8O5mW@)*c`AVXbLs5*g1q*8Os(81h;L8XG*oFikK>hsaa3Cn|{G#*DQF^KF)W;U=yMAY86ADgfGLBFV8jPeOn?ee z3BAb;e}?-I9DSE|F4-Ji-Is_?a|$h|MU#mroi*^nB^{Ta?BH~FE}0We1)t@5^YX4b zw^|d|cBknbC|Sx?yZpI*^tz#BjFd}5`WzBF`_w%9PS0&FT2)tDsCpjQZ?5Va{#E5E z%CQ+W#2vo^Gat8+YYC7g6}}^EDjXUTp|%`L3yyH;W+)~DKE8@x9VOCD$t%h@Ipz>E zmPy7kRyq?)XRO{BP!Lf8y)zciY=Ku4s&8L!ENRDJ=N!HOmwvgx?93za{z&i98y*c; zy=%&EIj6YVbZka{E0wnuaVS_1_`07%1vUB142jV(V;sgy=#eX{0LI2X1gslmxp4$d z=WN=p2wjXgKx)D_Vph7EQFYZ>B{Tfk%XPU+%izPqfqa$IraR>Yj({q1Q#a|-+0QtWGV?7WULh?P*qj?Uodw9We7N?a+~orm`D?oZ6#4HJDe?>7Nn*};4~Z?ljTa0XK7Ua%MU~rYEC)50H1?^OQI^Yl#`9(<5&iB~}OgN#+ysSc*H@cH)ED-#UjZ)n` zcG%0Du)Dj2w6|Y4H6SoO;LSU)Yu9UPX7juY(Cil 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