From 7af709a16c0c5e71666087aa9a6de9af78bc9be1 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:45:59 +0200 Subject: [PATCH 01/11] feat!: replace dash core quorum sign with quorum platformsign (#828) * feat: replace dash core quorum sign with quorum platformsign * chore: fix Docker legacy warning * test(e2e): fix e2e quorum sign mock * build(deps): update dashd-go to v0.25.0 --- DOCKER/Dockerfile | 2 +- dash/core/client.go | 12 ++++++++++-- go.mod | 2 +- go.sum | 4 ++-- privval/signer_requestHandler.go | 4 ---- test/e2e/node/main.go | 2 +- test/e2e/pkg/mockcoreserver/methods.go | 12 +++++++----- 7 files changed, 22 insertions(+), 16 deletions(-) diff --git a/DOCKER/Dockerfile b/DOCKER/Dockerfile index 75ea89ad6e..6092fa6007 100644 --- a/DOCKER/Dockerfile +++ b/DOCKER/Dockerfile @@ -64,7 +64,7 @@ LABEL maintainer="developers@dash.org" # private validator file into /tenderdash/config. # # The /tenderdash/data dir is used by tenderdash to store state. -ENV TMHOME /tenderdash +ENV TMHOME=/tenderdash # OS environment setup # Set user right away for determinism, create directory for persistence and give our user ownership diff --git a/dash/core/client.go b/dash/core/client.go index 9752be7174..e012d428ef 100644 --- a/dash/core/client.go +++ b/dash/core/client.go @@ -172,13 +172,13 @@ func (rpcClient *RPCClient) QuorumSign( if err := quorumType.Validate(); err != nil { return nil, err } - quorumSignResultWithBool, err := rpcClient.endpoint.QuorumSign( - quorumType, + quorumSignResultWithBool, err := rpcClient.endpoint.QuorumPlatformSign( requestID.String(), messageHash.String(), quorumHash.String(), false, ) + rpcClient.logger.Trace("core rpc call QuorumSign", "quorumType", quorumType, "requestID", requestID.String(), @@ -192,7 +192,15 @@ func (rpcClient *RPCClient) QuorumSign( if quorumSignResultWithBool == nil { return nil, err } + + // as QuorumPlatformSign does not provide the quorum type, we need to check it manually + // to ensure we deliver what was requested by the caller quorumSignResult := quorumSignResultWithBool.QuorumSignResult + if quorumType != btcjson.LLMQType(quorumSignResult.LLMQType) { + return nil, fmt.Errorf("possible misconfiguration: quorum platform sign uses unexpected quorum type %d, expected %d", + quorumSignResultWithBool.LLMQType, quorumType) + } + return &quorumSignResult, err } diff --git a/go.mod b/go.mod index 7afcfdc826..2c0ec90ed0 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce github.com/containerd/continuity v0.3.0 // indirect github.com/dashpay/bls-signatures/go-bindings v0.0.0-20230207105415-06df92693ac8 - github.com/dashpay/dashd-go v0.24.1 + github.com/dashpay/dashd-go v0.25.0 github.com/dashpay/dashd-go/btcec/v2 v2.1.0 // indirect github.com/fortytw2/leaktest v1.3.0 github.com/fxamacker/cbor/v2 v2.4.0 diff --git a/go.sum b/go.sum index 2139ab461e..0fe9ceb514 100644 --- a/go.sum +++ b/go.sum @@ -229,8 +229,8 @@ github.com/daixiang0/gci v0.11.2 h1:Oji+oPsp3bQ6bNNgX30NBAVT18P4uBH4sRZnlOlTj7Y= github.com/daixiang0/gci v0.11.2/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= github.com/dashpay/bls-signatures/go-bindings v0.0.0-20230207105415-06df92693ac8 h1:v4K3CiDoFY1gjcWL/scRcwzyjBwh8TVG3ek8cWolK1g= github.com/dashpay/bls-signatures/go-bindings v0.0.0-20230207105415-06df92693ac8/go.mod h1:auvGS60NBZ+a21aCCQh366PdsjDvHinsCvl28VrYPu4= -github.com/dashpay/dashd-go v0.24.1 h1:w+F5pDt+fqud4QQM/O9sAJihbQ3oswO8DKOmDS/pcNw= -github.com/dashpay/dashd-go v0.24.1/go.mod h1:4yuk/laGME2RnQRTdqTbw87PhT+42hE1anLCnpkgls8= +github.com/dashpay/dashd-go v0.25.0 h1:tswVRmM2fLHC/JhpuAZ5Oa0TpOO6L+tqiE+QLTCvIQc= +github.com/dashpay/dashd-go v0.25.0/go.mod h1:4yuk/laGME2RnQRTdqTbw87PhT+42hE1anLCnpkgls8= github.com/dashpay/dashd-go/btcec/v2 v2.1.0 h1:fXwlLf5H+TtgHxjGMU74NesKzk6NisjKMPF04pBcygk= github.com/dashpay/dashd-go/btcec/v2 v2.1.0/go.mod h1:1i8XtxdOmvK6mYEUCneVXTzFbrCUw3wq1u91j8gvsns= github.com/dashpay/dashd-go/btcutil v1.2.0 h1:YMq7L0V0au5bbphIhpsBBc+nfOZqU+gJ4pkgRZB7Eiw= diff --git a/privval/signer_requestHandler.go b/privval/signer_requestHandler.go index a74e1b3fd0..61c9dc06df 100644 --- a/privval/signer_requestHandler.go +++ b/privval/signer_requestHandler.go @@ -46,10 +46,6 @@ func DefaultValidationRequestHandler( var proTxHash crypto.ProTxHash proTxHash, err = privVal.GetProTxHash(context.Background()) - if err != nil { - return res, err - } - if err != nil { res = mustWrapMsg(&privvalproto.ProTxHashResponse{ ProTxHash: nil, Error: &privvalproto.RemoteSignerError{Code: 0, Description: err.Error()}}) diff --git a/test/e2e/node/main.go b/test/e2e/node/main.go index caf90c2ac4..fc246e1286 100644 --- a/test/e2e/node/main.go +++ b/test/e2e/node/main.go @@ -407,7 +407,7 @@ func setupCoreServer(cfg *Config) (*mockcoreserver.JRPCServer, error) { srv = mockcoreserver.WithMethods( srv, mockcoreserver.WithQuorumInfoMethod(coreServer, mockcoreserver.Endless), - mockcoreserver.WithQuorumSignMethod(coreServer, mockcoreserver.Endless), + mockcoreserver.WithQuorumSignMethod(coreServer, mockcoreserver.Endless, coreServer.LLMQType), mockcoreserver.WithQuorumVerifyMethod(coreServer, mockcoreserver.Endless), mockcoreserver.WithMasternodeMethod(coreServer, mockcoreserver.Endless), mockcoreserver.WithGetNetworkInfoMethod(coreServer, mockcoreserver.Endless), diff --git a/test/e2e/pkg/mockcoreserver/methods.go b/test/e2e/pkg/mockcoreserver/methods.go index bd5431e61e..5894dfa867 100644 --- a/test/e2e/pkg/mockcoreserver/methods.go +++ b/test/e2e/pkg/mockcoreserver/methods.go @@ -33,18 +33,20 @@ func WithQuorumInfoMethod(cs CoreServer, times int) MethodFunc { } // WithQuorumSignMethod ... -func WithQuorumSignMethod(cs CoreServer, times int) MethodFunc { +func WithQuorumSignMethod(cs CoreServer, times int, quorumType btcjson.LLMQType) MethodFunc { call := OnMethod(func(ctx context.Context, req btcjson.Request) (interface{}, error) { cmd := btcjson.QuorumCmd{} - err := unmarshalCmd(req, &cmd.SubCmd, &cmd.LLMQType, &cmd.RequestID, &cmd.MessageHash, &cmd.QuorumHash, &cmd.Submit) + err := unmarshalCmd(req, &cmd.SubCmd, &cmd.RequestID, &cmd.MessageHash, &cmd.QuorumHash, &cmd.Submit) if err != nil { return nil, err } + cmd.LLMQType = &quorumType + return cs.QuorumSign(ctx, cmd), nil }) return func(srv *JRPCServer) { srv. - On("quorum sign"). + On("quorum platformsign"). Expect(And(Debug())). Times(times). Respond(call, JSONContentType()) @@ -100,7 +102,7 @@ func WithMasternodeMethod(cs CoreServer, times int) MethodFunc { // WithGetNetworkInfoMethod ... func WithGetNetworkInfoMethod(cs CoreServer, times int) MethodFunc { - call := OnMethod(func(ctx context.Context, req btcjson.Request) (interface{}, error) { + call := OnMethod(func(ctx context.Context, _req btcjson.Request) (interface{}, error) { cmd := btcjson.GetNetworkInfoCmd{} return cs.GetNetworkInfo(ctx, cmd), nil }) @@ -115,7 +117,7 @@ func WithGetNetworkInfoMethod(cs CoreServer, times int) MethodFunc { // WithPingMethod ... func WithPingMethod(cs CoreServer, times int) MethodFunc { - call := OnMethod(func(ctx context.Context, req btcjson.Request) (interface{}, error) { + call := OnMethod(func(ctx context.Context, _req btcjson.Request) (interface{}, error) { cmd := btcjson.PingCmd{} return cs.Ping(ctx, cmd), nil }) From 244602363e4035ed4d63a8289744ac0eba292803 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:02:05 +0200 Subject: [PATCH 02/11] build(deps): Bump bufbuild/buf-setup-action from 1.33.0 to 1.35.0 (#841) Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.33.0 to 1.35.0. - [Release notes](https://github.com/bufbuild/buf-setup-action/releases) - [Commits](https://github.com/bufbuild/buf-setup-action/compare/v1.33.0...v1.35.0) --- updated-dependencies: - dependency-name: bufbuild/buf-setup-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/proto-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/proto-lint.yml b/.github/workflows/proto-lint.yml index aefeac122e..cfa456a217 100644 --- a/.github/workflows/proto-lint.yml +++ b/.github/workflows/proto-lint.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 5 steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.33.0 + - uses: bufbuild/buf-setup-action@v1.35.0 - uses: bufbuild/buf-lint-action@v1 with: input: "proto" From d0ffde9ad4733b306d6e63d42bb0299452c69314 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:10:20 +0200 Subject: [PATCH 03/11] build(dependabot): run dependabot on default branch, not master (#843) --- .github/dependabot.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 70ff467c10..31f130e3c9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,10 +18,8 @@ updates: directory: "/" schedule: interval: weekly - target-branch: "master" open-pull-requests-limit: 10 reviewers: - - shumkov - lklimek labels: - dependencies From 6933caefba0fd38bba1d3c84c9fe24578b428859 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:20:03 +0200 Subject: [PATCH 04/11] chore(release): update changelog and version to 1.1.0-dev.1 (#842) --- CHANGELOG.md | 2402 ++++++++++++++++++++++++++++---------------- version/version.go | 2 +- 2 files changed, 1535 insertions(+), 869 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7643efbe99..e98aeb27a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,99 +1,222 @@ -## [1.0.0] - 2024-06-26 +## [1.1.0-dev.1] - 2024-07-23 + +### Features + +- [**breaking**] Replace dash core quorum sign with quorum platformsign (#828) + +### Build + +- Bump bufbuild/buf-setup-action from 1.33.0 to 1.35.0 (#841) +- Run dependabot on default branch, not master (#843) + +## [1.0.0] - 2024-07-01 + +### Miscellaneous Tasks + +- Update changelog and version to 1.0.0 + +### Build + +- Bump github.com/stretchr/testify from 1.8.2 to 1.9.0 (#817) + +## [1.0.0-dev.2] - 2024-06-26 + +### Bug Fixes + +- Ineffective PROXY_APP and ABCI env in entrypoint (#805) + +### Miscellaneous Tasks + +- Update changelog and version to 1.0.0-dev.2 (#806) + +## [1.0.0-dev.1] - 2024-06-24 + +### Bug Fixes + +- Router.chDesc concurrent map iteration and write in pqueue (#794) + +### Build + +- Bump bufbuild/buf-setup-action from 1.31.0 to 1.32.0 (#793) +- Bump bufbuild/buf-setup-action from 1.32.0 to 1.32.2 (#796) +- Bump docker/login-action from 3.1.0 to 3.2.0 (#797) +- Bump docker/build-push-action from 5.3.0 to 5.4.0 (#799) +- Bump docker/build-push-action from 5.4.0 to 6.0.0 (#801) +- Bump bufbuild/buf-setup-action from 1.32.2 to 1.33.0 (#800) +- Bump goreleaser/goreleaser-action from 5 to 6 (#798) + +## [0.14.0-dev.8] - 2024-05-20 + +### Bug Fixes + +- [**breaking**] Limit mempool gossip rate on a per-peer basis (#787) + +### Miscellaneous Tasks + +- Add Warn log level and decrease verbosity of some logs (#790) +- Detect quorum hash mismatch when verifying commit (#791) +- Update changelog and version to 0.14.0-dev.8 (#792) + +## [0.14.0-dev.7] - 2024-05-17 ### Bug Fixes -- Panic in ordered_map Key() (#721) -- Race condition when adding new channel to NodeInfo (#735) -- [**breaking**] E2e tests are flaky due to slow app state processing (#745) -- Cancel previous mempool run when starting new one (#760) -- Valid/locked block incorrectly marked as not timely (#762) -- Handle ValidatorSetUpdate with no validator changes (#774) - Ignore abci section on seeds (#785) - Abci valset update abci does not need a public key on replay (#786) -- [**breaking**] Limit mempool gossip rate on a per-peer basis (#787) -- Router.chDesc concurrent map iteration and write in pqueue (#794) -- Ineffective PROXY_APP and ABCI env in entrypoint (#805) + +### Miscellaneous Tasks + +- Update changelog and version to 0.14.0-dev.7 (#789) + +### Build + +- Bump golangci/golangci-lint-action from 4.0.0 to 5.3.0 (#784) +- Bump actions/setup-go from 5.0.0 to 5.0.1 (#783) +- Bump bufbuild/buf-setup-action from 1.30.1 to 1.31.0 (#780) +- Bump golangci/golangci-lint-action from 5.3.0 to 6.0.1 (#788) + +## [0.14.0-dev.6] - 2024-04-22 + +### Bug Fixes + +- Handle ValidatorSetUpdate with no validator changes (#774) + +### Features + +- [**breaking**] Limit concurrent gRPC connections (#775) + +### Miscellaneous Tasks + +- Update changelog and version to 0.14.0-dev.6 (#778) + +### Testing + +- Fix flaky TestEmitNewValidBlockEventOnCommitWithoutBlock (#772) + +### Build + +- Bump docker/setup-buildx-action from 3.2.0 to 3.3.0 (#776) +- Bump bufbuild/buf-setup-action from 1.30.0 to 1.30.1 (#777) + +## [0.14.0-dev.5] - 2024-03-27 + +### Features + +- Proposer-based app version (#769) + +### Refactor + +- [**breaking**] Move Events from FinalizeBlock to ResponseProcessProposal (#770) + +### Testing + +- Fix flaky TestTooFarInTheFutureProposal (#768) + +### Build + +- Bump docker/setup-buildx-action from 3.1.0 to 3.2.0 (#765) +- Bump docker/login-action from 3.0.0 to 3.1.0 (#767) +- Bump docker/build-push-action from 5.2.0 to 5.3.0 (#766) + +## [0.14.0-dev.4] - 2024-03-13 + +### Bug Fixes + +- Cancel previous mempool run when starting new one (#760) +- Valid/locked block incorrectly marked as not timely (#762) ### Features -- Allow delaying transactions in ResponsePrepareProposal (#717) -- New vote extenison type THRESHOLD_RAW (#715) -- Env var ABCI changes abci option in config.toml (#742) -- Route abci requests depending on request type (#734) -- Add request result to prometheus stats (#743) -- Support timeouts in abci calls (#749) - Allow configuration of check TX timeout for rpc and p2p tx broadcast (#750) - Channel enqueue timeout and improved router cleanup (#754) - Channels with limit of send and recv rate (#753) -- Proposer-based app version (#769) -- [**breaking**] Limit concurrent gRPC connections (#775) ### Miscellaneous Tasks -- Update CODEOWNERS (#736) -- [**breaking**] Remove ExecTxResult.GasWanted (#740) -- Regenerate mocks (#744) -- Don't use go-deadlock in clist due to performance issues (#747) -- Fix linter warnings in v0.14-dev (#748) - Minor improvements: logging, comments, locks (#726) - Update changelog and version to 0.14.0-dev.4 (#763) -- Update changelog and version to 0.14.0-dev.6 (#778) -- Update changelog and version to 0.14.0-dev.7 (#789) -- Add Warn log level and decrease verbosity of some logs (#790) -- Detect quorum hash mismatch when verifying commit (#791) -- Update changelog and version to 0.14.0-dev.8 (#792) -- Update changelog and version to 1.0.0-dev.2 (#806) ### Refactor -- Remove QuorumSingsVerifier (#727) -- Relaxed locking of mempool (#737) - [**breaking**] Remove deprecated config fields (#755) - Remove not needed commit timeout and unused LastPrecommits (#751) - Tune channel priorities and move channel definitions to p2p/channel_params.go (#759) - Use tmsync.Waker when txs are available (#761) -- [**breaking**] Move Events from FinalizeBlock to ResponseProcessProposal (#770) ### Testing - Add parallel grpc execution test (#758) -- Fix flaky TestTooFarInTheFutureProposal (#768) -- Fix flaky TestEmitNewValidBlockEventOnCommitWithoutBlock (#772) ### Build -- Bump actions/setup-go from 3.5.0 to 5.0.0 -- Bump actions/stale from 7 to 9 -- Update golang to 1.21 (#716) +- Bump docker/build-push-action from 5.0.0 to 5.2.0 (#756) +- Bump bufbuild/buf-setup-action from 1.29.0 to 1.30.0 (#757) + +## [0.14.0-dev.3] - 2024-03-07 + +### Bug Fixes + +- Race condition when adding new channel to NodeInfo (#735) +- [**breaking**] E2e tests are flaky due to slow app state processing (#745) + +### Features + +- Env var ABCI changes abci option in config.toml (#742) +- Route abci requests depending on request type (#734) +- Add request result to prometheus stats (#743) +- Support timeouts in abci calls (#749) + +### Miscellaneous Tasks + +- Update CODEOWNERS (#736) +- [**breaking**] Remove ExecTxResult.GasWanted (#740) +- Regenerate mocks (#744) +- Don't use go-deadlock in clist due to performance issues (#747) +- Fix linter warnings in v0.14-dev (#748) + +### Refactor + +- Remove QuorumSingsVerifier (#727) +- Relaxed locking of mempool (#737) + +### Build + +- Simplify build process (#732) +- Fix docker platforms for releases (#733) +- Bump golangci/golangci-lint-action from 3.7.0 to 4.0.0 (#738) +- Bump go to 1.22, alpine to 3.19, mockery to 2.41.0 (#741) +- Bump docker/setup-buildx-action from 3.0.0 to 3.1.0 (#746) + +## [0.14.0-dev.2] - 2024-01-31 + +### Bug Fixes + +- Panic in ordered_map Key() (#721) + +### Features + +- New vote extenison type THRESHOLD_RAW (#715) + +### Build + - Bump actions/download-artifact from 3 to 4 (#720) - Bump actions/upload-artifact from 3 to 4 (#719) - Manual docker image build platform selection (#722) - Bump bufbuild/buf-setup-action from 1.27.0 to 1.29.0 (#729) - Bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1 (#728) - Fix depguard linter configuration (#730) -- Simplify build process (#732) -- Fix docker platforms for releases (#733) -- Bump golangci/golangci-lint-action from 3.7.0 to 4.0.0 (#738) -- Bump go to 1.22, alpine to 3.19, mockery to 2.41.0 (#741) -- Bump docker/setup-buildx-action from 3.0.0 to 3.1.0 (#746) -- Bump docker/build-push-action from 5.0.0 to 5.2.0 (#756) -- Bump bufbuild/buf-setup-action from 1.29.0 to 1.30.0 (#757) -- Bump docker/setup-buildx-action from 3.1.0 to 3.2.0 (#765) -- Bump docker/login-action from 3.0.0 to 3.1.0 (#767) -- Bump docker/build-push-action from 5.2.0 to 5.3.0 (#766) -- Bump docker/setup-buildx-action from 3.2.0 to 3.3.0 (#776) -- Bump bufbuild/buf-setup-action from 1.30.0 to 1.30.1 (#777) -- Bump golangci/golangci-lint-action from 4.0.0 to 5.3.0 (#784) -- Bump actions/setup-go from 5.0.0 to 5.0.1 (#783) -- Bump bufbuild/buf-setup-action from 1.30.1 to 1.31.0 (#780) -- Bump golangci/golangci-lint-action from 5.3.0 to 6.0.1 (#788) -- Bump bufbuild/buf-setup-action from 1.31.0 to 1.32.0 (#793) -- Bump bufbuild/buf-setup-action from 1.32.0 to 1.32.2 (#796) -- Bump docker/login-action from 3.1.0 to 3.2.0 (#797) -- Bump docker/build-push-action from 5.3.0 to 5.4.0 (#799) -- Bump docker/build-push-action from 5.4.0 to 6.0.0 (#801) -- Bump bufbuild/buf-setup-action from 1.32.2 to 1.33.0 (#800) -- Bump goreleaser/goreleaser-action from 5 to 6 (#798) + +## [0.14.0-dev.1] - 2023-12-18 + +### Features + +- Allow delaying transactions in ResponsePrepareProposal (#717) + +### Build + +- Bump actions/setup-go from 3.5.0 to 5.0.0 +- Bump actions/stale from 7 to 9 +- Update golang to 1.21 (#716) ## [0.13.4] - 2023-12-11 @@ -163,13 +286,10 @@ ### Features -- Implement statesync spec for the new approach (#663) - Add wait for masternode-status "ready" (#659) ### Miscellaneous Tasks -- Merge changes from 'v0.11.3' into v0.12 -- Update changelog and version to 0.13.0-dev.2 (#664) - Improve logs (#679) - Update mocks and .proto files after merge 12 to 13 - Update changelog and version to 0.13.0 @@ -185,19 +305,38 @@ - Bump actions/checkout from 3 to 4 (#676) - Regenerate mocks +## [0.13.0-dev.2] - 2023-07-19 + +### Features + +- Implement statesync spec for the new approach (#663) + +### Miscellaneous Tasks + +- Merge changes from 'v0.11.3' into v0.12 +- Update changelog and version to 0.13.0-dev.2 (#664) + ## [0.11.3] - 2023-06-29 ### Bug Fixes +- Prod image high cpu load due to deadlock detection (#652) + +### Miscellaneous Tasks + +- Update changelog and version to 0.11.3 + +## [0.13.0-dev.1] - 2023-06-28 + +### Bug Fixes + - [**breaking**] Remove unused SIGNED_MSG_TYPE_COMMIT (#638) - [**breaking**] Use millisecond resolution of block time (#650) -- Prod image high cpu load due to deadlock detection (#652) ### Miscellaneous Tasks - Update changelog and version to 0.12.0 - Update changelog and version to 0.13.0-dev.1 (#651) -- Update changelog and version to 0.11.3 ## [0.12.0] - 2023-05-23 @@ -241,99 +380,139 @@ ## [0.11.0] - 2023-04-04 -### Bug Fixes +### Miscellaneous Tasks + +- Update changelog and version to 0.11.0 + +### Build + +- Fix broken github actions and regenerate some code (#615) + +## [0.12.0-dev.2] - 2023-04-04 + +### Bug Fixes + +- Nil voteset panics in rest handler (#609) +- Nil voteset panics in rest handler (#609) (#612) + +### Features + +- Use dashd-go 0.24.0 to support LLMQ type 6 (LLMQType_25_67) (#610) + +### Miscellaneous Tasks + +- Update changelog and version to 0.12.0-dev.2 (#613) + +### Backport + +- Use dashd-go 0.24.0 to support LLMQ type 6 (LLMQType_25_67) (#610) (#611) + +## [0.12.0-dev.1] - 2023-03-17 + +### Bug Fixes -- ProcessProposal executed twice for a block (#516) -- Proposer-based timestamp broken during backport (#523) -- Improve wal replay mechanism (#510) -- Decrease log verbosity by logging send/recv logs on trace level (#533) -- Ensure process proposal was called on commit processing (#534) -- Ensure process proposal runs on complete proposal (#538) -- Peer notifications should be async to avoid deadlock in PeerUp (#509) -- Improve flaky TestWALRoundsSkipper (#539) -- Flaky TestReactor_Backfill test (#549) -- [**breaking**] Quorum type set to 0 during replay at genesis (#570) -- Seed doesn't respond to pex requests (#574) -- Docker tag is invalid for empty input.tag (#580) -- Docker tag is invalid for empty input.tag (#580) (#585) -- Signature verification (#584) - Replace tenderdash init single with validator (#599) - Broken error handling in ValueOp (VSA-2022-100) (#601) - Broken error handling in ValueOp (VSA-2022-100) (#601) -- Nil voteset panics in rest handler (#609) -- Nil voteset panics in rest handler (#609) (#612) ### Documentation - Improve protobuf documentation (#604) +### Miscellaneous Tasks + +- Add quote to CGO variables in Makefile (#597) +- Update changelog and version to 0.12.0-dev.1 (#608) + +### Refactor + +- Introduce p2p proto Envelope as a wrapper for p2p messages (#598) +- Consensus state to fix deadlock (#491) + +### Testing + +- Fix TestMakeHTTPDialerURL (#605) + +### Backport + +- V0.10 to v0.11 (#596) + +## [0.11.0-dev.4] - 2023-02-22 + +### Miscellaneous Tasks + +- Update changelog and version to 0.11.0-dev.4 (#593) + +### Backport + +- Catch up the recent changes from v0.10 to v0.11 (#589) + +## [0.10.0-dev.11] - 2023-02-22 + +### Miscellaneous Tasks + +- Update changelog and version to 0.10.0-dev.11 (#591) + +### Refactor + +- Use llmq.Validate function to validate llmq type (#590) + +## [0.10.0-dev.10] - 2023-02-22 + +### Miscellaneous Tasks + +- Bump up dashd-go version to v0.23.6 (#587) +- Update changelog and version to 0.10.0-dev.10 (#588) + +## [0.11.0-dev.3] - 2023-02-15 + +### Bug Fixes + +- Docker tag is invalid for empty input.tag (#580) (#585) +- Signature verification (#584) + +### Miscellaneous Tasks + +- Update changelog and version to 0.11.0-dev.3 (#586) + +## [0.11.0-dev.2] - 2023-02-13 + +### Bug Fixes + +- Docker tag is invalid for empty input.tag (#580) + +### Miscellaneous Tasks + +- Update changelog and version to 0.11.0-dev.2 (#583) + +## [0.10.0-dev.9] - 2023-02-10 + +### Bug Fixes + +- [**breaking**] Quorum type set to 0 during replay at genesis (#570) +- Seed doesn't respond to pex requests (#574) + ### Features -- Upgrade bls library to version 1 (#224) -- Seed connectivity tuning options (max-incoming-connection-time,incoming-connection-window) (#532) -- [**breaking**] Verify next consensus params between nodes (#550) -- Add quorum hash to RequestPrepare/ProcessProposal (#553) - Derive node key from bip39 mnemonic (#562) - Conversion of PEM-encoded ED25519 node keys (#564) -- Use dashd-go 0.24.0 to support LLMQ type 6 (LLMQType_25_67) (#610) ### Miscellaneous Tasks -- [**breaking**] Rename genesis.json quorum fields (#515) -- [**breaking**] Remove Snapshot.core_chain_locked_height (#527) -- Update changelog and version to 0.10.0-dev.6 (#526) -- Update changelog and version to 0.11.0-dev.1 (#530) -- Update changelog and version to 0.10.0-dev.7 (#536) -- Update bls library (#535) - Update changelog and version to 0.10.0-dev.9 (#579) -- Update changelog and version to 0.11.0-dev.2 (#583) -- Update changelog and version to 0.11.0-dev.3 (#586) -- Bump up dashd-go version to v0.23.6 (#587) -- Update changelog and version to 0.10.0-dev.10 (#588) -- Update changelog and version to 0.10.0-dev.11 (#591) -- Update changelog and version to 0.11.0-dev.4 (#593) -- Add quote to CGO variables in Makefile (#597) -- Update changelog and version to 0.12.0-dev.1 (#608) -- Update changelog and version to 0.12.0-dev.2 (#613) -- Update changelog and version to 0.11.0 ### Refactor -- Use logger for log printing (#545) -- Blocksync.bpRequester should stop procedure if block was received (#546) -- [**breaking**] Cleanup protobuf definitions and reorganize fields (#552) - Replace peerID on proTxHash for peer catchup rounds in HeightVoteSet component (#559) - Sync node and seed implementation (#576) -- Use llmq.Validate function to validate llmq type (#590) -- Introduce p2p proto Envelope as a wrapper for p2p messages (#598) -- Consensus state to fix deadlock (#491) ### Testing -- Fix Index out of bounds on "runner logs" (#537) - Update test vectors for BLS - Refactor genesis doc generation (#573) -- Fix TestMakeHTTPDialerURL (#605) - -### Backport - -- Catch up on the latest changes from v0.10 (#528) -- Catch up the recent changes from v0.10 to v0.11 (#589) -- V0.10 to v0.11 (#596) -- Use dashd-go 0.24.0 to support LLMQ type 6 (LLMQType_25_67) (#610) (#611) ### Build -- Bump actions/setup-go from 3.3.1 to 3.4.0 (#524) -- Bump bufbuild/buf-setup-action from 1.9.0 to 1.10.0 (#525) -- CGO paths to BLS deps are incorrect (#531) -- Improve release script (#522) -- Bump goreleaser/goreleaser-action from 3 to 4 (#544) -- Bump actions/stale from 6 to 7 (#543) -- Bump actions/setup-go from 3.4.0 to 3.5.0 (#542) -- Bump bufbuild/buf-setup-action from 1.10.0 to 1.11.0 (#541) -- Use ubuntu 20.04 in github workflows (#547) -- Enable deadlock detection on -dev docker images (#540) - Bump bufbuild/buf-setup-action from 1.11.0 to 1.12.0 (#556) - Bump docker/build-push-action from 3.1.0 to 3.3.0 (#555) - Use version 1.2.5 of BLS lib in Docker (#557) @@ -347,188 +526,178 @@ - Bump docker/setup-buildx-action from 2.4.0 to 2.4.1 (#572) - Bump bufbuild/buf-setup-action from 1.13.1 to 1.14.0 (#577) - Move e2e-manual.yml logic to e2e.yml (#578) -- Fix broken github actions and regenerate some code (#615) -## [0.8.0] - 2022-12-07 +## [0.10.0-dev.8] - 2023-01-16 ### Bug Fixes -- Use thread-safely way to get pro-tx-hash from peer-state (#344) -- Slightly modify a way of interacting with p2p channels in consensus reactor (#357) -- Remove select block to don't block sending a witness response (#336) -- Unsupported priv validator type - dashcore.RPCClient (#353) -- Add a missed "info" field to broadcast-tx-response (#369) -- Consolidate all prerelease changes in latest full release changelog -- First part of modification after merge -- Mishandled pubkey read errors -- Eliminate compile level issues -- Unit tests in abci/example/kvstore -- Unit tests in dash/quorum package -- Deadlock at types.MockPV -- Blocksync package -- Evidence package -- Made some fixes/improvements -- Change a payload hash of a message vote -- Remove using a mutex in processPeerUpdate to fix a deadlock -- Remove double incrementing -- Some modifications for fixing unit tests -- Modify TestVoteString -- Some fixes / improvements -- Some fixes / improvements -- Override genesis time for pbst tests -- Pbst tests -- Disable checking duplicate votes -- Use the current time always when making proposal block -- Consensus state tests -- Consensus state tests -- Consensus state tests -- The tests inside state package -- Node tests -- Add custom marshalling/unmarshalling for coretypes.ResultValidators -- Add checking on nil in Vote.MarshalZerologObject -- Light client tests -- Rpc tests -- Remove duplicate test TestApp_Height -- Add mutex for transport_mconn.go -- Add required option "create-proof-block-range" in a config testdata -- Type error in generateDuplicateVoteEvidence -- Use thread safe way for interacting with consensus state -- Use a normal time ticker for some consensus unit tests -- E2e tests -- Lint issues -- Abci-cli -- Detected data race -- TestBlockProtoBuf -- Lint (proto and golang) modifications -- ProTxHash not correctly initialized -- Lint issue -- Proto lint -- Reuse setValSetUpdate to update validator index and validator-set-updates item in a storage -- Reuse setValSetUpdate to update validator index and validator-set-updates item in a storage -- Fix dependencies in e2e tests -- Install libpcap-dev before running go tests -- Install missing dependencies for linter -- Fix race conditions in reactor -- Specify alpine 3.15 in Dockerfile -- Release script tries to use non-existing file -- Go link issues -- Data-race issue -- Applied changes according to PR feedback -- Make NewSignItem and MakeSignID exported, revert to precalculate hash for SignItem -- Quorum_sign_data_test.go -- Lint issue -- Check a receiver of ValidatorSet on nil -- Invalid initial height in e2e vote extensions test (#419) -- A block with a height is equal initial-height uses current time instead of genesis last-block-time -- Update block time validation -- Change validateBlockTime function -- Update evidence_test.go -- Go lint issues (#455) -- TestReactorValidatorSetChanges (#468) -- Don't inc proposer prio when processing InitChain response (#470) -- Invalid error msg when verifying val power in genesis doc (#476) -- Revert ResponseCheckTx.info field and pass it to ResultBroadcastTx (#488) -- Fix p2p deadlock (#473) -- Abci Info() returns invalid height at genesis (#474) -- Catchup round number is not correct (#507) -- Commits received during state sync are lost (#513) -- Statesync stops the node when light block request fails (#514) - -### Documentation - -- Abcidump documentation -- Same-block execution docs and protobuf cleanup (#454) +- Ensure process proposal runs on complete proposal (#538) +- Peer notifications should be async to avoid deadlock in PeerUp (#509) +- Improve flaky TestWALRoundsSkipper (#539) +- Flaky TestReactor_Backfill test (#549) ### Features -- Abci protocol parser -- Abci protocol parser - packet capture -- Parse CBOR messages -- Add missed fields (CoreChainLockedHeight, ProposerProTxHash and ProposedAppVersion) to RequestFinalizeBlock and PrepareProposal -- Add node's pro-tx-hash into a context (#416) -- Same-block execution (#418) -- Implement import app-state in init-chain request (#472) -- Consensus params updates support (#475) -- Add round to Prepare/ProcessProposal, FinalizeBlock (#498) -- Add core_chain_lock_update to RequestProcessProposal (#492) -- [**breaking**] Include state id in block signature (#478) -- [**breaking**] Put full block in RequestFinalizeBlock (#505) +- [**breaking**] Verify next consensus params between nodes (#550) +- Add quorum hash to RequestPrepare/ProcessProposal (#553) + +### Miscellaneous Tasks + +- Update bls library (#535) + +### Refactor + +- Use logger for log printing (#545) +- Blocksync.bpRequester should stop procedure if block was received (#546) +- [**breaking**] Cleanup protobuf definitions and reorganize fields (#552) + +### Testing + +- Fix Index out of bounds on "runner logs" (#537) + +### Build + +- Bump goreleaser/goreleaser-action from 3 to 4 (#544) +- Bump actions/stale from 6 to 7 (#543) +- Bump actions/setup-go from 3.4.0 to 3.5.0 (#542) +- Bump bufbuild/buf-setup-action from 1.10.0 to 1.11.0 (#541) +- Use ubuntu 20.04 in github workflows (#547) +- Enable deadlock detection on -dev docker images (#540) + +## [0.10.0-dev.7] - 2022-12-20 + +### Bug Fixes + +- Decrease log verbosity by logging send/recv logs on trace level (#533) +- Ensure process proposal was called on commit processing (#534) + +### Features + +- Seed connectivity tuning options (max-incoming-connection-time,incoming-connection-window) (#532) + +### Miscellaneous Tasks + +- Update changelog and version to 0.10.0-dev.7 (#536) + +### Build + +- CGO paths to BLS deps are incorrect (#531) +- Improve release script (#522) + +## [0.11.0-dev.1] - 2022-12-15 + +### Miscellaneous Tasks + +- Update changelog and version to 0.11.0-dev.1 (#530) + +### Backport + +- Catch up on the latest changes from v0.10 (#528) + +## [0.10.0-dev.6] - 2022-12-15 + +### Bug Fixes + +- ProcessProposal executed twice for a block (#516) +- Proposer-based timestamp broken during backport (#523) +- Improve wal replay mechanism (#510) + +### Features + +- Upgrade bls library to version 1 (#224) + +### Miscellaneous Tasks + +- [**breaking**] Rename genesis.json quorum fields (#515) +- [**breaking**] Remove Snapshot.core_chain_locked_height (#527) +- Update changelog and version to 0.10.0-dev.6 (#526) + +### Build + +- Bump actions/setup-go from 3.3.1 to 3.4.0 (#524) +- Bump bufbuild/buf-setup-action from 1.9.0 to 1.10.0 (#525) + +## [0.8.0] - 2022-12-07 + +### Bug Fixes + +- Commits received during state sync are lost (#513) +- Statesync stops the node when light block request fails (#514) ### Miscellaneous Tasks -- If the tenderdash source code is not tracked by git then cloning "develop_0.1" branch as fallback scenario to build a project (#356) -- If the tenderdash source code is not tracked by git then cloning "develop_0.1" branch as fallback scenario to build a project (#355) -- Update changelog and version to 0.8.0-dev.2 (#333) -- Update changelog and version to 0.8.0-dev.3 -- Update changelog and version to 0.8.0-dev.4 (#370) -- Don't fail due to missing bodyclose in go 1.18 -- Remove printing debug stacktrace for a duplicate vote -- Remove redundant mock cons_sync_reactor.go -- Remove github CI docs-toc.yml workflow -- Refactor e2e initialization -- Fix whitespace and comments -- Add unit tests for TestMakeBlockSignID, TestMakeStateSignID, TestMakeVoteExtensionSignIDs -- Some naming modifications -- Add verification for commit vote extension threshold signatures -- Modify a condition in VoteExtSigns2BytesSlices -- Remove recoverableVoteExtensionIndexes -- Some improvements -- Cleanup during self-review -- Remove duplicate test -- Update go.mod -- Update changelog and version to 0.8.0-dev.5 -- Update changelog and version to 0.8.0-dev.5 -- Preallocate the list -- Fix unit tests -- Fix unit tests -- Some modification after self-review -- Remove ThresholdVoteExtension as redundant, use VoteExtension instead -- Update order fields initialization -- Update abci++ spec -- Update changelog and version to 0.8.0-dev.6 -- Update changelog and version to 0.8.0-dev.7 -- Update alpine image version -- Update alpine image version -- Update changelog and version to 0.8.0-dev.8 -- Update changelog and version to 0.8.0-dev.9 -- Update changelog and version to 0.8.0-dev.10 -- Update changelog and version to 0.9.0-dev.1 -- Update changelog and version to 0.10.0-dev.1 (#456) -- Revert `validateBlockTime` (#458) -- Update changelog and version to 0.10.0-dev.2 (#489) -- Improve validation of ResponsePrepare/ProcessProposal ExecTxResults (#477) -- Update changelog and version to 0.10.0-dev.3 (#502) -- Update changelog and version to 0.10.0-dev.4 (#503) -- Update changelog and version to 0.10.0-dev.5 (#511) - Backport to 0.8 - Fix build - Fix abcidump after backport - Update changelog and version to 0.8.0 -### PBTS +### Refactor -- System model made more precise (#8096) +- Optimize initialize priv-validator (#512) + +### Test + +- Add deadlock detection with go-deadlock (#471) + +### Build + +- Update go.mod +- Fix missing dependencies in lint and tests +- Fix superlinter yaml issues +- Improve release script for v0.8 (#520) + +## [0.10.0-dev.5] - 2022-11-23 + +### Bug Fixes + +- Catchup round number is not correct (#507) + +### Features + +- [**breaking**] Put full block in RequestFinalizeBlock (#505) + +### Miscellaneous Tasks + +- Update changelog and version to 0.10.0-dev.5 (#511) + +### Refactor + +- Make all genesis-doc fields (except chain_id) optional (#506) + +### Build + +- Save e2e failure logs as artifact (#508) +- Bump golangci/golangci-lint-action from 3.3.0 to 3.3.1 (#504) + +## [0.10.0-dev.4] - 2022-11-11 + +### Bug Fixes + +- TestReactorValidatorSetChanges (#468) +- Don't inc proposer prio when processing InitChain response (#470) +- Invalid error msg when verifying val power in genesis doc (#476) +- Revert ResponseCheckTx.info field and pass it to ResultBroadcastTx (#488) +- Fix p2p deadlock (#473) +- Abci Info() returns invalid height at genesis (#474) + +### Features + +- Implement import app-state in init-chain request (#472) +- Consensus params updates support (#475) +- Add round to Prepare/ProcessProposal, FinalizeBlock (#498) +- Add core_chain_lock_update to RequestProcessProposal (#492) +- [**breaking**] Include state id in block signature (#478) + +### Miscellaneous Tasks + +- Revert `validateBlockTime` (#458) +- Update changelog and version to 0.10.0-dev.2 (#489) +- Improve validation of ResponsePrepare/ProcessProposal ExecTxResults (#477) +- Update changelog and version to 0.10.0-dev.3 (#502) +- Update changelog and version to 0.10.0-dev.4 (#503) ### Refactor -- Single vote-extension field was modified on multiple ones. support default and threshold-recover types of extensions -- Simplify priv validator initialization code -- Add a centralized way for recovering threshold signatures, add a way of creating sign ids, refactor code to use one way of making sign data and recovering signs -- Standardize the naming of functions, variables -- Add some modifications by RP feedback -- Refactor cbor and apply review feedback -- Move abcidump from scripts/ to cmd/ -- Separate default and threshold-recover extensions between 2 independent list, persist threshold vote extensions with a commit -- Revert vote-extension protobuf structures to previous version -- The changes by PR feedback -- DashCoreSignerClient should return correct private key -- Modifications after merge -- Abci app expects tendermint.version.Consensus rather than proposed-app-version in RequestFinalizeBlock and RequestPrepareProposal -- Revert proposed_app_version -- Allow set 0 for 'create-proof-block-range' to ignore proof block app hash -- Start test of proof-block range from 0 height -- Allow set 0 for 'create-proof-block-range' to ignore proof block app hash -- Start test of proof-block range from 0 height - Enable building docker for develop branch (#443) - Publish block events after block commit (#459) - Handshake block-replay mechanism (#460) @@ -536,153 +705,692 @@ - Change a logic of usage CoreChainLockHeight (#485) - Remove unused P2P.PexReactor flag field in a config (#490) - Provide a current block commit with request finalize block request (#501) -- Make all genesis-doc fields (except chain_id) optional (#506) -- Optimize initialize priv-validator (#512) -### Security +### Testing -- Bump github.com/vektra/mockery/v2 from 2.10.4 to 2.10.6 (#8346) -- Bump github.com/spf13/viper from 1.10.1 to 1.11.0 (#8344) -- Bump github.com/creachadair/atomicfile from 0.2.4 to 0.2.5 (#8365) -- Bump github.com/vektra/mockery/v2 from 2.10.6 to 2.11.0 (#8374) -- Bump github.com/creachadair/tomledit from 0.0.16 to 0.0.18 (#8392) -- Bump bufbuild/buf-setup-action from 1.3.1 to 1.4.0 (#8405) -- Bump codecov/codecov-action from 3.0.0 to 3.1.0 (#8406) -- Bump google.golang.org/grpc from 1.45.0 to 1.46.0 (#8408) -- Bump github.com/vektra/mockery/v2 from 2.12.0 to 2.12.1 (#8417) -- Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#8422) -- Bump github.com/creachadair/tomledit from 0.0.18 to 0.0.19 (#8440) -- Bump github.com/btcsuite/btcd from 0.22.0-beta to 0.22.1 (#8439) -- Bump docker/setup-buildx-action from 1.6.0 to 1.7.0 (#8451) -- Merge result of tendermint/master with v0.8-dev (#376) +- Skip broken PBTS tests (#500) -### Test +### Build -- Add deadlock detection with go-deadlock (#471) +- Bump actions/stale from 5 to 6 +- Bump actions/setup-go from 3.2.1 to 3.3.1 +- Bump bufbuild/buf-setup-action from 1.6.0 to 1.9.0 +- Bump docker/setup-buildx-action from 2.0.0 to 2.2.1 +- Bump golangci/golangci-lint-action from 3.2.0 to 3.3.0 +- Remove unused nightly test runs (#499) -### Testing +## [0.10.0-dev.1] - 2022-09-09 -- Convert to Go 1.18 native fuzzing (#8359) -- Remove debug logging statement (#8385) -- Use correct home path in TestRootConfig -- Add cbor test -- Add parse cmd test -- Test parser NewMessageType -- Test parser -- Replace hardcoded input data -- Skip broken PBTS tests (#500) +### Bug Fixes + +- Go lint issues (#455) + +### Documentation + +- Same-block execution docs and protobuf cleanup (#454) + +### Features + +- Add node's pro-tx-hash into a context (#416) +- Same-block execution (#418) + +### Miscellaneous Tasks + +- Update changelog and version to 0.10.0-dev.1 (#456) + +### Backport + +- Tendermint v0.36 (#446) + +## [0.9.0-dev.1] - 2022-09-01 + +### Miscellaneous Tasks + +- Update changelog and version to 0.9.0-dev.1 + +### Refactor + +- Allow set 0 for 'create-proof-block-range' to ignore proof block app hash +- Start test of proof-block range from 0 height + +## [0.8.0-dev.10] - 2022-08-16 + +### Miscellaneous Tasks + +- Update changelog and version to 0.8.0-dev.10 + +### Refactor + +- Allow set 0 for 'create-proof-block-range' to ignore proof block app hash +- Start test of proof-block range from 0 height + +## [0.8.0-dev.9] - 2022-08-11 + +### Miscellaneous Tasks + +- Update changelog and version to 0.8.0-dev.9 + +## [0.8.0-dev.8] - 2022-08-11 + +### Miscellaneous Tasks + +- Update alpine image version +- Update alpine image version +- Update changelog and version to 0.8.0-dev.8 + +## [0.8.0-dev.7] - 2022-08-10 + +### Bug Fixes + +- Invalid initial height in e2e vote extensions test (#419) +- A block with a height is equal initial-height uses current time instead of genesis last-block-time +- Update block time validation +- Change validateBlockTime function +- Update evidence_test.go + +### Miscellaneous Tasks + +- Update changelog and version to 0.8.0-dev.7 + +### Build + +- Bump actions/setup-go from 3.2.0 to 3.2.1 + +## [0.8.0-dev.6] - 2022-07-15 + +### Bug Fixes + +- Release script tries to use non-existing file +- Go link issues +- Data-race issue +- Applied changes according to PR feedback +- Make NewSignItem and MakeSignID exported, revert to precalculate hash for SignItem +- Quorum_sign_data_test.go +- Lint issue +- Check a receiver of ValidatorSet on nil + +### Features + +- Add missed fields (CoreChainLockedHeight, ProposerProTxHash and ProposedAppVersion) to RequestFinalizeBlock and PrepareProposal + +### Miscellaneous Tasks + +- Preallocate the list +- Fix unit tests +- Fix unit tests +- Some modification after self-review +- Remove ThresholdVoteExtension as redundant, use VoteExtension instead +- Update order fields initialization +- Update abci++ spec +- Update changelog and version to 0.8.0-dev.6 + +### Refactor + +- Separate default and threshold-recover extensions between 2 independent list, persist threshold vote extensions with a commit +- Revert vote-extension protobuf structures to previous version +- The changes by PR feedback +- DashCoreSignerClient should return correct private key +- Modifications after merge +- Abci app expects tendermint.version.Consensus rather than proposed-app-version in RequestFinalizeBlock and RequestPrepareProposal +- Revert proposed_app_version + +## [0.8.0-dev.5] - 2022-06-14 + +### Bug Fixes + +- Consolidate all prerelease changes in latest full release changelog +- First part of modification after merge +- Mishandled pubkey read errors +- Eliminate compile level issues +- Unit tests in abci/example/kvstore +- Unit tests in dash/quorum package +- Deadlock at types.MockPV +- Blocksync package +- Evidence package +- Made some fixes/improvements +- Change a payload hash of a message vote +- Remove using a mutex in processPeerUpdate to fix a deadlock +- Remove double incrementing +- Some modifications for fixing unit tests +- Modify TestVoteString +- Some fixes / improvements +- Some fixes / improvements +- Override genesis time for pbst tests +- Pbst tests +- Disable checking duplicate votes +- Use the current time always when making proposal block +- Consensus state tests +- Consensus state tests +- Consensus state tests +- The tests inside state package +- Node tests +- Add custom marshalling/unmarshalling for coretypes.ResultValidators +- Add checking on nil in Vote.MarshalZerologObject +- Light client tests +- Rpc tests +- Remove duplicate test TestApp_Height +- Add mutex for transport_mconn.go +- Add required option "create-proof-block-range" in a config testdata +- Type error in generateDuplicateVoteEvidence +- Use thread safe way for interacting with consensus state +- Use a normal time ticker for some consensus unit tests +- E2e tests +- Lint issues +- Abci-cli +- Detected data race +- TestBlockProtoBuf +- Lint (proto and golang) modifications +- ProTxHash not correctly initialized +- Lint issue +- Proto lint +- Reuse setValSetUpdate to update validator index and validator-set-updates item in a storage +- Reuse setValSetUpdate to update validator index and validator-set-updates item in a storage +- Fix dependencies in e2e tests +- Install libpcap-dev before running go tests +- Install missing dependencies for linter +- Fix race conditions in reactor +- Specify alpine 3.15 in Dockerfile + +### Documentation + +- Abcidump documentation + +### Features + +- Abci protocol parser +- Abci protocol parser - packet capture +- Parse CBOR messages + +### Miscellaneous Tasks + +- Don't fail due to missing bodyclose in go 1.18 +- Remove printing debug stacktrace for a duplicate vote +- Remove redundant mock cons_sync_reactor.go +- Remove github CI docs-toc.yml workflow +- Refactor e2e initialization +- Fix whitespace and comments +- Add unit tests for TestMakeBlockSignID, TestMakeStateSignID, TestMakeVoteExtensionSignIDs +- Some naming modifications +- Add verification for commit vote extension threshold signatures +- Modify a condition in VoteExtSigns2BytesSlices +- Remove recoverableVoteExtensionIndexes +- Some improvements +- Cleanup during self-review +- Remove duplicate test +- Update go.mod +- Update changelog and version to 0.8.0-dev.5 +- Update changelog and version to 0.8.0-dev.5 + +### Refactor + +- Single vote-extension field was modified on multiple ones. support default and threshold-recover types of extensions +- Simplify priv validator initialization code +- Add a centralized way for recovering threshold signatures, add a way of creating sign ids, refactor code to use one way of making sign data and recovering signs +- Standardize the naming of functions, variables +- Add some modifications by RP feedback +- Refactor cbor and apply review feedback +- Move abcidump from scripts/ to cmd/ + +### Security + +- Merge result of tendermint/master with v0.8-dev (#376) + +### Testing + +- Use correct home path in TestRootConfig +- Add cbor test +- Add parse cmd test +- Test parser NewMessageType +- Test parser +- Replace hardcoded input data + +### Backport + +- Upgrade logging to v0.8 +- Update for new logging + +### Build + +- Bump docker/build-push-action from 2.9.0 to 3.0.0 +- Bump docker/login-action from 1.14.1 to 2.0.0 +- Bump docker/setup-buildx-action from 1.6.0 to 2.0.0 +- Use golang 1.18 +- Upgrade golangci-lint to 1.46 +- Bump actions/setup-go from 2 to 3.1.0 +- Bump golangci/golangci-lint-action from 3.1.0 to 3.2.0 +- Bump actions/setup-go from 3.1.0 to 3.2.0 +- Bump github.com/golangci/golangci-lint + +## [0.8.0-dev.4] - 2022-05-04 + +### Bug Fixes + +- Add a missed "info" field to broadcast-tx-response (#369) + +### Miscellaneous Tasks + +- Update changelog and version to 0.8.0-dev.4 (#370) + +### PBTS + +- System model made more precise (#8096) + +### Security + +- Bump bufbuild/buf-setup-action from 1.3.1 to 1.4.0 (#8405) +- Bump codecov/codecov-action from 3.0.0 to 3.1.0 (#8406) +- Bump google.golang.org/grpc from 1.45.0 to 1.46.0 (#8408) +- Bump github.com/vektra/mockery/v2 from 2.12.0 to 2.12.1 (#8417) +- Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#8422) +- Bump github.com/creachadair/tomledit from 0.0.18 to 0.0.19 (#8440) +- Bump github.com/btcsuite/btcd from 0.22.0-beta to 0.22.1 (#8439) +- Bump docker/setup-buildx-action from 1.6.0 to 1.7.0 (#8451) + +### Abci + +- Application type should take contexts (#8388) +- Application should return errors errors and nilable response objects (#8396) +- Remove redundant methods in client (#8401) +- Remove unneccessary implementations (#8403) +- Interface should take pointers to arguments (#8404) + +### Abci++ + +- Remove intermediate protos (#8414) +- Vote extension cleanup (#8402) + +### Backport + +- V0.7.1 into v0.8-dev (#361) + +### Blocksync + +- Honor contexts supplied to BlockPool (#8447) + +### Config + +- Minor template infrastructure (#8411) + +### Consensus + +- Reduce size of validator set changes test (#8442) + +### Crypto + +- Remove unused code (#8412) +- Cleanup tmhash package (#8434) + +### Fuzz + +- Don't panic on expected errors (#8423) + +### Node + +- Start rpc service after reactors (#8426) + +### P2p + +- Remove support for multiple transports and endpoints (#8420) +- Use nodeinfo less often (#8427) +- Avoid using p2p.Channel internals (#8444) + +### Privval/grpc + +- Normalize signature (#8441) + +### Rpc + +- Fix byte string decoding for URL parameters (#8431) + +## [0.8.0-dev.3] - 2022-04-22 + +### Miscellaneous Tasks + +- Update changelog and version to 0.8.0-dev.3 + +### Build + +- Bump github.com/vektra/mockery/v2 from 2.11.0 to 2.12.0 (#8393) + +## [0.8.0-dev.2] - 2022-04-22 + +### Bug Fixes + +- Use thread-safely way to get pro-tx-hash from peer-state (#344) +- Slightly modify a way of interacting with p2p channels in consensus reactor (#357) +- Remove select block to don't block sending a witness response (#336) +- Unsupported priv validator type - dashcore.RPCClient (#353) + +### Miscellaneous Tasks + +- If the tenderdash source code is not tracked by git then cloning "develop_0.1" branch as fallback scenario to build a project (#356) +- If the tenderdash source code is not tracked by git then cloning "develop_0.1" branch as fallback scenario to build a project (#355) +- Update changelog and version to 0.8.0-dev.2 (#333) + +### Security + +- Bump github.com/vektra/mockery/v2 from 2.10.4 to 2.10.6 (#8346) +- Bump github.com/spf13/viper from 1.10.1 to 1.11.0 (#8344) +- Bump github.com/creachadair/atomicfile from 0.2.4 to 0.2.5 (#8365) +- Bump github.com/vektra/mockery/v2 from 2.10.6 to 2.11.0 (#8374) +- Bump github.com/creachadair/tomledit from 0.0.16 to 0.0.18 (#8392) + +### Testing + +- Convert to Go 1.18 native fuzzing (#8359) +- Remove debug logging statement (#8385) + +### Abci + +- Avoid having untracked requests in the channel (#8382) +- Streamline grpc application construction (#8383) + +### Abci++ + +- Sync implementation and spec for vote extensions (#8141) + +### Build + +- Bump async from 2.6.3 to 2.6.4 in /docs (#8357) + +### Cleanup + +- Unused parameters (#8372) +- Pin get-diff-action uses to major version only, not minor/patch (#8368) + +### Confix + +- Convert tx-index.indexer from string to array (#8342) + +### Eventbus + +- Publish without contexts (#8369) + +### Keymigrate + +- Fix conversion of transaction hash keys (#8352) + +### Node + +- Use signals rather than ephemeral contexts (#8376) +- Cleanup setup for indexer and evidence components (#8378) + +### P2p + +- Fix setting in con-tracker (#8370) + +### Rpc + +- Reformat method signatures and use a context (#8377) + +## [0.7.1] - 2022-04-14 + +### Bug Fixes + +- Network stuck due to outdated proposal block (#327) +- Don't process WAL logs for old rounds (#331) + +### Miscellaneous Tasks + +- Update changelog and version to 0.7.1 + +### Refactor + +- Consolidate redundant code (#322) + +### Security + +- Bump github.com/lib/pq from 1.10.4 to 1.10.5 (#8283) +- Bump codecov/codecov-action from 2.1.0 to 3.0.0 (#8306) +- Bump actions/setup-go from 2 to 3 (#8305) +- Bump actions/stale from 4 to 5 (#8304) +- Bump actions/download-artifact from 2 to 3 (#8302) +- Bump actions/upload-artifact from 2 to 3 (#8303) +- Bump github.com/creachadair/tomledit from 0.0.11 to 0.0.13 (#8307) + +### Testing + +- Update oss-fuzz build script to match reality (#8296) + +### Abci++ + +- Only include meaningful header fields in data passed-through to application (#8216) + +### Build + +- Implement full release workflow in the release script (#332) +- Use go install instead of go get. (#8299) +- Implement full release workflow in the release script (#332) (#345) +- Implement full release workflow in the release script (#332) (#345) + +### Cli + +- Add graceful catches to SIGINT (#8308) +- Simplify resetting commands (#8312) + +### Confix + +- Clean up and document transformations (#8301) +- Remove mempool.version in v0.36 (#8334) + +### Consensus + +- Add nil check to gossip routine (#8288) + +### Events + +- Remove unused event code (#8313) + +### Keymigrate + +- Fix decoding of block-hash row keys (#8294) + +### Node + +- Move handshake out of constructor (#8264) + +### Node+statesync + +- Normalize initialization (#8275) + +### Pubsub + +- [minor] remove unused stub method (#8316) + +### Rpc + +- Add more nil checks in the status end point (#8287) +- Avoid leaking threads (#8328) + +### Scmigrate + +- Ensure target key is correctly renamed (#8276) + +### Service + +- Minor cleanup of comments (#8314) + +### State + +- Remove unused weighted time (#8315) + +### Statesync+blocksync + +- Move event publications into the sync operations (#8274) + +## [0.7.1-dev.1] - 2022-04-07 + +### Bug Fixes + +- Cannot read properties of undefined +- Network stuck due to outdated proposal block (#327) +- Don't process WAL logs for old rounds (#331) + +### Documentation + +- Go tutorial fixed for 0.35.0 version (#7329) (#7330) (#7331) +- Update go ws code snippets (#7486) (#7487) +- Remove spec section from v0.35 docs (#7899) + +### Miscellaneous Tasks + +- Temporarily disable ARM build which is broken +- Backport Tendermint 0.35.1 to Tenderdash 0.8 (#309) +- Update CI e2e action workflow (#319) +- Change dockerhub build target +- Inspect context +- Bump golang version +- Remove debug +- Use gha cache from docker +- Revert dev changes +- Remove obsolete cache step + +### Refactor + +- [**breaking**] Replace is-masternode config with mode=validator (#308) +- Add MustPubKeyToProto helper function (#311) +- Implementing LLMQ generator (#310) +- Move bls CI code to a separate action and improve ARM build (#314) +- Persistent kvstore abci (#313) +- Improve statesync.backfill (#316) +- Small improvement in test four add four minus one genesis validators (#318) + +### Security + +- Bump github.com/golangci/golangci-lint from 1.45.0 to 1.45.2 (#8192) +- Bump github.com/adlio/schema from 1.2.3 to 1.3.0 (#8201) +- Bump github.com/vektra/mockery/v2 from 2.10.0 to 2.10.1 (#8226) +- Bump github.com/vektra/mockery/v2 from 2.10.1 to 2.10.2 (#8246) +- Bump github.com/vektra/mockery/v2 from 2.10.2 to 2.10.4 (#8250) +- Bump github.com/BurntSushi/toml from 1.0.0 to 1.1.0 (#8251) + +### Testing + +- Fix validator conn executor test backport +- Update mockery mocks +- Fix test test_abci_cli + +### Abci++ + +- Correct max-size check to only operate on added and unmodified (#8242) + +### Backport + +- Add basic metrics to the indexer package. (#7250) (#7252) + +### Build + +- Bump google.golang.org/grpc from 1.41.0 to 1.42.0 (#7218) +- Bump github.com/lib/pq from 1.10.3 to 1.10.4 +- Bump github.com/tendermint/tm-db from 0.6.4 to 0.6.6 (#7285) +- Bump minimist from 1.2.5 to 1.2.6 in /docs (#8196) +- Bump bufbuild/buf-setup-action from 1.1.0 to 1.3.0 (#8199) +- Bump github.com/spf13/viper from 1.9.0 to 1.10.0 (#7435) +- Bump github.com/adlio/schema from 1.2.2 to 1.2.3 (#7436) +- Bump github.com/spf13/cobra from 1.2.1 to 1.3.0 (#7457) +- Bump github.com/rs/zerolog from 1.26.0 to 1.26.1 (#7467) +- Downgrade tm-db from v0.6.7 to v0.6.6 +- Use Go 1.18 to fix issue building curve25519-voi +- Bump bufbuild/buf-setup-action from 1.3.0 to 1.3.1 (#8245) +- Provide base branch to make as variable (#321) + +### Ci + +- Move test execution to makefile (#7372) (#7374) +- Update mergify for tenderdash 0.8 +- Cleanup build/test targets (backport #7393) (#7395) +- Skip docker image builds during PRs (#7397) (#7398) +- Fix super-linter configuration settings (backport #7708) (#7710) +- Fixes for arm builds -### Abci +### Cmd -- Avoid having untracked requests in the channel (#8382) -- Streamline grpc application construction (#8383) -- Application type should take contexts (#8388) -- Application should return errors errors and nilable response objects (#8396) -- Remove redundant methods in client (#8401) -- Remove unneccessary implementations (#8403) -- Interface should take pointers to arguments (#8404) +- Cosmetic changes for errors and print statements (#7377) (#7408) +- Add integration test for rollback functionality (backport #7315) (#7369) -### Abci++ +### Config -- Sync implementation and spec for vote extensions (#8141) -- Remove intermediate protos (#8414) -- Vote extension cleanup (#8402) +- Add a Deprecation annotation to P2PConfig.Seeds. (#7496) (#7497) +- Default indexer configuration to null (#8222) -### Backport +### Consensus -- V0.7.1 into v0.8-dev (#361) -- Upgrade logging to v0.8 -- Update for new logging -- Tendermint v0.36 (#446) +- Add some more checks to vote counting (#7253) (#7262) +- Timeout params in toml used as overrides (#8186) +- Additional timing metrics (backport #7849) (#7875) +- Remove string indented function (#8257) +- Avoid panics during handshake (#8266) -### Blocksync +### E2e -- Honor contexts supplied to BlockPool (#8447) +- Stabilize validator update form (#7340) (#7351) +- Clarify apphash reporting (#7348) (#7352) +- Generate keys for more stable load (#7344) (#7353) +- App hash test cleanup (0.35 backport) (#7350) +- Fix hashing for app + Fix logic of TestApp_Hash (#8229) -### Build +### Evidence -- Bump async from 2.6.3 to 2.6.4 in /docs (#8357) -- Bump github.com/vektra/mockery/v2 from 2.11.0 to 2.12.0 (#8393) -- Bump docker/build-push-action from 2.9.0 to 3.0.0 -- Bump docker/login-action from 1.14.1 to 2.0.0 -- Bump docker/setup-buildx-action from 1.6.0 to 2.0.0 -- Use golang 1.18 -- Upgrade golangci-lint to 1.46 -- Bump actions/setup-go from 2 to 3.1.0 -- Bump golangci/golangci-lint-action from 3.1.0 to 3.2.0 -- Bump actions/setup-go from 3.1.0 to 3.2.0 -- Bump github.com/golangci/golangci-lint -- Bump actions/setup-go from 3.2.0 to 3.2.1 -- Bump actions/stale from 5 to 6 -- Bump actions/setup-go from 3.2.1 to 3.3.1 -- Bump bufbuild/buf-setup-action from 1.6.0 to 1.9.0 -- Bump docker/setup-buildx-action from 2.0.0 to 2.2.1 -- Bump golangci/golangci-lint-action from 3.2.0 to 3.3.0 -- Remove unused nightly test runs (#499) -- Save e2e failure logs as artifact (#508) -- Bump golangci/golangci-lint-action from 3.3.0 to 3.3.1 (#504) -- Update go.mod -- Fix missing dependencies in lint and tests -- Fix superlinter yaml issues -- Improve release script for v0.8 (#520) +- Remove source of non-determinism from test (#7266) (#7268) -### Cleanup +### Internal/libs/protoio -- Unused parameters (#8372) -- Pin get-diff-action uses to major version only, not minor/patch (#8368) +- Optimize MarshalDelimited by plain byteslice allocations+sync.Pool (#7325) (#7426) -### Config +### Internal/proxy -- Minor template infrastructure (#8411) +- Add initial set of abci metrics backport (#7342) -### Confix +### Light -- Convert tx-index.indexer from string to array (#8342) +- Remove untracked close channel (#8228) -### Consensus +### Lint -- Reduce size of validator set changes test (#8442) +- Remove lll check (#7346) (#7357) +- Bump linter version in ci (#8234) -### Crypto +### Migration -- Remove unused code (#8412) -- Cleanup tmhash package (#8434) +- Remove stale seen commits (#8205) -### Eventbus +### Node -- Publish without contexts (#8369) +- Remove channel and peer update initialization from construction (#8238) +- Reorder service construction (#8262) -### Fuzz +### P2p -- Don't panic on expected errors (#8423) +- Reduce peer score for dial failures (backport #7265) (#7271) +- Plumb rudamentary service discovery to rectors and update statesync (backport #8030) (#8036) +- Update shim to transfer information about peers (#8047) +- Inject nodeinfo into router (#8261) -### Keymigrate +### Pubsub -- Fix conversion of transaction hash keys (#8352) +- Report a non-nil error when shutting down. (#7310) -### Node +### Rpc -- Use signals rather than ephemeral contexts (#8376) -- Cleanup setup for indexer and evidence components (#8378) -- Start rpc service after reactors (#8426) +- Backport experimental buffer size control parameters from #7230 (tm v0.35.x) (#7276) +- Implement header and header_by_hash queries (backport #7270) (#7367) -### P2p +### State -- Fix setting in con-tracker (#8370) -- Remove support for multiple transports and endpoints (#8420) -- Use nodeinfo less often (#8427) -- Avoid using p2p.Channel internals (#8444) +- Avoid premature genericism (#8224) -### Privval/grpc +### Statesync -- Normalize signature (#8441) +- Assert app version matches (backport #7856) (#7886) +- Avoid compounding retry logic for fetching consensus parameters (backport #8032) (#8041) +- Merge channel processing (#8240) +- Tweak test performance (#8267) -### Rpc +### Types -- Reformat method signatures and use a context (#8377) -- Fix byte string decoding for URL parameters (#8431) +- Fix path handling in node key tests (#7493) (#7502) -## [0.7.1] - 2022-04-14 +## [0.8.0-dev.1] - 2022-03-24 ### ABCI++ @@ -696,11 +1404,6 @@ - Backport e2e tests (#248) - Remove option c form linux build (#305) -- Cannot read properties of undefined -- Network stuck due to outdated proposal block (#327) -- Don't process WAL logs for old rounds (#331) -- Network stuck due to outdated proposal block (#327) -- Don't process WAL logs for old rounds (#331) ### Docs @@ -710,36 +1413,14 @@ - Add an overview of the proposer-based timestamps algorithm (#8058) - PBTS synchrony issues runbook (#8129) -- Go tutorial fixed for 0.35.0 version (#7329) (#7330) (#7331) -- Update go ws code snippets (#7486) (#7487) -- Remove spec section from v0.35 docs (#7899) ### Miscellaneous Tasks - Stabilize consensus algorithm (#284) -- Temporarily disable ARM build which is broken -- Backport Tendermint 0.35.1 to Tenderdash 0.8 (#309) -- Update CI e2e action workflow (#319) -- Change dockerhub build target -- Inspect context -- Bump golang version -- Remove debug -- Use gha cache from docker -- Revert dev changes -- Remove obsolete cache step -- Update changelog and version to 0.7.1 ### Refactor - Replace several functions with an identical body (processStateCh,processDataCh,processVoteCh,processVoteSetBitsCh) on one function processMsgCh (#296) -- [**breaking**] Replace is-masternode config with mode=validator (#308) -- Add MustPubKeyToProto helper function (#311) -- Implementing LLMQ generator (#310) -- Move bls CI code to a separate action and improve ARM build (#314) -- Persistent kvstore abci (#313) -- Improve statesync.backfill (#316) -- Small improvement in test four add four minus one genesis validators (#318) -- Consolidate redundant code (#322) ### Security @@ -752,28 +1433,11 @@ - Bump gaurav-nelson/github-action-markdown-link-check from 1.0.13 to 1.0.14 (#8166) - Bump docker/build-push-action from 2.9.0 to 2.10.0 (#8167) - Bump github.com/golangci/golangci-lint from 1.44.2 to 1.45.0 (#8169) -- Bump github.com/golangci/golangci-lint from 1.45.0 to 1.45.2 (#8192) -- Bump github.com/adlio/schema from 1.2.3 to 1.3.0 (#8201) -- Bump github.com/vektra/mockery/v2 from 2.10.0 to 2.10.1 (#8226) -- Bump github.com/vektra/mockery/v2 from 2.10.1 to 2.10.2 (#8246) -- Bump github.com/vektra/mockery/v2 from 2.10.2 to 2.10.4 (#8250) -- Bump github.com/BurntSushi/toml from 1.0.0 to 1.1.0 (#8251) -- Bump github.com/lib/pq from 1.10.4 to 1.10.5 (#8283) -- Bump codecov/codecov-action from 2.1.0 to 3.0.0 (#8306) -- Bump actions/setup-go from 2 to 3 (#8305) -- Bump actions/stale from 4 to 5 (#8304) -- Bump actions/download-artifact from 2 to 3 (#8302) -- Bump actions/upload-artifact from 2 to 3 (#8303) -- Bump github.com/creachadair/tomledit from 0.0.11 to 0.0.13 (#8307) ### Testing - Logger cleanup (#8153) - KeepInvalidTxsInCache test is invalid -- Fix validator conn executor test backport -- Update mockery mocks -- Fix test test_abci_cli -- Update oss-fuzz build script to match reality (#8296) ### Abci @@ -784,18 +1448,12 @@ - Synchronize PrepareProposal with the newest version of the spec (#8094) - Remove app_signed_updates (#8128) - Remove CheckTx call from PrepareProposal flow (#8176) -- Correct max-size check to only operate on added and unmodified (#8242) -- Only include meaningful header fields in data passed-through to application (#8216) ### Autofile - Reduce minor panic and docs changes (#8122) - Remove vestigal close mechanism (#8150) -### Backport - -- Add basic metrics to the indexer package. (#7250) (#7252) - ### Blocksync - Drop redundant shutdown mechanisms (#8136) @@ -805,57 +1463,14 @@ - Bump docker/login-action from 1.13.0 to 1.14.1 - Bump golangci/golangci-lint-action from 2.5.2 to 3.1.0 -- Bump google.golang.org/grpc from 1.41.0 to 1.42.0 (#7218) -- Bump github.com/lib/pq from 1.10.3 to 1.10.4 -- Bump github.com/tendermint/tm-db from 0.6.4 to 0.6.6 (#7285) -- Bump minimist from 1.2.5 to 1.2.6 in /docs (#8196) -- Bump bufbuild/buf-setup-action from 1.1.0 to 1.3.0 (#8199) -- Bump github.com/spf13/viper from 1.9.0 to 1.10.0 (#7435) -- Bump github.com/adlio/schema from 1.2.2 to 1.2.3 (#7436) -- Bump github.com/spf13/cobra from 1.2.1 to 1.3.0 (#7457) -- Bump github.com/rs/zerolog from 1.26.0 to 1.26.1 (#7467) -- Downgrade tm-db from v0.6.7 to v0.6.6 -- Use Go 1.18 to fix issue building curve25519-voi -- Bump bufbuild/buf-setup-action from 1.3.0 to 1.3.1 (#8245) -- Provide base branch to make as variable (#321) -- Implement full release workflow in the release script (#332) -- Use go install instead of go get. (#8299) -- Implement full release workflow in the release script (#332) (#345) -- Implement full release workflow in the release script (#332) (#345) - -### Ci - -- Move test execution to makefile (#7372) (#7374) -- Update mergify for tenderdash 0.8 -- Cleanup build/test targets (backport #7393) (#7395) -- Skip docker image builds during PRs (#7397) (#7398) -- Fix super-linter configuration settings (backport #7708) (#7710) -- Fixes for arm builds ### Cleanup - Remove commented code (#8123) -### Cli - -- Add graceful catches to SIGINT (#8308) -- Simplify resetting commands (#8312) - ### Cmd - Make reset more safe (#8081) -- Cosmetic changes for errors and print statements (#7377) (#7408) -- Add integration test for rollback functionality (backport #7315) (#7369) - -### Config - -- Add a Deprecation annotation to P2PConfig.Seeds. (#7496) (#7497) -- Default indexer configuration to null (#8222) - -### Confix - -- Clean up and document transformations (#8301) -- Remove mempool.version in v0.36 (#8334) ### Consensus @@ -871,43 +1486,15 @@ - Avoid panic during shutdown (#8170) - Cleanup tempfile explictly (#8184) - Add leaktest check to replay tests (#8185) -- Update state machine to use the new consensus params (#8181) -- Add some more checks to vote counting (#7253) (#7262) -- Timeout params in toml used as overrides (#8186) -- Additional timing metrics (backport #7849) (#7875) -- Remove string indented function (#8257) -- Avoid panics during handshake (#8266) -- Add nil check to gossip routine (#8288) - -### E2e - -- Stabilize validator update form (#7340) (#7351) -- Clarify apphash reporting (#7348) (#7352) -- Generate keys for more stable load (#7344) (#7353) -- App hash test cleanup (0.35 backport) (#7350) -- Fix hashing for app + Fix logic of TestApp_Hash (#8229) - -### Events - -- Remove service aspects of event switch (#8146) -- Remove unused event code (#8313) - -### Evidence - -- Manage and initialize state objects more clearly in the pool (#8080) -- Remove source of non-determinism from test (#7266) (#7268) - -### Internal/libs/protoio - -- Optimize MarshalDelimited by plain byteslice allocations+sync.Pool (#7325) (#7426) +- Update state machine to use the new consensus params (#8181) -### Internal/proxy +### Events -- Add initial set of abci metrics backport (#7342) +- Remove service aspects of event switch (#8146) -### Keymigrate +### Evidence -- Fix decoding of block-hash row keys (#8294) +- Manage and initialize state objects more clearly in the pool (#8080) ### Libs/clist @@ -921,24 +1508,11 @@ - Remove Must constructor (#8120) -### Light - -- Remove untracked close channel (#8228) - -### Lint - -- Remove lll check (#7346) (#7357) -- Bump linter version in ci (#8234) - ### Mempool - Test harness should expose application (#8143) - Reduce size of test (#8152) -### Migration - -- Remove stale seen commits (#8205) - ### Node - Excise node handle within rpc env (#8063) @@ -946,23 +1520,12 @@ - Pass eventbus at construction time (#8084) - Cleanup evidence db (#8119) - Always sync with the application at startup (#8159) -- Remove channel and peer update initialization from construction (#8238) -- Reorder service construction (#8262) -- Move handshake out of constructor (#8264) - -### Node+statesync - -- Normalize initialization (#8275) ### P2p - Update polling interval calculation for PEX requests (#8106) - Remove unnecessary panic handling in PEX reactor (#8110) - Adjust max non-persistent peer score (#8137) -- Reduce peer score for dial failures (backport #7265) (#7271) -- Plumb rudamentary service discovery to rectors and update statesync (backport #8030) (#8036) -- Update shim to transfer information about peers (#8047) -- Inject nodeinfo into router (#8261) ### P2p+flowrate @@ -976,11 +1539,6 @@ - Collapse triforcated abci.Client (#8067) -### Pubsub - -- Report a non-nil error when shutting down. (#7310) -- [minor] remove unused stub method (#8316) - ### Readme - Add vocdoni (#8117) @@ -993,48 +1551,25 @@ - Cleanup second node during test (#8175) -### Rpc - -- Backport experimental buffer size control parameters from #7230 (tm v0.35.x) (#7276) -- Implement header and header_by_hash queries (backport #7270) (#7367) -- Add more nil checks in the status end point (#8287) -- Avoid leaking threads (#8328) - -### Scmigrate - -- Ensure target key is correctly renamed (#8276) - ### Service - Add NopService and use for PexReactor (#8100) -- Minor cleanup of comments (#8314) ### State - Avoid panics for marshaling errors (#8125) - Panic on ResponsePrepareProposal validation error (#8145) - Propogate error from state store (#8171) -- Avoid premature genericism (#8224) -- Remove unused weighted time (#8315) ### Statesync - Avoid leaking a thread during tests (#8085) -- Assert app version matches (backport #7856) (#7886) -- Avoid compounding retry logic for fetching consensus parameters (backport #8032) (#8041) -- Merge channel processing (#8240) -- Tweak test performance (#8267) - -### Statesync+blocksync - -- Move event publications into the sync operations (#8274) ### Types - Update synchrony params to match checked in proto (#8142) - Minor cleanup of un or minimally used types (#8154) - Add TimeoutParams into ConsensusParams structs (#8177) -- Fix path handling in node key tests (#7493) (#7502) ## [0.35.2] - 2022-03-02 @@ -1380,29 +1915,240 @@ - Update changelog and version to 0.7.0 -### Consensus +### Consensus + +- Use buffered channel in TestStateFullRound1 (#7668) + +### Params + +- Increase default synchrony params (#7704) + +## [0.35.1] - 2022-01-26 + +### ABCI++ + +- Major refactor of spec's structure. Addressed Josef's comments. Merged ABCI's methods and data structs that didn't change. Added introductory paragraphs +- Found a solution to set the execution mode + +### ADR-74 + +- Migrate Timeout Parameters to Consensus Parameters (#7503) + +### Documentation + +- Fixup the builtin tutorial (#7488) + +### Miscellaneous Tasks + +- Create only 1 proof block by default +- Release script and initial changelog (#250) +- [**breaking**] Bump ABCI version and update release.sh to change TMVersionDefault automatically (#253) +- Eliminate compile errors after backport of tendermint 0.35 (#238) + +### RFC-009 + +- Consensus Parameter Upgrades (#7524) + +### Security + +- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 (#7562) +- Bump docker/build-push-action from 2.7.0 to 2.8.0 (#7679) +- Bump github.com/vektra/mockery/v2 from 2.9.4 to 2.10.0 (#7685) +- Bump github.com/golangci/golangci-lint from 1.43.0 to 1.44.0 (#7692) + +### Testing + +- Pass testing.T around rather than errors for test fixtures (#7518) +- Uniquify prom IDs (#7540) +- Remove in-test logging (#7558) +- Use noop loger with leakteset in more places (#7604) +- Update docker versions to match build version (#7646) +- Update cleanup opertunities (#7647) +- Reduce timeout to 4m from 8m (#7681) + +### Abci + +- Socket server shutdown response handler (#7547) + +### Abci/client + +- Use a no-op logger in the test (#7633) +- Simplify client interface (#7607) + +### Autofile + +- Ensure files are not reopened after closing (#7628) +- Avoid shutdown race (#7650) + +### Blocksync + +- Standardize construction process (#7531) + +### Build + +- Bump technote-space/get-diff-action from 5 to 6.0.1 (#7535) +- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 (#7560) +- Make sure to test packages with external tests (#7608) +- Make sure to test packages with external tests (backport #7608) (#7635) +- Bump github.com/prometheus/client_golang (#7636) +- Bump github.com/prometheus/client_golang (#7637) +- Bump docker/build-push-action from 2.7.0 to 2.8.0 (#389) +- Bump github.com/prometheus/client_golang (#249) +- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 +- Bump vuepress-theme-cosmos from 1.0.182 to 1.0.183 in /docs (#7680) +- Bump github.com/vektra/mockery/v2 from 2.9.4 to 2.10.0 (#7684) +- Bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#7693) +- Bump github.com/golangci/golangci-lint (#7696) +- Bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#7695) + +### Clist + +- Reduce size of test workload for clist implementation (#7682) + +### Consensus + +- Use noop logger for WAL test (#7580) +- Explicit test timeout (#7585) +- Test shutdown to avoid hangs (#7603) +- Calculate prevote message delay metric (#7551) +- Check proposal non-nil in prevote message delay metric (#7625) +- Calculate prevote message delay metric (backport #7551) (#7618) +- Check proposal non-nil in prevote message delay metric (#7625) (#7632) +- Use delivertxsync (#7616) +- Fix height advances in test state (#7648) + +### Consensus/state + +- Avert a data race with state update and tests (#7643) + +### Evidence + +- Reactor constructor (#7533) + +### Internal/libs + +- Delete unused functionality (#7569) + +### Jsontypes + +- Improve tests and error diagnostics (#7669) + +### Light + +- Avoid panic for integer underflow (#7589) +- Remove test panic (#7588) +- Convert validation panics to errors (#7597) +- Fix provider error plumbing (#7610) +- Return light client status on rpc /status (#7536) + +### Log + +- Remove support for traces (#7542) +- Avoid use of legacy test logging (#7583) + +### Logging + +- Remove reamining instances of SetLogger interface (#7572) + +### Mempool + +- Refactor mempool constructor (#7530) +- Reactor concurrency test tweaks (#7651) + +### Node + +- New concrete type for seed node implementation (#7521) +- Move seed node implementation to its own file (#7566) +- Collapse initialization internals (#7567) + +### Node+autofile + +- Avoid leaks detected during WAL shutdown (#7599) + +### Node+privval + +- Refactor privval construction (#7574) + +### Node+rpc + +- Rpc environment should own it's creation (#7573) + +### P2p + +- Always advertise self, to enable mutual address discovery (#7620) +- Always advertise self, to enable mutual address discovery (#7594) + +### Pex + +- Regularize reactor constructor (#7532) +- Avert a data race on map access in the reactor (#7614) +- Do not send nil envelopes to the reactor (#7622) +- Improve handling of closed channels (#7623) + +### Privval + +- Improve client shutdown to prevent resource leak (#7544) +- Synchronize leak check with shutdown (#7629) +- Do not use old proposal timestamp (#7621) +- Avoid re-signing vote when RHS and signbytes are equal (#7592) + +### Protoio + +- Fix incorrect test assertion (#7606) + +### Pubsub + +- Use concrete queries instead of an interface (#7686) + +### Reactors + +- Skip log on some routine cancels (#7556) + +### Rpc + +- Remove positional parameter encoding from clients (#7545) +- Collapse Caller and HTTPClient interfaces. (#7548) +- Simplify the JSON-RPC client Caller interface (#7549) +- Replace anonymous arguments with structured types (#7552) +- Refactor the HTTP POST handler (#7555) +- Replace custom context-like argument with context.Context (#7559) +- Remove cache control settings from the HTTP server (#7568) +- Fix mock test cases (#7571) +- Rework how responses are written back via HTTP (#7575) +- Simplify panic recovery in the server middleware (#7578) +- Consolidate RPC route map construction (#7582) +- Clean up the RPCFunc constructor signature (#7586) +- Check RPC service functions more carefully (#7587) +- Update fuzz criteria to match the implementation (#7595) +- Remove dependency of URL (GET) requests on tmjson (#7590) +- Simplify the encoding of interface-typed arguments in JSON (#7600) +- Paginate mempool /unconfirmed_txs endpoint (#7612) +- Use encoding/json rather than tmjson (#7670) +- Check error code for broadcast_tx_commit (#7683) +- Check error code for broadcast_tx_commit (#7683) (#7688) + +### Service -- Use buffered channel in TestStateFullRound1 (#7668) +- Avoid debug logs before error (#7564) -### Params +### Statesync -- Increase default synchrony params (#7704) +- Reactor and channel construction (#7529) +- Use specific testing.T logger for tests (#7543) +- Clarify test cleanup (#7565) +- SyncAny test buffering (#7570) +- More orderly dispatcher shutdown (#7601) -## [0.35.1] - 2022-01-26 +### Types -### ABCI++ +- Rename and extend the EventData interface (#7687) -- Major refactor of spec's structure. Addressed Josef's comments. Merged ABCI's methods and data structs that didn't change. Added introductory paragraphs -- Found a solution to set the execution mode +## [0.7.0-dev.6] - 2022-01-07 ### ADR - Update the proposer-based timestamp spec per discussion with @cason (#7153) -### ADR-74 - -- Migrate Timeout Parameters to Consensus Parameters (#7503) - ### Bug Fixes - Panic on precommits does not have any +2/3 votes @@ -1421,7 +2167,6 @@ - Go tutorial fixed for 0.35.0 version (#7329) (#7330) (#7331) - Update go ws code snippets (#7486) - Update go ws code snippets (#7486) (#7487) -- Fixup the builtin tutorial (#7488) ### Features @@ -1431,22 +2176,11 @@ - Inter-validator set communication (#187) - Add create_proof_block_range config option (#243) -### Miscellaneous Tasks - -- Create only 1 proof block by default -- Release script and initial changelog (#250) -- [**breaking**] Bump ABCI version and update release.sh to change TMVersionDefault automatically (#253) -- Eliminate compile errors after backport of tendermint 0.35 (#238) - ### PBTS - New minimal set of changes in consensus algorithm (#369) - New system model and problem statement (#375) -### RFC-009 - -- Consensus Parameter Upgrades (#7524) - ### RFC006 - Semantic Versioning (#365) @@ -1469,10 +2203,6 @@ - Bump google.golang.org/grpc from 1.42.0 to 1.43.0 (#7455) - Bump github.com/spf13/viper from 1.10.0 to 1.10.1 (#7470) - Bump docker/login-action from 1.10.0 to 1.12.0 (#7494) -- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 (#7562) -- Bump docker/build-push-action from 2.7.0 to 2.8.0 (#7679) -- Bump github.com/vektra/mockery/v2 from 2.9.4 to 2.10.0 (#7685) -- Bump github.com/golangci/golangci-lint from 1.43.0 to 1.44.0 (#7692) ### Testing @@ -1482,22 +2212,6 @@ - Pass testing.T to assert and require always, assertion cleanup (#7508) - Remove background contexts (#7509) - Remove panics from test fixtures (#7522) -- Pass testing.T around rather than errors for test fixtures (#7518) -- Uniquify prom IDs (#7540) -- Remove in-test logging (#7558) -- Use noop loger with leakteset in more places (#7604) -- Update docker versions to match build version (#7646) -- Update cleanup opertunities (#7647) -- Reduce timeout to 4m from 8m (#7681) - -### Abci - -- Socket server shutdown response handler (#7547) - -### Abci/client - -- Use a no-op logger in the test (#7633) -- Simplify client interface (#7607) ### Acbi @@ -1507,19 +2221,10 @@ - Lib2p implementation plan (#7282) -### Autofile - -- Ensure files are not reopened after closing (#7628) -- Avoid shutdown race (#7650) - ### Backport - Add basic metrics to the indexer package. (#7250) (#7252) -### Blocksync - -- Standardize construction process (#7531) - ### Build - Bump google.golang.org/grpc from 1.41.0 to 1.42.0 (#7218) @@ -1549,20 +2254,6 @@ - Bump docker/login-action from 1.11.0 to 1.12.0 (#380) - Bump github.com/rs/cors from 1.8.0 to 1.8.2 (#7484) - Bump github.com/rs/cors from 1.8.0 to 1.8.2 (#7485) -- Bump technote-space/get-diff-action from 5 to 6.0.1 (#7535) -- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 (#7560) -- Make sure to test packages with external tests (#7608) -- Make sure to test packages with external tests (backport #7608) (#7635) -- Bump github.com/prometheus/client_golang (#7636) -- Bump github.com/prometheus/client_golang (#7637) -- Bump docker/build-push-action from 2.7.0 to 2.8.0 (#389) -- Bump github.com/prometheus/client_golang (#249) -- Bump github.com/BurntSushi/toml from 0.4.1 to 1.0.0 -- Bump vuepress-theme-cosmos from 1.0.182 to 1.0.183 in /docs (#7680) -- Bump github.com/vektra/mockery/v2 from 2.9.4 to 2.10.0 (#7684) -- Bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#7693) -- Bump github.com/golangci/golangci-lint (#7696) -- Bump google.golang.org/grpc from 1.43.0 to 1.44.0 (#7695) ### Ci @@ -1575,10 +2266,6 @@ - Skip docker image builds during PRs (#7397) (#7398) - Tweak e2e configuration (#7400) -### Clist - -- Reduce size of test workload for clist implementation (#7682) - ### Cmd - Add integration test and fix bug in rollback command (#7315) @@ -1596,24 +2283,11 @@ - Add some more checks to vote counting (#7253) - Add some more checks to vote counting (#7253) (#7262) - Remove reactor options (#7526) -- Use noop logger for WAL test (#7580) -- Explicit test timeout (#7585) -- Test shutdown to avoid hangs (#7603) -- Calculate prevote message delay metric (#7551) -- Check proposal non-nil in prevote message delay metric (#7625) -- Calculate prevote message delay metric (backport #7551) (#7618) -- Check proposal non-nil in prevote message delay metric (#7625) (#7632) -- Use delivertxsync (#7616) -- Fix height advances in test state (#7648) ### Consensus+p2p - Change how consensus reactor is constructed (#7525) -### Consensus/state - -- Avert a data race with state update and tests (#7643) - ### Contexts - Remove all TODO instances (#7466) @@ -1650,11 +2324,6 @@ - Remove source of non-determinism from test (#7266) - Remove source of non-determinism from test (#7266) (#7268) -- Reactor constructor (#7533) - -### Internal/libs - -- Delete unused functionality (#7569) ### Internal/libs/protoio @@ -1665,10 +2334,6 @@ - Add initial set of abci metrics backport (#7342) -### Jsontypes - -- Improve tests and error diagnostics (#7669) - ### Libs/os - Remove arbitrary os.Exit (#7284) @@ -1685,11 +2350,6 @@ ### Light - Remove global context from tests (#7505) -- Avoid panic for integer underflow (#7589) -- Remove test panic (#7588) -- Convert validation panics to errors (#7597) -- Fix provider error plumbing (#7610) -- Return light client status on rpc /status (#7536) ### Lint @@ -1699,42 +2359,19 @@ ### Log - Dissallow nil loggers (#7445) -- Remove support for traces (#7542) -- Avoid use of legacy test logging (#7583) - -### Logging - -- Remove reamining instances of SetLogger interface (#7572) ### Mempool - Avoid arbitrary background contexts (#7409) -- Refactor mempool constructor (#7530) -- Reactor concurrency test tweaks (#7651) ### Node - Minor package cleanups (#7444) -- New concrete type for seed node implementation (#7521) -- Move seed node implementation to its own file (#7566) -- Collapse initialization internals (#7567) - -### Node+autofile - -- Avoid leaks detected during WAL shutdown (#7599) ### Node+consensus - Handshaker initialization (#7283) -### Node+privval - -- Refactor privval construction (#7574) - -### Node+rpc - -- Rpc environment should own it's creation (#7573) - ### P2p - Reduce peer score for dial failures (#7265) @@ -1745,8 +2382,6 @@ - Migrate to use new interface for channel errors (#7403) - Refactor channel Send/out (#7414) - Use recieve for channel iteration (#7425) -- Always advertise self, to enable mutual address discovery (#7620) -- Always advertise self, to enable mutual address discovery (#7594) ### P2p/upnp @@ -1755,19 +2390,11 @@ ### Pex - Improve goroutine lifecycle (#7343) -- Regularize reactor constructor (#7532) -- Avert a data race on map access in the reactor (#7614) -- Do not send nil envelopes to the reactor (#7622) -- Improve handling of closed channels (#7623) ### Privval - Remove panics in privval implementation (#7475) - Improve test hygine (#7511) -- Improve client shutdown to prevent resource leak (#7544) -- Synchronize leak check with shutdown (#7629) -- Do not use old proposal timestamp (#7621) -- Avoid re-signing vote when RHS and signbytes are equal (#7592) ### Proto @@ -1775,20 +2402,11 @@ - Abci++ changes (#348) - Rebuild the proto files from the spec repository (#7291) -### Protoio - -- Fix incorrect test assertion (#7606) - ### Pubsub - Move indexing out of the primary subscription path (#7231) - Report a non-nil error when shutting down. (#7310) - Make the queue unwritable after shutdown. (#7316) -- Use concrete queries instead of an interface (#7686) - -### Reactors - -- Skip log on some routine cancels (#7556) ### Rfc @@ -1801,26 +2419,6 @@ - Backport experimental buffer size control parameters from #7230 (tm v0.35.x) (#7276) - Implement header and header_by_hash queries (#7270) - Implement header and header_by_hash queries (backport #7270) (#7367) -- Remove positional parameter encoding from clients (#7545) -- Collapse Caller and HTTPClient interfaces. (#7548) -- Simplify the JSON-RPC client Caller interface (#7549) -- Replace anonymous arguments with structured types (#7552) -- Refactor the HTTP POST handler (#7555) -- Replace custom context-like argument with context.Context (#7559) -- Remove cache control settings from the HTTP server (#7568) -- Fix mock test cases (#7571) -- Rework how responses are written back via HTTP (#7575) -- Simplify panic recovery in the server middleware (#7578) -- Consolidate RPC route map construction (#7582) -- Clean up the RPCFunc constructor signature (#7586) -- Check RPC service functions more carefully (#7587) -- Update fuzz criteria to match the implementation (#7595) -- Remove dependency of URL (GET) requests on tmjson (#7590) -- Simplify the encoding of interface-typed arguments in JSON (#7600) -- Paginate mempool /unconfirmed_txs endpoint (#7612) -- Use encoding/json rather than tmjson (#7670) -- Check error code for broadcast_tx_commit (#7683) -- Check error code for broadcast_tx_commit (#7683) (#7688) ### Service @@ -1831,7 +2429,6 @@ - Remove exported logger from base implemenation (#7381) - Cleanup close channel in reactors (#7399) - Cleanup mempool and peer update shutdown (#7401) -- Avoid debug logs before error (#7564) ### State @@ -1840,11 +2437,6 @@ ### Statesync - Assert app version matches (#7463) -- Reactor and channel construction (#7529) -- Use specific testing.T logger for tests (#7543) -- Clarify test cleanup (#7565) -- SyncAny test buffering (#7570) -- More orderly dispatcher shutdown (#7601) ### Sync @@ -1864,7 +2456,6 @@ - Fix path handling in node key tests (#7493) (#7502) - Remove panic from block methods (#7501) - Tests should not panic (#7506) -- Rename and extend the EventData interface (#7687) ## [0.35.0] - 2021-11-04 @@ -1953,39 +2544,80 @@ ## [0.35.0-rc4] - 2021-10-29 -### Bug Fixes - -- Accessing validator state safetly -- Safe state access in TestValidProposalChainLocks -- Safe state access in TestReactorInvalidBlockChainLock -- Safe state access in TestReactorInvalidBlockChainLock -- Seeds should not hang when disconnected from all nodes - ### Documentation -- Add roadmap to repo (#7107) -- Add reactor sections (#6510) -- Add reactor sections (backport #6510) (#7151) - Fix broken links and layout (#7154) - Fix broken links and layout (#7154) (#7163) ### Security -- Bump actions/checkout from 2.3.4 to 2.3.5 (#7139) - Bump prismjs from 1.23.0 to 1.25.0 in /docs (#7168) - Bump postcss from 7.0.35 to 7.0.39 in /docs (#7167) - Bump ws from 6.2.1 to 6.2.2 in /docs (#7165) - Bump path-parse from 1.0.6 to 1.0.7 in /docs (#7164) - Bump url-parse from 1.5.1 to 1.5.3 in /docs (#7166) -### Testing +### Testing + +- Regenerate remote_client mock +- Get rid of workarounds for issues fixed in 0.6.1 + +### Abci + +- Fix readme link (#7173) + +### Buf + +- Modify buf.yml, add buf generate (#5653) + +### Build + +- Fix proto-lint step in Makefile + +### Config + +- WriteConfigFile should return error (#7169) +- Expose ability to write config to arbitrary paths (#7174) +- Backport file writing changes (#7182) + +### Flowrate + +- Cleanup unused files (#7158) + +### Mempool + +- Port reactor tests from legacy implementation (#7162) +- Consoldate implementations (#7171) + +### P2p + +- Transport should be captive resposibility of router (#7160) +- Add message type into the send/recv bytes metrics (backport #7155) (#7161) + +### Pubsub + +- Use distinct client IDs for test subscriptions. (#7178) +- Use distinct client IDs for test subscriptions. (#7178) (#7179) + +## [0.6.1-dev.1] - 2021-10-26 + +### Bug Fixes + +- Accessing validator state safetly +- Safe state access in TestValidProposalChainLocks +- Safe state access in TestReactorInvalidBlockChainLock +- Safe state access in TestReactorInvalidBlockChainLock +- Seeds should not hang when disconnected from all nodes + +### Documentation -- Regenerate remote_client mock -- Get rid of workarounds for issues fixed in 0.6.1 +- Add roadmap to repo (#7107) +- Add reactor sections (#6510) +- Add reactor sections (backport #6510) (#7151) -### Abci +### Security -- Fix readme link (#7173) +- Bump actions/checkout from 2.3.4 to 2.3.5 (#7139) ### Blocksync @@ -1993,20 +2625,12 @@ ### Buf -- Modify buf.yml, add buf generate (#5653) - Modify buf.yml, add buf generate (#5653) ### Build - Bump rtCamp/action-slack-notify from 2.1.1 to 2.2.0 - Fix proto-lint step in Makefile -- Fix proto-lint step in Makefile - -### Config - -- WriteConfigFile should return error (#7169) -- Expose ability to write config to arbitrary paths (#7174) -- Backport file writing changes (#7182) ### E2e @@ -2014,10 +2638,6 @@ - Avoid unset defaults in generated tests (#7145) - Evidence test refactor (#7146) -### Flowrate - -- Cleanup unused files (#7158) - ### Light - Fix panic when empty commit is received from server @@ -2026,8 +2646,6 @@ - Remove panic when recheck-tx was not sent to ABCI application (#7134) - Remove panic when recheck-tx was not sent to ABCI application (#7134) (#7142) -- Port reactor tests from legacy implementation (#7162) -- Consoldate implementations (#7171) ### Node,blocksync,config @@ -2042,8 +2660,6 @@ - Remove final shims from p2p package (#7136) - Use correct transport configuration (#7152) - Add message type into the send/recv bytes metrics (#7155) -- Transport should be captive resposibility of router (#7160) -- Add message type into the send/recv bytes metrics (backport #7155) (#7161) ### Pex @@ -2052,8 +2668,6 @@ ### Pubsub - Simplify and improve server concurrency handling (#7070) -- Use distinct client IDs for test subscriptions. (#7178) -- Use distinct client IDs for test subscriptions. (#7178) (#7179) ### State @@ -2307,7 +2921,6 @@ ### Features -- Info field with arbitrary data to ResultBroadcastTx - Add ProposedBlockGTimeWindow in a config ### Fix @@ -2329,10 +2942,6 @@ - Inverse behaviour of resetting fullnode pubkeys from FULLNODE_PUBKEY_RESET to FULLNODE_PUBKEY_KEEP env - Add runner/rotate task to simplify running rotate network -### Security - -- Bump github.com/rs/zerolog from 1.24.0 to 1.25.0 (#6923) - ### Testing - Add StateID unit tests @@ -2371,8 +2980,6 @@ ### Ci -- Drop codecov bot (#6917) -- Tweak code coverage settings (#6920) - Disable codecov patch status check (#6930) - Skip coverage for non-go changes (#6927) - Skip coverage tasks for test infrastructure (#6934) @@ -2394,10 +3001,6 @@ ### E2e -- Introduce canonical ordering of manifests (#6918) -- Load generation and logging changes (#6912) -- Increase retain height to at least twice evidence age (#6924) -- Test multiple broadcast tx methods (#6925) - Compile tests (#6926) - Improve p2p mode selection (#6929) - Reduce load volume (#6932) @@ -2449,7 +3052,6 @@ ### Rfc -- Database storage engine (#6897) - E2e improvements (#6941) - Add performance taxonomy rfc (#6921) - Fix a few typos and formatting glitches p2p roadmap (#6960) @@ -2457,7 +3059,6 @@ ### Rpc -- Fix hash encoding in JSON parameters (#6813) - Strip down the base RPC client interface. (#6971) - Implement BroadcastTxCommit without event subscriptions (#6984) @@ -2479,25 +3080,43 @@ - Move pacakge to internal (#6978) -## [0.35.0-rc1] - 2021-09-08 +## [0.6.0-dev.2] - 2021-09-10 -### Documentation +### Features -- Add package godoc for indexer (#6839) -- Remove return code in normal case from go built-in example (#6841) -- Fix a typo in the indexing section (#6909) +- Info field with arbitrary data to ResultBroadcastTx -### Features +### Security -- [**breaking**] Proposed app version (#148) +- Bump github.com/rs/zerolog from 1.24.0 to 1.25.0 (#6923) -### Miscellaneous Tasks +### Ci -- Bump tenderdash version to 0.6.0-dev.1 +- Drop codecov bot (#6917) +- Tweak code coverage settings (#6920) -### Testing +### E2e -- Install abci-cli when running make tests_integrations (#6834) +- Introduce canonical ordering of manifests (#6918) +- Load generation and logging changes (#6912) +- Increase retain height to at least twice evidence age (#6924) +- Test multiple broadcast tx methods (#6925) + +### Rfc + +- Database storage engine (#6897) + +### Rpc + +- Fix hash encoding in JSON parameters (#6813) + +## [0.35.0-rc1] - 2021-09-08 + +### Documentation + +- Add package godoc for indexer (#6839) +- Remove return code in normal case from go built-in example (#6841) +- Fix a typo in the indexing section (#6909) ### Abci @@ -2511,7 +3130,6 @@ ### Build -- Bump github.com/golangci/golangci-lint (#6837) - Bump docker/build-push-action from 2.6.1 to 2.7.0 (#6845) - Bump codecov/codecov-action from 2.0.2 to 2.0.3 (#6860) - Bump github.com/rs/zerolog from 1.23.0 to 1.24.0 (#6874) @@ -2519,11 +3137,6 @@ - Bump docker/setup-buildx-action from 1.5.0 to 1.6.0 (#6903) - Bump github.com/golangci/golangci-lint (#6907) -### Changelog - -- Update to reflect 0.34.12 release (#6833) -- Linkify the 0.34.11 release notes (#6836) - ### Cleanup - Fix order of linters in the golangci-lint config (#6910) @@ -2536,14 +3149,8 @@ - Remove release_notes.md reference (#6846) -### Core - -- Text cleanup (#332) - ### E2e -- Avoid starting nodes from the future (#6835) -- Avoid starting nodes from the future (#6835) (#6838) - Cleanup node start function (#6842) - Cleanup node start function (#6842) (#6848) - More consistent node selection during tests (#6857) @@ -2619,45 +3226,53 @@ - Add information into the UPGRADING.md for users of the codebase wishing to upgrade (#6898) -## [0.34.12] - 2021-08-17 +## [0.6.0-dev.1] - 2021-08-19 -### Documentation +### Features -- Fix typo (#6789) -- Fix a typo in the genesis_chunked description (#6792) -- Upgrade documentation for custom mempools (#6794) -- Fix typos in /tx_search and /tx. (#6823) +- [**breaking**] Proposed app version (#148) -### Security +### Miscellaneous Tasks -- Bump google.golang.org/grpc from 1.39.0 to 1.39.1 (#6801) -- Bump google.golang.org/grpc from 1.39.1 to 1.40.0 (#6819) +- Bump tenderdash version to 0.6.0-dev.1 ### Testing -- Add mechanism to reproduce found fuzz errors (#6768) +- Install abci-cli when running make tests_integrations (#6834) -### Abci +### Build -- Add changelog entry for mempool_error field (#6770) +- Bump github.com/golangci/golangci-lint (#6837) -### Adr +### Changelog -- Node initialization (#6562) +- Update to reflect 0.34.12 release (#6833) +- Linkify the 0.34.11 release notes (#6836) -### Blockchain +### Core -- Rename to blocksync service (#6755) +- Text cleanup (#332) -### Blockstore +### E2e -- Fix problem with seen commit (#6782) +- Avoid starting nodes from the future (#6835) +- Avoid starting nodes from the future (#6835) (#6838) -### Build +## [0.34.12] - 2021-08-17 -- Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1 (#6786) -- Bump technote-space/get-diff-action from 4 to 5 (#6788) -- Bump github.com/BurntSushi/toml from 0.3.1 to 0.4.1 (#6796) +### Documentation + +- Upgrade documentation for custom mempools (#6794) +- Fix typos in /tx_search and /tx. (#6823) + +### Security + +- Bump google.golang.org/grpc from 1.39.0 to 1.39.1 (#6801) +- Bump google.golang.org/grpc from 1.39.1 to 1.40.0 (#6819) + +### Adr + +- Node initialization (#6562) ### Bytes @@ -2672,76 +3287,127 @@ - Add missing item (#6829) - Add missing entry (#6830) -### Cleanup +### Commands -- Remove redundant error plumbing (#6778) +- Add key migration cli (#6790) -### Cli/indexer +### Contributing -- Reindex events (#6676) +- Update release instructions to use backport branches (#6827) -### Clist +### Node -- Add simple property tests (#6791) +- Minimize hardcoded service initialization (#6798) -### Commands +### Pubsub -- Add key migration cli (#6790) +- Unsubscribe locking handling (#6816) -### Contributing +### Rpc -- Update release instructions to use backport branches (#6827) +- Avoid panics in unsafe rpc calls with new p2p stack (#6817) +- Support new p2p infrastructure (#6820) +- Log update (#6825) +- Log update (backport #6825) (#6826) +- Update peer format in specification in NetInfo operation (#331) -### Evidence +### Statesync -- Add section explaining evidence (#324) +- New messages for gossiping consensus params (#328) -### Light +### Version -- Wait for tendermint node to start before running example test (#6744) -- Replace homegrown mock with mockery (#6735) +- Bump for 0.34.12 (#6832) + +## [0.5.12-dev.1] - 2021-08-06 + +### Documentation + +- Fix typo (#6789) +- Fix a typo in the genesis_chunked description (#6792) + +### Build + +- Bump technote-space/get-diff-action from 4 to 5 (#6788) +- Bump github.com/BurntSushi/toml from 0.3.1 to 0.4.1 (#6796) + +### Clist + +- Add simple property tests (#6791) + +### Evidence + +- Add section explaining evidence (#324) ### Mempool/v1 - Test reactor does not panic on broadcast (#6772) -### Node +## [0.5.11-dev.4] - 2021-07-31 -- Minimize hardcoded service initialization (#6798) +### Blockstore -### P2p +- Fix problem with seen commit (#6782) -- Add test for pqueue dequeue full error (#6760) +### Build -### Pubsub +- Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1 (#6786) -- Unsubscribe locking handling (#6816) +### State/privval + +- Vote timestamp fix (backport #6748) (#6783) + +### Tools + +- Add mockery to tools.go and remove mockery version strings (#6787) + +## [0.5.11-dev.3] - 2021-07-30 + +### Blockchain + +- Rename to blocksync service (#6755) + +### Cleanup + +- Remove redundant error plumbing (#6778) + +### Light + +- Replace homegrown mock with mockery (#6735) ### Rpc - Add documentation for genesis chunked api (#6776) -- Avoid panics in unsafe rpc calls with new p2p stack (#6817) -- Support new p2p infrastructure (#6820) -- Log update (#6825) -- Log update (backport #6825) (#6826) -- Update peer format in specification in NetInfo operation (#331) ### State/privval - Vote timestamp fix (#6748) -- Vote timestamp fix (backport #6748) (#6783) -### Statesync +## [0.5.11-dev.2] - 2021-07-28 -- New messages for gossiping consensus params (#328) +### Abci -### Tools +- Add changelog entry for mempool_error field (#6770) -- Add mockery to tools.go and remove mockery version strings (#6787) +### Cli/indexer -### Version +- Reindex events (#6676) -- Bump for 0.34.12 (#6832) +### Light + +- Wait for tendermint node to start before running example test (#6744) + +## [0.5.10-dev.3] - 2021-07-26 + +### Testing + +- Add mechanism to reproduce found fuzz errors (#6768) + +## [0.5.10-dev.1] - 2021-07-26 + +### P2p + +- Add test for pqueue dequeue full error (#6760) ## [0.5.10] - 2021-07-26 diff --git a/version/version.go b/version/version.go index 07e14f7bd6..f7d6e29811 100644 --- a/version/version.go +++ b/version/version.go @@ -9,7 +9,7 @@ var ( const ( // TMVersionDefault is the used as the fallback version for Tenderdash // when not using git describe. It is formatted with semantic versioning. - TMVersionDefault = "1.0.0" + TMVersionDefault = "1.1.0-dev.1" // ABCISemVer is the semantic version of the ABCI library ABCISemVer = "1.0.0" From 13492fd00ec5decb3aae44160187a012535db837 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 18:13:04 +0700 Subject: [PATCH 05/11] fix: address already in use (#845) * fix: address already in use * fix: always sleep --- DOCKER/docker-entrypoint.sh | 40 +++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/DOCKER/docker-entrypoint.sh b/DOCKER/docker-entrypoint.sh index ba612ff8f2..acec503887 100755 --- a/DOCKER/docker-entrypoint.sh +++ b/DOCKER/docker-entrypoint.sh @@ -1,5 +1,30 @@ #!/bin/bash -set -e + + +# TODO: Workaround for busy port problem happening with docker restart policy +# we are trying to start a new container but previous process still not release +# the port. + +# As a workaround we are sleeping for 10 seconds after the tenderdash process +# exits with non-zero exit code. +# +# Must be fix with graceful shutdown of tenderdash process. + +got_signal=false + +# Function to handle signals and forward them to the tenderdash process +# shellcheck disable=SC2317 +_forward_signal() { + echo "Caught signal! Forwarding to tenderdash process." + got_signal=true + kill -s "$1" "$child" +} + +# Trap signals and forward them to the tenderdash process +trap '_forward_signal TERM' SIGTERM +trap '_forward_signal INT' SIGINT +trap '_forward_signal HUP' SIGHUP +trap '_forward_signal QUIT' SIGQUIT if [ ! -d "$TMHOME/config" ]; then echo "Running tenderdash init to create a single node (default) configuration for docker run." @@ -26,4 +51,15 @@ if [ ! -d "$TMHOME/config" ]; then mv "$TMHOME/config/genesis.json.new" "$TMHOME/config/genesis.json" fi -exec tenderdash "$@" +# Start tenderdash in the background +tenderdash "$@" & +child=$! +wait "$child" +exit_code=$? + +if [ $got_signal == false ] && [ $exit_code -ne 0 ] && [ "$1" == "start" ]; then + echo "Sleeping for 10 seconds as workaround for the busy port problem. See entrypoint code for details." + sleep 10 +fi + +exit $exit_code From 3727fa4ed69624571107ceefdfaadb9570d9fad5 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed, 24 Jul 2024 14:23:28 +0200 Subject: [PATCH 06/11] fix: active validators not always connected to each other (#844) * chore(dash): decrease log verbosity in validator conn executor * fix(node): validator conn executor not started correctly * fix: panic on full node * fix: dash dialer fails to lookup nodes in addressbook --- dash/quorum/validator_conn_executor.go | 24 +++++++------- internal/p2p/dash_dialer.go | 4 ++- node/node.go | 46 ++++++++++++-------------- node/node_test.go | 2 +- 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/dash/quorum/validator_conn_executor.go b/dash/quorum/validator_conn_executor.go index ffad0b475b..bcef5c3330 100644 --- a/dash/quorum/validator_conn_executor.go +++ b/dash/quorum/validator_conn_executor.go @@ -184,7 +184,7 @@ func (vc *ValidatorConnExecutor) subscribe() error { // receiveEvents processes received events and executes all the logic. // Returns non-nil error only if fatal error occurred and the main goroutine should be terminated. func (vc *ValidatorConnExecutor) receiveEvents(ctx context.Context) error { - vc.logger.Debug("ValidatorConnExecutor: waiting for an event") + vc.logger.Trace("ValidatorConnExecutor: waiting for an event") sCtx, cancel := context.WithCancel(ctx) // TODO check value for correctness defer cancel() msg, err := vc.subscription.Next(sCtx) @@ -202,7 +202,7 @@ func (vc *ValidatorConnExecutor) receiveEvents(ctx context.Context) error { vc.logger.Error("cannot handle validator update", "error", err) return nil // non-fatal, so no error returned to continue the loop } - vc.logger.Debug("validator updates processed successfully", "event", event) + vc.logger.Trace("validator updates processed successfully", "event", event) return nil } @@ -264,7 +264,7 @@ func (vc *ValidatorConnExecutor) resolveNodeID(va *types.ValidatorAddress) error va.NodeID = address.NodeID return nil // success } - vc.logger.Debug( + vc.logger.Trace( "warning: validator node id lookup method failed", "url", va.String(), "method", method, @@ -305,7 +305,7 @@ func (vc *ValidatorConnExecutor) ensureValidatorsHaveNodeIDs(validators []*types for _, validator := range validators { err := vc.resolveNodeID(&validator.NodeAddress) if err != nil { - vc.logger.Error("cannot determine node id for validator, skipping", "url", validator.String(), "error", err) + vc.logger.Warn("cannot determine node id for validator, skipping", "url", validator.String(), "error", err) continue } results = append(results, validator) @@ -318,7 +318,7 @@ func (vc *ValidatorConnExecutor) disconnectValidator(validator types.Validator) return err } id := validator.NodeAddress.NodeID - vc.logger.Debug("disconnecting Validator", "validator", validator, "id", id, "address", validator.NodeAddress.String()) + vc.logger.Trace("disconnecting Validator", "validator", validator, "id", id, "address", validator.NodeAddress.String()) if err := vc.dialer.DisconnectAsync(id); err != nil { return err } @@ -337,7 +337,7 @@ func (vc *ValidatorConnExecutor) disconnectValidators(exceptions validatorMap) e vc.logger.Error("cannot disconnect Validator", "error", err) continue } - vc.logger.Debug("Validator already disconnected", "error", err) + vc.logger.Trace("Validator already disconnected", "error", err) // We still delete the validator from vc.connectedValidators } delete(vc.connectedValidators, currentKey) @@ -373,11 +373,11 @@ func (vc *ValidatorConnExecutor) updateConnections() error { if err := vc.disconnectValidators(newValidators); err != nil { return fmt.Errorf("cannot disconnect unused validators: %w", err) } - vc.logger.Debug("filtering validators", "validators", newValidators.String()) + vc.logger.Trace("filtering validators", "validators", newValidators.String()) // ensure that we can connect to all validators newValidators = vc.filterAddresses(newValidators) // Connect to new validators - vc.logger.Debug("dialing validators", "validators", newValidators.String()) + vc.logger.Trace("dialing validators", "validators", newValidators.String()) if err := vc.dial(newValidators); err != nil { return fmt.Errorf("cannot dial validators: %w", err) } @@ -390,20 +390,20 @@ func (vc *ValidatorConnExecutor) filterAddresses(validators validatorMap) valida filtered := make(validatorMap, len(validators)) for id, validator := range validators { if vc.proTxHash != nil && string(id) == vc.proTxHash.String() { - vc.logger.Debug("validator is ourself", "id", id, "address", validator.NodeAddress.String()) + vc.logger.Trace("validator is ourself", "id", id, "address", validator.NodeAddress.String()) continue } if err := validator.ValidateBasic(); err != nil { - vc.logger.Debug("validator address is invalid", "id", id, "address", validator.NodeAddress.String()) + vc.logger.Warn("validator address is invalid", "id", id, "address", validator.NodeAddress.String()) continue } if vc.connectedValidators.contains(validator) { - vc.logger.Debug("validator already connected", "id", id) + vc.logger.Trace("validator already connected", "id", id) continue } if vc.dialer.IsDialingOrConnected(validator.NodeAddress.NodeID) { - vc.logger.Debug("already dialing this validator", "id", id, "address", validator.NodeAddress.String()) + vc.logger.Trace("already dialing this validator", "id", id, "address", validator.NodeAddress.String()) continue } diff --git a/internal/p2p/dash_dialer.go b/internal/p2p/dash_dialer.go index 64d70ecff3..65b9372b84 100644 --- a/internal/p2p/dash_dialer.go +++ b/internal/p2p/dash_dialer.go @@ -110,12 +110,14 @@ func (cm *routerDashDialer) lookupIPPort(ctx context.Context, ip net.IP, port ui for _, nodeID := range peers { addresses := cm.peerManager.Addresses(nodeID) for _, addr := range addresses { - if endpoints, err := addr.Resolve(ctx); err != nil { + if endpoints, err := addr.Resolve(ctx); err == nil { for _, item := range endpoints { if item.IP.Equal(ip) && item.Port == port { return item.NodeAddress(nodeID), nil } } + } else { + cm.logger.Warn("lookupIPPort: failed to resolve address", "peer", nodeID, "address", addr, "err", err) } } } diff --git a/node/node.go b/node/node.go index 67292f777e..e4ba7e6300 100644 --- a/node/node.go +++ b/node/node.go @@ -73,9 +73,6 @@ type nodeImpl struct { shutdownOps closer rpcEnv *rpccore.Environment prometheusSrv *http.Server - - // Dash - validatorConnExecutor *dashquorum.ValidatorConnExecutor } // newDefaultNode returns a Tendermint node with default settings for the @@ -238,25 +235,6 @@ func makeNode( fmt.Errorf("failed to create peer manager: %w", err), makeCloser(closers)) } - - // Start Dash connection executor - var validatorConnExecutor *dashquorum.ValidatorConnExecutor - if len(proTxHash) > 0 { - vcLogger := logger.With("node_proTxHash", proTxHash.ShortString(), "module", "ValidatorConnExecutor") - dcm := p2p.NewRouterDashDialer(peerManager, vcLogger) - validatorConnExecutor, err = dashquorum.NewValidatorConnExecutor( - proTxHash, - eventBus, - dcm, - dashquorum.WithLogger(vcLogger), - dashquorum.WithValidatorsSet(state.Validators), - ) - if err != nil { - return nil, combineCloseError(err, makeCloser(closers)) - } - } - - // TODO construct node here: node := &nodeImpl{ config: cfg, logger: logger, @@ -276,8 +254,6 @@ func makeNode( shutdownOps: makeCloser(closers), - validatorConnExecutor: validatorConnExecutor, - rpcEnv: &rpccore.Environment{ ProxyApp: proxyApp, @@ -295,6 +271,28 @@ func makeNode( }, } + // Start Dash connection executor + if len(proTxHash) > 0 { + var validatorConnExecutor *dashquorum.ValidatorConnExecutor + + vcLogger := logger.With("node_proTxHash", proTxHash.ShortString(), "module", "ValidatorConnExecutor") + dcm := p2p.NewRouterDashDialer(peerManager, vcLogger) + validatorConnExecutor, err = dashquorum.NewValidatorConnExecutor( + proTxHash, + eventBus, + dcm, + dashquorum.WithLogger(vcLogger), + dashquorum.WithValidatorsSet(state.Validators), + ) + if err != nil { + return nil, combineCloseError(err, makeCloser(closers)) + } + + node.services = append(node.services, validatorConnExecutor) + } else { + logger.Debug("ProTxHash not set, so we are not a validator; skipping ValidatorConnExecutor initialization") + } + node.router, err = createRouter(logger, nodeMetrics.p2p, node.NodeInfo, nodeKey, peerManager, cfg, proxyApp) if err != nil { return nil, combineCloseError( diff --git a/node/node_test.go b/node/node_test.go index 2d085c33f3..7f8671a349 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -672,7 +672,7 @@ func TestNodeSetEventSink(t *testing.T) { logger := log.NewNopLogger() - setupTest := func(t *testing.T, conf *config.Config) []indexer.EventSink { + setupTest := func(t *testing.T, _conf *config.Config) []indexer.EventSink { eventBus := eventbus.NewDefault(logger.With("module", "events")) require.NoError(t, eventBus.Start(ctx)) From 1e85dd32fa610206ea6822e22b8197ff63cbda9d Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed, 24 Jul 2024 14:35:08 +0200 Subject: [PATCH 07/11] chore(release): update changelog and version to 1.1.0-dev.2 (#846) --- CHANGELOG.md | 11 +++++++++++ version/version.go | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e98aeb27a4..428513fd25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,20 @@ +## [1.1.0-dev.2] - 2024-07-24 + +### Bug Fixes + +- Address already in use (#845) +- Active validators not always connected to each other (#844) + ## [1.1.0-dev.1] - 2024-07-23 ### Features - [**breaking**] Replace dash core quorum sign with quorum platformsign (#828) +### Miscellaneous Tasks + +- Update changelog and version to 1.1.0-dev.1 (#842) + ### Build - Bump bufbuild/buf-setup-action from 1.33.0 to 1.35.0 (#841) diff --git a/version/version.go b/version/version.go index f7d6e29811..76ad983d5f 100644 --- a/version/version.go +++ b/version/version.go @@ -9,7 +9,7 @@ var ( const ( // TMVersionDefault is the used as the fallback version for Tenderdash // when not using git describe. It is formatted with semantic versioning. - TMVersionDefault = "1.1.0-dev.1" + TMVersionDefault = "1.1.0-dev.2" // ABCISemVer is the semantic version of the ABCI library ABCISemVer = "1.0.0" From 03517ef39aa3e144339cb67fe14e6e03386b920b Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:05:20 +0200 Subject: [PATCH 08/11] feat(abci): allow overriding genesis time in InitChain (#847) --- abci/types/types.pb.go | 582 +++++++++++++++++----------- go.mod | 82 ++-- go.sum | 177 +++++---- internal/consensus/replayer.go | 9 +- internal/consensus/replayer_test.go | 85 ++++ proto/tendermint/abci/types.proto | 2 + spec/abci++/api.md | 1 + version/version.go | 2 +- 8 files changed, 581 insertions(+), 359 deletions(-) diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 7513d79ee8..f60329ec91 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -2416,6 +2416,10 @@ type ResponseInitChain struct { NextCoreChainLockUpdate *types1.CoreChainLock `protobuf:"bytes,4,opt,name=next_core_chain_lock_update,json=nextCoreChainLockUpdate,proto3" json:"next_core_chain_lock_update,omitempty"` // Initial height of core lock. InitialCoreHeight uint32 `protobuf:"varint,5,opt,name=initial_core_height,json=initialCoreHeight,proto3" json:"initial_core_height,omitempty"` + // Types that are valid to be assigned to XGenesisTime: + // + // *ResponseInitChain_GenesisTime + XGenesisTime isResponseInitChain_XGenesisTime `protobuf_oneof:"_genesis_time"` } func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} } @@ -2451,6 +2455,25 @@ func (m *ResponseInitChain) XXX_DiscardUnknown() { var xxx_messageInfo_ResponseInitChain proto.InternalMessageInfo +type isResponseInitChain_XGenesisTime interface { + isResponseInitChain_XGenesisTime() + MarshalTo([]byte) (int, error) + Size() int +} + +type ResponseInitChain_GenesisTime struct { + GenesisTime *time.Time `protobuf:"bytes,6,opt,name=genesis_time,json=genesisTime,proto3,oneof,stdtime" json:"genesis_time,omitempty"` +} + +func (*ResponseInitChain_GenesisTime) isResponseInitChain_XGenesisTime() {} + +func (m *ResponseInitChain) GetXGenesisTime() isResponseInitChain_XGenesisTime { + if m != nil { + return m.XGenesisTime + } + return nil +} + func (m *ResponseInitChain) GetConsensusParams() *types1.ConsensusParams { if m != nil { return m.ConsensusParams @@ -2486,6 +2509,20 @@ func (m *ResponseInitChain) GetInitialCoreHeight() uint32 { return 0 } +func (m *ResponseInitChain) GetGenesisTime() *time.Time { + if x, ok := m.GetXGenesisTime().(*ResponseInitChain_GenesisTime); ok { + return x.GenesisTime + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*ResponseInitChain) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*ResponseInitChain_GenesisTime)(nil), + } +} + type ResponseQuery struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` Log string `protobuf:"bytes,2,opt,name=log,proto3" json:"log,omitempty"` @@ -4335,238 +4372,239 @@ func init() { func init() { proto.RegisterFile("tendermint/abci/types.proto", fileDescriptor_252557cfdd89a31a) } var fileDescriptor_252557cfdd89a31a = []byte{ - // 3682 bytes of a gzipped FileDescriptorProto + // 3712 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5b, 0xcb, 0x73, 0x1b, 0x47, 0x73, 0xc7, 0xe2, 0x8d, 0xc6, 0x6b, 0x39, 0xa4, 0x24, 0x08, 0x92, 0x48, 0x7a, 0x15, 0x5b, 0xb2, 0x6c, 0x93, 0xb6, 0x14, 0x5b, 0x76, 0xec, 0xa4, 0x0a, 0x04, 0xa1, 0x80, 0x14, 0x45, 0xd2, 0x4b, 0x90, 0x2e, 0xc7, 0xb1, 0xb7, 0x96, 0xc0, 0x90, 0x58, 0x0b, 0xc0, 0xae, 0x77, 0x17, 0x14, 0xe8, - 0x6b, 0xe2, 0xaa, 0x94, 0x4f, 0xfe, 0x07, 0x7c, 0x4b, 0x8e, 0xb9, 0xe7, 0x94, 0x54, 0x6e, 0x4e, - 0xe5, 0xe2, 0x63, 0xaa, 0x52, 0x51, 0x5c, 0xf2, 0x25, 0x95, 0x9b, 0x4f, 0xdf, 0xe5, 0x3b, 0x7c, - 0x35, 0x8f, 0x7d, 0x02, 0x8b, 0x87, 0xe5, 0xaa, 0xaf, 0xbe, 0x1b, 0xa6, 0xa7, 0xbb, 0x77, 0x1e, - 0x3d, 0xdd, 0x3d, 0xbf, 0x1e, 0xc0, 0x0d, 0x1b, 0x0f, 0x3a, 0xd8, 0xec, 0x6b, 0x03, 0x7b, 0x53, - 0x3d, 0x6d, 0x6b, 0x9b, 0xf6, 0xa5, 0x81, 0xad, 0x0d, 0xc3, 0xd4, 0x6d, 0x1d, 0x95, 0xbd, 0xce, - 0x0d, 0xd2, 0x59, 0xbd, 0xe5, 0xe3, 0x6e, 0x9b, 0x97, 0x86, 0xad, 0x6f, 0x1a, 0xa6, 0xae, 0x9f, - 0x31, 0xfe, 0xaa, 0x5f, 0x19, 0xd5, 0xb3, 0xd9, 0x51, 0xad, 0x2e, 0xef, 0xbc, 0x39, 0xd6, 0x79, - 0xda, 0xd3, 0xdb, 0x4f, 0x23, 0x7b, 0x7d, 0x03, 0x09, 0xf4, 0xf2, 0xef, 0x3e, 0xc5, 0x97, 0x4e, - 0xef, 0xad, 0x31, 0x59, 0x43, 0x35, 0xd5, 0xbe, 0xd3, 0xbd, 0xea, 0xeb, 0xbe, 0xc0, 0xa6, 0xa5, - 0xe9, 0x83, 0x80, 0xf2, 0xb5, 0x73, 0x5d, 0x3f, 0xef, 0xe1, 0x4d, 0xda, 0x3a, 0x1d, 0x9e, 0x6d, - 0xda, 0x5a, 0x1f, 0x5b, 0xb6, 0xda, 0x37, 0x38, 0xc3, 0xca, 0xb9, 0x7e, 0xae, 0xd3, 0x9f, 0x9b, - 0xe4, 0x17, 0xa3, 0x4a, 0xdf, 0xe4, 0x20, 0x23, 0xe3, 0xaf, 0x86, 0xd8, 0xb2, 0xd1, 0x7d, 0x48, - 0xe2, 0x76, 0x57, 0xaf, 0x08, 0xeb, 0xc2, 0xdd, 0xfc, 0xfd, 0x9b, 0x1b, 0xa1, 0x75, 0xdb, 0xe0, - 0x7c, 0x8d, 0x76, 0x57, 0x6f, 0xc6, 0x64, 0xca, 0x8b, 0xde, 0x85, 0xd4, 0x59, 0x6f, 0x68, 0x75, - 0x2b, 0x71, 0x2a, 0x74, 0x2b, 0x4a, 0xe8, 0x11, 0x61, 0x6a, 0xc6, 0x64, 0xc6, 0x4d, 0x3e, 0xa5, - 0x0d, 0xce, 0xf4, 0x4a, 0x62, 0xfa, 0xa7, 0x76, 0x06, 0x67, 0xf4, 0x53, 0x84, 0x17, 0x6d, 0x01, - 0x68, 0x03, 0xcd, 0x56, 0xda, 0x5d, 0x55, 0x1b, 0x54, 0x92, 0x54, 0xf2, 0x95, 0x68, 0x49, 0xcd, - 0xae, 0x13, 0xc6, 0x66, 0x4c, 0xce, 0x69, 0x4e, 0x83, 0x0c, 0xf7, 0xab, 0x21, 0x36, 0x2f, 0x2b, - 0xa9, 0xe9, 0xc3, 0xfd, 0x98, 0x30, 0x91, 0xe1, 0x52, 0x6e, 0xf4, 0x11, 0x64, 0xdb, 0x5d, 0xdc, - 0x7e, 0xaa, 0xd8, 0xa3, 0x4a, 0x86, 0x4a, 0xae, 0x45, 0x49, 0xd6, 0x09, 0x5f, 0x6b, 0xd4, 0x8c, - 0xc9, 0x99, 0x36, 0xfb, 0x89, 0xf6, 0xa1, 0xd4, 0xd3, 0x2c, 0x5b, 0xb1, 0x06, 0xaa, 0x61, 0x75, - 0x75, 0xdb, 0xaa, 0xe4, 0xa9, 0x8e, 0x57, 0xa3, 0x74, 0xec, 0x69, 0x96, 0x7d, 0xe4, 0x30, 0x37, - 0x63, 0x72, 0xb1, 0xe7, 0x27, 0x10, 0x7d, 0xfa, 0xd9, 0x19, 0x36, 0x5d, 0x85, 0x95, 0xc2, 0x74, - 0x7d, 0x07, 0x84, 0xdb, 0x91, 0x27, 0xfa, 0x74, 0x3f, 0x01, 0x7d, 0x06, 0xcb, 0x3d, 0x5d, 0xed, - 0xb8, 0xea, 0x94, 0x76, 0x77, 0x38, 0x78, 0x5a, 0x29, 0x52, 0xa5, 0xaf, 0x47, 0x0e, 0x52, 0x57, - 0x3b, 0x8e, 0x8a, 0x3a, 0x11, 0x68, 0xc6, 0xe4, 0xa5, 0x5e, 0x98, 0x88, 0xbe, 0x80, 0x15, 0xd5, - 0x30, 0x7a, 0x97, 0x61, 0xed, 0x25, 0xaa, 0xfd, 0x5e, 0x94, 0xf6, 0x1a, 0x91, 0x09, 0xab, 0x47, - 0xea, 0x18, 0x15, 0xb5, 0x40, 0x34, 0x4c, 0x6c, 0xa8, 0x26, 0x56, 0x0c, 0x53, 0x37, 0x74, 0x4b, - 0xed, 0x55, 0xca, 0x54, 0xf7, 0x9d, 0x28, 0xdd, 0x87, 0x8c, 0xff, 0x90, 0xb3, 0x37, 0x63, 0x72, - 0xd9, 0x08, 0x92, 0x98, 0x56, 0xbd, 0x8d, 0x2d, 0xcb, 0xd3, 0x2a, 0xce, 0xd2, 0x4a, 0xf9, 0x83, - 0x5a, 0x03, 0x24, 0xd4, 0x80, 0x3c, 0x1e, 0x11, 0x71, 0xe5, 0x42, 0xb7, 0x71, 0x65, 0x89, 0x2a, - 0x94, 0x22, 0xcf, 0x19, 0x65, 0x3d, 0xd1, 0x6d, 0xdc, 0x8c, 0xc9, 0x80, 0xdd, 0x16, 0x52, 0xe1, - 0xca, 0x05, 0x36, 0xb5, 0xb3, 0x4b, 0xaa, 0x46, 0xa1, 0x3d, 0xc4, 0x1f, 0x54, 0x10, 0x55, 0xf8, - 0x46, 0x94, 0xc2, 0x13, 0x2a, 0x44, 0x54, 0x34, 0x1c, 0x91, 0x66, 0x4c, 0x5e, 0xbe, 0x18, 0x27, - 0x13, 0x13, 0x3b, 0xd3, 0x06, 0x6a, 0x4f, 0xfb, 0x1a, 0x2b, 0xd4, 0xc1, 0x55, 0x96, 0xa7, 0x9b, - 0xd8, 0x23, 0xce, 0xbd, 0x45, 0x98, 0x89, 0x89, 0x9d, 0xf9, 0x09, 0x5b, 0x19, 0x48, 0x5d, 0xa8, - 0xbd, 0x21, 0xde, 0x4d, 0x66, 0xd3, 0x62, 0x66, 0x37, 0x99, 0xcd, 0x8a, 0xb9, 0xdd, 0x64, 0x36, - 0x27, 0xc2, 0x6e, 0x32, 0x0b, 0x62, 0x5e, 0xba, 0x03, 0x79, 0x9f, 0x7b, 0x41, 0x15, 0xc8, 0xf4, - 0xb1, 0x65, 0xa9, 0xe7, 0x98, 0x7a, 0xa3, 0x9c, 0xec, 0x34, 0xa5, 0x12, 0x14, 0xfc, 0x2e, 0x45, - 0xfa, 0x4e, 0x70, 0x25, 0x89, 0xb7, 0x20, 0x92, 0xdc, 0x3d, 0x3a, 0x92, 0xbc, 0x89, 0x6e, 0x43, - 0x91, 0x4e, 0x45, 0x71, 0xfa, 0x89, 0xcb, 0x4a, 0xca, 0x05, 0x4a, 0x3c, 0xe1, 0x4c, 0x6b, 0x90, - 0x37, 0xee, 0x1b, 0x2e, 0x4b, 0x82, 0xb2, 0x80, 0x71, 0xdf, 0x70, 0x18, 0x5e, 0x81, 0x02, 0x99, - 0xb7, 0xcb, 0x91, 0xa4, 0x1f, 0xc9, 0x13, 0x1a, 0x67, 0x91, 0xfe, 0x3e, 0x01, 0x62, 0xd8, 0x0d, - 0xa1, 0xf7, 0x21, 0x49, 0x3c, 0x32, 0x77, 0xae, 0xd5, 0x0d, 0xe6, 0xae, 0x37, 0x1c, 0x77, 0xbd, - 0xd1, 0x72, 0xdc, 0xf5, 0x56, 0xf6, 0x87, 0xe7, 0x6b, 0xb1, 0xef, 0xfe, 0x77, 0x4d, 0x90, 0xa9, - 0x04, 0xba, 0x4e, 0x9c, 0x8f, 0xaa, 0x0d, 0x14, 0xad, 0x43, 0x87, 0x9c, 0x23, 0x9e, 0x45, 0xd5, - 0x06, 0x3b, 0x1d, 0xb4, 0x07, 0x62, 0x5b, 0x1f, 0x58, 0x78, 0x60, 0x0d, 0x2d, 0x85, 0x85, 0x0b, - 0xee, 0x52, 0x03, 0x8e, 0x91, 0xc5, 0x89, 0xba, 0xc3, 0x79, 0x48, 0x19, 0xe5, 0x72, 0x3b, 0x48, - 0x40, 0xfb, 0x50, 0xbc, 0x50, 0x7b, 0x5a, 0x47, 0xb5, 0x75, 0x53, 0xb1, 0xb0, 0xcd, 0x7d, 0xec, - 0xed, 0xb1, 0x3d, 0x3f, 0x71, 0xb8, 0x8e, 0xb0, 0x7d, 0x6c, 0x74, 0x54, 0x1b, 0x6f, 0x25, 0x7f, - 0x78, 0xbe, 0x26, 0xc8, 0x85, 0x0b, 0x5f, 0x0f, 0x7a, 0x0d, 0xca, 0xaa, 0x61, 0x28, 0x96, 0xad, - 0xda, 0x58, 0x39, 0xbd, 0xb4, 0xb1, 0x45, 0xdd, 0x6e, 0x41, 0x2e, 0xaa, 0x86, 0x71, 0x44, 0xa8, - 0x5b, 0x84, 0x88, 0x5e, 0x85, 0x12, 0xf1, 0xd0, 0x9a, 0xda, 0x53, 0xba, 0x58, 0x3b, 0xef, 0xda, - 0x95, 0xf4, 0xba, 0x70, 0x37, 0x21, 0x17, 0x39, 0xb5, 0x49, 0x89, 0x68, 0x03, 0x96, 0x1d, 0xb6, - 0xb6, 0x6e, 0x62, 0x87, 0x97, 0xf8, 0xe3, 0xa2, 0xbc, 0xc4, 0xbb, 0xea, 0xba, 0x89, 0x19, 0xbf, - 0xd4, 0x71, 0x2d, 0x85, 0x7a, 0x73, 0x84, 0x20, 0xd9, 0x51, 0x6d, 0x95, 0xee, 0x40, 0x41, 0xa6, - 0xbf, 0x09, 0xcd, 0x50, 0xed, 0x2e, 0x5f, 0x57, 0xfa, 0x1b, 0x5d, 0x85, 0x34, 0x57, 0x9d, 0xa0, - 0xc3, 0xe0, 0x2d, 0xb4, 0x02, 0x29, 0xc3, 0xd4, 0x2f, 0x30, 0x5d, 0x96, 0xac, 0xcc, 0x1a, 0x92, - 0x0c, 0xa5, 0xa0, 0xe7, 0x47, 0x25, 0x88, 0xdb, 0x23, 0xfe, 0x95, 0xb8, 0x3d, 0x42, 0x6f, 0x43, - 0x92, 0x6c, 0x00, 0xfd, 0x46, 0x69, 0x42, 0xac, 0xe3, 0x72, 0xad, 0x4b, 0x03, 0xcb, 0x94, 0x53, - 0xba, 0x0a, 0x2b, 0x93, 0x22, 0x81, 0xd4, 0x75, 0xe9, 0x01, 0x8f, 0x8e, 0xde, 0x85, 0xac, 0x1b, - 0x0a, 0x98, 0x7d, 0x5d, 0x1f, 0xfb, 0x8a, 0xc3, 0x2c, 0xbb, 0xac, 0xc4, 0xb0, 0xc8, 0xfe, 0x74, - 0x55, 0x1e, 0xbe, 0x0b, 0x72, 0x46, 0x35, 0x8c, 0xa6, 0x6a, 0x75, 0xa5, 0x73, 0xa8, 0x44, 0xb9, - 0x79, 0xdf, 0xfa, 0x08, 0xf4, 0x74, 0x38, 0xeb, 0xe3, 0x3b, 0x79, 0x71, 0xba, 0x27, 0xee, 0xc9, - 0xa3, 0x16, 0x3c, 0x1c, 0x3c, 0x25, 0x16, 0x9c, 0x60, 0x1f, 0xa2, 0xed, 0x9d, 0x8e, 0xd4, 0x81, - 0xeb, 0x91, 0x1e, 0x3f, 0x20, 0x27, 0x04, 0xe4, 0xc8, 0x66, 0xb0, 0x38, 0xc2, 0x06, 0xce, 0x1a, - 0x64, 0x68, 0x16, 0x9d, 0x37, 0xfd, 0x4c, 0x4e, 0xe6, 0x2d, 0xe9, 0x97, 0x24, 0x5c, 0x9d, 0xec, - 0xfc, 0xd1, 0x3a, 0x14, 0xfa, 0xea, 0x48, 0xb1, 0x47, 0xdc, 0x42, 0x05, 0xba, 0xe7, 0xd0, 0x57, - 0x47, 0xad, 0x11, 0x33, 0x4f, 0x11, 0x12, 0xf6, 0xc8, 0xaa, 0xc4, 0xd7, 0x13, 0x77, 0x0b, 0x32, - 0xf9, 0x89, 0x9e, 0xc0, 0x52, 0x4f, 0x6f, 0xab, 0x3d, 0xa5, 0xa7, 0x5a, 0xb6, 0xd2, 0xd6, 0xfb, - 0x7d, 0xcd, 0xe6, 0xe7, 0xee, 0xc6, 0xf8, 0xf6, 0xd2, 0x6e, 0xe2, 0x9b, 0xe8, 0x21, 0x89, 0xc9, - 0x65, 0x2a, 0xbb, 0xa7, 0x5a, 0x36, 0xeb, 0x42, 0xdb, 0x90, 0xef, 0x6b, 0xd6, 0x29, 0xee, 0xaa, - 0x17, 0x9a, 0x6e, 0x56, 0x92, 0xeb, 0x89, 0x89, 0x39, 0xd1, 0x13, 0x8f, 0x87, 0x6b, 0xf2, 0x8b, - 0xf9, 0xb6, 0x25, 0x15, 0x30, 0x5b, 0xc7, 0xf1, 0xa4, 0x17, 0x76, 0x3c, 0x6f, 0xc3, 0xca, 0x00, - 0x8f, 0x6c, 0xc5, 0x3d, 0xd4, 0x16, 0xb3, 0x95, 0x0c, 0x5d, 0x72, 0x44, 0xfa, 0x5c, 0x4f, 0x60, - 0x11, 0xb3, 0x21, 0xbb, 0x62, 0xea, 0xc3, 0x41, 0xa7, 0x92, 0x5d, 0x17, 0xee, 0xa6, 0x64, 0xd6, - 0x40, 0x0f, 0xa1, 0x42, 0x0f, 0x2c, 0xf3, 0x62, 0xc4, 0xdb, 0xe2, 0x8e, 0x73, 0x7a, 0x73, 0xd4, - 0x52, 0xae, 0x90, 0x7e, 0xea, 0x27, 0xf7, 0x68, 0x2f, 0x3f, 0xf1, 0x9b, 0xb0, 0xc2, 0xa2, 0x2f, - 0x36, 0x49, 0x18, 0x26, 0x9b, 0x44, 0x07, 0x00, 0x74, 0x00, 0x4b, 0x4e, 0xdf, 0xa1, 0xa9, 0xb7, - 0x46, 0xf4, 0xfb, 0x6f, 0xbb, 0x02, 0x1d, 0x85, 0x98, 0xb6, 0x63, 0x8f, 0x79, 0x6a, 0xa8, 0xc8, - 0xe9, 0xab, 0x19, 0xae, 0x3b, 0x7f, 0xe8, 0x19, 0x6d, 0x61, 0x3c, 0x25, 0xe4, 0x5d, 0x9e, 0xeb, - 0xf4, 0x6c, 0x7a, 0x0d, 0xf2, 0x5f, 0x0d, 0x75, 0x73, 0xd8, 0x67, 0x43, 0x2a, 0xd2, 0x21, 0x01, - 0x23, 0xd1, 0x23, 0xf4, 0x6f, 0x29, 0x9f, 0xcd, 0x05, 0xf3, 0x00, 0x6e, 0x51, 0x82, 0x67, 0x51, - 0x47, 0xbe, 0x81, 0xfb, 0x8d, 0x2a, 0x3e, 0xaf, 0x51, 0xb9, 0x73, 0x8b, 0xb6, 0xab, 0xc4, 0xaf, - 0xb3, 0x2b, 0x04, 0x49, 0x3a, 0xc3, 0x24, 0x73, 0x9b, 0xe4, 0x77, 0xa4, 0xad, 0xb9, 0xfb, 0x9f, - 0xf6, 0xef, 0xbf, 0x63, 0x81, 0x99, 0xdf, 0xcc, 0x02, 0xb3, 0x91, 0x16, 0xf8, 0xab, 0x6d, 0xad, - 0x05, 0x57, 0x43, 0x82, 0xca, 0x90, 0x86, 0x36, 0x6a, 0x6d, 0xa1, 0x84, 0xdf, 0x09, 0xa8, 0x3e, - 0x45, 0xf2, 0x72, 0x40, 0x2f, 0x0b, 0x8b, 0x91, 0x16, 0x9c, 0x5f, 0xd4, 0x82, 0x0b, 0xf3, 0x58, - 0x70, 0xf1, 0x65, 0x2c, 0xb8, 0x34, 0x66, 0xc1, 0xc7, 0xb0, 0x34, 0x96, 0x8a, 0xba, 0xe6, 0x20, - 0x4c, 0x34, 0x87, 0xf8, 0x64, 0x73, 0x48, 0xf8, 0xcc, 0x41, 0xfa, 0x49, 0x80, 0x6a, 0x74, 0x46, - 0x3a, 0xf1, 0x03, 0xef, 0xc0, 0x15, 0x2f, 0x33, 0xf1, 0xaf, 0x23, 0xf3, 0xfe, 0xc8, 0xed, 0xf4, - 0x16, 0x72, 0x4a, 0x14, 0x67, 0x63, 0x4a, 0xfa, 0x4d, 0xf4, 0x09, 0x94, 0x83, 0xb9, 0x34, 0x49, - 0x55, 0xc8, 0x71, 0xf9, 0xb3, 0xb1, 0xe3, 0xe2, 0xad, 0x85, 0x3b, 0x66, 0xb9, 0x74, 0xe1, 0x6f, - 0x5a, 0xd2, 0x7f, 0xc6, 0xdd, 0x48, 0x1d, 0x48, 0x8c, 0xd1, 0x07, 0x90, 0xe6, 0x27, 0x5b, 0x98, - 0xf7, 0x64, 0x73, 0x81, 0xf0, 0x69, 0x8e, 0xbf, 0xdc, 0x69, 0x4e, 0x4c, 0xdc, 0xbe, 0xe4, 0xe4, - 0xa5, 0x4a, 0xf9, 0x97, 0xea, 0x2d, 0x48, 0xb1, 0x1b, 0x01, 0x0b, 0x28, 0xd7, 0xc6, 0xcf, 0x05, - 0x9d, 0xaa, 0xcc, 0xb8, 0x50, 0x0d, 0xb2, 0x2c, 0xeb, 0xd6, 0x3a, 0xdc, 0x01, 0x5c, 0x8f, 0x90, - 0xd8, 0xd9, 0xde, 0xca, 0xbf, 0x78, 0xbe, 0x96, 0xe1, 0x0d, 0x39, 0x43, 0xe5, 0x76, 0x3a, 0xd2, - 0xbf, 0xe7, 0x20, 0x2b, 0x63, 0xcb, 0x20, 0x26, 0x8c, 0xb6, 0x20, 0x87, 0x47, 0x6d, 0x6c, 0xd8, - 0x4e, 0x86, 0x3f, 0xf9, 0x06, 0xc5, 0xb8, 0x1b, 0x0e, 0x67, 0x33, 0x26, 0x7b, 0x62, 0xe8, 0x01, - 0x07, 0x3a, 0xa2, 0x31, 0x0b, 0x2e, 0xee, 0x47, 0x3a, 0xde, 0x73, 0x90, 0x0e, 0x16, 0xe8, 0x57, - 0x23, 0xa5, 0x42, 0x50, 0xc7, 0x03, 0x0e, 0x75, 0x24, 0x67, 0x7c, 0x2c, 0x80, 0x75, 0xd4, 0x03, - 0x58, 0x47, 0x6a, 0xc6, 0x34, 0x23, 0xc0, 0x8e, 0xf7, 0x1c, 0xb0, 0x23, 0x3d, 0x63, 0xc4, 0x21, - 0xb4, 0xe3, 0x2f, 0xc7, 0xd0, 0x8e, 0xf5, 0x48, 0xd1, 0x09, 0x70, 0xc7, 0xc1, 0x18, 0xdc, 0x91, - 0xa5, 0x4a, 0x5e, 0x8b, 0x54, 0x32, 0x03, 0xef, 0x38, 0x18, 0xc3, 0x3b, 0x72, 0x33, 0x14, 0xce, - 0x00, 0x3c, 0xfe, 0x76, 0x32, 0xe0, 0x01, 0x91, 0x90, 0x04, 0x1f, 0xe6, 0x7c, 0x88, 0x87, 0x12, - 0x81, 0x78, 0xe4, 0x23, 0x6f, 0xe7, 0x4c, 0xfd, 0xdc, 0x90, 0xc7, 0xf1, 0x04, 0xc8, 0x83, 0x25, - 0x2f, 0x77, 0x23, 0x95, 0xcf, 0x81, 0x79, 0x1c, 0x4f, 0xc0, 0x3c, 0x8a, 0x33, 0xd5, 0xce, 0x04, - 0x3d, 0x1e, 0x05, 0x41, 0x8f, 0x52, 0xc4, 0x9d, 0xd2, 0x3b, 0xb2, 0x11, 0xa8, 0xc7, 0x69, 0x14, - 0xea, 0xc1, 0xd0, 0x9e, 0x37, 0x23, 0x35, 0x2e, 0x00, 0x7b, 0x1c, 0x8c, 0xc1, 0x1e, 0xe2, 0x0c, - 0x4b, 0x9b, 0x13, 0xf7, 0x90, 0x5e, 0x27, 0xb1, 0x34, 0xe4, 0x94, 0x88, 0x83, 0xc5, 0xa6, 0xa9, - 0x9b, 0x1c, 0xa9, 0x60, 0x0d, 0xe9, 0x2e, 0xb9, 0xb7, 0x7a, 0x0e, 0x68, 0x0a, 0x16, 0x52, 0x86, - 0x62, 0xc0, 0xe9, 0x48, 0xff, 0x22, 0x78, 0xb2, 0x14, 0x0d, 0xf1, 0xdf, 0x79, 0x73, 0xfc, 0xce, - 0x1b, 0xba, 0xa7, 0xe5, 0x02, 0x19, 0x81, 0x3f, 0xe7, 0xe0, 0xe0, 0x87, 0xea, 0xe5, 0x1a, 0xf7, - 0x60, 0x89, 0x66, 0xa7, 0xcc, 0xa3, 0x07, 0x82, 0x46, 0x99, 0x74, 0xb0, 0x55, 0x60, 0xd1, 0xe3, - 0x2d, 0x58, 0xf6, 0xf1, 0xba, 0x17, 0x4d, 0x86, 0x00, 0x88, 0x2e, 0x77, 0x8d, 0xdf, 0x38, 0xff, - 0x2f, 0xee, 0xad, 0x90, 0x87, 0x9a, 0x4c, 0x02, 0x38, 0x84, 0x5f, 0x0d, 0x70, 0x44, 0x5f, 0x78, - 0xd1, 0x67, 0xb0, 0x12, 0xc0, 0x3e, 0x9c, 0xe4, 0x2f, 0xb1, 0x18, 0x04, 0x12, 0xf3, 0xe5, 0x22, - 0x6e, 0x0f, 0xfa, 0x1c, 0x6e, 0xd0, 0x34, 0x36, 0x22, 0xc1, 0x4c, 0xce, 0x97, 0x60, 0x5e, 0x23, - 0x3a, 0xea, 0x13, 0x92, 0xcc, 0x08, 0x60, 0x24, 0x15, 0x05, 0x8c, 0xfc, 0x4e, 0xf0, 0xec, 0xc6, - 0x85, 0x46, 0xda, 0x7a, 0x87, 0xd9, 0x57, 0x51, 0xa6, 0xbf, 0xc9, 0x25, 0xa5, 0xa7, 0x9f, 0x73, - 0x13, 0x21, 0x3f, 0x09, 0x97, 0x0b, 0xda, 0xe7, 0x78, 0xa0, 0x5a, 0x81, 0x94, 0x36, 0xe8, 0xe0, - 0x11, 0xb7, 0x02, 0xd6, 0x20, 0xb2, 0x4f, 0xf1, 0x25, 0xdf, 0x6b, 0xf2, 0x93, 0xf0, 0xd1, 0x83, - 0x40, 0x63, 0x51, 0x41, 0x66, 0x0d, 0xf4, 0x3e, 0xe4, 0x68, 0xe5, 0x45, 0xd1, 0x0d, 0x8b, 0x87, - 0x9a, 0x40, 0x46, 0xc4, 0xaa, 0x24, 0x1b, 0x87, 0x84, 0xe7, 0xc0, 0xb0, 0xe4, 0xac, 0xc1, 0x7f, - 0xf9, 0x72, 0x96, 0x6c, 0x20, 0x67, 0xb9, 0x09, 0x39, 0x32, 0x7a, 0xcb, 0x50, 0xdb, 0x98, 0x86, - 0x89, 0x9c, 0xec, 0x11, 0xa4, 0x7f, 0x15, 0xa0, 0x1c, 0x8a, 0x5c, 0x13, 0xe7, 0xee, 0x1c, 0x9b, - 0x78, 0x10, 0x2a, 0x1a, 0x9b, 0xfd, 0x2d, 0x80, 0x73, 0xd5, 0x52, 0x9e, 0xa9, 0x03, 0x1b, 0x77, - 0xf8, 0x12, 0xe4, 0xce, 0x55, 0xeb, 0x13, 0x4a, 0x08, 0x0e, 0x26, 0x15, 0x1a, 0x8c, 0x0f, 0xac, - 0x48, 0xfb, 0xc1, 0x0a, 0x54, 0x85, 0xac, 0x61, 0x6a, 0xba, 0xa9, 0xd9, 0x97, 0x74, 0x4d, 0x12, - 0xb2, 0xdb, 0x96, 0x0e, 0xe1, 0xca, 0xc4, 0xa0, 0x89, 0x1e, 0x42, 0xce, 0x8b, 0xb7, 0x02, 0xcd, - 0x0d, 0xa7, 0x60, 0x40, 0x1e, 0x2f, 0x59, 0x92, 0x2b, 0x13, 0xc3, 0x26, 0x6a, 0x40, 0xda, 0xc4, - 0xd6, 0xb0, 0xc7, 0x72, 0xd5, 0xd2, 0xfd, 0xb7, 0xe6, 0x0b, 0xb7, 0x84, 0x3a, 0xec, 0xd9, 0x32, - 0x17, 0x96, 0xbe, 0x80, 0x34, 0xa3, 0xa0, 0x3c, 0x64, 0x8e, 0xf7, 0x1f, 0xef, 0x1f, 0x7c, 0xb2, - 0x2f, 0xc6, 0x10, 0x40, 0xba, 0x56, 0xaf, 0x37, 0x0e, 0x5b, 0xa2, 0x80, 0x72, 0x90, 0xaa, 0x6d, - 0x1d, 0xc8, 0x2d, 0x31, 0x4e, 0xc8, 0x72, 0x63, 0xb7, 0x51, 0x6f, 0x89, 0x09, 0xb4, 0x04, 0x45, - 0xf6, 0x5b, 0x79, 0x74, 0x20, 0x3f, 0xa9, 0xb5, 0xc4, 0xa4, 0x8f, 0x74, 0xd4, 0xd8, 0xdf, 0x6e, - 0xc8, 0x62, 0x4a, 0x7a, 0x07, 0xae, 0x47, 0x06, 0x68, 0x0f, 0x26, 0x12, 0x7c, 0x30, 0x91, 0xf4, - 0x63, 0x9c, 0xdc, 0x40, 0xa2, 0xa2, 0x2e, 0xda, 0x0d, 0x4d, 0xfc, 0xfe, 0x02, 0x21, 0x3b, 0x34, - 0x7b, 0xf4, 0x2a, 0x94, 0x4c, 0x7c, 0x86, 0xed, 0x76, 0x97, 0x65, 0x01, 0x0e, 0x8e, 0x54, 0xe4, - 0x54, 0x2a, 0x64, 0x31, 0xb6, 0x2f, 0x71, 0xdb, 0x56, 0x98, 0x11, 0x58, 0xf4, 0xb6, 0x9e, 0x23, - 0x6c, 0x84, 0x7a, 0xc4, 0x88, 0xc4, 0x41, 0x33, 0x47, 0xc2, 0x54, 0x25, 0xa9, 0x2a, 0xa0, 0x7e, - 0x81, 0x52, 0xa4, 0x67, 0x0b, 0x2d, 0x76, 0x0e, 0x52, 0x72, 0xa3, 0x25, 0x7f, 0x2a, 0x26, 0x10, - 0x82, 0x12, 0xfd, 0xa9, 0x1c, 0xed, 0xd7, 0x0e, 0x8f, 0x9a, 0x07, 0x64, 0xb1, 0x97, 0xa1, 0xec, - 0x2c, 0xb6, 0x43, 0x4c, 0xa1, 0x2b, 0xb0, 0x54, 0x3f, 0x78, 0x72, 0xb8, 0xd7, 0x68, 0x35, 0x3c, - 0x72, 0x5a, 0xfa, 0xef, 0x04, 0x5c, 0x8b, 0xc8, 0x35, 0xd0, 0xfb, 0x00, 0xf6, 0x48, 0x31, 0x71, - 0x5b, 0x37, 0x3b, 0xd1, 0xc6, 0xd9, 0x1a, 0xc9, 0x94, 0x43, 0xce, 0xd9, 0xfc, 0xd7, 0x54, 0x87, - 0xfd, 0x11, 0x57, 0x4a, 0x26, 0x6b, 0x71, 0x6c, 0xe3, 0xd6, 0x84, 0xcb, 0x1a, 0x6e, 0x13, 0xc5, - 0x74, 0x4f, 0xa8, 0x62, 0xca, 0x8f, 0x3e, 0x85, 0x6b, 0xa1, 0xb8, 0xc2, 0x9d, 0xb1, 0x35, 0xa9, - 0xb0, 0x38, 0x39, 0xbc, 0x5c, 0x09, 0x86, 0x17, 0xe6, 0x8c, 0xad, 0x29, 0x40, 0x42, 0xea, 0x25, - 0x80, 0x84, 0xa8, 0xf8, 0x94, 0x5e, 0x14, 0xa2, 0x9f, 0x14, 0x9f, 0x42, 0x71, 0x3f, 0x13, 0x8e, - 0xfb, 0xd2, 0xef, 0x03, 0xbb, 0x1b, 0xcc, 0xef, 0x0e, 0x20, 0x6d, 0xd9, 0xaa, 0x3d, 0xb4, 0xf8, - 0x69, 0x79, 0x38, 0x6f, 0xb2, 0xb8, 0xe1, 0xfc, 0x38, 0xa2, 0xe2, 0x32, 0x57, 0xf3, 0x27, 0xb9, - 0xe9, 0x51, 0xdb, 0x93, 0xfa, 0x2d, 0xb6, 0xa7, 0x09, 0x69, 0x7c, 0x81, 0x07, 0xb6, 0x55, 0x49, - 0xd3, 0x19, 0x5f, 0x1d, 0x9f, 0x31, 0xe9, 0xde, 0xaa, 0x90, 0x04, 0xe4, 0xff, 0x9f, 0xaf, 0x89, - 0x8c, 0xfb, 0x4d, 0xbd, 0xaf, 0xd9, 0xb8, 0x6f, 0xd8, 0x97, 0x32, 0x97, 0x97, 0xde, 0x85, 0x52, - 0x70, 0xd1, 0xa3, 0xdd, 0x84, 0xe7, 0x88, 0xe3, 0xd2, 0x3f, 0x0b, 0xb0, 0x3c, 0x01, 0xf6, 0x40, - 0x0f, 0x79, 0x65, 0x83, 0x6d, 0xfc, 0xed, 0xf1, 0xd5, 0x0b, 0xb0, 0x7b, 0x05, 0x0e, 0x12, 0x18, - 0xbd, 0xfc, 0x9d, 0xed, 0xb1, 0x47, 0x40, 0x6f, 0x40, 0xd9, 0xd2, 0xce, 0x07, 0x8a, 0xc9, 0x10, - 0x14, 0xb7, 0x6a, 0x40, 0xd2, 0x6b, 0xd2, 0xe1, 0xd4, 0xd6, 0x3a, 0xff, 0x20, 0x08, 0x5b, 0x08, - 0x44, 0x25, 0xc4, 0x2d, 0xb5, 0x01, 0x8d, 0x5f, 0x27, 0x26, 0x61, 0x3c, 0xc2, 0x4b, 0x60, 0x3c, - 0xff, 0x24, 0xc0, 0x8d, 0x29, 0x57, 0x0c, 0xf4, 0x71, 0xe8, 0x5c, 0x7c, 0xb0, 0xc8, 0x05, 0x65, - 0x83, 0xd1, 0x82, 0x27, 0x43, 0x7a, 0x00, 0x05, 0x3f, 0x7d, 0xbe, 0xcd, 0xdb, 0xf5, 0xe2, 0x7b, - 0x10, 0x8b, 0xba, 0x0d, 0x45, 0x13, 0xdb, 0xc4, 0x49, 0x05, 0xc0, 0xbb, 0x02, 0x23, 0xb2, 0x5c, - 0x71, 0x37, 0x99, 0x15, 0xc4, 0xb8, 0x6b, 0x3f, 0xff, 0x21, 0x00, 0x78, 0x00, 0x95, 0x07, 0x10, - 0x09, 0x7e, 0x80, 0x28, 0x84, 0x2b, 0xc6, 0xc3, 0xb8, 0x22, 0xba, 0x03, 0x65, 0x76, 0x29, 0x20, - 0xfb, 0xa6, 0xda, 0x43, 0x13, 0x73, 0x38, 0xaa, 0x44, 0xc9, 0x47, 0x0e, 0x15, 0x7d, 0x06, 0xd7, - 0xed, 0xae, 0x89, 0xad, 0xae, 0xde, 0xeb, 0x28, 0xe1, 0xbd, 0x63, 0x65, 0x92, 0xb5, 0x19, 0x46, - 0x27, 0x5f, 0x73, 0x35, 0x9c, 0x04, 0xf7, 0xef, 0x6b, 0x48, 0xd1, 0x63, 0x43, 0x12, 0x3b, 0xd7, - 0x8a, 0x73, 0xdc, 0x40, 0x3f, 0x07, 0x50, 0x6d, 0xdb, 0xd4, 0x4e, 0x87, 0xc4, 0x3b, 0xc4, 0xc7, - 0x3f, 0xe5, 0x1d, 0xbb, 0x9a, 0xc3, 0xb7, 0x75, 0x93, 0x9f, 0xbf, 0x15, 0x4f, 0xd4, 0x77, 0x06, - 0x7d, 0x0a, 0xa5, 0x7d, 0x28, 0x05, 0x65, 0x9d, 0x8c, 0x99, 0x8d, 0x21, 0x98, 0x31, 0xb3, 0x0c, - 0x9c, 0x67, 0xcc, 0x6e, 0xbe, 0x9d, 0x60, 0x45, 0x48, 0xda, 0x90, 0x7e, 0x11, 0xa0, 0xe0, 0xf7, - 0x7a, 0x73, 0x27, 0xb5, 0x3c, 0xc9, 0x4f, 0x8c, 0x27, 0xf9, 0x49, 0x5f, 0x9a, 0x7b, 0x1d, 0xb2, - 0x24, 0xcd, 0x1d, 0x5a, 0xb8, 0xc3, 0x4b, 0xb3, 0x99, 0x73, 0xd5, 0x3a, 0xb6, 0x70, 0xc7, 0xe7, - 0x9b, 0x32, 0x2f, 0xe7, 0x9b, 0x82, 0xc9, 0x72, 0x36, 0x94, 0x2c, 0xef, 0x26, 0xb3, 0x29, 0x31, - 0x2d, 0xfb, 0xb2, 0x6d, 0xe9, 0x1b, 0x01, 0xb2, 0xee, 0x7c, 0x83, 0x35, 0xc9, 0x00, 0x84, 0xc9, - 0x96, 0x8b, 0x55, 0x24, 0xf9, 0xf5, 0x84, 0x55, 0x68, 0x13, 0x6e, 0x85, 0xf6, 0x43, 0x37, 0xe1, - 0x8b, 0x02, 0xe9, 0xfc, 0x8b, 0xeb, 0xe0, 0xb2, 0x3c, 0xbf, 0xfd, 0x47, 0x3e, 0x0e, 0x92, 0xb1, - 0xa0, 0xbf, 0x80, 0xb4, 0xda, 0x76, 0xa1, 0xc9, 0xd2, 0x04, 0xcc, 0xce, 0x61, 0xdd, 0x68, 0x8d, - 0x6a, 0x94, 0x53, 0xe6, 0x12, 0x7c, 0x54, 0x71, 0x67, 0x54, 0xd2, 0x1e, 0xd1, 0xcb, 0x78, 0x82, - 0x27, 0xbd, 0x04, 0x70, 0xbc, 0xff, 0xe4, 0x60, 0x7b, 0xe7, 0xd1, 0x4e, 0x63, 0x9b, 0x67, 0x74, - 0xdb, 0xdb, 0x8d, 0x6d, 0x31, 0x4e, 0xf8, 0xe4, 0xc6, 0x93, 0x83, 0x93, 0xc6, 0xb6, 0x98, 0x20, - 0x8d, 0xed, 0xc6, 0x5e, 0xed, 0xd3, 0xc6, 0xb6, 0x98, 0x94, 0x6a, 0x90, 0x73, 0x83, 0x0e, 0x2d, - 0x65, 0xeb, 0xcf, 0xb0, 0xc9, 0x57, 0x8b, 0x35, 0xd0, 0x2a, 0xe4, 0xc7, 0xb1, 0x75, 0x72, 0x41, - 0x63, 0x90, 0x3a, 0x09, 0x03, 0x65, 0x57, 0x07, 0x8f, 0x4d, 0x1f, 0x42, 0xc6, 0x18, 0x9e, 0x2a, - 0x8e, 0xed, 0x86, 0x10, 0x69, 0xe7, 0xfe, 0x36, 0x3c, 0xed, 0x69, 0xed, 0xc7, 0xf8, 0x92, 0x07, - 0xb9, 0xb4, 0x31, 0x3c, 0x7d, 0xcc, 0x4c, 0x9c, 0x0d, 0x23, 0x3e, 0x65, 0x18, 0x89, 0xd0, 0x30, - 0xd0, 0x1d, 0x28, 0x0c, 0xf4, 0x0e, 0x56, 0xd4, 0x4e, 0xc7, 0xc4, 0x16, 0x8b, 0xdd, 0x39, 0xae, - 0x39, 0x4f, 0x7a, 0x6a, 0xac, 0x43, 0xfa, 0x49, 0x00, 0x34, 0x1e, 0x68, 0xd1, 0x11, 0x2c, 0x79, - 0xb1, 0xda, 0x49, 0x00, 0x58, 0x24, 0x58, 0x8f, 0x0e, 0xd4, 0x81, 0x4b, 0xbe, 0x78, 0x11, 0x24, - 0x93, 0xac, 0x6f, 0xc5, 0x73, 0x55, 0x06, 0x9d, 0x2f, 0x5d, 0x94, 0xf8, 0x9c, 0x8b, 0x12, 0x93, - 0x91, 0x2b, 0xef, 0xf6, 0x84, 0x5d, 0x69, 0x62, 0xac, 0x44, 0x63, 0x40, 0xa5, 0x35, 0x26, 0xc6, - 0xe7, 0x19, 0x35, 0x24, 0xe1, 0x65, 0x86, 0x24, 0x3d, 0x00, 0xf1, 0x63, 0xf7, 0xfb, 0x5e, 0xfe, - 0xe8, 0x1f, 0xa6, 0x30, 0x36, 0xcc, 0x0b, 0xc8, 0x12, 0xef, 0x4b, 0x83, 0xc6, 0x5f, 0x41, 0xce, - 0x5d, 0x3d, 0xf7, 0x35, 0x4c, 0xe4, 0xb2, 0xf3, 0x91, 0x78, 0x22, 0xe8, 0x1e, 0x2c, 0x91, 0xb8, - 0xe1, 0x14, 0x4a, 0x19, 0x4c, 0x17, 0xa7, 0xde, 0xb0, 0xcc, 0x3a, 0xf6, 0x1c, 0x6c, 0x89, 0xc4, - 0x68, 0x91, 0xc5, 0x72, 0xdc, 0xf9, 0x63, 0x0c, 0x80, 0xdc, 0xeb, 0x42, 0x68, 0x25, 0xdb, 0xc3, - 0x62, 0x20, 0x99, 0x90, 0xfe, 0x2e, 0x0e, 0x79, 0x5f, 0xe1, 0x06, 0xfd, 0x79, 0x20, 0xb1, 0x5a, - 0x9f, 0x56, 0xe4, 0xf1, 0x65, 0x55, 0x81, 0x89, 0xc5, 0x17, 0x9f, 0x58, 0x54, 0xc9, 0xcc, 0xa9, - 0xdf, 0x26, 0x17, 0xae, 0xdf, 0xbe, 0x09, 0xc8, 0xd6, 0x6d, 0xb5, 0x47, 0x82, 0xb7, 0x36, 0x38, - 0x57, 0xd8, 0x69, 0x67, 0x35, 0x63, 0x91, 0xf6, 0x9c, 0xd0, 0x8e, 0x43, 0x42, 0x97, 0x7a, 0x90, - 0x75, 0xc1, 0x87, 0xc5, 0x1f, 0x99, 0x4c, 0xaa, 0x53, 0x57, 0x21, 0xdb, 0xc7, 0xb6, 0x4a, 0xc3, - 0x1e, 0x03, 0xa3, 0xdc, 0xf6, 0xbd, 0x0f, 0x20, 0xef, 0x7b, 0x79, 0x43, 0x22, 0xe1, 0x7e, 0xe3, - 0x13, 0x31, 0x56, 0xcd, 0x7c, 0xfb, 0xfd, 0x7a, 0x62, 0x1f, 0x3f, 0x23, 0x9f, 0x92, 0x1b, 0xf5, - 0x66, 0xa3, 0xfe, 0x58, 0x14, 0xaa, 0xf9, 0x6f, 0xbf, 0x5f, 0xcf, 0xc8, 0x98, 0xd6, 0x38, 0xee, - 0x3d, 0x86, 0x72, 0x68, 0x07, 0x82, 0x0e, 0x1a, 0x41, 0x69, 0xfb, 0xf8, 0x70, 0x6f, 0xa7, 0x5e, - 0x6b, 0x35, 0x94, 0x93, 0x83, 0x56, 0x43, 0x14, 0xd0, 0x35, 0x58, 0xde, 0xdb, 0xf9, 0xeb, 0x66, - 0x4b, 0xa9, 0xef, 0xed, 0x34, 0xf6, 0x5b, 0x4a, 0xad, 0xd5, 0xaa, 0xd5, 0x1f, 0x8b, 0xf1, 0xfb, - 0xff, 0x03, 0x50, 0xae, 0x6d, 0xd5, 0x77, 0x6a, 0x86, 0xd1, 0xd3, 0xda, 0x2a, 0x75, 0xf7, 0x75, - 0x48, 0x52, 0xe8, 0x77, 0xea, 0x1b, 0xdc, 0xea, 0xf4, 0xc2, 0x15, 0x7a, 0x04, 0x29, 0x8a, 0x0a, - 0xa3, 0xe9, 0x8f, 0x72, 0xab, 0x33, 0x2a, 0x59, 0x64, 0x30, 0xf4, 0xdc, 0x4c, 0x7d, 0xa5, 0x5b, - 0x9d, 0x5e, 0xd8, 0x42, 0x7b, 0x90, 0x71, 0x00, 0xb7, 0x59, 0x4f, 0x67, 0xab, 0x33, 0xab, 0x4d, - 0x64, 0x6a, 0x0c, 0xb8, 0x9c, 0xfe, 0x80, 0xb7, 0x3a, 0xa3, 0xe4, 0x85, 0x64, 0xc8, 0x79, 0x58, - 0xf3, 0xec, 0xb7, 0xc4, 0xd5, 0x39, 0x4a, 0x70, 0xe8, 0x0b, 0x28, 0x06, 0xa1, 0xb9, 0xf9, 0x9e, - 0xf9, 0x56, 0xe7, 0x2c, 0x8f, 0x11, 0xfd, 0x41, 0x9c, 0x6e, 0xbe, 0x67, 0xbf, 0xd5, 0x39, 0xab, - 0x65, 0xe8, 0x4b, 0x58, 0x1a, 0xc7, 0xd1, 0xe6, 0x7f, 0x05, 0x5c, 0x5d, 0xa0, 0x7e, 0x86, 0xfa, - 0x80, 0x26, 0xe0, 0x6f, 0x0b, 0x3c, 0x0a, 0xae, 0x2e, 0x52, 0x4e, 0x43, 0x1d, 0x28, 0x87, 0xb1, - 0xa9, 0x79, 0x1f, 0x09, 0x57, 0xe7, 0x2e, 0xad, 0xb1, 0xaf, 0x04, 0x31, 0x92, 0x79, 0x1f, 0x0d, - 0x57, 0xe7, 0xae, 0xb4, 0xa1, 0x63, 0x00, 0xdf, 0xdd, 0x76, 0x8e, 0x47, 0xc4, 0xd5, 0x79, 0x6a, - 0x6e, 0xc8, 0x80, 0xe5, 0x49, 0x97, 0xd9, 0x45, 0xde, 0x14, 0x57, 0x17, 0x2a, 0xc5, 0x11, 0x7b, - 0x0e, 0xde, 0x4b, 0xe7, 0x7b, 0x63, 0x5c, 0x9d, 0xb3, 0x26, 0xb7, 0xb5, 0xf5, 0xc3, 0x8b, 0x55, - 0xe1, 0xc7, 0x17, 0xab, 0xc2, 0x4f, 0x2f, 0x56, 0x85, 0xef, 0x7e, 0x5e, 0x8d, 0xfd, 0xf8, 0xf3, - 0x6a, 0xec, 0xbf, 0x7e, 0x5e, 0x8d, 0xfd, 0xcd, 0xdd, 0x73, 0xcd, 0xee, 0x0e, 0x4f, 0x37, 0xda, - 0x7a, 0x9f, 0xfe, 0xc5, 0xc3, 0x50, 0x2f, 0x37, 0x99, 0x4e, 0xd2, 0xf2, 0xfd, 0x91, 0xe4, 0x34, - 0x4d, 0x63, 0xdd, 0x83, 0x3f, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x22, 0x4b, 0xdf, 0x68, 0x32, - 0x00, 0x00, + 0x6b, 0xe2, 0xaa, 0x94, 0x4f, 0xfe, 0x07, 0x7c, 0x4b, 0x8e, 0xb9, 0xe7, 0x94, 0x54, 0x4e, 0x71, + 0x2a, 0x17, 0x1f, 0x53, 0x95, 0x8a, 0xe2, 0x92, 0x6f, 0xb9, 0xf9, 0xf4, 0x5d, 0xbe, 0xc3, 0x57, + 0xf3, 0xd8, 0x27, 0xb0, 0x78, 0x58, 0xae, 0xfa, 0xea, 0xbb, 0x61, 0x7a, 0xba, 0x7b, 0xe7, 0xd1, + 0xd3, 0xdd, 0xf3, 0xeb, 0x01, 0xdc, 0xb0, 0xf1, 0xa0, 0x83, 0xcd, 0xbe, 0x36, 0xb0, 0x37, 0xd5, + 0xd3, 0xb6, 0xb6, 0x69, 0x5f, 0x1a, 0xd8, 0xda, 0x30, 0x4c, 0xdd, 0xd6, 0x51, 0xd9, 0xeb, 0xdc, + 0x20, 0x9d, 0xd5, 0x5b, 0x3e, 0xee, 0xb6, 0x79, 0x69, 0xd8, 0xfa, 0xa6, 0x61, 0xea, 0xfa, 0x19, + 0xe3, 0xaf, 0xfa, 0x95, 0x51, 0x3d, 0x9b, 0x1d, 0xd5, 0xea, 0xf2, 0xce, 0x9b, 0x63, 0x9d, 0xa7, + 0x3d, 0xbd, 0xfd, 0x34, 0xb2, 0xd7, 0x37, 0x90, 0x40, 0x2f, 0xff, 0xee, 0x53, 0x7c, 0xe9, 0xf4, + 0xde, 0x1a, 0x93, 0x35, 0x54, 0x53, 0xed, 0x3b, 0xdd, 0xab, 0xbe, 0xee, 0x0b, 0x6c, 0x5a, 0x9a, + 0x3e, 0x08, 0x28, 0x5f, 0x3b, 0xd7, 0xf5, 0xf3, 0x1e, 0xde, 0xa4, 0xad, 0xd3, 0xe1, 0xd9, 0xa6, + 0xad, 0xf5, 0xb1, 0x65, 0xab, 0x7d, 0x83, 0x33, 0xac, 0x9c, 0xeb, 0xe7, 0x3a, 0xfd, 0xb9, 0x49, + 0x7e, 0x31, 0xaa, 0xf4, 0x4d, 0x0e, 0x32, 0x32, 0xfe, 0x6a, 0x88, 0x2d, 0x1b, 0xdd, 0x87, 0x24, + 0x6e, 0x77, 0xf5, 0x8a, 0xb0, 0x2e, 0xdc, 0xcd, 0xdf, 0xbf, 0xb9, 0x11, 0x5a, 0xb7, 0x0d, 0xce, + 0xd7, 0x68, 0x77, 0xf5, 0x66, 0x4c, 0xa6, 0xbc, 0xe8, 0x5d, 0x48, 0x9d, 0xf5, 0x86, 0x56, 0xb7, + 0x12, 0xa7, 0x42, 0xb7, 0xa2, 0x84, 0x1e, 0x11, 0xa6, 0x66, 0x4c, 0x66, 0xdc, 0xe4, 0x53, 0xda, + 0xe0, 0x4c, 0xaf, 0x24, 0xa6, 0x7f, 0x6a, 0x67, 0x70, 0x46, 0x3f, 0x45, 0x78, 0xd1, 0x16, 0x80, + 0x36, 0xd0, 0x6c, 0xa5, 0xdd, 0x55, 0xb5, 0x41, 0x25, 0x49, 0x25, 0x5f, 0x89, 0x96, 0xd4, 0xec, + 0x3a, 0x61, 0x6c, 0xc6, 0xe4, 0x9c, 0xe6, 0x34, 0xc8, 0x70, 0xbf, 0x1a, 0x62, 0xf3, 0xb2, 0x92, + 0x9a, 0x3e, 0xdc, 0x8f, 0x09, 0x13, 0x19, 0x2e, 0xe5, 0x46, 0x1f, 0x41, 0xb6, 0xdd, 0xc5, 0xed, + 0xa7, 0x8a, 0x3d, 0xaa, 0x64, 0xa8, 0xe4, 0x5a, 0x94, 0x64, 0x9d, 0xf0, 0xb5, 0x46, 0xcd, 0x98, + 0x9c, 0x69, 0xb3, 0x9f, 0x68, 0x1f, 0x4a, 0x3d, 0xcd, 0xb2, 0x15, 0x6b, 0xa0, 0x1a, 0x56, 0x57, + 0xb7, 0xad, 0x4a, 0x9e, 0xea, 0x78, 0x35, 0x4a, 0xc7, 0x9e, 0x66, 0xd9, 0x47, 0x0e, 0x73, 0x33, + 0x26, 0x17, 0x7b, 0x7e, 0x02, 0xd1, 0xa7, 0x9f, 0x9d, 0x61, 0xd3, 0x55, 0x58, 0x29, 0x4c, 0xd7, + 0x77, 0x40, 0xb8, 0x1d, 0x79, 0xa2, 0x4f, 0xf7, 0x13, 0xd0, 0x67, 0xb0, 0xdc, 0xd3, 0xd5, 0x8e, + 0xab, 0x4e, 0x69, 0x77, 0x87, 0x83, 0xa7, 0x95, 0x22, 0x55, 0xfa, 0x7a, 0xe4, 0x20, 0x75, 0xb5, + 0xe3, 0xa8, 0xa8, 0x13, 0x81, 0x66, 0x4c, 0x5e, 0xea, 0x85, 0x89, 0xe8, 0x0b, 0x58, 0x51, 0x0d, + 0xa3, 0x77, 0x19, 0xd6, 0x5e, 0xa2, 0xda, 0xef, 0x45, 0x69, 0xaf, 0x11, 0x99, 0xb0, 0x7a, 0xa4, + 0x8e, 0x51, 0x51, 0x0b, 0x44, 0xc3, 0xc4, 0x86, 0x6a, 0x62, 0xc5, 0x30, 0x75, 0x43, 0xb7, 0xd4, + 0x5e, 0xa5, 0x4c, 0x75, 0xdf, 0x89, 0xd2, 0x7d, 0xc8, 0xf8, 0x0f, 0x39, 0x7b, 0x33, 0x26, 0x97, + 0x8d, 0x20, 0x89, 0x69, 0xd5, 0xdb, 0xd8, 0xb2, 0x3c, 0xad, 0xe2, 0x2c, 0xad, 0x94, 0x3f, 0xa8, + 0x35, 0x40, 0x42, 0x0d, 0xc8, 0xe3, 0x11, 0x11, 0x57, 0x2e, 0x74, 0x1b, 0x57, 0x96, 0xa8, 0x42, + 0x29, 0xf2, 0x9c, 0x51, 0xd6, 0x13, 0xdd, 0xc6, 0xcd, 0x98, 0x0c, 0xd8, 0x6d, 0x21, 0x15, 0xae, + 0x5c, 0x60, 0x53, 0x3b, 0xbb, 0xa4, 0x6a, 0x14, 0xda, 0x43, 0xfc, 0x41, 0x05, 0x51, 0x85, 0x6f, + 0x44, 0x29, 0x3c, 0xa1, 0x42, 0x44, 0x45, 0xc3, 0x11, 0x69, 0xc6, 0xe4, 0xe5, 0x8b, 0x71, 0x32, + 0x31, 0xb1, 0x33, 0x6d, 0xa0, 0xf6, 0xb4, 0xaf, 0xb1, 0x42, 0x1d, 0x5c, 0x65, 0x79, 0xba, 0x89, + 0x3d, 0xe2, 0xdc, 0x5b, 0x84, 0x99, 0x98, 0xd8, 0x99, 0x9f, 0xb0, 0x95, 0x81, 0xd4, 0x85, 0xda, + 0x1b, 0xe2, 0xdd, 0x64, 0x36, 0x2d, 0x66, 0x76, 0x93, 0xd9, 0xac, 0x98, 0xdb, 0x4d, 0x66, 0x73, + 0x22, 0xec, 0x26, 0xb3, 0x20, 0xe6, 0xa5, 0x3b, 0x90, 0xf7, 0xb9, 0x17, 0x54, 0x81, 0x4c, 0x1f, + 0x5b, 0x96, 0x7a, 0x8e, 0xa9, 0x37, 0xca, 0xc9, 0x4e, 0x53, 0x2a, 0x41, 0xc1, 0xef, 0x52, 0xa4, + 0xef, 0x04, 0x57, 0x92, 0x78, 0x0b, 0x22, 0xc9, 0xdd, 0xa3, 0x23, 0xc9, 0x9b, 0xe8, 0x36, 0x14, + 0xe9, 0x54, 0x14, 0xa7, 0x9f, 0xb8, 0xac, 0xa4, 0x5c, 0xa0, 0xc4, 0x13, 0xce, 0xb4, 0x06, 0x79, + 0xe3, 0xbe, 0xe1, 0xb2, 0x24, 0x28, 0x0b, 0x18, 0xf7, 0x0d, 0x87, 0xe1, 0x15, 0x28, 0x90, 0x79, + 0xbb, 0x1c, 0x49, 0xfa, 0x91, 0x3c, 0xa1, 0x71, 0x16, 0xe9, 0xef, 0x13, 0x20, 0x86, 0xdd, 0x10, + 0x7a, 0x1f, 0x92, 0xc4, 0x23, 0x73, 0xe7, 0x5a, 0xdd, 0x60, 0xee, 0x7a, 0xc3, 0x71, 0xd7, 0x1b, + 0x2d, 0xc7, 0x5d, 0x6f, 0x65, 0x7f, 0x78, 0xbe, 0x16, 0xfb, 0xee, 0xff, 0xd6, 0x04, 0x99, 0x4a, + 0xa0, 0xeb, 0xc4, 0xf9, 0xa8, 0xda, 0x40, 0xd1, 0x3a, 0x74, 0xc8, 0x39, 0xe2, 0x59, 0x54, 0x6d, + 0xb0, 0xd3, 0x41, 0x7b, 0x20, 0xb6, 0xf5, 0x81, 0x85, 0x07, 0xd6, 0xd0, 0x52, 0x58, 0xb8, 0xe0, + 0x2e, 0x35, 0xe0, 0x18, 0x59, 0x9c, 0xa8, 0x3b, 0x9c, 0x87, 0x94, 0x51, 0x2e, 0xb7, 0x83, 0x04, + 0xb4, 0x0f, 0xc5, 0x0b, 0xb5, 0xa7, 0x75, 0x54, 0x5b, 0x37, 0x15, 0x0b, 0xdb, 0xdc, 0xc7, 0xde, + 0x1e, 0xdb, 0xf3, 0x13, 0x87, 0xeb, 0x08, 0xdb, 0xc7, 0x46, 0x47, 0xb5, 0xf1, 0x56, 0xf2, 0x87, + 0xe7, 0x6b, 0x82, 0x5c, 0xb8, 0xf0, 0xf5, 0xa0, 0xd7, 0xa0, 0xac, 0x1a, 0x86, 0x62, 0xd9, 0xaa, + 0x8d, 0x95, 0xd3, 0x4b, 0x1b, 0x5b, 0xd4, 0xed, 0x16, 0xe4, 0xa2, 0x6a, 0x18, 0x47, 0x84, 0xba, + 0x45, 0x88, 0xe8, 0x55, 0x28, 0x11, 0x0f, 0xad, 0xa9, 0x3d, 0xa5, 0x8b, 0xb5, 0xf3, 0xae, 0x5d, + 0x49, 0xaf, 0x0b, 0x77, 0x13, 0x72, 0x91, 0x53, 0x9b, 0x94, 0x88, 0x36, 0x60, 0xd9, 0x61, 0x6b, + 0xeb, 0x26, 0x76, 0x78, 0x89, 0x3f, 0x2e, 0xca, 0x4b, 0xbc, 0xab, 0xae, 0x9b, 0x98, 0xf1, 0x4b, + 0x1d, 0xd7, 0x52, 0xa8, 0x37, 0x47, 0x08, 0x92, 0x1d, 0xd5, 0x56, 0xe9, 0x0e, 0x14, 0x64, 0xfa, + 0x9b, 0xd0, 0x0c, 0xd5, 0xee, 0xf2, 0x75, 0xa5, 0xbf, 0xd1, 0x55, 0x48, 0x73, 0xd5, 0x09, 0x3a, + 0x0c, 0xde, 0x42, 0x2b, 0x90, 0x32, 0x4c, 0xfd, 0x02, 0xd3, 0x65, 0xc9, 0xca, 0xac, 0x21, 0xc9, + 0x50, 0x0a, 0x7a, 0x7e, 0x54, 0x82, 0xb8, 0x3d, 0xe2, 0x5f, 0x89, 0xdb, 0x23, 0xf4, 0x36, 0x24, + 0xc9, 0x06, 0xd0, 0x6f, 0x94, 0x26, 0xc4, 0x3a, 0x2e, 0xd7, 0xba, 0x34, 0xb0, 0x4c, 0x39, 0xa5, + 0xab, 0xb0, 0x32, 0x29, 0x12, 0x48, 0x5d, 0x97, 0x1e, 0xf0, 0xe8, 0xe8, 0x5d, 0xc8, 0xba, 0xa1, + 0x80, 0xd9, 0xd7, 0xf5, 0xb1, 0xaf, 0x38, 0xcc, 0xb2, 0xcb, 0x4a, 0x0c, 0x8b, 0xec, 0x4f, 0x57, + 0xe5, 0xe1, 0xbb, 0x20, 0x67, 0x54, 0xc3, 0x68, 0xaa, 0x56, 0x57, 0x3a, 0x87, 0x4a, 0x94, 0x9b, + 0xf7, 0xad, 0x8f, 0x40, 0x4f, 0x87, 0xb3, 0x3e, 0xbe, 0x93, 0x17, 0xa7, 0x7b, 0xe2, 0x9e, 0x3c, + 0x6a, 0xc1, 0xc3, 0xc1, 0x53, 0x62, 0xc1, 0x09, 0xf6, 0x21, 0xda, 0xde, 0xe9, 0x48, 0x1d, 0xb8, + 0x1e, 0xe9, 0xf1, 0x03, 0x72, 0x42, 0x40, 0x8e, 0x6c, 0x06, 0x8b, 0x23, 0x6c, 0xe0, 0xac, 0x41, + 0x86, 0x66, 0xd1, 0x79, 0xd3, 0xcf, 0xe4, 0x64, 0xde, 0x92, 0x7e, 0x49, 0xc2, 0xd5, 0xc9, 0xce, + 0x1f, 0xad, 0x43, 0xa1, 0xaf, 0x8e, 0x14, 0x7b, 0xc4, 0x2d, 0x54, 0xa0, 0x7b, 0x0e, 0x7d, 0x75, + 0xd4, 0x1a, 0x31, 0xf3, 0x14, 0x21, 0x61, 0x8f, 0xac, 0x4a, 0x7c, 0x3d, 0x71, 0xb7, 0x20, 0x93, + 0x9f, 0xe8, 0x09, 0x2c, 0xf5, 0xf4, 0xb6, 0xda, 0x53, 0x7a, 0xaa, 0x65, 0x2b, 0x6d, 0xbd, 0xdf, + 0xd7, 0x6c, 0x7e, 0xee, 0x6e, 0x8c, 0x6f, 0x2f, 0xed, 0x26, 0xbe, 0x89, 0x1e, 0x92, 0x98, 0x5c, + 0xa6, 0xb2, 0x7b, 0xaa, 0x65, 0xb3, 0x2e, 0xb4, 0x0d, 0xf9, 0xbe, 0x66, 0x9d, 0xe2, 0xae, 0x7a, + 0xa1, 0xe9, 0x66, 0x25, 0xb9, 0x9e, 0x98, 0x98, 0x13, 0x3d, 0xf1, 0x78, 0xb8, 0x26, 0xbf, 0x98, + 0x6f, 0x5b, 0x52, 0x01, 0xb3, 0x75, 0x1c, 0x4f, 0x7a, 0x61, 0xc7, 0xf3, 0x36, 0xac, 0x0c, 0xf0, + 0xc8, 0x56, 0xdc, 0x43, 0x6d, 0x31, 0x5b, 0xc9, 0xd0, 0x25, 0x47, 0xa4, 0xcf, 0xf5, 0x04, 0x16, + 0x31, 0x1b, 0xb2, 0x2b, 0xa6, 0x3e, 0x1c, 0x74, 0x2a, 0xd9, 0x75, 0xe1, 0x6e, 0x4a, 0x66, 0x0d, + 0xf4, 0x10, 0x2a, 0xf4, 0xc0, 0x32, 0x2f, 0x46, 0xbc, 0x2d, 0xee, 0x38, 0xa7, 0x37, 0x47, 0x2d, + 0xe5, 0x0a, 0xe9, 0xa7, 0x7e, 0x72, 0x8f, 0xf6, 0xf2, 0x13, 0xbf, 0x09, 0x2b, 0x2c, 0xfa, 0x62, + 0x93, 0x84, 0x61, 0xb2, 0x49, 0x74, 0x00, 0x40, 0x07, 0xb0, 0xe4, 0xf4, 0x1d, 0x9a, 0x7a, 0x6b, + 0x44, 0xbf, 0xff, 0xb6, 0x2b, 0xd0, 0x51, 0x88, 0x69, 0x3b, 0xf6, 0x98, 0xa7, 0x86, 0x8a, 0x9c, + 0xbe, 0x9a, 0xe1, 0xba, 0xf3, 0x87, 0x9e, 0xd1, 0x16, 0xc6, 0x53, 0x42, 0xde, 0xe5, 0xb9, 0x4e, + 0xcf, 0xa6, 0xd7, 0x20, 0xff, 0xd5, 0x50, 0x37, 0x87, 0x7d, 0x36, 0xa4, 0x22, 0x1d, 0x12, 0x30, + 0x12, 0x3d, 0x42, 0xff, 0x96, 0xf2, 0xd9, 0x5c, 0x30, 0x0f, 0xe0, 0x16, 0x25, 0x78, 0x16, 0x75, + 0xe4, 0x1b, 0xb8, 0xdf, 0xa8, 0xe2, 0xf3, 0x1a, 0x95, 0x3b, 0xb7, 0x68, 0xbb, 0x4a, 0xfc, 0x3a, + 0xbb, 0x42, 0x90, 0xa4, 0x33, 0x4c, 0x32, 0xb7, 0x49, 0x7e, 0x47, 0xda, 0x9a, 0xbb, 0xff, 0x69, + 0xff, 0xfe, 0x3b, 0x16, 0x98, 0xf9, 0xcd, 0x2c, 0x30, 0x1b, 0x69, 0x81, 0xbf, 0xda, 0xd6, 0x5a, + 0x70, 0x35, 0x24, 0xa8, 0x0c, 0x69, 0x68, 0xa3, 0xd6, 0x16, 0x4a, 0xf8, 0x9d, 0x80, 0xea, 0x53, + 0x24, 0x2f, 0x07, 0xf4, 0xb2, 0xb0, 0x18, 0x69, 0xc1, 0xf9, 0x45, 0x2d, 0xb8, 0x30, 0x8f, 0x05, + 0x17, 0x5f, 0xc6, 0x82, 0x4b, 0x63, 0x16, 0x7c, 0x0c, 0x4b, 0x63, 0xa9, 0xa8, 0x6b, 0x0e, 0xc2, + 0x44, 0x73, 0x88, 0x4f, 0x36, 0x87, 0x84, 0xcf, 0x1c, 0xa4, 0x9f, 0x04, 0xa8, 0x46, 0x67, 0xa4, + 0x13, 0x3f, 0xf0, 0x0e, 0x5c, 0xf1, 0x32, 0x13, 0xff, 0x3a, 0x32, 0xef, 0x8f, 0xdc, 0x4e, 0x6f, + 0x21, 0xa7, 0x44, 0x71, 0x36, 0xa6, 0xa4, 0xdf, 0x44, 0x9f, 0x40, 0x39, 0x98, 0x4b, 0x93, 0x54, + 0x85, 0x1c, 0x97, 0x3f, 0x1b, 0x3b, 0x2e, 0xde, 0x5a, 0xb8, 0x63, 0x96, 0x4b, 0x17, 0xfe, 0xa6, + 0x25, 0xfd, 0x57, 0xdc, 0x8d, 0xd4, 0x81, 0xc4, 0x18, 0x7d, 0x00, 0x69, 0x7e, 0xb2, 0x85, 0x79, + 0x4f, 0x36, 0x17, 0x08, 0x9f, 0xe6, 0xf8, 0xcb, 0x9d, 0xe6, 0xc4, 0xc4, 0xed, 0x4b, 0x4e, 0x5e, + 0xaa, 0x94, 0x7f, 0xa9, 0xde, 0x82, 0x14, 0xbb, 0x11, 0xb0, 0x80, 0x72, 0x6d, 0xfc, 0x5c, 0xd0, + 0xa9, 0xca, 0x8c, 0x0b, 0xd5, 0x20, 0xcb, 0xb2, 0x6e, 0xad, 0xc3, 0x1d, 0xc0, 0xf5, 0x08, 0x89, + 0x9d, 0xed, 0xad, 0xfc, 0x8b, 0xe7, 0x6b, 0x19, 0xde, 0x90, 0x33, 0x54, 0x6e, 0xa7, 0x23, 0xfd, + 0x7b, 0x0e, 0xb2, 0x32, 0xb6, 0x0c, 0x62, 0xc2, 0x68, 0x0b, 0x72, 0x78, 0xd4, 0xc6, 0x86, 0xed, + 0x64, 0xf8, 0x93, 0x6f, 0x50, 0x8c, 0xbb, 0xe1, 0x70, 0x36, 0x63, 0xb2, 0x27, 0x86, 0x1e, 0x70, + 0xa0, 0x23, 0x1a, 0xb3, 0xe0, 0xe2, 0x7e, 0xa4, 0xe3, 0x3d, 0x07, 0xe9, 0x60, 0x81, 0x7e, 0x35, + 0x52, 0x2a, 0x04, 0x75, 0x3c, 0xe0, 0x50, 0x47, 0x72, 0xc6, 0xc7, 0x02, 0x58, 0x47, 0x3d, 0x80, + 0x75, 0xa4, 0x66, 0x4c, 0x33, 0x02, 0xec, 0x78, 0xcf, 0x01, 0x3b, 0xd2, 0x33, 0x46, 0x1c, 0x42, + 0x3b, 0xfe, 0x72, 0x0c, 0xed, 0x58, 0x8f, 0x14, 0x9d, 0x00, 0x77, 0x1c, 0x8c, 0xc1, 0x1d, 0x59, + 0xaa, 0xe4, 0xb5, 0x48, 0x25, 0x33, 0xf0, 0x8e, 0x83, 0x31, 0xbc, 0x23, 0x37, 0x43, 0xe1, 0x0c, + 0xc0, 0xe3, 0x6f, 0x27, 0x03, 0x1e, 0x10, 0x09, 0x49, 0xf0, 0x61, 0xce, 0x87, 0x78, 0x28, 0x11, + 0x88, 0x47, 0x3e, 0xf2, 0x76, 0xce, 0xd4, 0xcf, 0x0d, 0x79, 0x1c, 0x4f, 0x80, 0x3c, 0x58, 0xf2, + 0x72, 0x37, 0x52, 0xf9, 0x1c, 0x98, 0xc7, 0xf1, 0x04, 0xcc, 0xa3, 0x38, 0x53, 0xed, 0x4c, 0xd0, + 0xe3, 0x51, 0x10, 0xf4, 0x28, 0x45, 0xdc, 0x29, 0xbd, 0x23, 0x1b, 0x81, 0x7a, 0x9c, 0x46, 0xa1, + 0x1e, 0x0c, 0xed, 0x79, 0x33, 0x52, 0xe3, 0x02, 0xb0, 0xc7, 0xc1, 0x18, 0xec, 0x21, 0xce, 0xb0, + 0xb4, 0x39, 0x71, 0x0f, 0xe9, 0x75, 0x12, 0x4b, 0x43, 0x4e, 0x89, 0x38, 0x58, 0x6c, 0x9a, 0xba, + 0xc9, 0x91, 0x0a, 0xd6, 0x90, 0xee, 0x92, 0x7b, 0xab, 0xe7, 0x80, 0xa6, 0x60, 0x21, 0x65, 0x28, + 0x06, 0x9c, 0x8e, 0xf4, 0x2f, 0x82, 0x27, 0x4b, 0xd1, 0x10, 0xff, 0x9d, 0x37, 0xc7, 0xef, 0xbc, + 0xa1, 0x7b, 0x5a, 0x2e, 0x90, 0x11, 0xf8, 0x73, 0x0e, 0x0e, 0x7e, 0xa8, 0x5e, 0xae, 0x71, 0x0f, + 0x96, 0x68, 0x76, 0xca, 0x3c, 0x7a, 0x20, 0x68, 0x94, 0x49, 0x07, 0x5b, 0x05, 0x16, 0x3d, 0xde, + 0x82, 0x65, 0x1f, 0xaf, 0x7b, 0xd1, 0x64, 0x08, 0x80, 0xe8, 0x72, 0xd7, 0xf8, 0x8d, 0xf3, 0x3f, + 0x12, 0xde, 0x0a, 0x79, 0xa8, 0xc9, 0x24, 0x80, 0x43, 0xf8, 0xd5, 0x00, 0x47, 0xf4, 0x85, 0x17, + 0x7d, 0x06, 0x2b, 0x01, 0xec, 0xc3, 0x49, 0xfe, 0x12, 0x8b, 0x41, 0x20, 0x31, 0x5f, 0x2e, 0xe2, + 0xf6, 0xa0, 0xcf, 0xe1, 0x06, 0x4d, 0x63, 0x23, 0x12, 0xcc, 0xe4, 0x7c, 0x09, 0xe6, 0x35, 0xa2, + 0xa3, 0x3e, 0x21, 0xc9, 0x8c, 0x00, 0x46, 0x52, 0x11, 0xc0, 0x08, 0xda, 0x83, 0xc2, 0x39, 0x1e, + 0x60, 0x4b, 0xb3, 0x94, 0x05, 0x6e, 0x86, 0x02, 0xc9, 0xcb, 0x9b, 0x31, 0x39, 0xcf, 0x65, 0x49, + 0xef, 0x3f, 0x08, 0xc2, 0x56, 0x19, 0x8a, 0x8a, 0x5f, 0x9d, 0xf4, 0x3b, 0xc1, 0x33, 0x4b, 0x17, + 0x79, 0x69, 0xeb, 0x1d, 0x66, 0xbe, 0x45, 0x99, 0xfe, 0x26, 0x77, 0xa0, 0x9e, 0x7e, 0xce, 0x2d, + 0x90, 0xfc, 0x24, 0x5c, 0x6e, 0x4d, 0x20, 0xc7, 0xe3, 0xe0, 0x0a, 0xa4, 0xb4, 0x41, 0x07, 0x8f, + 0xb8, 0x91, 0xb1, 0x06, 0x91, 0x7d, 0x8a, 0x2f, 0xb9, 0x29, 0x91, 0x9f, 0x84, 0x8f, 0x9e, 0x33, + 0x3a, 0x97, 0x82, 0xcc, 0x1a, 0xe8, 0x7d, 0xc8, 0xd1, 0xc2, 0x8e, 0xa2, 0x1b, 0x16, 0x8f, 0x64, + 0x81, 0x84, 0x8b, 0x15, 0x61, 0x36, 0x0e, 0x09, 0xcf, 0x81, 0x61, 0xc9, 0x59, 0x83, 0xff, 0xf2, + 0xa5, 0x44, 0xd9, 0x40, 0x4a, 0x74, 0x13, 0x72, 0x64, 0xf4, 0x96, 0xa1, 0xb6, 0x31, 0x8d, 0x42, + 0x39, 0xd9, 0x23, 0x48, 0xff, 0x2a, 0x40, 0x39, 0x14, 0x18, 0x27, 0xce, 0xdd, 0x39, 0x95, 0xf1, + 0x20, 0x12, 0x35, 0x36, 0xfb, 0x5b, 0x00, 0xe7, 0xaa, 0xa5, 0x3c, 0x53, 0x07, 0x36, 0xee, 0xf0, + 0x25, 0xc8, 0x9d, 0xab, 0xd6, 0x27, 0x94, 0x10, 0x1c, 0x4c, 0x2a, 0x34, 0x18, 0x1f, 0x16, 0x92, + 0xf6, 0x63, 0x21, 0xa8, 0x0a, 0x59, 0xc3, 0xd4, 0x74, 0x53, 0xb3, 0x2f, 0xe9, 0x9a, 0x24, 0x64, + 0xb7, 0x2d, 0x1d, 0xc2, 0x95, 0x89, 0x31, 0x19, 0x3d, 0x84, 0x9c, 0x17, 0xce, 0x05, 0x9a, 0x7a, + 0x4e, 0x81, 0x98, 0x3c, 0x5e, 0xb2, 0x24, 0x57, 0x26, 0x46, 0x65, 0xd4, 0x80, 0xb4, 0x89, 0xad, + 0x61, 0x8f, 0xa5, 0xc2, 0xa5, 0xfb, 0x6f, 0xcd, 0x17, 0xcd, 0x09, 0x75, 0xd8, 0xb3, 0x65, 0x2e, + 0x2c, 0x7d, 0x01, 0x69, 0x46, 0x41, 0x79, 0xc8, 0x1c, 0xef, 0x3f, 0xde, 0x3f, 0xf8, 0x64, 0x5f, + 0x8c, 0x21, 0x80, 0x74, 0xad, 0x5e, 0x6f, 0x1c, 0xb6, 0x44, 0x01, 0xe5, 0x20, 0x55, 0xdb, 0x3a, + 0x90, 0x5b, 0x62, 0x9c, 0x90, 0xe5, 0xc6, 0x6e, 0xa3, 0xde, 0x12, 0x13, 0x68, 0x09, 0x8a, 0xec, + 0xb7, 0xf2, 0xe8, 0x40, 0x7e, 0x52, 0x6b, 0x89, 0x49, 0x1f, 0xe9, 0xa8, 0xb1, 0xbf, 0xdd, 0x90, + 0xc5, 0x94, 0xf4, 0x0e, 0x5c, 0x8f, 0x8c, 0xff, 0x1e, 0x0a, 0x25, 0xf8, 0x50, 0x28, 0xe9, 0xc7, + 0x38, 0xb9, 0xe0, 0x44, 0x05, 0x75, 0xb4, 0x1b, 0x9a, 0xf8, 0xfd, 0x05, 0x32, 0x82, 0xd0, 0xec, + 0xd1, 0xab, 0x50, 0x32, 0xf1, 0x19, 0xb6, 0xdb, 0x5d, 0x96, 0x64, 0x38, 0x30, 0x55, 0x91, 0x53, + 0xa9, 0x90, 0xc5, 0xd8, 0xbe, 0xc4, 0x6d, 0x5b, 0x61, 0x46, 0x60, 0x51, 0x30, 0x20, 0x47, 0xd8, + 0x08, 0xf5, 0x88, 0x11, 0x89, 0xff, 0x67, 0x7e, 0x8a, 0xa9, 0x4a, 0x52, 0x55, 0x40, 0xdd, 0x0e, + 0xa5, 0x48, 0xcf, 0x16, 0x5a, 0xec, 0x1c, 0xa4, 0xe4, 0x46, 0x4b, 0xfe, 0x54, 0x4c, 0x20, 0x04, + 0x25, 0xfa, 0x53, 0x39, 0xda, 0xaf, 0x1d, 0x1e, 0x35, 0x0f, 0xc8, 0x62, 0x2f, 0x43, 0xd9, 0x59, + 0x6c, 0x87, 0x98, 0x42, 0x57, 0x60, 0xa9, 0x7e, 0xf0, 0xe4, 0x70, 0xaf, 0xd1, 0x6a, 0x78, 0xe4, + 0xb4, 0xf4, 0x3f, 0x09, 0xb8, 0x16, 0x91, 0xca, 0xa0, 0xf7, 0x01, 0xec, 0x91, 0x62, 0xe2, 0xb6, + 0x6e, 0x76, 0xa2, 0x8d, 0xb3, 0x35, 0x92, 0x29, 0x87, 0x9c, 0xb3, 0xf9, 0xaf, 0xa9, 0xf1, 0xe0, + 0x23, 0xae, 0x94, 0x4c, 0xd6, 0xe2, 0xd0, 0xc9, 0xad, 0x09, 0x77, 0x41, 0xdc, 0x26, 0x8a, 0xe9, + 0x9e, 0x50, 0xc5, 0x94, 0x1f, 0x7d, 0x0a, 0xd7, 0x42, 0x61, 0x8b, 0xfb, 0x7a, 0x6b, 0x52, 0xdd, + 0x72, 0x72, 0xf4, 0xba, 0x12, 0x8c, 0x5e, 0xcc, 0xd7, 0x5b, 0x53, 0x70, 0x8a, 0xd4, 0x4b, 0xe0, + 0x14, 0x51, 0xe1, 0x2f, 0xbd, 0x68, 0x05, 0x60, 0x52, 0xf8, 0x0b, 0xa5, 0x15, 0x99, 0x70, 0x5a, + 0x21, 0xfd, 0x3e, 0xb0, 0xbb, 0xc1, 0xf4, 0xf1, 0x00, 0xd2, 0x96, 0xad, 0xda, 0x43, 0x8b, 0x9f, + 0x96, 0x87, 0xf3, 0xe6, 0xa2, 0x1b, 0xce, 0x8f, 0x23, 0x2a, 0x2e, 0x73, 0x35, 0x7f, 0x92, 0x9b, + 0x1e, 0xb5, 0x3d, 0xa9, 0xdf, 0x62, 0x7b, 0x9a, 0x90, 0xc6, 0x17, 0x78, 0x60, 0x5b, 0x95, 0x34, + 0x9d, 0xf1, 0xd5, 0xf1, 0x19, 0x93, 0xee, 0xad, 0x0a, 0xc9, 0x6f, 0xfe, 0xff, 0xf9, 0x9a, 0xc8, + 0xb8, 0xdf, 0xd4, 0xfb, 0x9a, 0x8d, 0xfb, 0x86, 0x7d, 0x29, 0x73, 0x79, 0xe9, 0x5d, 0x28, 0x05, + 0x17, 0x3d, 0xda, 0x4d, 0x78, 0x8e, 0x38, 0x2e, 0xfd, 0xb3, 0x00, 0xcb, 0x13, 0x50, 0x15, 0xf4, + 0x90, 0x17, 0x4e, 0xd8, 0xc6, 0xdf, 0x1e, 0x5f, 0xbd, 0x00, 0xbb, 0x57, 0x3f, 0x21, 0x81, 0xd1, + 0xbb, 0x1e, 0xb0, 0x3d, 0xf6, 0x08, 0xe8, 0x0d, 0x28, 0x5b, 0xda, 0xf9, 0x40, 0x31, 0x19, 0x40, + 0xe3, 0x16, 0x25, 0x48, 0xf6, 0x4e, 0x3a, 0x9c, 0xd2, 0x5d, 0x87, 0x64, 0x37, 0x08, 0x44, 0x25, + 0xc4, 0x2d, 0xb5, 0x01, 0x8d, 0xdf, 0x56, 0x26, 0x41, 0x48, 0xc2, 0x4b, 0x40, 0x48, 0xff, 0x24, + 0xc0, 0x8d, 0x29, 0x37, 0x18, 0xf4, 0x71, 0xe8, 0x5c, 0x7c, 0xb0, 0xc8, 0xfd, 0x67, 0x83, 0xd1, + 0x82, 0x27, 0x43, 0x7a, 0x00, 0x05, 0x3f, 0x7d, 0xbe, 0xcd, 0xdb, 0xf5, 0xe2, 0x7b, 0x10, 0xea, + 0xba, 0x0d, 0x45, 0x13, 0xdb, 0xc4, 0x49, 0x05, 0xb0, 0xc1, 0x02, 0x23, 0xb2, 0x54, 0x74, 0x37, + 0x99, 0x15, 0xc4, 0xb8, 0x6b, 0x3f, 0xff, 0x29, 0x00, 0x78, 0xf8, 0x97, 0x87, 0x3f, 0x09, 0x7e, + 0xfc, 0x29, 0x04, 0x5b, 0xc6, 0xc3, 0xb0, 0x25, 0xba, 0x03, 0x65, 0x76, 0xe7, 0x20, 0xfb, 0xa6, + 0xda, 0x43, 0x13, 0x73, 0xb4, 0xab, 0x44, 0xc9, 0x47, 0x0e, 0x15, 0x7d, 0x06, 0xd7, 0xed, 0xae, + 0x89, 0xad, 0xae, 0xde, 0xeb, 0x28, 0xe1, 0xbd, 0x63, 0x55, 0x98, 0xb5, 0x19, 0x46, 0x27, 0x5f, + 0x73, 0x35, 0x9c, 0x04, 0xf7, 0xef, 0x6b, 0x48, 0xd1, 0x63, 0x43, 0x12, 0x3b, 0xd7, 0x8a, 0x73, + 0xdc, 0x40, 0x3f, 0x07, 0x50, 0x6d, 0xdb, 0xd4, 0x4e, 0x87, 0xc4, 0x3b, 0xc4, 0xc7, 0x3f, 0xe5, + 0x1d, 0xbb, 0x9a, 0xc3, 0xb7, 0x75, 0x93, 0x9f, 0xbf, 0x15, 0x4f, 0xd4, 0x77, 0x06, 0x7d, 0x0a, + 0xa5, 0x7d, 0x28, 0x05, 0x65, 0x9d, 0x8c, 0x99, 0x8d, 0x21, 0x98, 0x31, 0xb3, 0x0c, 0x9c, 0x67, + 0xcc, 0x6e, 0xbe, 0x9d, 0x60, 0x35, 0x4e, 0xda, 0x90, 0x7e, 0x11, 0xa0, 0xe0, 0xf7, 0x7a, 0x73, + 0x27, 0xb5, 0x3c, 0xc9, 0x4f, 0x8c, 0x27, 0xf9, 0x49, 0x5f, 0x9a, 0x7b, 0x1d, 0xb2, 0x24, 0xcd, + 0x1d, 0x5a, 0xb8, 0xc3, 0x2b, 0xbf, 0x99, 0x73, 0xd5, 0x3a, 0xb6, 0x70, 0xc7, 0xe7, 0x9b, 0x32, + 0x2f, 0xe7, 0x9b, 0x82, 0xc9, 0x72, 0x36, 0x94, 0x2c, 0xef, 0x26, 0xb3, 0x29, 0x31, 0x2d, 0xfb, + 0xb2, 0x6d, 0xe9, 0x1b, 0x01, 0xb2, 0xee, 0x7c, 0x83, 0x25, 0xcf, 0x00, 0x42, 0xca, 0x96, 0x8b, + 0x15, 0x3c, 0xf9, 0xf5, 0x84, 0x15, 0x80, 0x13, 0x6e, 0x01, 0xf8, 0x43, 0x37, 0xe1, 0x8b, 0xc2, + 0x00, 0xfd, 0x8b, 0xeb, 0xc0, 0xbe, 0x3c, 0xbf, 0xfd, 0x47, 0x3e, 0x0e, 0x92, 0xb1, 0xa0, 0xbf, + 0x80, 0xb4, 0xda, 0x76, 0x91, 0xcf, 0xd2, 0x04, 0x48, 0xd0, 0x61, 0xdd, 0x68, 0x8d, 0x6a, 0x94, + 0x53, 0xe6, 0x12, 0x7c, 0x54, 0x71, 0x67, 0x54, 0xd2, 0x1e, 0xd1, 0xcb, 0x78, 0x82, 0x27, 0xbd, + 0x04, 0x70, 0xbc, 0xff, 0xe4, 0x60, 0x7b, 0xe7, 0xd1, 0x4e, 0x63, 0x9b, 0x67, 0x74, 0xdb, 0xdb, + 0x8d, 0x6d, 0x31, 0x4e, 0xf8, 0xe4, 0xc6, 0x93, 0x83, 0x93, 0xc6, 0xb6, 0x98, 0x20, 0x8d, 0xed, + 0xc6, 0x5e, 0xed, 0xd3, 0xc6, 0xb6, 0x98, 0x94, 0x6a, 0x90, 0x73, 0x83, 0x0e, 0xad, 0x94, 0xeb, + 0xcf, 0xb0, 0xc9, 0x57, 0x8b, 0x35, 0xd0, 0x2a, 0xe4, 0xc7, 0xa1, 0x7b, 0x72, 0x41, 0x63, 0x88, + 0x3d, 0x09, 0x03, 0x65, 0x57, 0x07, 0x8f, 0x4d, 0x1f, 0x42, 0xc6, 0x18, 0x9e, 0x2a, 0x8e, 0xed, + 0x86, 0x00, 0x6f, 0xe7, 0xfe, 0x36, 0x3c, 0xed, 0x69, 0xed, 0xc7, 0xf8, 0x92, 0x07, 0xb9, 0xb4, + 0x31, 0x3c, 0x7d, 0xcc, 0x4c, 0x9c, 0x0d, 0x23, 0x3e, 0x65, 0x18, 0x89, 0xd0, 0x30, 0xd0, 0x1d, + 0x28, 0x0c, 0xf4, 0x0e, 0x56, 0xd4, 0x4e, 0xc7, 0xc4, 0x16, 0x8b, 0xdd, 0x39, 0xae, 0x39, 0x4f, + 0x7a, 0x6a, 0xac, 0x43, 0xfa, 0x49, 0x00, 0x34, 0x1e, 0x68, 0xd1, 0x11, 0x2c, 0x79, 0xb1, 0xda, + 0x49, 0x00, 0x58, 0x24, 0x58, 0x8f, 0x0e, 0xd4, 0x01, 0x0c, 0x41, 0xbc, 0x08, 0x92, 0x49, 0xd6, + 0xb7, 0xe2, 0xb9, 0x2a, 0x83, 0xce, 0x97, 0x2e, 0x4a, 0x7c, 0xce, 0x45, 0x89, 0xc9, 0xc8, 0x95, + 0x77, 0x7b, 0xc2, 0xae, 0x34, 0x31, 0x56, 0x01, 0x32, 0xa0, 0xd2, 0x1a, 0x13, 0xe3, 0xf3, 0x8c, + 0x1a, 0x92, 0xf0, 0x32, 0x43, 0x92, 0x1e, 0x80, 0xf8, 0xb1, 0xfb, 0x7d, 0x2f, 0x7f, 0xf4, 0x0f, + 0x53, 0x18, 0x1b, 0xe6, 0x05, 0x64, 0x89, 0xf7, 0xa5, 0x41, 0xe3, 0xaf, 0x20, 0xe7, 0xae, 0x9e, + 0xfb, 0xd8, 0x26, 0x72, 0xd9, 0xf9, 0x48, 0x3c, 0x11, 0x74, 0x0f, 0x96, 0x48, 0xdc, 0x70, 0xea, + 0xb0, 0x0c, 0x05, 0x8c, 0x53, 0x6f, 0x58, 0x66, 0x1d, 0x7b, 0x0e, 0x74, 0x45, 0x62, 0xb4, 0xc8, + 0x62, 0x39, 0xee, 0xfc, 0x31, 0x06, 0x40, 0xee, 0x75, 0x21, 0x30, 0x94, 0xed, 0x61, 0x31, 0x90, + 0x4c, 0x48, 0x7f, 0x17, 0x87, 0xbc, 0xaf, 0x2e, 0x84, 0xfe, 0x3c, 0x90, 0x58, 0xad, 0x4f, 0xab, + 0x21, 0xf9, 0xb2, 0xaa, 0xc0, 0xc4, 0xe2, 0x8b, 0x4f, 0x2c, 0xaa, 0x22, 0xe7, 0x94, 0x87, 0x93, + 0x0b, 0x97, 0x87, 0xdf, 0x04, 0x64, 0xeb, 0xb6, 0xda, 0x23, 0xc1, 0x5b, 0x1b, 0x9c, 0x2b, 0xec, + 0xb4, 0xb3, 0x92, 0xb4, 0x48, 0x7b, 0x4e, 0x68, 0xc7, 0x21, 0xa1, 0x4b, 0x3d, 0xc8, 0xba, 0xe0, + 0xc3, 0xe2, 0x6f, 0x58, 0x26, 0x95, 0xc1, 0xab, 0x90, 0xed, 0x63, 0x5b, 0xa5, 0x61, 0x8f, 0x81, + 0x51, 0x6e, 0xfb, 0xde, 0x07, 0x90, 0xf7, 0x3d, 0xec, 0x21, 0x91, 0x70, 0xbf, 0xf1, 0x89, 0x18, + 0xab, 0x66, 0xbe, 0xfd, 0x7e, 0x3d, 0xb1, 0x8f, 0x9f, 0x91, 0x4f, 0xc9, 0x8d, 0x7a, 0xb3, 0x51, + 0x7f, 0x2c, 0x0a, 0xd5, 0xfc, 0xb7, 0xdf, 0xaf, 0x67, 0x64, 0x4c, 0x4b, 0x28, 0xf7, 0x1e, 0x43, + 0x39, 0xb4, 0x03, 0x41, 0x07, 0x8d, 0xa0, 0xb4, 0x7d, 0x7c, 0xb8, 0xb7, 0x53, 0xaf, 0xb5, 0x1a, + 0xca, 0xc9, 0x41, 0xab, 0x21, 0x0a, 0xe8, 0x1a, 0x2c, 0xef, 0xed, 0xfc, 0x75, 0xb3, 0xa5, 0xd4, + 0xf7, 0x76, 0x1a, 0xfb, 0x2d, 0xa5, 0xd6, 0x6a, 0xd5, 0xea, 0x8f, 0xc5, 0xf8, 0xfd, 0xff, 0x05, + 0x28, 0xd7, 0xb6, 0xea, 0x3b, 0x35, 0xc3, 0xe8, 0x69, 0x6d, 0x95, 0xba, 0xfb, 0x3a, 0x24, 0x29, + 0xb2, 0x3c, 0xf5, 0x89, 0x6f, 0x75, 0x7a, 0x5d, 0x0c, 0x3d, 0x82, 0x14, 0x05, 0x9d, 0xd1, 0xf4, + 0x37, 0xbf, 0xd5, 0x19, 0x85, 0x32, 0x32, 0x18, 0x7a, 0x6e, 0xa6, 0x3e, 0x02, 0xae, 0x4e, 0xaf, + 0x9b, 0xa1, 0x3d, 0xc8, 0x38, 0x80, 0xdb, 0xac, 0x97, 0xb9, 0xd5, 0x99, 0xc5, 0x2c, 0x32, 0x35, + 0x06, 0x5c, 0x4e, 0x7f, 0x1f, 0x5c, 0x9d, 0x51, 0x51, 0x43, 0x32, 0xe4, 0x3c, 0x28, 0x7b, 0xf6, + 0x53, 0xe5, 0xea, 0x1c, 0x15, 0x3e, 0xf4, 0x05, 0x14, 0x83, 0xd0, 0xdc, 0x7c, 0xaf, 0x88, 0xab, + 0x73, 0x56, 0xdf, 0x88, 0xfe, 0x20, 0x4e, 0x37, 0xdf, 0xab, 0xe2, 0xea, 0x9c, 0xc5, 0x38, 0xf4, + 0x25, 0x2c, 0x8d, 0xe3, 0x68, 0xf3, 0x3f, 0x32, 0xae, 0x2e, 0x50, 0x9e, 0x43, 0x7d, 0x40, 0x13, + 0xf0, 0xb7, 0x05, 0xde, 0x1c, 0x57, 0x17, 0xa9, 0xd6, 0xa1, 0x0e, 0x94, 0xc3, 0xd8, 0xd4, 0xbc, + 0x6f, 0x90, 0xab, 0x73, 0x57, 0xee, 0xd8, 0x57, 0x82, 0x18, 0xc9, 0xbc, 0x6f, 0x92, 0xab, 0x73, + 0x17, 0xf2, 0xd0, 0x31, 0x80, 0xef, 0x6e, 0x3b, 0xc7, 0x1b, 0xe5, 0xea, 0x3c, 0x25, 0x3d, 0x64, + 0xc0, 0xf2, 0xa4, 0xcb, 0xec, 0x22, 0x4f, 0x96, 0xab, 0x0b, 0x55, 0xfa, 0x88, 0x3d, 0x07, 0xef, + 0xa5, 0xf3, 0x3d, 0x61, 0xae, 0xce, 0x59, 0xf2, 0xdb, 0xda, 0xfa, 0xe1, 0xc5, 0xaa, 0xf0, 0xe3, + 0x8b, 0x55, 0xe1, 0xa7, 0x17, 0xab, 0xc2, 0x77, 0x3f, 0xaf, 0xc6, 0x7e, 0xfc, 0x79, 0x35, 0xf6, + 0xdf, 0x3f, 0xaf, 0xc6, 0xfe, 0xe6, 0xee, 0xb9, 0x66, 0x77, 0x87, 0xa7, 0x1b, 0x6d, 0xbd, 0x4f, + 0xff, 0x41, 0x62, 0xa8, 0x97, 0x9b, 0x4c, 0x27, 0x69, 0xf9, 0xfe, 0xa7, 0x72, 0x9a, 0xa6, 0xb1, + 0xee, 0xc1, 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x71, 0x2a, 0xdd, 0xc7, 0x32, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6899,6 +6937,15 @@ func (m *ResponseInitChain) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.XGenesisTime != nil { + { + size := m.XGenesisTime.Size() + i -= size + if _, err := m.XGenesisTime.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } if m.InitialCoreHeight != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.InitialCoreHeight)) i-- @@ -6948,6 +6995,25 @@ func (m *ResponseInitChain) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ResponseInitChain_GenesisTime) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ResponseInitChain_GenesisTime) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.GenesisTime != nil { + n49, err49 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.GenesisTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.GenesisTime):]) + if err49 != nil { + return 0, err49 + } + i -= n49 + i = encodeVarintTypes(dAtA, i, uint64(n49)) + i-- + dAtA[i] = 0x32 + } + return len(dAtA) - i, nil +} func (m *ResponseQuery) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8219,12 +8285,12 @@ func (m *Misbehavior) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x28 } - n61, err61 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err61 != nil { - return 0, err61 + n62, err62 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err62 != nil { + return 0, err62 } - i -= n61 - i = encodeVarintTypes(dAtA, i, uint64(n61)) + i -= n62 + i = encodeVarintTypes(dAtA, i, uint64(n62)) i-- dAtA[i] = 0x22 if m.Height != 0 { @@ -9172,9 +9238,24 @@ func (m *ResponseInitChain) Size() (n int) { if m.InitialCoreHeight != 0 { n += 1 + sovTypes(uint64(m.InitialCoreHeight)) } + if m.XGenesisTime != nil { + n += m.XGenesisTime.Size() + } return n } +func (m *ResponseInitChain_GenesisTime) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GenesisTime != nil { + l = github_com_gogo_protobuf_types.SizeOfStdTime(*m.GenesisTime) + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *ResponseQuery) Size() (n int) { if m == nil { return 0 @@ -14243,6 +14324,41 @@ func (m *ResponseInitChain) Unmarshal(dAtA []byte) error { break } } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GenesisTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := new(time.Time) + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(v, dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.XGenesisTime = &ResponseInitChain_GenesisTime{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/go.mod b/go.mod index 2c0ec90ed0..ca977753f8 100644 --- a/go.mod +++ b/go.mod @@ -32,22 +32,22 @@ require ( github.com/oasisprotocol/curve25519-voi v0.0.0-20220708102147-0a8a51822cae github.com/ory/dockertest v3.3.5+incompatible github.com/prometheus/client_golang v1.13.0 - github.com/rs/cors v1.10.1 + github.com/rs/cors v1.11.0 github.com/rs/zerolog v1.29.0 github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.9.0 github.com/tendermint/tm-db v0.6.6 - golang.org/x/crypto v0.21.0 - golang.org/x/net v0.22.0 - golang.org/x/sync v0.6.0 - google.golang.org/grpc v1.63.0 + golang.org/x/crypto v0.25.0 + golang.org/x/net v0.27.0 + golang.org/x/sync v0.7.0 + google.golang.org/grpc v1.64.1 pgregory.net/rapid v0.4.8 ) require ( - github.com/bufbuild/buf v1.30.1 + github.com/bufbuild/buf v1.35.1 github.com/creachadair/atomicfile v0.2.6 github.com/creachadair/taskgroup v0.3.2 github.com/go-pkgz/jrpc v0.2.0 @@ -57,9 +57,11 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect - buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240221180331-f05a6f4403ce.1 // indirect - connectrpc.com/connect v1.16.0 // indirect - connectrpc.com/otelconnect v0.7.0 // indirect + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 // indirect + buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240723163933-aa5836eeaf8d.1 // indirect + buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240723163933-aa5836eeaf8d.2 // indirect + connectrpc.com/connect v1.16.2 // indirect + connectrpc.com/otelconnect v0.7.1 // indirect dario.cat/mergo v1.0.0 // indirect github.com/4meepo/tagalign v1.3.3 // indirect github.com/Abirdcfly/dupword v0.0.13 // indirect @@ -68,13 +70,14 @@ require ( github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect github.com/alecthomas/go-check-sumtype v0.1.3 // indirect github.com/alexkohler/nakedret/v2 v2.0.2 // indirect - github.com/antlr4-go/antlr/v4 v4.13.0 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect - github.com/bufbuild/protocompile v0.9.0 // indirect - github.com/bufbuild/protovalidate-go v0.6.0 // indirect - github.com/bufbuild/protoyaml-go v0.1.8 // indirect + github.com/bufbuild/protocompile v0.14.0 // indirect + github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee // indirect + github.com/bufbuild/protovalidate-go v0.6.3 // indirect + github.com/bufbuild/protoyaml-go v0.1.9 // indirect github.com/butuzov/mirror v1.1.0 // indirect github.com/catenacyber/perfsprint v0.2.0 // indirect github.com/ccojocar/zxcvbn-go v1.0.1 // indirect @@ -86,25 +89,27 @@ require ( github.com/didip/tollbooth/v6 v6.0.1 // indirect github.com/didip/tollbooth_chi v0.0.0-20200524181329-8b84cd7183d9 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v26.0.0+incompatible // indirect + github.com/docker/cli v27.1.1+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v26.0.0+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.1 // indirect + github.com/docker/docker v27.1.1+incompatible // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/felixge/fgprof v0.9.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/ghostiam/protogetter v0.2.3 // indirect - github.com/go-chi/chi/v5 v5.0.12 // indirect + github.com/go-chi/chi/v5 v5.1.0 // indirect github.com/go-chi/render v1.0.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-pkgz/expirable-cache v0.0.3 // indirect github.com/go-pkgz/rest v1.5.0 // indirect - github.com/gofrs/uuid/v5 v5.0.0 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0 // indirect + github.com/gofrs/uuid/v5 v5.2.0 // indirect github.com/golang/glog v1.2.0 // indirect github.com/google/cel-go v0.20.1 // indirect - github.com/google/go-containerregistry v0.19.1 // indirect + github.com/google/go-containerregistry v0.20.1 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20240327155427-868f304927ed // indirect + github.com/google/pprof v0.0.0-20240722153945-304e4f0156b8 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/huandu/xstrings v1.4.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect github.com/jdx/go-netrc v1.0.0 // indirect @@ -130,16 +135,15 @@ require ( github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/ykadowak/zerologlint v0.1.3 // indirect go-simpler.org/sloglint v0.1.2 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.opentelemetry.io/proto/otlp v0.12.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect go.tmz.dev/musttag v0.7.2 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a // indirect ) require ( @@ -150,7 +154,7 @@ require ( github.com/DataDog/zstd v1.4.5 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/Masterminds/semver v1.5.0 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect @@ -223,7 +227,7 @@ require ( github.com/julz/importas v0.1.0 // indirect github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/klauspost/compress v1.17.7 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.8 // indirect @@ -300,12 +304,12 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect - golang.org/x/mod v0.16.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.19.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.23.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -324,6 +328,6 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/tendermint/go-amino v0.16.0 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 golang.org/x/time v0.5.0 ) diff --git a/go.sum b/go.sum index 0fe9ceb514..cfa3928543 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,12 @@ 4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= 4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= 4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240221180331-f05a6f4403ce.1 h1:0nWhrRcnkgw1kwJ7xibIO8bqfOA7pBzBjGCDBxIHch8= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240221180331-f05a6f4403ce.1/go.mod h1:Tgn5bgL220vkFOI0KPStlcClPeOJzAv4uT+V8JXGUnw= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 h1:SZRVx928rbYZ6hEKUIN+vtGDkl7uotABRWGY4OAg5gM= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240723163933-aa5836eeaf8d.1 h1:KVuCjYvvLCRFauVmXSGYQPdcSzzOMMsYrr01DYpI/+4= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240723163933-aa5836eeaf8d.1/go.mod h1:lAy2iG76hqz5AtMLglcGk+Ar9eHZ1HWqvssdp3DBhsk= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240723163933-aa5836eeaf8d.2 h1:6gCcD/yXj6DAJKE0D+UEB1bRITZ36K4WnstdviCCss0= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240723163933-aa5836eeaf8d.2/go.mod h1:psseUmlKRo9v5LZJtR/aTpdTLuyp9o3X7rnLT87SZEo= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -41,10 +45,10 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -connectrpc.com/connect v1.16.0 h1:rdtfQjZ0OyFkWPTegBNcH7cwquGAN1WzyJy80oFNibg= -connectrpc.com/connect v1.16.0/go.mod h1:XpZAduBQUySsb4/KO5JffORVkDI4B6/EYPi7N8xpNZw= -connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY= -connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc= +connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE= +connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc= +connectrpc.com/otelconnect v0.7.1 h1:scO5pOb0i4yUE66CnNrHeK1x51yq0bE0ehPg6WvzXJY= +connectrpc.com/otelconnect v0.7.1/go.mod h1:dh3bFgHBTb2bkqGCeVVOtHJreSns7uu9wwL2Tbz17ms= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -75,8 +79,8 @@ github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 h1:3ZBs7LAezy8gh0uECsA6C github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0/go.mod h1:rZLTje5A9kFBe0pzhpe2TdhRniBF++PRHQuRpR8esVc= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= @@ -106,8 +110,8 @@ github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cv github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= -github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= @@ -144,14 +148,16 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/buf v1.30.1 h1:QFtanwsXodoGFAwzXFXGXpzBkb7N2u8ZDyA3jWB4Pbs= -github.com/bufbuild/buf v1.30.1/go.mod h1:7W8DJnj76wQa55EA3z2CmDxS0/nsHh8FqtE00dyDAdA= -github.com/bufbuild/protocompile v0.9.0 h1:DI8qLG5PEO0Mu1Oj51YFPqtx6I3qYXUAhJVJ/IzAVl0= -github.com/bufbuild/protocompile v0.9.0/go.mod h1:s89m1O8CqSYpyE/YaSGtg1r1YFMF5nLTwh4vlj6O444= -github.com/bufbuild/protovalidate-go v0.6.0 h1:Jgs1kFuZ2LHvvdj8SpCLA1W/+pXS8QSM3F/E2l3InPY= -github.com/bufbuild/protovalidate-go v0.6.0/go.mod h1:1LamgoYHZ2NdIQH0XGczGTc6Z8YrTHjcJVmiBaar4t4= -github.com/bufbuild/protoyaml-go v0.1.8 h1:X9QDLfl9uEllh4gsXUGqPanZYCOKzd92uniRtW2OnAQ= -github.com/bufbuild/protoyaml-go v0.1.8/go.mod h1:R8vE2+l49bSiIExP4VJpxOXleHE+FDzZ6HVxr3cYunw= +github.com/bufbuild/buf v1.35.1 h1:aiCi/YFOg7eXKZeveWb2ZhnmLFwUMM/FnDCM0roFp+M= +github.com/bufbuild/buf v1.35.1/go.mod h1:SM7b5QW3FkQPNkkqIa/9UWzLOoe51la+GGZpEgH9b68= +github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= +github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= +github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee h1:E6ET8YUcYJ1lAe6ctR3as7yqzW2BNItDFnaB5zQq/8M= +github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee/go.mod h1:HjGFxsck9RObrTJp2hXQZfWhPgZqnR6sR1U5fCA/Kus= +github.com/bufbuild/protovalidate-go v0.6.3 h1:wxQyzW035zM16Binbaz/nWAzS12dRIXhZdSUWRY7Fv0= +github.com/bufbuild/protovalidate-go v0.6.3/go.mod h1:J4PtwP9Z2YAGgB0+o+tTWEDtLtXvz/gfhFZD8pbzM/U= +github.com/bufbuild/protoyaml-go v0.1.9 h1:anV5UtF1Mlvkkgp4NWA6U/zOnJFng8Orq4Vf3ZUQHBU= +github.com/bufbuild/protoyaml-go v0.1.9/go.mod h1:KCBItkvZOK/zwGueLdH1Wx1RLyFn5rCH7YjQrdty2Wc= github.com/butuzov/ireturn v0.2.2 h1:jWI36dxXwVrI+RnXDwux2IZOewpmfv930OuIRfaBUJ0= github.com/butuzov/ireturn v0.2.2/go.mod h1:RfGHUvvAuFFxoHKf4Z8Yxuh6OjlCw1KvR2zM1NFHeBk= github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= @@ -163,8 +169,8 @@ github.com/ccojocar/zxcvbn-go v1.0.1/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQd github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -211,7 +217,6 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/atomicfile v0.2.6 h1:FgYxYvGcqREApTY8Nxg8msM6P/KVKK3ob5h9FaRUTNg= @@ -260,14 +265,14 @@ github.com/didip/tollbooth_chi v0.0.0-20200524181329-8b84cd7183d9 h1:gTh8fKuI/yL github.com/didip/tollbooth_chi v0.0.0-20200524181329-8b84cd7183d9/go.mod h1:YWyIfq3y4ArRfWZ9XksmuusP+7Mad+T0iFZ0kv0XG/M= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v26.0.0+incompatible h1:90BKrx1a1HKYpSnnBFR6AgDq/FqkHxwlUyzJVPxD30I= -github.com/docker/cli v26.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.1.1+incompatible h1:goaZxOqs4QKxznZjjBWKONQci/MywhtRv2oNn0GkeZE= +github.com/docker/cli v27.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v26.0.0+incompatible h1:Ng2qi+gdKADUa/VM+6b6YaY2nlZhk/lVJiKR/2bMudU= -github.com/docker/docker v26.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.1 h1:j/eKUktUltBtMzKqmfLB0PAgqYyMHOp5vfsD1807oKo= -github.com/docker/docker-credential-helpers v0.8.1/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= +github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= +github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -324,8 +329,8 @@ github.com/ghostiam/protogetter v0.2.3/go.mod h1:KmNLOsy1v04hKbvZs8EfGI1fk39AgTd github.com/go-chi/chi v4.1.1+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= -github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= +github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-critic/go-critic v0.9.0 h1:Pmys9qvU3pSML/3GEQ2Xd9RZ/ip+aXHKILuxczKGV/U= @@ -344,8 +349,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-pkgz/expirable-cache v0.0.3 h1:rTh6qNPp78z0bQE6HDhXBHUwqnV9i09Vm6dksJLXQDc= @@ -377,6 +382,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc= +github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -388,8 +395,8 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= -github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM= +github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -474,8 +481,8 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY= -github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= +github.com/google/go-containerregistry v0.20.1 h1:eTgx9QNYugV4DN5mz4U8hiAGTi1ybXn0TPi4Smd8du0= +github.com/google/go-containerregistry v0.20.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -499,8 +506,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/pprof v0.0.0-20240327155427-868f304927ed h1:n8QtJTrwsv3P7dNxPaMeNkMcxvUpqocsHLr8iDLGlQI= -github.com/google/pprof v0.0.0-20240327155427-868f304927ed/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240722153945-304e4f0156b8 h1:ssNFCCVmib/GQSzx3uCWyfMgOamLGWuGqlMS77Y1m3Y= +github.com/google/pprof v0.0.0-20240722153945-304e4f0156b8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -532,8 +539,9 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaW github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -565,8 +573,8 @@ github.com/jdx/go-netrc v1.0.0/go.mod h1:Gh9eFQJnoTNIRHXl2j5bJXA1u84hQWJWgGh569z github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jgautheron/goconst v1.6.0 h1:gbMLWKRMkzAc6kYsQL6/TxaoBUg3Jm9LSF/Ih1ADWGA= github.com/jgautheron/goconst v1.6.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.15.6 h1:WMYJbw2Wo+KOWwZFvgY0jMoVHM6i4XIvRs2RcBj5VmI= -github.com/jhump/protoreflect v1.15.6/go.mod h1:jCHoyYQIJnaabEYnbGwyo9hUqfyUMTbJw/tAut5t97E= +github.com/jhump/protoreflect v1.16.0 h1:54fZg+49widqXYQ0b+usAFHbMkBGR4PpXrsHc8+TBDg= +github.com/jhump/protoreflect v1.16.0/go.mod h1:oYPd7nPvcBw/5wlDfm/AVmU9zH9BgqGCI469pGxfj/8= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= @@ -598,8 +606,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -799,8 +807,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= -github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= +github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= @@ -856,8 +864,8 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -976,29 +984,30 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 h1:WPpPsAAs8I2rA47v5u0558meKmmwm1Dj99ZbqCV8sZ8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1/go.mod h1:o5RW5o2pKpJLD5dNTCmjF1DorYwMeFJmb/rKr5sLaa8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= go.opentelemetry.io/otel/sdk/metric v1.19.0 h1:EJoTO5qysMsYCa+w4UghwFV/ptQgqSL/8Ni+hx+8i1k= go.opentelemetry.io/otel/sdk/metric v1.19.0/go.mod h1:XjG0jQyFJrv2PbMvwND7LwCEhsJzCzV5210euduKcKY= go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.12.0 h1:CMJ/3Wp7iOWES+CYLfnBv+DVmPbB+kmy9PJ92XvlR6c= go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.tmz.dev/musttag v0.7.2 h1:1J6S9ipDbalBSODNT5jCep8dhZyMr4ttnjQagmGYR5s= go.tmz.dev/musttag v0.7.2/go.mod h1:m6q5NiiSKMnQYokefa2xGoyoXnrswCbJ0AWYzf4Zs28= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1025,8 +1034,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1037,8 +1046,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= -golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 h1:jWGQJV4niP+CCmFW9ekjA9Zx8vYORzOUH2/Nl5WPuLQ= @@ -1073,8 +1082,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1121,8 +1130,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1147,8 +1156,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1229,16 +1238,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1250,8 +1259,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1328,8 +1337,8 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= -golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1399,12 +1408,10 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa h1:Jt1XW5PaLXF1/ePZrznsh/aAUvI7Adfc3LY1dAKlzRs= -google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:K4kfzHtI0kqWA79gecJarFtDn/Mls+GxQcg3Zox91Ac= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa h1:RBgMaUMP+6soRkik4VoN8ojR2nex2TqZwjSSogic+eo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a h1:YIa/rzVqMEokBkPtydCkx1VLmv3An1Uw7w1P1m6EhOY= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a h1:hqK4+jJZXCU4pW7jsAdGOVFIfLHQeV7LaizZKnZ84HI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1426,8 +1433,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8= -google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1441,8 +1448,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/consensus/replayer.go b/internal/consensus/replayer.go index 416c5a24b0..d950de4b2c 100644 --- a/internal/consensus/replayer.go +++ b/internal/consensus/replayer.go @@ -338,7 +338,7 @@ func (r *BlockReplayer) execInitChain(ctx context.Context, rs *replayState, stat quorumType := state.Validators.QuorumType if err := quorumType.Validate(); err != nil { - r.logger.Error("state quorum type validation failed: %w", err) + r.logger.Debug("state quorum type validation failed, falling back to genesis one", "err", err) quorumType = r.genDoc.QuorumType } @@ -355,6 +355,12 @@ func (r *BlockReplayer) execInitChain(ctx context.Context, rs *replayState, stat if err != nil { return err } + + // Allow overriding genesis block time + if res.GetGenesisTime() != nil { + state.LastBlockTime = *res.GetGenesisTime() + } + candidateState, err := state.NewStateChangeset(ctx, rp) if err != nil { return err @@ -366,6 +372,7 @@ func (r *BlockReplayer) execInitChain(ctx context.Context, rs *replayState, stat state.LastCoreChainLockedBlockHeight = res.InitialCoreHeight // We update the last results hash with the empty hash, to conform with RFC-6962. state.LastResultsHash = merkle.HashFromByteSlices(nil) + return r.stateStore.Save(*state) } diff --git a/internal/consensus/replayer_test.go b/internal/consensus/replayer_test.go index 06605849aa..cbff61ba2b 100644 --- a/internal/consensus/replayer_test.go +++ b/internal/consensus/replayer_test.go @@ -1,21 +1,30 @@ package consensus import ( + "bytes" "context" "fmt" "testing" + "time" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" + "github.com/dashpay/dashd-go/btcjson" + abciclient "github.com/dashpay/tenderdash/abci/client" "github.com/dashpay/tenderdash/abci/example/kvstore" abci "github.com/dashpay/tenderdash/abci/types" + "github.com/dashpay/tenderdash/abci/types/mocks" "github.com/dashpay/tenderdash/crypto" + "github.com/dashpay/tenderdash/crypto/bls12381" "github.com/dashpay/tenderdash/internal/eventbus" "github.com/dashpay/tenderdash/internal/proxy" sm "github.com/dashpay/tenderdash/internal/state" "github.com/dashpay/tenderdash/internal/store" + "github.com/dashpay/tenderdash/internal/test/factory" tmbytes "github.com/dashpay/tenderdash/libs/bytes" "github.com/dashpay/tenderdash/libs/log" tmtypes "github.com/dashpay/tenderdash/types" @@ -140,6 +149,82 @@ func TestBlockReplayerReplay(t *testing.T) { } } +// TestInitChainGenesisTime checks if genesis time provided to InitChain is correctly included in first block. +// +// Given some hardcoded genesis time, +// When I return it in response to InitChain, +// Then the first block should have that genesis time. +func TestInitChainGenesisTime(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + logger := log.NewTestingLogger(t) + + eventBus := eventbus.NewDefault(logger) + require.NoError(t, eventBus.Start(ctx)) + + genesisAppHash := make([]byte, crypto.DefaultAppHashSize) + + genesisTime := time.Date(2001, 12, 31, 12, 34, 56, 78, time.UTC) + + // configure mock app to return expected genesis time + app := mocks.NewApplication(t) + defer app.AssertExpectations(t) + app.On("InitChain", mock.Anything, mock.Anything).Return(&abci.ResponseInitChain{ + AppHash: genesisAppHash, + XGenesisTime: &abci.ResponseInitChain_GenesisTime{ + GenesisTime: &genesisTime, + }, + }, nil) + + client := abciclient.NewLocalClient(logger, app) + proxyApp := proxy.New(client, logger, proxy.NopMetrics()) + + // Prepare genesis document with another genesis time + vset, _ := factory.MockValidatorSet() + recoveredThresholdPublicKey, err := bls12381.RecoverThresholdPublicKeyFromPublicKeys( + vset.GetPublicKeys(), + vset.GetProTxHashesAsByteArrays(), + ) + require.NoError(t, err) + vset.ThresholdPublicKey = recoveredThresholdPublicKey + proposerProTxHash := vset.GetProposer().ProTxHash + + genDoc := tmtypes.GenesisDoc{ + ChainID: "test-chain", + QuorumType: btcjson.LLMQType_100_67, + Validators: tmtypes.MakeGenesisValsFromValidatorSet(vset), + ConsensusParams: tmtypes.DefaultConsensusParams(), + ThresholdPublicKey: recoveredThresholdPublicKey, + QuorumHash: make([]byte, 32), + GenesisTime: time.Date(1999, 1, 1, 0, 0, 0, 0, time.UTC), + } + + err = genDoc.ValidateAndComplete() + require.NoError(t, err) + + // initialize state and stores + smState, err := sm.MakeGenesisState(&genDoc) + require.NoError(t, err) + stateStore := sm.NewStore(dbm.NewMemDB()) + blockStore := store.NewBlockStore(dbm.NewMemDB()) + replayer := newBlockReplayer(stateStore, blockStore, &genDoc, eventBus, proxyApp, proposerProTxHash) + + // use replayer to call initChain + appHash, err := replayer.Replay(ctx, smState, bytes.Clone(genesisAppHash), 0) + require.NoError(t, err) + require.NotEmpty(t, appHash) + + // reload smState, as replayer does not modify it + smState, err = stateStore.Load() + require.NoError(t, err) + + // ensure the block contains expected genesis time + block := smState.MakeBlock(1, []tmtypes.Tx{}, nil, nil, proposerProTxHash, 1) + assert.Equal(t, genesisTime, block.Header.Time, "block: %+v\n\nsm.State: %+v", block, smState) + +} + func updateStateStoreWithState(state sm.State, store sm.Store) sm.Store { err := store.Save(state) if err != nil { diff --git a/proto/tendermint/abci/types.proto b/proto/tendermint/abci/types.proto index 24bb19df35..0e64cdf6a5 100644 --- a/proto/tendermint/abci/types.proto +++ b/proto/tendermint/abci/types.proto @@ -551,6 +551,8 @@ message ResponseInitChain { tendermint.types.CoreChainLock next_core_chain_lock_update = 4; // Initial height of core lock. uint32 initial_core_height = 5; + // Override genesis time with provided time. + optional google.protobuf.Timestamp genesis_time = 6 [(gogoproto.nullable) = true, (gogoproto.stdtime) = true]; } // diff --git a/spec/abci++/api.md b/spec/abci++/api.md index 0eadee789e..6162aaf3b2 100644 --- a/spec/abci++/api.md +++ b/spec/abci++/api.md @@ -961,6 +961,7 @@ nondeterministic | validator_set_update | [ValidatorSetUpdate](#tendermint-abci-ValidatorSetUpdate) | | Initial validator set (optional). | | next_core_chain_lock_update | [tendermint.types.CoreChainLock](#tendermint-types-CoreChainLock) | | Initial core chain lock update. | | initial_core_height | [uint32](#uint32) | | Initial height of core lock. | +| genesis_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | optional | Override genesis time with provided time. | diff --git a/version/version.go b/version/version.go index 76ad983d5f..4ebbe38bf8 100644 --- a/version/version.go +++ b/version/version.go @@ -11,7 +11,7 @@ const ( // when not using git describe. It is formatted with semantic versioning. TMVersionDefault = "1.1.0-dev.2" // ABCISemVer is the semantic version of the ABCI library - ABCISemVer = "1.0.0" + ABCISemVer = "1.1.0" ABCIVersion = ABCISemVer ) From bb31e2875063a2f8f4765a5edcd2a1bedaab7416 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:11:18 +0200 Subject: [PATCH 09/11] chore(release): update changelog and version to 1.1.0-dev.3 (#848) --- CHANGELOG.md | 10 ++++++++++ version/version.go | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 428513fd25..b707025e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.1.0-dev.3] - 2024-07-25 + +### Features + +- Allow overriding genesis time in InitChain (#847) + ## [1.1.0-dev.2] - 2024-07-24 ### Bug Fixes @@ -5,6 +11,10 @@ - Address already in use (#845) - Active validators not always connected to each other (#844) +### Miscellaneous Tasks + +- Update changelog and version to 1.1.0-dev.2 (#846) + ## [1.1.0-dev.1] - 2024-07-23 ### Features diff --git a/version/version.go b/version/version.go index 4ebbe38bf8..deac532e84 100644 --- a/version/version.go +++ b/version/version.go @@ -9,7 +9,7 @@ var ( const ( // TMVersionDefault is the used as the fallback version for Tenderdash // when not using git describe. It is formatted with semantic versioning. - TMVersionDefault = "1.1.0-dev.2" + TMVersionDefault = "1.1.0-dev.3" // ABCISemVer is the semantic version of the ABCI library ABCISemVer = "1.1.0" From 58c04bb7a58230be8ea7659d45934c84b11574af Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:31:48 +0200 Subject: [PATCH 10/11] fix: validators form islands on genesis (#850) --- dash/quorum/validator_conn_executor.go | 29 +++++++++++++++++ node/node.go | 45 +++++++++++++------------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/dash/quorum/validator_conn_executor.go b/dash/quorum/validator_conn_executor.go index bcef5c3330..5bb7a56384 100644 --- a/dash/quorum/validator_conn_executor.go +++ b/dash/quorum/validator_conn_executor.go @@ -15,6 +15,7 @@ import ( "github.com/dashpay/tenderdash/internal/eventbus" "github.com/dashpay/tenderdash/internal/p2p" tmpubsub "github.com/dashpay/tenderdash/internal/pubsub" + "github.com/dashpay/tenderdash/internal/state" tmbytes "github.com/dashpay/tenderdash/libs/bytes" "github.com/dashpay/tenderdash/libs/log" "github.com/dashpay/tenderdash/libs/service" @@ -62,6 +63,9 @@ type ValidatorConnExecutor struct { // mux is a mutex to ensure only one goroutine is processing connections mux sync.Mutex + // state store used on start to setup initial validators + stateStore state.Store + // *** configuration *** // // EventBusCapacity sets event bus buffer capacity, defaults to 10 @@ -120,6 +124,15 @@ func WithValidatorsSet(valSet *types.ValidatorSet) func(vc *ValidatorConnExecuto } } +// WithStateStore sets state store to be used when setting up initial validators +// Can be nil, in which case no initial validators will be set up. +func WithStateStore(store state.Store) func(vc *ValidatorConnExecutor) error { + return func(vc *ValidatorConnExecutor) error { + vc.stateStore = store + return nil + } +} + // WithLogger sets a logger func WithLogger(logger log.Logger) func(vc *ValidatorConnExecutor) error { return func(vc *ValidatorConnExecutor) error { @@ -130,6 +143,22 @@ func WithLogger(logger log.Logger) func(vc *ValidatorConnExecutor) error { // OnStart implements Service to subscribe to Validator Update events func (vc *ValidatorConnExecutor) OnStart(ctx context.Context) error { + // initial setup of validators, if state store is provided + if vc.stateStore != nil { + valset, err := vc.stateStore.Load() + if err != nil { + return fmt.Errorf("cannot load initial state from state store: %w", err) + } + if err = vc.handleValidatorUpdateEvent(types.EventDataValidatorSetUpdate{ + ValidatorSetUpdates: valset.Validators.Validators, + ThresholdPublicKey: valset.Validators.ThresholdPublicKey, + QuorumHash: valset.Validators.QuorumHash, + }); err != nil { + // not fatal, but we should log it + vc.logger.Warn("cannot handle initial validator set, skipping", "err", err) + } + } + if err := vc.subscribe(); err != nil { return err } diff --git a/node/node.go b/node/node.go index e4ba7e6300..2634b5022e 100644 --- a/node/node.go +++ b/node/node.go @@ -271,28 +271,6 @@ func makeNode( }, } - // Start Dash connection executor - if len(proTxHash) > 0 { - var validatorConnExecutor *dashquorum.ValidatorConnExecutor - - vcLogger := logger.With("node_proTxHash", proTxHash.ShortString(), "module", "ValidatorConnExecutor") - dcm := p2p.NewRouterDashDialer(peerManager, vcLogger) - validatorConnExecutor, err = dashquorum.NewValidatorConnExecutor( - proTxHash, - eventBus, - dcm, - dashquorum.WithLogger(vcLogger), - dashquorum.WithValidatorsSet(state.Validators), - ) - if err != nil { - return nil, combineCloseError(err, makeCloser(closers)) - } - - node.services = append(node.services, validatorConnExecutor) - } else { - logger.Debug("ProTxHash not set, so we are not a validator; skipping ValidatorConnExecutor initialization") - } - node.router, err = createRouter(logger, nodeMetrics.p2p, node.NodeInfo, nodeKey, peerManager, cfg, proxyApp) if err != nil { return nil, combineCloseError( @@ -453,6 +431,29 @@ func makeNode( node.rpcEnv.ProTxHash = proTxHash } + // Start Dash connection executor + // We do it at the end, as we require the state to be loaded and network routing to be set up + if len(proTxHash) > 0 { + var validatorConnExecutor *dashquorum.ValidatorConnExecutor + + vcLogger := logger.With("node_proTxHash", proTxHash.ShortString(), "module", "ValidatorConnExecutor") + dcm := p2p.NewRouterDashDialer(peerManager, vcLogger) + validatorConnExecutor, err = dashquorum.NewValidatorConnExecutor( + proTxHash, + eventBus, + dcm, + dashquorum.WithLogger(vcLogger), + dashquorum.WithValidatorsSet(state.Validators), + dashquorum.WithStateStore(stateStore)) + if err != nil { + return nil, combineCloseError(err, makeCloser(closers)) + } + + node.services = append(node.services, validatorConnExecutor) + } else { + logger.Debug("ProTxHash not set, so we are not a validator; skipping ValidatorConnExecutor initialization") + } + node.BaseService = *service.NewBaseService(logger, "Node", node) return node, nil From 1e6c97caa0e5ef9f6d2ad6c3325fa3af121725b0 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Thu, 5 Sep 2024 14:50:55 +0200 Subject: [PATCH 11/11] build(deps): go-deadlock to 0.3.5 to fix false positives #906 --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ca977753f8..2c0d6a1f8f 100644 --- a/go.mod +++ b/go.mod @@ -122,7 +122,7 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/nunnatsa/ginkgolinter v0.14.1 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect - github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.24.0 // indirect @@ -324,7 +324,7 @@ require ( github.com/creachadair/tomledit v0.0.23 github.com/jonboulle/clockwork v0.3.0 github.com/oasisprotocol/oasis-core/go v0.2202.5 - github.com/sasha-s/go-deadlock v0.3.1 + github.com/sasha-s/go-deadlock v0.3.5 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/tendermint/go-amino v0.16.0 github.com/tyler-smith/go-bip39 v1.1.0 diff --git a/go.sum b/go.sum index cfa3928543..3112bee664 100644 --- a/go.sum +++ b/go.sum @@ -752,8 +752,8 @@ github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -822,8 +822,8 @@ github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9f github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.24.0 h1:MKNzmXtGh5N0y74Z/CIaJh4GlB364l0K1RUT08WSWAc=