diff --git a/CHANGELOG.md b/CHANGELOG.md index 653a2b36ea..7f38b12999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,9 +61,9 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Breaking Changes * (rest) [\#807](https://github.com/line/lbm-sdk/pull/807) remove legacy REST API * (codec) [\#833](https://github.com/line/lbm-sdk/pull/833) Fix foundation amino codec +* (ostracon) [\#869](https://github.com/line/lbm-sdk/pull/869) apply changes to replace Ostracon proto message with Tendermint * (x/bank) [\#876](https://github.com/line/lbm-sdk/pull/876) Add `MultiSend` deactivation - ### Build, CI * (ci) [\#829](https://github.com/line/lbm-sdk/pull/829) automate release process diff --git a/baseapp/abci.go b/baseapp/abci.go index 427819f3c6..e2ebd252fd 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -15,7 +15,9 @@ import ( "google.golang.org/grpc/codes" grpcstatus "google.golang.org/grpc/status" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/codec" @@ -124,7 +126,7 @@ func (app *BaseApp) SetOption(req abci.RequestSetOption) (res abci.ResponseSetOp } // BeginBlock implements the ABCI application interface. -func (app *BaseApp) BeginBlock(req abci.RequestBeginBlock) (res abci.ResponseBeginBlock) { +func (app *BaseApp) BeginBlock(req ocabci.RequestBeginBlock) (res abci.ResponseBeginBlock) { defer telemetry.MeasureSince(time.Now(), "abci", "begin_block") if app.cms.TracingEnabled() { @@ -228,7 +230,7 @@ func (app *BaseApp) EndBlock(req abci.RequestEndBlock) (res abci.ResponseEndBloc // internal CheckTx state if the AnteHandler passes. Otherwise, the ResponseCheckTx // will contain releveant error information. Regardless of tx execution outcome, // the ResponseCheckTx will contain relevant gas execution context. -func (app *BaseApp) CheckTxSync(req abci.RequestCheckTx) abci.ResponseCheckTx { +func (app *BaseApp) CheckTxSync(req abci.RequestCheckTx) ocabci.ResponseCheckTx { defer telemetry.MeasureSince(time.Now(), "abci", "check_tx") if req.Type != abci.CheckTxType_New && req.Type != abci.CheckTxType_Recheck { @@ -251,13 +253,13 @@ func (app *BaseApp) CheckTxSync(req abci.RequestCheckTx) abci.ResponseCheckTx { // return sdkerrors.ResponseCheckTxWithEvents(err, gInfo.GasWanted, gInfo.GasUsed, anteEvents, app.trace) // TODO(dudong2): need to fix to use ResponseCheckTxWithEvents } - return abci.ResponseCheckTx{ + return ocabci.ResponseCheckTx{ GasWanted: int64(gInfo.GasWanted), // TODO: Should type accept unsigned ints? GasUsed: int64(gInfo.GasUsed), // TODO: Should type accept unsigned ints? } } -func (app *BaseApp) CheckTxAsync(req abci.RequestCheckTx, callback abci.CheckTxCallback) { +func (app *BaseApp) CheckTxAsync(req abci.RequestCheckTx, callback ocabci.CheckTxCallback) { if req.Type != abci.CheckTxType_New && req.Type != abci.CheckTxType_Recheck { panic(fmt.Sprintf("unknown RequestCheckTx type: %s", req.Type)) } @@ -274,15 +276,15 @@ func (app *BaseApp) CheckTxAsync(req abci.RequestCheckTx, callback abci.CheckTxC } // BeginRecheckTx implements the ABCI interface and set the check state based on the given header -func (app *BaseApp) BeginRecheckTx(req abci.RequestBeginRecheckTx) abci.ResponseBeginRecheckTx { +func (app *BaseApp) BeginRecheckTx(req ocabci.RequestBeginRecheckTx) ocabci.ResponseBeginRecheckTx { // NOTE: This is safe because Ostracon holds a lock on the mempool for Rechecking. app.setCheckState(req.Header) - return abci.ResponseBeginRecheckTx{Code: abci.CodeTypeOK} + return ocabci.ResponseBeginRecheckTx{Code: abci.CodeTypeOK} } // EndRecheckTx implements the ABCI interface. -func (app *BaseApp) EndRecheckTx(req abci.RequestEndRecheckTx) abci.ResponseEndRecheckTx { - return abci.ResponseEndRecheckTx{Code: abci.CodeTypeOK} +func (app *BaseApp) EndRecheckTx(req ocabci.RequestEndRecheckTx) ocabci.ResponseEndRecheckTx { + return ocabci.ResponseEndRecheckTx{Code: abci.CodeTypeOK} } // DeliverTx implements the ABCI interface and executes a tx in DeliverTx mode. diff --git a/baseapp/abci_test.go b/baseapp/abci_test.go index 9cedf58aa6..14d6f7ab10 100644 --- a/baseapp/abci_test.go +++ b/baseapp/abci_test.go @@ -4,10 +4,11 @@ import ( "encoding/json" "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" - ocprototypes "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" dbm "github.com/tendermint/tm-db" sdk "github.com/line/lbm-sdk/types" @@ -116,7 +117,7 @@ func TestGetBlockRentionHeight(t *testing.T) { tc.bapp.SetParamStore(¶mStore{db: dbm.NewMemDB()}) tc.bapp.InitChain(abci.RequestInitChain{ ConsensusParams: &abci.ConsensusParams{ - Evidence: &ocprototypes.EvidenceParams{ + Evidence: &tmproto.EvidenceParams{ MaxAgeNumBlocks: tc.maxAgeBlocks, }, }, @@ -141,10 +142,10 @@ func TestBaseAppCreateQueryContext(t *testing.T) { app := NewBaseApp(name, logger, db, nil) app.init() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) app.Commit() testCases := []struct { @@ -192,7 +193,7 @@ func TestBaseAppBeginBlockConsensusParams(t *testing.T) { app.init() // set block params - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) ctx := app.deliverState.ctx maxGas := int64(123456789) app.paramStore.Set(ctx, ParamStoreKeyBlockParams, @@ -202,7 +203,7 @@ func TestBaseAppBeginBlockConsensusParams(t *testing.T) { app.Commit() // confirm consensus params updated into the context - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) newCtx := app.getContextForTx(app.checkState, []byte{}) require.Equal(t, maxGas, newCtx.ConsensusParams().Block.MaxGas) } diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index fb4321f239..750c69bf2e 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -9,7 +9,10 @@ import ( "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/crypto/tmhash" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" @@ -25,7 +28,7 @@ import ( "github.com/line/lbm-sdk/x/auth/legacy/legacytx" ) -var _ abci.Application = (*BaseApp)(nil) +var _ ocabci.Application = (*BaseApp)(nil) type ( // StoreLoader defines a customizable function to control how we load the CommitMultiStore @@ -457,14 +460,14 @@ func (app *BaseApp) GetConsensusParams(ctx sdk.Context) *abci.ConsensusParams { } if app.paramStore.Has(ctx, ParamStoreKeyEvidenceParams) { - var ep ocproto.EvidenceParams + var ep tmproto.EvidenceParams app.paramStore.Get(ctx, ParamStoreKeyEvidenceParams, &ep) cp.Evidence = &ep } if app.paramStore.Has(ctx, ParamStoreKeyValidatorParams) { - var vp ocproto.ValidatorParams + var vp tmproto.ValidatorParams app.paramStore.Get(ctx, ParamStoreKeyValidatorParams, &vp) cp.Validator = &vp @@ -518,7 +521,7 @@ func (app *BaseApp) getMaximumBlockGas(ctx sdk.Context) uint64 { } } -func (app *BaseApp) validateHeight(req abci.RequestBeginBlock) error { +func (app *BaseApp) validateHeight(req ocabci.RequestBeginBlock) error { if req.Header.Height < 1 { return fmt.Errorf("invalid height: %d", req.Header.Height) } diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index ad671641c1..a8113a6905 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -9,9 +9,10 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/codec/legacy" @@ -105,7 +106,7 @@ func TestLoadVersionPruning(t *testing.T) { // Commit seven blocks, of which 7 (latest) is kept in addition to 6, 5 // (keep recent) and 3 (keep every). for i := int64(1); i <= 7; i++ { - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) res := app.Commit() lastCommitID = sdk.CommitID{Version: i, Hash: res.Data} } diff --git a/baseapp/block_gas_test.go b/baseapp/block_gas_test.go index cdecc72fd2..282cf56283 100644 --- a/baseapp/block_gas_test.go +++ b/baseapp/block_gas_test.go @@ -8,10 +8,12 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + dbm "github.com/tendermint/tm-db" + + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" - dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/client" @@ -105,7 +107,7 @@ func TestBaseApp_BlockGas(t *testing.T) { _, txBytes, err := createTestTx(encCfg.TxConfig, txBuilder, privs, accNums, accSeqs, ctx.ChainID()) require.NoError(t, err) - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) rsp := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) // check result diff --git a/baseapp/deliver_tx_test.go b/baseapp/deliver_tx_test.go index b335e106fc..8daff38c88 100644 --- a/baseapp/deliver_tx_test.go +++ b/baseapp/deliver_tx_test.go @@ -14,9 +14,10 @@ import ( "github.com/gogo/protobuf/jsonpb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" @@ -217,7 +218,7 @@ func TestWithRouter(t *testing.T) { for blockN := 0; blockN < nBlocks; blockN++ { header := ocproto.Header{Height: int64(blockN) + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) for i := 0; i < txPerHeight; i++ { counter := int64(blockN*txPerHeight + i) @@ -312,7 +313,7 @@ func TestQuery(t *testing.T) { // query is still empty after a DeliverTx before we commit header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) _, resTx, err := app.Deliver(aminoTxEncoder(), tx) require.NoError(t, err) @@ -338,7 +339,7 @@ func TestGRPCQuery(t *testing.T) { app.InitChain(abci.RequestInitChain{}) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) app.Commit() req := testdata.SayHelloRequest{Name: "foo"} @@ -417,7 +418,7 @@ func TestMultiMsgDeliverTx(t *testing.T) { // with all msgs the same route header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) tx := newTxCounter(0, 0, 1, 2) txBytes, err := codec.Marshal(tx) require.NoError(t, err) @@ -498,7 +499,7 @@ func TestSimulateTx(t *testing.T) { for blockN := 0; blockN < nBlocks; blockN++ { count := int64(blockN + 1) header := ocproto.Header{Height: count} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) tx := newTxCounter(count, count) txBytes, err := cdc.Marshal(tx) @@ -553,7 +554,7 @@ func TestRunInvalidTransaction(t *testing.T) { app := setupBaseApp(t, anteOpt, routerOpt) header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) // transaction with no messages { @@ -680,7 +681,7 @@ func TestTxGasLimits(t *testing.T) { app := setupBaseApp(t, anteOpt, routerOpt) header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) testCases := []struct { tx *txTest @@ -794,7 +795,7 @@ func TestMaxBlockGasLimits(t *testing.T) { // reset the block gas header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) // execute the transaction multiple times for j := 0; j < tc.numDelivers; j++ { @@ -847,7 +848,7 @@ func TestCustomRunTxPanicHandler(t *testing.T) { app := setupBaseApp(t, anteOpt, routerOpt) header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) app.AddRunTxRecoveryHandler(func(recoveryObj interface{}) error { err, ok := recoveryObj.(error) @@ -889,7 +890,7 @@ func TestBaseAppAnteHandler(t *testing.T) { registerTestCodec(cdc) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) // execute a tx that will fail ante handler execution // @@ -998,7 +999,7 @@ func TestGasConsumptionBadTx(t *testing.T) { app.InitChain(abci.RequestInitChain{}) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) tx := newTxCounter(5, 0) tx.setFailOnAnte(true) @@ -1091,7 +1092,7 @@ func TestInitChainer(t *testing.T) { // commit and ensure we can still query header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) app.Commit() res = app.Query(query) @@ -1127,14 +1128,14 @@ func TestBeginBlock_WithInitialHeight(t *testing.T) { ) require.PanicsWithError(t, "invalid height: 4; expected: 3", func() { - app.BeginBlock(abci.RequestBeginBlock{ + app.BeginBlock(ocabci.RequestBeginBlock{ Header: ocproto.Header{ Height: 4, }, }) }) - app.BeginBlock(abci.RequestBeginBlock{ + app.BeginBlock(ocabci.RequestBeginBlock{ Header: ocproto.Header{ Height: 3, }, @@ -1439,7 +1440,7 @@ func TestCheckTx(t *testing.T) { // If a block is committed, CheckTx state should be reset. header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header, Hash: []byte("hash")}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header, Hash: []byte("hash")}) require.NotNil(t, app.checkState.ctx.BlockGasMeter(), "block gas meter should have been set to checkState") require.NotEmpty(t, app.checkState.ctx.HeaderHash()) @@ -1448,7 +1449,7 @@ func TestCheckTx(t *testing.T) { app.Commit() // reset CheckTx state - app.BeginRecheckTx(abci.RequestBeginRecheckTx{Header: header}) + app.BeginRecheckTx(ocabci.RequestBeginRecheckTx{Header: header}) checkStateStore = app.checkState.ctx.KVStore(capKey1) storedBytes := checkStateStore.Get(counterKey) @@ -1481,7 +1482,7 @@ func TestDeliverTx(t *testing.T) { for blockN := 0; blockN < nBlocks; blockN++ { header := ocproto.Header{Height: int64(blockN) + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) for i := 0; i < txPerHeight; i++ { counter := int64(blockN*txPerHeight + i) @@ -1627,7 +1628,7 @@ func TestLoadVersionInvalid(t *testing.T) { require.Error(t, err) header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) res := app.Commit() commitID1 := sdk.CommitID{Version: 1, Hash: res.Data} @@ -1677,7 +1678,7 @@ func setupBaseAppWithSnapshots(t *testing.T, blocks uint, blockTxs int, options r := rand.New(rand.NewSource(3920758213583)) keyCounter := 0 for height := int64(1); height <= int64(blocks); height++ { - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) for txNum := 0; txNum < blockTxs; txNum++ { tx := txTest{Msgs: []sdk.Msg{}} for msgNum := 0; msgNum < 100; msgNum++ { @@ -1749,13 +1750,13 @@ func TestLoadVersion(t *testing.T) { // execute a block, collect commit ID header := ocproto.Header{Height: 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) res := app.Commit() commitID1 := sdk.CommitID{Version: 1, Hash: res.Data} // execute a block, collect commit ID header = ocproto.Header{Height: 2} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) res = app.Commit() commitID2 := sdk.CommitID{Version: 2, Hash: res.Data} @@ -1772,7 +1773,7 @@ func TestLoadVersion(t *testing.T) { err = app.LoadVersion(1) require.Nil(t, err) testLoadVersionHelper(t, app, int64(1), commitID1) - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) app.Commit() testLoadVersionHelper(t, app, int64(2), commitID2) } @@ -1853,7 +1854,7 @@ func TestSetLoader(t *testing.T) { require.Nil(t, err) // "execute" one block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 2}}) res := app.Commit() require.NotNil(t, res.Data) diff --git a/baseapp/grpcrouter.go b/baseapp/grpcrouter.go index c0d43a23a2..e8542c19f2 100644 --- a/baseapp/grpcrouter.go +++ b/baseapp/grpcrouter.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client/grpc/reflection" codectypes "github.com/line/lbm-sdk/codec/types" diff --git a/baseapp/grpcrouter_helpers.go b/baseapp/grpcrouter_helpers.go index 9e78b70742..7d737a6774 100644 --- a/baseapp/grpcrouter_helpers.go +++ b/baseapp/grpcrouter_helpers.go @@ -5,7 +5,7 @@ import ( "fmt" gogogrpc "github.com/gogo/protobuf/grpc" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "google.golang.org/grpc" "github.com/line/lbm-sdk/codec/types" diff --git a/baseapp/msg_service_router_test.go b/baseapp/msg_service_router_test.go index 7417c3f77d..2238b523b1 100644 --- a/baseapp/msg_service_router_test.go +++ b/baseapp/msg_service_router_test.go @@ -4,12 +4,14 @@ import ( "os" "testing" - abci "github.com/line/ostracon/abci/types" - "github.com/line/ostracon/libs/log" - ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" + ocabci "github.com/line/ostracon/abci/types" + "github.com/line/ostracon/libs/log" + ocproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/client/tx" "github.com/line/lbm-sdk/simapp" @@ -78,7 +80,7 @@ func TestMsgService(t *testing.T) { app.MsgServiceRouter(), testdata.MsgServerImpl{}, ) - _ = app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) + _ = app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: 1}}) msg := testdata.MsgCreateDog{Dog: &testdata.Dog{Name: "Spot"}} txBuilder := encCfg.TxConfig.NewTxBuilder() diff --git a/baseapp/p2p.go b/baseapp/p2p.go index 3c49a76a87..69c0737db4 100644 --- a/baseapp/p2p.go +++ b/baseapp/p2p.go @@ -8,7 +8,7 @@ package baseapp // so this file mostly acts as confusing boilerplate. import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/baseapp/params.go b/baseapp/params.go index 061c6a17ed..968c960df8 100644 --- a/baseapp/params.go +++ b/baseapp/params.go @@ -4,9 +4,9 @@ import ( "errors" "fmt" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" - octypes "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmtypes "github.com/tendermint/tendermint/types" sdk "github.com/line/lbm-sdk/types" ) @@ -51,7 +51,7 @@ func ValidateBlockParams(i interface{}) error { // ValidateEvidenceParams defines a stateless validation on EvidenceParams. This // function is called whenever the parameters are updated or stored. func ValidateEvidenceParams(i interface{}) error { - v, ok := i.(ocproto.EvidenceParams) + v, ok := i.(tmproto.EvidenceParams) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } @@ -74,7 +74,7 @@ func ValidateEvidenceParams(i interface{}) error { // ValidateValidatorParams defines a stateless validation on ValidatorParams. This // function is called whenever the parameters are updated or stored. func ValidateValidatorParams(i interface{}) error { - v, ok := i.(ocproto.ValidatorParams) + v, ok := i.(tmproto.ValidatorParams) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } @@ -85,7 +85,7 @@ func ValidateValidatorParams(i interface{}) error { for _, pubKeyType := range v.PubKeyTypes { switch pubKeyType { - case octypes.ABCIPubKeyTypeBls12WithEd25519, octypes.ABCIPubKeyTypeEd25519, octypes.ABCIPubKeyTypeSecp256k1, octypes.ABCIPubKeyTypeBls12: + case tmtypes.ABCIPubKeyTypeEd25519, tmtypes.ABCIPubKeyTypeSecp256k1: continue default: return fmt.Errorf("not-allowed pubkey type: %s", pubKeyType) diff --git a/baseapp/params_test.go b/baseapp/params_test.go index 340be7097a..24105aea4f 100644 --- a/baseapp/params_test.go +++ b/baseapp/params_test.go @@ -3,9 +3,9 @@ package baseapp_test import ( "testing" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/line/lbm-sdk/baseapp" ) @@ -34,13 +34,13 @@ func TestValidateEvidenceParams(t *testing.T) { expectErr bool }{ {nil, true}, - {&ocproto.EvidenceParams{}, true}, - {ocproto.EvidenceParams{}, true}, - {ocproto.EvidenceParams{MaxAgeNumBlocks: -1, MaxAgeDuration: 18004000, MaxBytes: 5000000}, true}, - {ocproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: -1, MaxBytes: 5000000}, true}, - {ocproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: -1}, true}, - {ocproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: 5000000}, false}, - {ocproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: 0}, false}, + {&tmproto.EvidenceParams{}, true}, + {tmproto.EvidenceParams{}, true}, + {tmproto.EvidenceParams{MaxAgeNumBlocks: -1, MaxAgeDuration: 18004000, MaxBytes: 5000000}, true}, + {tmproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: -1, MaxBytes: 5000000}, true}, + {tmproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: -1}, true}, + {tmproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: 5000000}, false}, + {tmproto.EvidenceParams{MaxAgeNumBlocks: 360000, MaxAgeDuration: 18004000, MaxBytes: 0}, false}, } for _, tc := range testCases { @@ -54,11 +54,11 @@ func TestValidateValidatorParams(t *testing.T) { expectErr bool }{ {nil, true}, - {&ocproto.ValidatorParams{}, true}, - {ocproto.ValidatorParams{}, true}, - {ocproto.ValidatorParams{PubKeyTypes: []string{}}, true}, - {ocproto.ValidatorParams{PubKeyTypes: []string{"secp256k1"}}, false}, - {ocproto.ValidatorParams{PubKeyTypes: []string{"invalidPubKeyType"}}, true}, + {&tmproto.ValidatorParams{}, true}, + {tmproto.ValidatorParams{}, true}, + {tmproto.ValidatorParams{PubKeyTypes: []string{}}, true}, + {tmproto.ValidatorParams{PubKeyTypes: []string{"secp256k1"}}, false}, + {tmproto.ValidatorParams{PubKeyTypes: []string{"invalidPubKeyType"}}, true}, } for _, tc := range testCases { diff --git a/baseapp/queryrouter_test.go b/baseapp/queryrouter_test.go index fed5fa0c12..ddad0ecbea 100644 --- a/baseapp/queryrouter_test.go +++ b/baseapp/queryrouter_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/line/lbm-sdk/types" ) diff --git a/baseapp/reactor.go b/baseapp/reactor.go index 62f25d8f87..43d7e3d505 100644 --- a/baseapp/reactor.go +++ b/baseapp/reactor.go @@ -3,7 +3,7 @@ package baseapp import ( "sync" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -16,7 +16,7 @@ func (app *BaseApp) startReactors() { type RequestCheckTxAsync struct { txBytes []byte recheck bool - callback abci.CheckTxCallback + callback ocabci.CheckTxCallback prepare *sync.WaitGroup tx sdk.Tx err error @@ -52,7 +52,7 @@ func (app *BaseApp) checkTxAsync(req *RequestCheckTxAsync, waits []*sync.WaitGro return } - req.callback(abci.ResponseCheckTx{ + req.callback(ocabci.ResponseCheckTx{ GasWanted: int64(gInfo.GasWanted), // TODO: Should type accept unsigned ints? GasUsed: int64(gInfo.GasUsed), // TODO: Should type accept unsigned ints? }) diff --git a/baseapp/streaming.go b/baseapp/streaming.go index 2afc857279..f2c550561f 100644 --- a/baseapp/streaming.go +++ b/baseapp/streaming.go @@ -4,7 +4,9 @@ import ( "io" "sync" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" store "github.com/line/lbm-sdk/store/types" "github.com/line/lbm-sdk/types" @@ -13,7 +15,7 @@ import ( // ABCIListener interface used to hook into the ABCI message processing of the BaseApp type ABCIListener interface { // ListenBeginBlock updates the streaming service with the latest BeginBlock messages - ListenBeginBlock(ctx types.Context, req abci.RequestBeginBlock, res abci.ResponseBeginBlock) error + ListenBeginBlock(ctx types.Context, req ocabci.RequestBeginBlock, res abci.ResponseBeginBlock) error // ListenEndBlock updates the steaming service with the latest EndBlock messages ListenEndBlock(ctx types.Context, req abci.RequestEndBlock, res abci.ResponseEndBlock) error // ListenDeliverTx updates the steaming service with the latest DeliverTx messages diff --git a/client/flags/flags.go b/client/flags/flags.go index 33796ef7e5..884c3d5721 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -4,10 +4,10 @@ import ( "fmt" "strconv" - ostcli "github.com/line/ostracon/libs/cli" - "github.com/line/ostracon/privval" "github.com/spf13/cobra" + ostcli "github.com/line/ostracon/libs/cli" + "github.com/line/lbm-sdk/crypto/keyring" ) @@ -73,14 +73,12 @@ const ( FlagCountTotal = "count-total" FlagTimeoutHeight = "timeout-height" FlagKeyAlgorithm = "algo" - FlagPrivKeyType = "priv_key_type" FlagFeeAccount = "fee-account" FlagReverse = "reverse" // Tendermint logging flags - FlagLogLevel = "log_level" - FlagLogFormat = "log_format" - DefaultPrivKeyType = privval.PrivKeyTypeEd25519 + FlagLogLevel = "log_level" + FlagLogFormat = "log_format" ) // LineBreak can be included in a command list to provide a blank line @@ -117,8 +115,6 @@ func AddTxFlagsToCmd(cmd *cobra.Command) { cmd.Flags().String(FlagKeyringBackend, DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test|memory)") cmd.Flags().String(FlagSignMode, "", "Choose sign mode (direct|amino-json), this is an advanced feature") cmd.Flags().Uint64(FlagTimeoutHeight, 0, "Set a block timeout height to prevent the tx from being committed past a certain height") - cmd.Flags().String(FlagPrivKeyType, DefaultPrivKeyType, "specify validator's private key type (currently only ed25519 is supported).\n"+ - "This option affects the priv_key.type setting in priv_validator_key.json") cmd.Flags().String(FlagFeeAccount, "", "Fee account pays fees for the transaction instead of deducting from the signer") // --gas can accept integers and "auto" diff --git a/client/grpc/tmservice/block.go b/client/grpc/tmservice/block.go index e43d8b1b26..4170b85361 100644 --- a/client/grpc/tmservice/block.go +++ b/client/grpc/tmservice/block.go @@ -5,6 +5,7 @@ import ( ocproto "github.com/line/ostracon/proto/ostracon/types" ctypes "github.com/line/ostracon/rpc/core/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/line/lbm-sdk/client" ) @@ -39,14 +40,14 @@ func getBlockResultsByHeight(clientCtx client.Context, height *int64) (*ctypes.R return node.BlockResults(context.Background(), height) } -func GetProtoBlock(ctx context.Context, clientCtx client.Context, height *int64) (ocproto.BlockID, *ocproto.Block, error) { +func GetProtoBlock(ctx context.Context, clientCtx client.Context, height *int64) (tmproto.BlockID, *ocproto.Block, error) { block, err := getBlock(ctx, clientCtx, height) if err != nil { - return ocproto.BlockID{}, nil, err + return tmproto.BlockID{}, nil, err } protoBlock, err := block.Block.ToProto() if err != nil { - return ocproto.BlockID{}, nil, err + return tmproto.BlockID{}, nil, err } protoBlockID := block.BlockID.ToProto() diff --git a/client/grpc/tmservice/block_test.go b/client/grpc/tmservice/block_test.go index 1a36cca1b8..0f78f84d1c 100644 --- a/client/grpc/tmservice/block_test.go +++ b/client/grpc/tmservice/block_test.go @@ -1,6 +1,8 @@ package tmservice_test import ( + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/client/grpc/tmservice" @@ -14,7 +16,7 @@ func (s IntegrationTestSuite) TestGetProtoBlock() { height := int64(-1) blockID, block, err := tmservice.GetProtoBlock(ctx.Context(), val.ClientCtx, &height) - s.Require().Equal(ocproto.BlockID{}, blockID) + s.Require().Equal(tmproto.BlockID{}, blockID) s.Require().Nil(block) s.Require().Error(err) diff --git a/client/grpc/tmservice/query.pb.go b/client/grpc/tmservice/query.pb.go index 5a56210cf2..b73654f7a0 100644 --- a/client/grpc/tmservice/query.pb.go +++ b/client/grpc/tmservice/query.pb.go @@ -10,9 +10,11 @@ import ( proto "github.com/gogo/protobuf/proto" types "github.com/line/lbm-sdk/codec/types" query "github.com/line/lbm-sdk/types/query" - types2 "github.com/line/ostracon/abci/types" - p2p "github.com/line/ostracon/proto/ostracon/p2p" - types1 "github.com/line/ostracon/proto/ostracon/types" + _ "github.com/line/ostracon/abci/types" + types2 "github.com/line/ostracon/proto/ostracon/types" + types3 "github.com/tendermint/tendermint/abci/types" + p2p "github.com/tendermint/tendermint/proto/tendermint/p2p" + types1 "github.com/tendermint/tendermint/proto/tendermint/types" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -374,7 +376,7 @@ func (m *GetBlockByHeightRequest) GetHeight() int64 { // GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method. type GetBlockByHeightResponse struct { BlockId *types1.BlockID `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - Block *types1.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` + Block *types2.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` } func (m *GetBlockByHeightResponse) Reset() { *m = GetBlockByHeightResponse{} } @@ -417,7 +419,7 @@ func (m *GetBlockByHeightResponse) GetBlockId() *types1.BlockID { return nil } -func (m *GetBlockByHeightResponse) GetBlock() *types1.Block { +func (m *GetBlockByHeightResponse) GetBlock() *types2.Block { if m != nil { return m.Block } @@ -472,7 +474,7 @@ func (m *GetBlockByHashRequest) GetHash() []byte { // GetBlockByHashResponse is the response type for the Query/GetBlockByHash RPC method. type GetBlockByHashResponse struct { BlockId *types1.BlockID `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - Block *types1.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` + Block *types2.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` } func (m *GetBlockByHashResponse) Reset() { *m = GetBlockByHashResponse{} } @@ -515,7 +517,7 @@ func (m *GetBlockByHashResponse) GetBlockId() *types1.BlockID { return nil } -func (m *GetBlockByHashResponse) GetBlock() *types1.Block { +func (m *GetBlockByHashResponse) GetBlock() *types2.Block { if m != nil { return m.Block } @@ -570,9 +572,9 @@ func (m *GetBlockResultsByHeightRequest) GetHeight() int64 { // GetBlockResultsByHeightResponse is the response type for the Query/GetBlockResultsByHeight RPC method. type GetBlockResultsByHeightResponse struct { Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` - TxsResults []*types2.ResponseDeliverTx `protobuf:"bytes,2,rep,name=txs_results,json=txsResults,proto3" json:"txs_results,omitempty"` - ResBeginBlock *types2.ResponseBeginBlock `protobuf:"bytes,3,opt,name=res_begin_block,json=resBeginBlock,proto3" json:"res_begin_block,omitempty"` - ResEndBlock *types2.ResponseEndBlock `protobuf:"bytes,4,opt,name=res_end_block,json=resEndBlock,proto3" json:"res_end_block,omitempty"` + TxsResults []*types3.ResponseDeliverTx `protobuf:"bytes,2,rep,name=txs_results,json=txsResults,proto3" json:"txs_results,omitempty"` + ResBeginBlock *types3.ResponseBeginBlock `protobuf:"bytes,3,opt,name=res_begin_block,json=resBeginBlock,proto3" json:"res_begin_block,omitempty"` + ResEndBlock *types3.ResponseEndBlock `protobuf:"bytes,4,opt,name=res_end_block,json=resEndBlock,proto3" json:"res_end_block,omitempty"` } func (m *GetBlockResultsByHeightResponse) Reset() { *m = GetBlockResultsByHeightResponse{} } @@ -615,21 +617,21 @@ func (m *GetBlockResultsByHeightResponse) GetHeight() int64 { return 0 } -func (m *GetBlockResultsByHeightResponse) GetTxsResults() []*types2.ResponseDeliverTx { +func (m *GetBlockResultsByHeightResponse) GetTxsResults() []*types3.ResponseDeliverTx { if m != nil { return m.TxsResults } return nil } -func (m *GetBlockResultsByHeightResponse) GetResBeginBlock() *types2.ResponseBeginBlock { +func (m *GetBlockResultsByHeightResponse) GetResBeginBlock() *types3.ResponseBeginBlock { if m != nil { return m.ResBeginBlock } return nil } -func (m *GetBlockResultsByHeightResponse) GetResEndBlock() *types2.ResponseEndBlock { +func (m *GetBlockResultsByHeightResponse) GetResEndBlock() *types3.ResponseEndBlock { if m != nil { return m.ResEndBlock } @@ -676,7 +678,7 @@ var xxx_messageInfo_GetLatestBlockRequest proto.InternalMessageInfo // GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method. type GetLatestBlockResponse struct { BlockId *types1.BlockID `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - Block *types1.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` + Block *types2.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` } func (m *GetLatestBlockResponse) Reset() { *m = GetLatestBlockResponse{} } @@ -719,7 +721,7 @@ func (m *GetLatestBlockResponse) GetBlockId() *types1.BlockID { return nil } -func (m *GetLatestBlockResponse) GetBlock() *types1.Block { +func (m *GetLatestBlockResponse) GetBlock() *types2.Block { if m != nil { return m.Block } @@ -1089,88 +1091,89 @@ func init() { func init() { proto.RegisterFile("lbm/base/ostracon/v1/query.proto", fileDescriptor_9cad75434dcac7b6) } var fileDescriptor_9cad75434dcac7b6 = []byte{ - // 1282 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0xbf, 0x6f, 0xdb, 0xc6, - 0x17, 0x0f, 0xa5, 0xc4, 0xb2, 0x4f, 0xc9, 0xd7, 0xf6, 0xd9, 0x89, 0x65, 0xc1, 0x96, 0x6d, 0x7e, - 0xeb, 0xd8, 0xb5, 0x2c, 0x12, 0x96, 0x53, 0xa0, 0x40, 0x87, 0x22, 0x8e, 0x5b, 0xc5, 0x68, 0x1b, - 0x18, 0x74, 0xd0, 0xa1, 0x0b, 0x41, 0x8a, 0x67, 0x8a, 0x30, 0xc5, 0xbb, 0xf0, 0x4e, 0xaa, 0x05, - 0x23, 0x40, 0xd1, 0xa1, 0x4b, 0x3b, 0x14, 0xe8, 0xd0, 0x8c, 0x1d, 0x3a, 0x76, 0xcc, 0xd6, 0xfe, - 0x01, 0x1d, 0x8a, 0x22, 0x40, 0x97, 0x8e, 0x85, 0xdd, 0x3f, 0xa4, 0xe0, 0xdd, 0x51, 0x22, 0x6d, - 0x4a, 0x56, 0x3a, 0x04, 0xe8, 0xc6, 0x7b, 0x3f, 0x3f, 0xef, 0x73, 0x77, 0xef, 0x1d, 0xc1, 0xaa, - 0x6f, 0xb7, 0x75, 0xdb, 0xa2, 0x48, 0xc7, 0x94, 0x85, 0x56, 0x13, 0x07, 0x7a, 0x77, 0x47, 0x7f, - 0xd6, 0x41, 0x61, 0x4f, 0x23, 0x21, 0x66, 0x18, 0xce, 0xfb, 0x76, 0x5b, 0x8b, 0x2c, 0xb4, 0xd8, - 0x42, 0xeb, 0xee, 0x94, 0x17, 0x5d, 0x8c, 0x5d, 0x1f, 0xe9, 0xdc, 0xc6, 0xee, 0x1c, 0xeb, 0x56, - 0x20, 0x1d, 0xca, 0x4b, 0x52, 0x65, 0x11, 0x4f, 0xb7, 0x82, 0x00, 0x33, 0x8b, 0x79, 0x38, 0xa0, - 0x52, 0x5b, 0xea, 0xe7, 0x21, 0x75, 0xa2, 0xb3, 0x1e, 0x41, 0xb1, 0xa6, 0xdc, 0xd7, 0x70, 0xa9, - 0x6e, 0xfb, 0xb8, 0x79, 0x32, 0x44, 0x97, 0xf4, 0x5b, 0xec, 0xeb, 0x2c, 0xbb, 0xe9, 0xa5, 0x54, - 0x5b, 0x4d, 0x4c, 0xdb, 0x98, 0x8a, 0x02, 0x79, 0x51, 0x7a, 0x77, 0xc7, 0x46, 0xcc, 0xda, 0xd1, - 0x89, 0xe5, 0x7a, 0x01, 0x47, 0x26, 0x6c, 0xd5, 0x2f, 0x14, 0x50, 0x69, 0x20, 0xf6, 0xa9, 0xe5, - 0x7b, 0x8e, 0xc5, 0x70, 0x78, 0x84, 0xd8, 0x5e, 0xef, 0x31, 0xf2, 0xdc, 0x16, 0x33, 0xd0, 0xb3, - 0x0e, 0xa2, 0x0c, 0xde, 0x03, 0x13, 0x2d, 0x2e, 0x28, 0x29, 0xab, 0xca, 0x66, 0xde, 0x90, 0x2b, - 0xf8, 0x21, 0x00, 0x83, 0x70, 0xa5, 0xdc, 0xaa, 0xb2, 0x59, 0xac, 0xdf, 0xd7, 0x44, 0x6e, 0x41, - 0x9d, 0x20, 0x54, 0xe6, 0xd6, 0x0e, 0x2d, 0x17, 0xc9, 0x98, 0x46, 0xc2, 0x53, 0xfd, 0x5d, 0x01, - 0x2b, 0x43, 0x21, 0x50, 0x82, 0x03, 0x8a, 0xe0, 0x1a, 0xb8, 0xcd, 0x89, 0x31, 0x53, 0x48, 0x8a, - 0x5c, 0x26, 0x4c, 0xe1, 0xfb, 0x00, 0x74, 0xe3, 0x10, 0xb4, 0x94, 0x5b, 0xcd, 0x6f, 0x16, 0xeb, - 0x2b, 0x5a, 0xd6, 0x36, 0x6a, 0xfd, 0x54, 0x46, 0xc2, 0x05, 0x36, 0x52, 0xf5, 0xe4, 0x79, 0x3d, - 0x1b, 0xd7, 0xd6, 0x23, 0x00, 0xa6, 0x0a, 0x3a, 0x06, 0x4b, 0x0d, 0xc4, 0x3e, 0xb6, 0x18, 0xa2, - 0xa9, 0xaa, 0x62, 0x42, 0xd3, 0xc4, 0x29, 0xff, 0x9a, 0xb8, 0xdf, 0x14, 0xb0, 0x3c, 0x24, 0xd1, - 0x7f, 0x91, 0xb6, 0x1f, 0x15, 0x30, 0xd5, 0x4f, 0x01, 0x4b, 0xa0, 0x60, 0x39, 0x4e, 0x88, 0x28, - 0xe5, 0xa8, 0xa7, 0x8c, 0x78, 0x09, 0x6b, 0xa0, 0x40, 0x3a, 0xb6, 0x79, 0x82, 0x7a, 0xf2, 0xd0, - 0xcd, 0x6b, 0xe2, 0xee, 0x69, 0xf1, 0xb5, 0xd4, 0x1e, 0x06, 0x3d, 0x63, 0x82, 0x74, 0xec, 0x8f, - 0x50, 0x2f, 0xe2, 0xa0, 0x8b, 0x99, 0x17, 0xb8, 0x26, 0xc1, 0x9f, 0xa3, 0x90, 0x23, 0xcc, 0x1b, - 0x45, 0x21, 0x3b, 0x8c, 0x44, 0xb0, 0x0a, 0x66, 0x49, 0x88, 0x09, 0xa6, 0x28, 0x34, 0x49, 0xe8, - 0xe1, 0xd0, 0x63, 0xbd, 0xd2, 0x4d, 0x6e, 0x37, 0x13, 0x2b, 0x0e, 0xa5, 0x5c, 0xdd, 0x01, 0x0b, - 0x0d, 0xc4, 0xf6, 0x22, 0x0a, 0xc7, 0xbc, 0x29, 0xea, 0x19, 0x28, 0x5d, 0x75, 0x91, 0x5b, 0x54, - 0x07, 0x93, 0x62, 0x8b, 0x3c, 0x47, 0x1e, 0x85, 0x85, 0x01, 0xe9, 0xe2, 0x56, 0x73, 0xc7, 0x83, - 0x7d, 0xa3, 0xc0, 0x0d, 0x0f, 0x1c, 0x58, 0x05, 0xb7, 0xf8, 0xa7, 0xac, 0xff, 0x6e, 0xa6, 0x83, - 0x21, 0x6c, 0xd4, 0x2a, 0xb8, 0x9b, 0x48, 0x6e, 0xd1, 0x56, 0x8c, 0x16, 0x82, 0x9b, 0x2d, 0x8b, - 0xb6, 0x78, 0xd6, 0xdb, 0x06, 0xff, 0x56, 0x7b, 0xe0, 0xde, 0x65, 0xe3, 0x37, 0x85, 0xf3, 0x5d, - 0xde, 0x88, 0x84, 0x08, 0xd1, 0x8e, 0xcf, 0xe8, 0xb8, 0xf4, 0x7e, 0x93, 0xe3, 0x0d, 0x24, 0xdb, - 0x55, 0xc2, 0x1f, 0xd6, 0xc4, 0x1e, 0x82, 0x22, 0x3b, 0xa5, 0x66, 0x28, 0xdc, 0xe4, 0xf9, 0x5f, - 0x1d, 0x00, 0x8d, 0x9a, 0xab, 0x16, 0x47, 0xd9, 0x47, 0xbe, 0xd7, 0x45, 0xe1, 0xd3, 0x53, 0x03, - 0xb0, 0x53, 0x2a, 0x53, 0xc1, 0x03, 0x30, 0x1d, 0x22, 0x6a, 0xda, 0xc8, 0xf5, 0x02, 0x53, 0xd4, - 0x2b, 0x6e, 0xc1, 0xda, 0x90, 0x30, 0x7b, 0x91, 0xa5, 0x40, 0x7b, 0x27, 0x44, 0x74, 0xb0, 0x84, - 0x8f, 0x40, 0x24, 0x30, 0x51, 0xe0, 0xc8, 0x40, 0x37, 0x79, 0xa0, 0x95, 0x21, 0x81, 0x3e, 0x08, - 0x1c, 0x11, 0xa6, 0x18, 0x22, 0x1a, 0x2f, 0xd4, 0x05, 0xbe, 0xe1, 0xa2, 0x2b, 0x48, 0x4e, 0x38, - 0x7f, 0x72, 0x73, 0x53, 0x8a, 0x37, 0xb5, 0xb9, 0x73, 0x60, 0xb6, 0x81, 0xd8, 0x51, 0x2f, 0x68, - 0x7a, 0x81, 0x1b, 0xe3, 0xd1, 0x00, 0x4c, 0x0a, 0x25, 0x96, 0x12, 0x28, 0x50, 0x21, 0xe2, 0x50, - 0x26, 0x8d, 0x78, 0xa9, 0xce, 0x73, 0xfb, 0x27, 0xd8, 0x41, 0x07, 0xc1, 0x31, 0x8e, 0xa3, 0xbc, - 0x54, 0xc0, 0x5c, 0x4a, 0x2c, 0xe3, 0x1c, 0x80, 0x59, 0x07, 0x1d, 0x5b, 0x1d, 0x9f, 0x99, 0x01, - 0x76, 0x90, 0xe9, 0x05, 0xc7, 0x58, 0x16, 0xb7, 0x3c, 0xc0, 0x4a, 0xea, 0x44, 0xdb, 0x17, 0x66, - 0xfd, 0x08, 0xd3, 0x4e, 0x5a, 0x00, 0x0d, 0x30, 0x67, 0x11, 0xe2, 0x7b, 0x4d, 0xde, 0xa8, 0xcc, - 0x2e, 0x0a, 0xe9, 0x60, 0xe4, 0xad, 0x0d, 0x69, 0x96, 0xc2, 0x88, 0x07, 0x84, 0x09, 0x6f, 0x29, - 0x57, 0x5f, 0xe4, 0x40, 0x31, 0x61, 0x13, 0xdd, 0xc6, 0xc0, 0x6a, 0x23, 0xd9, 0xec, 0xf8, 0x37, - 0x5c, 0x04, 0x93, 0x16, 0x21, 0x26, 0x97, 0xe7, 0x64, 0x13, 0x24, 0xe4, 0x49, 0xa4, 0x2a, 0x81, - 0x42, 0x0c, 0x23, 0x2f, 0x34, 0x72, 0x09, 0x97, 0x01, 0x70, 0x3d, 0x66, 0x36, 0x71, 0xbb, 0xed, - 0x31, 0x7e, 0x80, 0xa6, 0x8c, 0x29, 0xd7, 0x63, 0x8f, 0xb8, 0x20, 0x52, 0xdb, 0x1d, 0xcf, 0x77, - 0x4c, 0x66, 0xb9, 0xb4, 0x74, 0x4b, 0xa8, 0xb9, 0xe4, 0xa9, 0xe5, 0x52, 0xee, 0x8d, 0xfb, 0x15, - 0x4e, 0x48, 0x6f, 0x2c, 0x91, 0xc2, 0xf7, 0x62, 0x6f, 0x07, 0x11, 0x5a, 0x2a, 0xf0, 0xdb, 0xb2, - 0x94, 0x4d, 0xc0, 0x27, 0xd8, 0xe9, 0xf8, 0x48, 0xc6, 0xde, 0x47, 0x84, 0xc2, 0xfb, 0x60, 0xda, - 0xb7, 0xdb, 0x26, 0x75, 0x4e, 0xfa, 0x09, 0x26, 0x79, 0x82, 0x3b, 0xbe, 0xdd, 0x3e, 0x72, 0x4e, - 0x62, 0x6a, 0x1e, 0x83, 0x09, 0xe1, 0x1c, 0x91, 0x42, 0x2c, 0xd6, 0x8a, 0x49, 0x89, 0xbe, 0x93, - 0x95, 0xe7, 0xd2, 0x95, 0xcf, 0x80, 0x3c, 0xed, 0xb4, 0x25, 0x1f, 0xd1, 0x67, 0xfd, 0x27, 0x00, - 0x0a, 0x47, 0x28, 0xec, 0x7a, 0x4d, 0x04, 0xbf, 0x56, 0x40, 0x31, 0x71, 0x4e, 0xe0, 0x66, 0x36, - 0xec, 0xab, 0x27, 0xac, 0xfc, 0xf6, 0x18, 0x96, 0xe2, 0xd0, 0xa9, 0x1b, 0x5f, 0xfe, 0xf1, 0xf7, - 0x77, 0xb9, 0x35, 0xb8, 0xa2, 0x67, 0xbe, 0x30, 0xfb, 0x07, 0x11, 0x7e, 0xa5, 0x00, 0x30, 0x38, - 0xfc, 0x70, 0x63, 0x68, 0x8a, 0xf4, 0x9d, 0x29, 0x6f, 0x5e, 0x6f, 0x28, 0xa1, 0xac, 0x73, 0x28, - 0x2b, 0x70, 0x39, 0x1b, 0x8a, 0xbc, 0x54, 0xf0, 0x85, 0x02, 0xfe, 0x97, 0xee, 0x0a, 0xb0, 0x3a, - 0x34, 0xc7, 0xd5, 0xa6, 0x52, 0xde, 0x1e, 0xcf, 0x58, 0x82, 0xaa, 0x72, 0x50, 0xeb, 0xf0, 0xff, - 0xd9, 0xa0, 0x78, 0xb3, 0xa0, 0xba, 0xcf, 0x3d, 0xe1, 0x0f, 0x0a, 0x98, 0xb9, 0x3c, 0x37, 0x61, - 0x6d, 0x68, 0xbe, 0xac, 0x91, 0x5c, 0xd6, 0xc6, 0x35, 0x97, 0x00, 0x6b, 0x1c, 0xe0, 0x06, 0x5c, - 0x1f, 0x09, 0xf0, 0x4c, 0x4c, 0x8f, 0xe7, 0xf0, 0x7b, 0xc1, 0x5e, 0x62, 0x60, 0x8e, 0x60, 0xef, - 0xea, 0x0c, 0x1e, 0xc1, 0x5e, 0xc6, 0x0c, 0x56, 0xb7, 0x38, 0xb8, 0xb7, 0xa0, 0x3a, 0x02, 0x9c, - 0x7e, 0x16, 0x0d, 0xf2, 0xe7, 0xf0, 0x67, 0x65, 0xf0, 0x4e, 0xb9, 0x34, 0x14, 0xe1, 0x83, 0xd1, - 0x59, 0xb3, 0xc7, 0x6f, 0xf9, 0x9d, 0xd7, 0xf4, 0x92, 0xa0, 0x77, 0x39, 0xe8, 0x1a, 0xac, 0x8e, - 0x00, 0x2d, 0xc7, 0xef, 0x80, 0xd7, 0x97, 0x4a, 0x62, 0x88, 0x25, 0x9f, 0xb6, 0xb0, 0x7e, 0xcd, - 0x79, 0xcb, 0x78, 0x70, 0x97, 0x77, 0x5f, 0xcb, 0x47, 0xe2, 0xae, 0x73, 0xdc, 0xdb, 0x70, 0x2b, - 0x1b, 0xf7, 0xe0, 0x05, 0x8c, 0x58, 0xff, 0xc4, 0xfe, 0x22, 0x48, 0xcf, 0xfa, 0x95, 0x19, 0x41, - 0xfa, 0x88, 0x9f, 0xaf, 0x11, 0xa4, 0x8f, 0xfa, 0x5f, 0x52, 0x1f, 0x70, 0xf0, 0x1a, 0xdc, 0x1e, - 0x07, 0x7c, 0xcc, 0xfa, 0x5e, 0xe3, 0xd7, 0xf3, 0x8a, 0xf2, 0xea, 0xbc, 0xa2, 0xfc, 0x75, 0x5e, - 0x51, 0xbe, 0xbd, 0xa8, 0xdc, 0x78, 0x75, 0x51, 0xb9, 0xf1, 0xe7, 0x45, 0xe5, 0xc6, 0x67, 0x35, - 0xd7, 0x63, 0xad, 0x8e, 0xad, 0x35, 0x71, 0x5b, 0xf7, 0xbd, 0x00, 0x45, 0x61, 0x6b, 0xd4, 0x39, - 0xd1, 0x9b, 0xbe, 0x87, 0x02, 0xa6, 0xbb, 0x21, 0x69, 0xea, 0xac, 0x4d, 0x45, 0xaf, 0xb5, 0x27, - 0xf8, 0x4b, 0x7c, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x92, 0xfc, 0x43, 0x21, 0x68, 0x0f, - 0x00, 0x00, + // 1303 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xef, 0xda, 0x6d, 0x9c, 0x8c, 0x5b, 0xda, 0x4e, 0xff, 0x39, 0x26, 0x75, 0x92, 0x2d, 0x6d, + 0x42, 0x5d, 0xef, 0x2a, 0x6e, 0x91, 0x90, 0x38, 0x20, 0xd2, 0x14, 0xb7, 0x2a, 0x54, 0xd5, 0xa6, + 0xe2, 0xc0, 0x65, 0xb5, 0xeb, 0x9d, 0xac, 0x47, 0xd9, 0xdd, 0x99, 0xee, 0x8c, 0x4d, 0xad, 0x2a, + 0x12, 0xe2, 0xc0, 0x85, 0x0b, 0x82, 0x03, 0x3d, 0x72, 0xe0, 0xc8, 0x11, 0x71, 0x81, 0x0f, 0xc0, + 0x01, 0xa1, 0x4a, 0x5c, 0x38, 0xa2, 0x84, 0x0f, 0x82, 0x76, 0x66, 0xd6, 0xde, 0x4d, 0xd6, 0x8e, + 0xcb, 0xa1, 0x12, 0x17, 0x6b, 0xe7, 0xfd, 0xfd, 0xbd, 0xdf, 0xcc, 0xbc, 0x37, 0x06, 0x2b, 0x81, + 0x1b, 0x9a, 0xae, 0xc3, 0x90, 0x49, 0x18, 0x8f, 0x9d, 0x2e, 0x89, 0xcc, 0xc1, 0x86, 0xf9, 0xb4, + 0x8f, 0xe2, 0xa1, 0x41, 0x63, 0xc2, 0x09, 0xbc, 0x18, 0xb8, 0xa1, 0x91, 0x58, 0x18, 0xa9, 0x85, + 0x31, 0xd8, 0xa8, 0x2f, 0xfa, 0x84, 0xf8, 0x01, 0x32, 0x85, 0x8d, 0xdb, 0xdf, 0x31, 0x9d, 0x48, + 0x39, 0xd4, 0x97, 0x94, 0xca, 0xa1, 0xd8, 0x74, 0xa2, 0x88, 0x70, 0x87, 0x63, 0x12, 0x31, 0xa5, + 0xad, 0x8f, 0xf2, 0xf0, 0x21, 0x45, 0xcc, 0x74, 0x03, 0xd2, 0xdd, 0x9d, 0xa0, 0x13, 0xbf, 0x4a, + 0xb7, 0x38, 0xd2, 0x39, 0x6e, 0x17, 0xe7, 0x54, 0x37, 0xbb, 0x84, 0x85, 0x84, 0xc9, 0x32, 0x04, + 0x74, 0x73, 0xb0, 0xe1, 0x22, 0xee, 0x6c, 0x98, 0xd4, 0xf1, 0x71, 0x24, 0xf2, 0xa7, 0x29, 0x38, + 0x8a, 0x3c, 0x14, 0x87, 0x38, 0xe2, 0x26, 0x6d, 0xd3, 0x5c, 0x9c, 0xa5, 0x8c, 0xee, 0x28, 0x80, + 0x37, 0x33, 0xda, 0xc3, 0x10, 0xf4, 0xcf, 0x35, 0xd0, 0xe8, 0x20, 0xfe, 0x89, 0x13, 0x60, 0xcf, + 0xe1, 0x24, 0xde, 0x46, 0x7c, 0x73, 0x78, 0x1f, 0x61, 0xbf, 0xc7, 0x2d, 0xf4, 0xb4, 0x8f, 0x18, + 0x87, 0x97, 0xc1, 0x5c, 0x4f, 0x08, 0x6a, 0xda, 0x8a, 0xb6, 0x5e, 0xb6, 0xd4, 0x0a, 0x7e, 0x08, + 0xc0, 0x18, 0x65, 0xad, 0xb4, 0xa2, 0xad, 0x57, 0xdb, 0x37, 0x0c, 0x59, 0x92, 0xe4, 0x5d, 0xee, + 0x86, 0x2a, 0xc9, 0x78, 0xec, 0xf8, 0x48, 0xc5, 0xb4, 0x32, 0x9e, 0xfa, 0x1f, 0x1a, 0x58, 0x9e, + 0x08, 0x81, 0x51, 0x12, 0x31, 0x04, 0x57, 0xc1, 0x69, 0xc1, 0xb7, 0x9d, 0x43, 0x52, 0x15, 0x32, + 0x69, 0x0a, 0xdf, 0x07, 0x60, 0x90, 0x86, 0x60, 0xb5, 0xd2, 0x4a, 0x79, 0xbd, 0xda, 0x5e, 0x36, + 0x8a, 0xce, 0x80, 0x31, 0x4a, 0x65, 0x65, 0x5c, 0x60, 0x27, 0x57, 0x4f, 0x59, 0xd4, 0xb3, 0x76, + 0x6c, 0x3d, 0x12, 0x60, 0xae, 0xa0, 0x1d, 0xb0, 0xd4, 0x41, 0xfc, 0x23, 0x87, 0x23, 0x96, 0xab, + 0x2a, 0x25, 0x34, 0x4f, 0x9c, 0xf6, 0x9f, 0x89, 0xfb, 0x5d, 0x03, 0x57, 0x27, 0x24, 0xfa, 0x3f, + 0xd2, 0xf6, 0x83, 0x06, 0x16, 0x46, 0x29, 0x60, 0x0d, 0x54, 0x1c, 0xcf, 0x8b, 0x11, 0x63, 0x02, + 0xf5, 0x82, 0x95, 0x2e, 0x61, 0x0b, 0x54, 0x68, 0xdf, 0xb5, 0x77, 0xd1, 0x50, 0x1d, 0xba, 0x8b, + 0x86, 0xbc, 0xb8, 0x46, 0x7a, 0xa7, 0x8d, 0x0f, 0xa2, 0xa1, 0x35, 0x47, 0xfb, 0xee, 0x43, 0x34, + 0x4c, 0x38, 0x18, 0x10, 0x8e, 0x23, 0xdf, 0xa6, 0xe4, 0x33, 0x14, 0x0b, 0x84, 0x65, 0xab, 0x2a, + 0x65, 0x8f, 0x13, 0x11, 0x6c, 0x82, 0xf3, 0x34, 0x26, 0x94, 0x30, 0x14, 0xdb, 0x34, 0xc6, 0x24, + 0xc6, 0x7c, 0x58, 0x3b, 0x29, 0xec, 0xce, 0xa5, 0x8a, 0xc7, 0x4a, 0xae, 0x6f, 0x80, 0x2b, 0x1d, + 0xc4, 0x37, 0x13, 0x0a, 0x67, 0xbc, 0x29, 0xfa, 0x1e, 0xa8, 0x1d, 0x75, 0x51, 0x5b, 0x74, 0x07, + 0xcc, 0xcb, 0x2d, 0xc2, 0x9e, 0x3a, 0x0a, 0x8b, 0xc6, 0xf8, 0xc2, 0x1a, 0xf2, 0xae, 0x0a, 0xd7, + 0x07, 0x5b, 0x56, 0x45, 0x98, 0x3e, 0xf0, 0x60, 0x13, 0x9c, 0x12, 0x9f, 0x8a, 0x81, 0x4b, 0xe3, + 0x7d, 0xca, 0x38, 0x58, 0xd2, 0x46, 0x6f, 0x82, 0x4b, 0x99, 0xf4, 0x0e, 0xeb, 0xa5, 0x78, 0x21, + 0x38, 0xd9, 0x73, 0x58, 0x4f, 0xe4, 0x3d, 0x6d, 0x89, 0x6f, 0xfd, 0x39, 0xb8, 0x7c, 0xd8, 0xf8, + 0xf5, 0x21, 0x7d, 0x57, 0x34, 0x23, 0x29, 0x42, 0xac, 0x1f, 0x70, 0x36, 0x2b, 0xc5, 0xdf, 0x94, + 0x44, 0x13, 0x29, 0x76, 0x55, 0x05, 0x4c, 0x6a, 0x64, 0x77, 0x41, 0x95, 0x3f, 0x63, 0x76, 0x2c, + 0xdd, 0xd4, 0x1d, 0xd0, 0xb3, 0xb5, 0x25, 0x6d, 0xd3, 0x48, 0xe3, 0x6c, 0xa1, 0x00, 0x0f, 0x50, + 0xfc, 0xe4, 0x99, 0x05, 0xf8, 0x33, 0xa6, 0x92, 0xc1, 0x87, 0xe0, 0x6c, 0x8c, 0x98, 0xed, 0x22, + 0x1f, 0x47, 0xb6, 0xac, 0x58, 0xde, 0x85, 0x6b, 0x13, 0x03, 0x6d, 0x26, 0xb6, 0x12, 0xf1, 0x99, + 0x18, 0xb1, 0xf1, 0x12, 0xde, 0x03, 0x89, 0xc0, 0x46, 0x91, 0xa7, 0x42, 0x9d, 0x14, 0xa1, 0x56, + 0x27, 0x86, 0xba, 0x17, 0x79, 0x32, 0x50, 0x35, 0x46, 0x2c, 0x5d, 0xe8, 0x57, 0xc4, 0xc6, 0xcb, + 0xfe, 0xa0, 0x98, 0x11, 0x2c, 0xaa, 0x4d, 0xce, 0x29, 0x5e, 0xdf, 0x26, 0x5f, 0x00, 0xe7, 0x3b, + 0x88, 0x6f, 0x0f, 0xa3, 0x2e, 0x8e, 0xfc, 0x14, 0x91, 0x01, 0x60, 0x56, 0xa8, 0xd0, 0xd4, 0x40, + 0x85, 0x49, 0x91, 0x00, 0x33, 0x6f, 0xa5, 0x4b, 0xfd, 0xa2, 0xb0, 0x7f, 0x44, 0x3c, 0xf4, 0x20, + 0xda, 0x21, 0x69, 0x94, 0x9f, 0x35, 0x70, 0x21, 0x27, 0x56, 0x71, 0x1e, 0x82, 0xf3, 0x1e, 0xda, + 0x71, 0xfa, 0x01, 0xb7, 0x23, 0xe2, 0x21, 0x1b, 0x47, 0x3b, 0x44, 0x95, 0xb7, 0x9c, 0x2d, 0x8f, + 0xb6, 0xa9, 0xb1, 0x25, 0x0d, 0x47, 0x31, 0xce, 0x7a, 0x79, 0x01, 0xb4, 0xc0, 0x05, 0x87, 0xd2, + 0x00, 0x77, 0x45, 0xdb, 0xb2, 0x07, 0x28, 0x66, 0xe3, 0x01, 0xb8, 0x3a, 0xa1, 0x75, 0x4a, 0x23, + 0x11, 0x10, 0x66, 0xbc, 0x95, 0x5c, 0x7f, 0x51, 0x02, 0xd5, 0x8c, 0x4d, 0x72, 0x33, 0x23, 0x27, + 0x44, 0xaa, 0xf5, 0x89, 0x6f, 0xb8, 0x08, 0xe6, 0x1d, 0x4a, 0x6d, 0x21, 0x2f, 0xa9, 0x96, 0x48, + 0xe9, 0xa3, 0x44, 0x55, 0x03, 0x95, 0x14, 0x46, 0x59, 0x6a, 0xd4, 0x12, 0x5e, 0x05, 0xc0, 0xc7, + 0xdc, 0xee, 0x92, 0x30, 0xc4, 0x5c, 0x1c, 0xa3, 0x05, 0x6b, 0xc1, 0xc7, 0xfc, 0xae, 0x10, 0x24, + 0x6a, 0xb7, 0x8f, 0x03, 0xcf, 0xe6, 0x8e, 0xcf, 0x6a, 0xa7, 0xa4, 0x5a, 0x48, 0x9e, 0x38, 0x3e, + 0x13, 0xde, 0x64, 0x54, 0xe1, 0x9c, 0xf2, 0x26, 0x0a, 0x29, 0x7c, 0x2f, 0xf5, 0xf6, 0x10, 0x65, + 0xb5, 0x8a, 0xb8, 0x37, 0x4b, 0xc5, 0x04, 0x7c, 0x4c, 0xbc, 0x7e, 0x80, 0x54, 0xec, 0x2d, 0x44, + 0x19, 0xbc, 0x01, 0xce, 0x06, 0x6e, 0x68, 0x33, 0x6f, 0x77, 0x94, 0x60, 0x5e, 0x24, 0x38, 0x13, + 0xb8, 0xe1, 0xb6, 0xb7, 0x9b, 0x52, 0x73, 0x1f, 0xcc, 0x49, 0xe7, 0x84, 0x14, 0xea, 0xf0, 0x5e, + 0x4a, 0x4a, 0xf2, 0x9d, 0xad, 0xbc, 0x94, 0xaf, 0xfc, 0x1c, 0x28, 0xb3, 0x7e, 0xa8, 0xf8, 0x48, + 0x3e, 0xdb, 0x3f, 0x02, 0x50, 0xd9, 0x46, 0xf1, 0x00, 0x77, 0x11, 0xfc, 0x4a, 0x03, 0xd5, 0xcc, + 0x49, 0x81, 0xeb, 0xc5, 0xb0, 0x8f, 0x9e, 0xb1, 0xfa, 0xdb, 0x33, 0x58, 0xca, 0x63, 0xa7, 0xaf, + 0x7d, 0xf1, 0xe7, 0x3f, 0xdf, 0x96, 0x56, 0xe1, 0xb2, 0x59, 0xf8, 0x58, 0x1d, 0x1d, 0x45, 0xf8, + 0xa5, 0x06, 0xc0, 0xf8, 0xf8, 0xc3, 0xb5, 0x89, 0x29, 0xf2, 0xb7, 0xa6, 0xbe, 0x7e, 0xbc, 0xa1, + 0x82, 0x72, 0x5d, 0x40, 0x59, 0x86, 0x57, 0x8b, 0xa1, 0xa8, 0x6b, 0x05, 0x5f, 0x68, 0xe0, 0x8d, + 0x7c, 0x67, 0x80, 0xcd, 0x89, 0x39, 0x8e, 0x36, 0x96, 0xfa, 0xad, 0xd9, 0x8c, 0x15, 0xa8, 0xa6, + 0x00, 0x75, 0x1d, 0x5e, 0x2b, 0x06, 0x25, 0xda, 0x05, 0x33, 0x03, 0xe1, 0x09, 0xbf, 0xd7, 0xc0, + 0xb9, 0xc3, 0x53, 0x14, 0xb6, 0x26, 0xe6, 0x2b, 0x1a, 0xd0, 0x75, 0x63, 0x56, 0x73, 0x05, 0xb0, + 0x25, 0x00, 0xae, 0xc1, 0xeb, 0x53, 0x01, 0x3e, 0x97, 0x73, 0x64, 0x0f, 0x7e, 0x27, 0xd9, 0xcb, + 0x0c, 0xcf, 0x29, 0xec, 0x1d, 0x9d, 0xc7, 0x53, 0xd8, 0x2b, 0x98, 0xc7, 0xfa, 0x4d, 0x01, 0xee, + 0x2d, 0xa8, 0x4f, 0x01, 0x67, 0x3e, 0x4f, 0x86, 0xfa, 0x1e, 0xfc, 0x45, 0x1b, 0xbf, 0x5a, 0x0e, + 0x8d, 0x47, 0x78, 0x67, 0x7a, 0xd6, 0xe2, 0x41, 0x5c, 0x7f, 0xe7, 0x15, 0xbd, 0x14, 0xe8, 0xdb, + 0x02, 0x74, 0x0b, 0x36, 0xa7, 0x80, 0x56, 0x83, 0x78, 0xcc, 0xeb, 0x4f, 0x5a, 0x66, 0x90, 0x65, + 0x1f, 0xba, 0xb0, 0x7d, 0xcc, 0x79, 0x2b, 0x78, 0x7e, 0xd7, 0x6f, 0xbf, 0x92, 0x8f, 0xc2, 0xdd, + 0x16, 0xb8, 0x6f, 0xc1, 0x9b, 0xc5, 0xb8, 0xc7, 0xef, 0x61, 0xc4, 0x47, 0x27, 0xf6, 0x57, 0x49, + 0x7a, 0xd1, 0x1f, 0x9b, 0x29, 0xa4, 0x4f, 0xf9, 0x2b, 0x36, 0x85, 0xf4, 0x69, 0xff, 0x9e, 0xf4, + 0x3b, 0x02, 0xbc, 0x01, 0x6f, 0xcd, 0x02, 0x3e, 0x65, 0x7d, 0xb3, 0xf3, 0xdb, 0x7e, 0x43, 0x7b, + 0xb9, 0xdf, 0xd0, 0xfe, 0xde, 0x6f, 0x68, 0x5f, 0x1f, 0x34, 0x4e, 0xbc, 0x3c, 0x68, 0x9c, 0xf8, + 0xeb, 0xa0, 0x71, 0xe2, 0xd3, 0x96, 0x8f, 0x79, 0xaf, 0xef, 0x1a, 0x5d, 0x12, 0x9a, 0x01, 0x8e, + 0x50, 0x12, 0xb6, 0xc5, 0xbc, 0x5d, 0xb3, 0x1b, 0x60, 0x14, 0x71, 0xd3, 0x8f, 0x69, 0xd7, 0xe4, + 0x21, 0x93, 0xbd, 0xd6, 0x9d, 0x13, 0xef, 0xf2, 0xdb, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5b, + 0x2d, 0x03, 0x76, 0xb3, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3464,7 +3467,7 @@ func (m *GetBlockByHeightResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Block == nil { - m.Block = &types1.Block{} + m.Block = &types2.Block{} } if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3670,7 +3673,7 @@ func (m *GetBlockByHashResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Block == nil { - m.Block = &types1.Block{} + m.Block = &types2.Block{} } if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3843,7 +3846,7 @@ func (m *GetBlockResultsByHeightResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TxsResults = append(m.TxsResults, &types2.ResponseDeliverTx{}) + m.TxsResults = append(m.TxsResults, &types3.ResponseDeliverTx{}) if err := m.TxsResults[len(m.TxsResults)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -3878,7 +3881,7 @@ func (m *GetBlockResultsByHeightResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ResBeginBlock == nil { - m.ResBeginBlock = &types2.ResponseBeginBlock{} + m.ResBeginBlock = &types3.ResponseBeginBlock{} } if err := m.ResBeginBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3914,7 +3917,7 @@ func (m *GetBlockResultsByHeightResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ResEndBlock == nil { - m.ResEndBlock = &types2.ResponseEndBlock{} + m.ResEndBlock = &types3.ResponseEndBlock{} } if err := m.ResEndBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -4086,7 +4089,7 @@ func (m *GetLatestBlockResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Block == nil { - m.Block = &types1.Block{} + m.Block = &types2.Block{} } if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err diff --git a/client/grpc/tmservice/service.go b/client/grpc/tmservice/service.go index b3090d42a3..3ec7e2a282 100644 --- a/client/grpc/tmservice/service.go +++ b/client/grpc/tmservice/service.go @@ -6,10 +6,11 @@ import ( gogogrpc "github.com/gogo/protobuf/grpc" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + abci "github.com/tendermint/tendermint/abci/types" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/rpc" codectypes "github.com/line/lbm-sdk/codec/types" diff --git a/client/grpc/tmservice/service_test.go b/client/grpc/tmservice/service_test.go index 7ba5ddcfdc..8873f19ade 100644 --- a/client/grpc/tmservice/service_test.go +++ b/client/grpc/tmservice/service_test.go @@ -117,6 +117,11 @@ func (s IntegrationTestSuite) TestQueryBlockByHash() { s.Require().NoError(err) var blockInfoRes tmservice.GetBlockByHashResponse s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &blockInfoRes)) + blockId := blockInfoRes.GetBlockId() + s.Require().Equal(blkhash, bytes.HexBytes(blockId.Hash)) + + block := blockInfoRes.GetBlock() + s.Require().Equal(val.ClientCtx.ChainID, block.Header.ChainID) } func (s IntegrationTestSuite) TestQueryBlockByHeight() { @@ -128,6 +133,9 @@ func (s IntegrationTestSuite) TestQueryBlockByHeight() { s.Require().NoError(err) var blockInfoRes tmservice.GetBlockByHeightResponse s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(restRes, &blockInfoRes)) + + block := blockInfoRes.GetBlock() + s.Require().Equal(int64(1), block.Header.Height) } func (s IntegrationTestSuite) TestQueryBlockResultsByHeight() { @@ -139,6 +147,15 @@ func (s IntegrationTestSuite) TestQueryBlockResultsByHeight() { s.Require().NoError(err) var blockResultsRes tmservice.GetBlockResultsByHeightResponse s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(restRes, &blockResultsRes)) + + txResult := blockResultsRes.GetTxsResults() + s.Require().Equal(0, len(txResult)) + + beginBlock := blockResultsRes.GetResBeginBlock() + s.Require().Equal(11, len(beginBlock.Events)) // coinbase event (6) + transfer mintModule to feeCollectorName(5) + + endBlock := blockResultsRes.GetResEndBlock() + s.Require().Equal(0, len(endBlock.Events)) } func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { diff --git a/client/grpc_query.go b/client/grpc_query.go index 3171ce341b..4119535eb3 100644 --- a/client/grpc_query.go +++ b/client/grpc_query.go @@ -7,7 +7,7 @@ import ( "strconv" gogogrpc "github.com/gogo/protobuf/grpc" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "google.golang.org/grpc" "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" diff --git a/client/query.go b/client/query.go index 4c8e8efc9e..a38ad7b716 100644 --- a/client/query.go +++ b/client/query.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - abci "github.com/line/ostracon/abci/types" ostbytes "github.com/line/ostracon/libs/bytes" rpcclient "github.com/line/ostracon/rpc/client" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/store/rootmulti" sdk "github.com/line/lbm-sdk/types" diff --git a/client/query_test.go b/client/query_test.go index df17963e9b..d99e2ae15a 100644 --- a/client/query_test.go +++ b/client/query_test.go @@ -6,7 +6,7 @@ package client_test import ( "fmt" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" banktypes "github.com/line/lbm-sdk/x/bank/types" ) diff --git a/crypto/codec/oc.go b/crypto/codec/oc.go index b34b23161f..e6907f94da 100644 --- a/crypto/codec/oc.go +++ b/crypto/codec/oc.go @@ -1,9 +1,10 @@ package codec import ( + tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" + occrypto "github.com/line/ostracon/crypto" "github.com/line/ostracon/crypto/encoding" - ocprotocrypto "github.com/line/ostracon/proto/ostracon/crypto" "github.com/line/lbm-sdk/crypto/keys/ed25519" "github.com/line/lbm-sdk/crypto/keys/secp256k1" @@ -11,14 +12,14 @@ import ( sdkerrors "github.com/line/lbm-sdk/types/errors" ) -// FromOcProtoPublicKey converts a OC's ocprotocrypto.PublicKey into our own PubKey. -func FromOcProtoPublicKey(protoPk ocprotocrypto.PublicKey) (cryptotypes.PubKey, error) { +// FromOcProtoPublicKey converts a OC's tmprotocrypto.PublicKey into our own PubKey. +func FromOcProtoPublicKey(protoPk tmprotocrypto.PublicKey) (cryptotypes.PubKey, error) { switch protoPk := protoPk.Sum.(type) { - case *ocprotocrypto.PublicKey_Ed25519: + case *tmprotocrypto.PublicKey_Ed25519: return &ed25519.PubKey{ Key: protoPk.Ed25519, }, nil - case *ocprotocrypto.PublicKey_Secp256K1: + case *tmprotocrypto.PublicKey_Secp256K1: return &secp256k1.PubKey{ Key: protoPk.Secp256K1, }, nil @@ -27,23 +28,23 @@ func FromOcProtoPublicKey(protoPk ocprotocrypto.PublicKey) (cryptotypes.PubKey, } } -// ToOcProtoPublicKey converts our own PubKey to OC's ocprotocrypto.PublicKey. -func ToOcProtoPublicKey(pk cryptotypes.PubKey) (ocprotocrypto.PublicKey, error) { +// ToOcProtoPublicKey converts our own PubKey to OC's tmprotocrypto.PublicKey. +func ToOcProtoPublicKey(pk cryptotypes.PubKey) (tmprotocrypto.PublicKey, error) { switch pk := pk.(type) { case *ed25519.PubKey: - return ocprotocrypto.PublicKey{ - Sum: &ocprotocrypto.PublicKey_Ed25519{ + return tmprotocrypto.PublicKey{ + Sum: &tmprotocrypto.PublicKey_Ed25519{ Ed25519: pk.Key, }, }, nil case *secp256k1.PubKey: - return ocprotocrypto.PublicKey{ - Sum: &ocprotocrypto.PublicKey_Secp256K1{ + return tmprotocrypto.PublicKey{ + Sum: &tmprotocrypto.PublicKey_Secp256K1{ Secp256K1: pk.Key, }, }, nil default: - return ocprotocrypto.PublicKey{}, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "cannot convert %v to Ostracon public key", pk) + return tmprotocrypto.PublicKey{}, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "cannot convert %v to Ostracon public key", pk) } } diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 8cbb04d823..65941ea069 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -1629,7 +1629,7 @@ Result is the union of ResponseFormat and ResponseCheckTx. | ----- | ---- | ----- | ----------- | | `data` | [bytes](#bytes) | | Data is any data returned from message or handler execution. It MUST be length prefixed in order to separate data from multiple message executions. | | `log` | [string](#string) | | Log contains the log information from message or handler execution. | -| `events` | [ostracon.abci.Event](#ostracon.abci.Event) | repeated | Events contains a slice of Event objects that were emitted during message or handler execution. | +| `events` | [tendermint.abci.Event](#tendermint.abci.Event) | repeated | Events contains a slice of Event objects that were emitted during message or handler execution. | @@ -1727,7 +1727,7 @@ tags are stringified and the log is JSON decoded. | `gas_used` | [int64](#int64) | | Amount of gas consumed by transaction. | | `tx` | [google.protobuf.Any](#google.protobuf.Any) | | The request transaction bytes. | | `timestamp` | [string](#string) | | Time of the previous block. For heights > 1, it's the weighted median of the timestamps of the valid votes in the block.LastCommit. For height == 1, it's genesis time. | -| `events` | [ostracon.abci.Event](#ostracon.abci.Event) | repeated | Events defines all the events emitted by processing a transaction. Note, these events include those emitted by processing all the messages and those emitted from the ante handler. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. +| `events` | [tendermint.abci.Event](#tendermint.abci.Event) | repeated | Events defines all the events emitted by processing a transaction. Note, these events include those emitted by processing all the messages and those emitted from the ante handler. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 | | `index` | [uint32](#uint32) | | The transaction index within block | @@ -8079,7 +8079,7 @@ Since: cosmos-sdk 0.45.2 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `txs` | [Tx](#cosmos.tx.v1beta1.Tx) | repeated | txs are the transactions in the block. | -| `block_id` | [ostracon.types.BlockID](#ostracon.types.BlockID) | | | +| `block_id` | [tendermint.types.BlockID](#tendermint.types.BlockID) | | | | `block` | [ostracon.types.Block](#ostracon.types.Block) | | | | `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines a pagination for the response. | @@ -8730,7 +8730,7 @@ GetBlockByHashResponse is the response type for the Query/GetBlockByHash RPC met | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `block_id` | [ostracon.types.BlockID](#ostracon.types.BlockID) | | | +| `block_id` | [tendermint.types.BlockID](#tendermint.types.BlockID) | | | | `block` | [ostracon.types.Block](#ostracon.types.Block) | | | @@ -8761,7 +8761,7 @@ GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `block_id` | [ostracon.types.BlockID](#ostracon.types.BlockID) | | | +| `block_id` | [tendermint.types.BlockID](#tendermint.types.BlockID) | | | | `block` | [ostracon.types.Block](#ostracon.types.Block) | | | @@ -8793,9 +8793,9 @@ GetBlockResultsByHeightResponse is the response type for the Query/GetBlockResul | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `height` | [int64](#int64) | | | -| `txs_results` | [ostracon.abci.ResponseDeliverTx](#ostracon.abci.ResponseDeliverTx) | repeated | | -| `res_begin_block` | [ostracon.abci.ResponseBeginBlock](#ostracon.abci.ResponseBeginBlock) | | | -| `res_end_block` | [ostracon.abci.ResponseEndBlock](#ostracon.abci.ResponseEndBlock) | | | +| `txs_results` | [tendermint.abci.ResponseDeliverTx](#tendermint.abci.ResponseDeliverTx) | repeated | | +| `res_begin_block` | [tendermint.abci.ResponseBeginBlock](#tendermint.abci.ResponseBeginBlock) | | | +| `res_end_block` | [tendermint.abci.ResponseEndBlock](#tendermint.abci.ResponseEndBlock) | | | @@ -8820,7 +8820,7 @@ GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC met | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `block_id` | [ostracon.types.BlockID](#ostracon.types.BlockID) | | | +| `block_id` | [tendermint.types.BlockID](#tendermint.types.BlockID) | | | | `block` | [ostracon.types.Block](#ostracon.types.Block) | | | @@ -8878,7 +8878,7 @@ GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `default_node_info` | [ostracon.p2p.DefaultNodeInfo](#ostracon.p2p.DefaultNodeInfo) | | | +| `default_node_info` | [tendermint.p2p.DefaultNodeInfo](#tendermint.p2p.DefaultNodeInfo) | | | | `application_version` | [VersionInfo](#lbm.base.ostracon.v1.VersionInfo) | | | @@ -9246,12 +9246,15 @@ Params defines the parameters for the collection module. Deprecated: use TokenClass TokenType defines the information of token type. +It represents a NFTClass whose class_id is token_type. + +Note: There is no TokenType instance for FTClass. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type defines the unique identifier of the token type. | +| `token_type` | [string](#string) | | token type defines the unique identifier of the token type. the format of the value is identical to that of class_id. | | `name` | [string](#string) | | name defines the human-readable name of the token type. | | `meta` | [string](#string) | | meta is a brief description of the token type. | @@ -9424,7 +9427,7 @@ Since: 0.46.0 (finschia) | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | | `operator` | [string](#string) | | address which triggered the create. | -| `token_type` | [string](#string) | | token type associated with the token class. | +| `token_type` | [string](#string) | | token type associated with the token class. refer to TokenType for the definition. | | `name` | [string](#string) | | name of the token class. | | `meta` | [string](#string) | | metadata of the token class. | @@ -9567,7 +9570,7 @@ Since: 0.46.0 (finschia) | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | | `operator` | [string](#string) | | address which triggered the modify. | -| `token_type` | [string](#string) | | token type associated with the token class. | +| `token_type` | [string](#string) | | token type associated with the token class. refer to TokenType for the definition. | | `changes` | [Attribute](#lbm.collection.v1.Attribute) | repeated | changes of the attributes applied. possible attribute keys are same as those of MsgModify. | | `type_name` | [string](#string) | | type name of the token class. | @@ -10344,7 +10347,7 @@ QueryNFTBurntRequest is the request type for the Query/NFTBurnt RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type associated with the token type. | +| `token_type` | [string](#string) | | token type associated with the token type. refer to TokenType for the definition. | @@ -10375,7 +10378,7 @@ QueryNFTMintedRequest is the request type for the Query/NFTMinted RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type associated with the token type. | +| `token_type` | [string](#string) | | token type associated with the token type. refer to TokenType for the definition. | @@ -10406,7 +10409,7 @@ QueryNFTSupplyRequest is the request type for the Query/NFTSupply RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type associated with the token type. | +| `token_type` | [string](#string) | | token type associated with the token type. refer to TokenType for the definition. | @@ -10565,7 +10568,7 @@ QueryTokenTypeRequest is the request type for the Query/TokenType RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type associated with the token type. | +| `token_type` | [string](#string) | | token type associated with the token type. refer to TokenType for the definition. | @@ -10660,7 +10663,7 @@ QueryTokensWithTokenTypeRequest is the request type for the Query/TokensWithToke | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | -| `token_type` | [string](#string) | | token type associated with the token type. | +| `token_type` | [string](#string) | | token type associated with the token type. refer to TokenType for the definition. | | `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | @@ -10740,7 +10743,7 @@ MintNFTParam defines a parameter for minting nft. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `token_type` | [string](#string) | | token type or class id of the nft. Note: it cannot start with zero. | +| `token_type` | [string](#string) | | token type or class id of the nft. Note: it cannot start with zero. refer to TokenType for the definition. | | `name` | [string](#string) | | name defines the human-readable name of the nft (mandatory). Note: it has an app-specific limit in length. | | `meta` | [string](#string) | | meta is a brief description of the nft. Note: it has an app-specific limit in length. | @@ -11019,7 +11022,7 @@ MsgIssueNFTResponse is the Msg/IssueNFT response type. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `token_type` | [string](#string) | | id of the new token type. | +| `token_type` | [string](#string) | | id of the new token type. refer to TokenType for the definition. | @@ -11101,7 +11104,7 @@ MsgModify is the Msg/Modify request type. | ----- | ---- | ----- | ----------- | | `contract_id` | [string](#string) | | contract id associated with the contract. | | `owner` | [string](#string) | | the address of the grantee which must have modify permission. | -| `token_type` | [string](#string) | | token type of the token. | +| `token_type` | [string](#string) | | token type of the token. refer to TokenType for the definition. | | `token_index` | [string](#string) | | token index of the token. if index is empty, it would modify the corresponding token type. if index is not empty, it would modify the corresponding nft. Note: if token type is of FTs, the index cannot be empty. | | `changes` | [Attribute](#lbm.collection.v1.Attribute) | repeated | changes to apply. possible attribute keys on modifying collection: name, base_img_uri, meta. possible attribute keys on modifying token type and token: name, meta. | diff --git a/go.mod b/go.mod index 8133749cb6..6a33439fca 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 github.com/improbable-eng/grpc-web v0.15.0 github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b - github.com/line/ostracon v1.0.7 + github.com/line/ostracon v1.0.9-0.20230201073738-9d17c239e729 github.com/magiconair/properties v1.8.7 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.17 @@ -36,7 +36,7 @@ require ( github.com/prometheus/common v0.39.0 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 - github.com/rs/zerolog v1.28.0 + github.com/rs/zerolog v1.29.0 github.com/spf13/cast v1.5.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 @@ -45,11 +45,12 @@ require ( github.com/tendermint/btcd v0.1.1 github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 github.com/tendermint/go-amino v0.16.0 + github.com/tendermint/tendermint v0.34.20 github.com/tendermint/tm-db v0.6.7 golang.org/x/crypto v0.5.0 golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef - google.golang.org/grpc v1.52.0 + google.golang.org/grpc v1.52.3 google.golang.org/protobuf v1.28.1 gopkg.in/yaml.v2 v2.4.0 ) @@ -87,7 +88,6 @@ require ( github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/herumi/bls-eth-go-binary v0.0.0-20220509081320-2d8ab06de53c // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -110,13 +110,12 @@ require ( github.com/r2ishiguro/vrf v0.0.0-20180716233122-192de52975eb // indirect github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/rs/cors v1.8.2 // indirect + github.com/rs/cors v1.8.3 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca // indirect - github.com/tendermint/tendermint v0.34.20 // indirect github.com/zondax/hid v0.9.0 // indirect go.etcd.io/bbolt v1.3.6 // indirect golang.org/x/net v0.5.0 // indirect @@ -124,6 +123,7 @@ require ( golang.org/x/term v0.4.0 // indirect golang.org/x/text v0.6.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect ) diff --git a/go.sum b/go.sum index 452fa1bf65..a0a51a5d15 100644 --- a/go.sum +++ b/go.sum @@ -73,6 +73,7 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg6 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= @@ -614,8 +615,6 @@ github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpT github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= -github.com/herumi/bls-eth-go-binary v0.0.0-20220509081320-2d8ab06de53c h1:ppGSVyhAFh8VAGyDuNeLEGMYRJR5iDI92QgDNrMIqK0= -github.com/herumi/bls-eth-go-binary v0.0.0-20220509081320-2d8ab06de53c/go.mod h1:luAnRm3OsMQeokhGzpYmc0ZKwawY7o87PUEP11Z7r7U= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= @@ -726,8 +725,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/line/ostracon v1.0.7 h1:8vh/gsM6Sf6z2s38og8YufIhrWN2TwXpm4I3DqKEVyI= -github.com/line/ostracon v1.0.7/go.mod h1:gmEKYdaMaDAl5xJ8sJJo0s6OvzBSZwM01nWRCGA5oDY= +github.com/line/ostracon v1.0.9-0.20230201073738-9d17c239e729 h1:B4eLgVa0s2EUyNhqqt+2pTxqFu9eMJV+71GqfjpbQrI= +github.com/line/ostracon v1.0.9-0.20230201073738-9d17c239e729/go.mod h1:9fujojmFzkxkzj3PgRedq4oKCrWg6ASuj5x9VXaVSIg= github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= @@ -776,6 +775,7 @@ github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKju github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= @@ -1020,13 +1020,14 @@ github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4 github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= -github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= -github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1332,6 +1333,7 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1687,6 +1689,7 @@ golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= 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= @@ -1878,6 +1881,8 @@ gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= diff --git a/proto/cosmos/base/abci/v1beta1/abci.proto b/proto/cosmos/base/abci/v1beta1/abci.proto index eb4553d3e7..d63e40f672 100644 --- a/proto/cosmos/base/abci/v1beta1/abci.proto +++ b/proto/cosmos/base/abci/v1beta1/abci.proto @@ -3,6 +3,7 @@ package cosmos.base.abci.v1beta1; import "gogoproto/gogo.proto"; import "ostracon/abci/types.proto"; +import "tendermint/abci/types.proto"; import "google/protobuf/any.proto"; option go_package = "github.com/line/lbm-sdk/types"; @@ -45,7 +46,7 @@ message TxResponse { // additional metadata, emitted only by processing the messages. // // Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - repeated ostracon.abci.Event events = 13 [(gogoproto.nullable) = false]; + repeated tendermint.abci.Event events = 13 [(gogoproto.nullable) = false]; // The transaction index within block uint32 index = 14; } @@ -100,7 +101,7 @@ message Result { // Events contains a slice of Event objects that were emitted during message // or handler execution. - repeated ostracon.abci.Event events = 3 [(gogoproto.nullable) = false]; + repeated tendermint.abci.Event events = 3 [(gogoproto.nullable) = false]; } // SimulationResponse defines the response generated when a transaction is diff --git a/proto/cosmos/tx/v1beta1/service.proto b/proto/cosmos/tx/v1beta1/service.proto index 6ed3205342..3b30a28eba 100644 --- a/proto/cosmos/tx/v1beta1/service.proto +++ b/proto/cosmos/tx/v1beta1/service.proto @@ -8,6 +8,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "ostracon/types/block.proto"; import "ostracon/types/types.proto"; +import "tendermint/types/types.proto"; option (gogoproto.goproto_registration) = true; option go_package = "github.com/line/lbm-sdk/types/tx"; @@ -158,7 +159,7 @@ message GetBlockWithTxsRequest { message GetBlockWithTxsResponse { // txs are the transactions in the block. repeated cosmos.tx.v1beta1.Tx txs = 1; - .ostracon.types.BlockID block_id = 2; + .tendermint.types.BlockID block_id = 2; .ostracon.types.Block block = 3; // pagination defines a pagination for the response. cosmos.base.query.v1beta1.PageResponse pagination = 4; diff --git a/proto/lbm/base/ostracon/v1/query.proto b/proto/lbm/base/ostracon/v1/query.proto index 72a43d30c7..2d22625a38 100644 --- a/proto/lbm/base/ostracon/v1/query.proto +++ b/proto/lbm/base/ostracon/v1/query.proto @@ -3,11 +3,13 @@ package lbm.base.ostracon.v1; import "google/protobuf/any.proto"; import "google/api/annotations.proto"; -import "ostracon/p2p/types.proto"; import "ostracon/types/block.proto"; import "ostracon/types/types.proto"; import "ostracon/abci/types.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; +import "tendermint/p2p/types.proto"; +import "tendermint/types/types.proto"; +import "tendermint/abci/types.proto"; option go_package = "github.com/line/lbm-sdk/client/grpc/tmservice"; @@ -92,8 +94,8 @@ message GetBlockByHeightRequest { // GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method. message GetBlockByHeightResponse { - .ostracon.types.BlockID block_id = 1; - .ostracon.types.Block block = 2; + .tendermint.types.BlockID block_id = 1; + .ostracon.types.Block block = 2; } // GetBlockByHashRequest is the request type for the Query/GetBlockByHash RPC method. @@ -103,8 +105,8 @@ message GetBlockByHashRequest { // GetBlockByHashResponse is the response type for the Query/GetBlockByHash RPC method. message GetBlockByHashResponse { - .ostracon.types.BlockID block_id = 1; - .ostracon.types.Block block = 2; + .tendermint.types.BlockID block_id = 1; + .ostracon.types.Block block = 2; } // GetBlockResultsByHeightRequest is the request type for the Query/GetBlockResultsByHeight RPC method. @@ -114,10 +116,10 @@ message GetBlockResultsByHeightRequest { // GetBlockResultsByHeightResponse is the response type for the Query/GetBlockResultsByHeight RPC method. message GetBlockResultsByHeightResponse { - int64 height = 1; - repeated .ostracon.abci.ResponseDeliverTx txs_results = 2; - .ostracon.abci.ResponseBeginBlock res_begin_block = 3; - .ostracon.abci.ResponseEndBlock res_end_block = 4; + int64 height = 1; + repeated .tendermint.abci.ResponseDeliverTx txs_results = 2; + .tendermint.abci.ResponseBeginBlock res_begin_block = 3; + .tendermint.abci.ResponseEndBlock res_end_block = 4; } // GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC method. @@ -125,8 +127,8 @@ message GetLatestBlockRequest {} // GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method. message GetLatestBlockResponse { - .ostracon.types.BlockID block_id = 1; - .ostracon.types.Block block = 2; + .tendermint.types.BlockID block_id = 1; + .ostracon.types.Block block = 2; } // GetSyncingRequest is the request type for the Query/GetSyncing RPC method. @@ -142,8 +144,8 @@ message GetNodeInfoRequest {} // GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC method. message GetNodeInfoResponse { - .ostracon.p2p.DefaultNodeInfo default_node_info = 1; - VersionInfo application_version = 2; + .tendermint.p2p.DefaultNodeInfo default_node_info = 1; + VersionInfo application_version = 2; } // VersionInfo is the type for the GetNodeInfoResponse message. diff --git a/server/export.go b/server/export.go index 51b143b40b..39f95f2e5e 100644 --- a/server/export.go +++ b/server/export.go @@ -7,9 +7,9 @@ import ( "os" ostjson "github.com/line/ostracon/libs/json" - ocproto "github.com/line/ostracon/proto/ostracon/types" octypes "github.com/line/ostracon/types" "github.com/spf13/cobra" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/server/types" @@ -80,18 +80,18 @@ func ExportCmd(appExporter types.AppExporter, defaultNodeHome string) *cobra.Com doc.AppState = exported.AppState doc.Validators = exported.Validators doc.InitialHeight = exported.Height - doc.ConsensusParams = &ocproto.ConsensusParams{ - Block: ocproto.BlockParams{ + doc.ConsensusParams = &tmproto.ConsensusParams{ + Block: tmproto.BlockParams{ MaxBytes: exported.ConsensusParams.Block.MaxBytes, MaxGas: exported.ConsensusParams.Block.MaxGas, TimeIotaMs: doc.ConsensusParams.Block.TimeIotaMs, }, - Evidence: ocproto.EvidenceParams{ + Evidence: tmproto.EvidenceParams{ MaxAgeNumBlocks: exported.ConsensusParams.Evidence.MaxAgeNumBlocks, MaxAgeDuration: exported.ConsensusParams.Evidence.MaxAgeDuration, MaxBytes: exported.ConsensusParams.Evidence.MaxBytes, }, - Validator: ocproto.ValidatorParams{ + Validator: tmproto.ValidatorParams{ PubKeyTypes: exported.ConsensusParams.Validator.PubKeyTypes, }, } diff --git a/server/export_test.go b/server/export_test.go index aedd621486..ae48a79ad4 100644 --- a/server/export_test.go +++ b/server/export_test.go @@ -13,11 +13,12 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ostjson "github.com/line/ostracon/libs/json" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" octypes "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/client" @@ -100,7 +101,7 @@ func TestExportCmd_Height(t *testing.T) { // Fast forward to block `tc.fastForward`. for i := int64(2); i <= tc.fastForward; i++ { - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) app.Commit() } diff --git a/server/mock/app.go b/server/mock/app.go index 3c80994e52..3029fc9289 100644 --- a/server/mock/app.go +++ b/server/mock/app.go @@ -7,9 +7,10 @@ import ( "fmt" "path/filepath" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" bam "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/codec" @@ -20,7 +21,7 @@ import ( // NewApp creates a simple mock kvstore app for testing. It should work // similar to a real app. Make sure rootDir is empty before running the test, // in order to guarantee consistent results -func NewApp(rootDir string, logger log.Logger) (abci.Application, error) { +func NewApp(rootDir string, logger log.Logger) (ocabci.Application, error) { db, err := sdk.NewLevelDB("mock", filepath.Join(rootDir, "data")) if err != nil { return nil, err diff --git a/server/mock/app_test.go b/server/mock/app_test.go index e5f7eeb7db..e32e8fdc80 100644 --- a/server/mock/app_test.go +++ b/server/mock/app_test.go @@ -3,10 +3,12 @@ package mock import ( "testing" - abci "github.com/line/ostracon/abci/types" + "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/ostracon/types" - "github.com/stretchr/testify/require" ) // TestInitApp makes sure we can initialize this thing without an error @@ -60,7 +62,7 @@ func TestDeliverTx(t *testing.T) { AppHash: []byte("apphash"), Height: 1, } - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) dres := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) require.Equal(t, uint32(0), dres.Code, dres.Log) app.EndBlock(abci.RequestEndBlock{}) diff --git a/server/mock/helpers.go b/server/mock/helpers.go index 3d1209ce00..df6d3f6d23 100644 --- a/server/mock/helpers.go +++ b/server/mock/helpers.go @@ -4,13 +4,13 @@ import ( "fmt" "os" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ) // SetupApp returns an application as well as a clean-up function // to be used to quickly setup a test case with an app -func SetupApp() (abci.Application, func(), error) { +func SetupApp() (ocabci.Application, func(), error) { logger := log.NewOCLogger(log.NewSyncWriter(os.Stdout)). With("module", "mock") rootDir, err := os.MkdirTemp("", "mock-sdk") diff --git a/server/oc_cmds_test.go b/server/oc_cmds_test.go index 1ea4bfc2c2..8fffd5a2db 100644 --- a/server/oc_cmds_test.go +++ b/server/oc_cmds_test.go @@ -142,18 +142,13 @@ func initFilesWithConfig(config *cfg.Config) error { // private validator privValKeyFile := config.PrivValidatorKeyFile() privValStateFile := config.PrivValidatorStateFile() - privKeyType := config.PrivValidatorKeyType() var pv *privval.FilePV if tmos.FileExists(privValKeyFile) { pv = privval.LoadFilePV(privValKeyFile, privValStateFile) logger.Info("Found private validator", "keyFile", privValKeyFile, "stateFile", privValStateFile) } else { - var err error - pv, err = privval.GenFilePV(privValKeyFile, privValStateFile, privKeyType) - if err != nil { - return err - } + pv = privval.GenFilePV(privValKeyFile, privValStateFile) if pv != nil { pv.Save() } @@ -180,7 +175,6 @@ func initFilesWithConfig(config *cfg.Config) error { ChainID: fmt.Sprintf("test-chain-%v", tmrand.Str(6)), GenesisTime: tmtime.Now(), ConsensusParams: types.DefaultConsensusParams(), - VoterParams: types.DefaultVoterParams(), } pubKey, err := pv.GetPubKey() if err != nil { diff --git a/server/rosetta/client_online.go b/server/rosetta/client_online.go index b1fb37e642..4e297e8597 100644 --- a/server/rosetta/client_online.go +++ b/server/rosetta/client_online.go @@ -15,9 +15,9 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/metadata" - abcitypes "github.com/line/ostracon/abci/types" ocrpc "github.com/line/ostracon/rpc/client" "github.com/line/ostracon/rpc/client/http" + abci "github.com/tendermint/tendermint/abci/types" crgerrs "github.com/line/lbm-sdk/server/rosetta/lib/errors" crgtypes "github.com/line/lbm-sdk/server/rosetta/lib/types" @@ -369,7 +369,7 @@ func (c *Client) PostTx(txBytes []byte) (*rosettatypes.TransactionIdentifier, ma return nil, nil, crgerrs.WrapError(crgerrs.ErrUnknown, err.Error()) } // check if tx was broadcast successfully - if res.Code != abcitypes.CodeTypeOK { + if res.Code != abci.CodeTypeOK { return nil, nil, crgerrs.WrapError( crgerrs.ErrUnknown, fmt.Sprintf("transaction broadcast failure: (%d) %s ", res.Code, res.Log), diff --git a/server/rosetta/converter.go b/server/rosetta/converter.go index 694fa73b69..84b6ec98d9 100644 --- a/server/rosetta/converter.go +++ b/server/rosetta/converter.go @@ -9,7 +9,8 @@ import ( "github.com/btcsuite/btcd/btcec" rosettatypes "github.com/coinbase/rosetta-sdk-go/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + "github.com/line/ostracon/crypto" ostcoretypes "github.com/line/ostracon/rpc/core/types" octypes "github.com/line/ostracon/types" diff --git a/server/rosetta/converter_test.go b/server/rosetta/converter_test.go index b1957b1908..64b48607dd 100644 --- a/server/rosetta/converter_test.go +++ b/server/rosetta/converter_test.go @@ -12,7 +12,7 @@ import ( rosettatypes "github.com/coinbase/rosetta-sdk-go/types" "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/server/start.go b/server/start.go index 641d508196..48be5f4b87 100644 --- a/server/start.go +++ b/server/start.go @@ -304,10 +304,7 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App } else { ctx.Logger.Info("starting node with ABCI Ostracon in-process") - pv, err2 := pvm.LoadOrGenFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile(), cfg.PrivKeyType) - if err2 != nil { - return err2 - } + pv := pvm.LoadOrGenFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) ocNode, err = node.NewNode( cfg, diff --git a/server/types/app.go b/server/types/app.go index 3f6eecb4a7..1b5c894545 100644 --- a/server/types/app.go +++ b/server/types/app.go @@ -9,9 +9,10 @@ import ( "github.com/spf13/cobra" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" octypes "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/server/api" @@ -39,7 +40,7 @@ type ( // The interface defines the necessary contracts to be implemented in order // to fully bootstrap and start an application. Application interface { - abci.Application + ocabci.Application RegisterAPIRoutes(*api.Server, config.APIConfig) diff --git a/simapp/app.go b/simapp/app.go index 0813f09620..786b99e652 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -11,10 +11,11 @@ import ( "github.com/rakyll/statik/fs" "github.com/spf13/cast" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ostos "github.com/line/ostracon/libs/os" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/baseapp" @@ -522,7 +523,7 @@ func NewSimApp( func (app *SimApp) Name() string { return app.BaseApp.Name() } // BeginBlocker application updates every begin block -func (app *SimApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { +func (app *SimApp) BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock) abci.ResponseBeginBlock { return app.mm.BeginBlock(ctx, req) } diff --git a/simapp/app_test.go b/simapp/app_test.go index 3fbe568a83..4ef87ca02b 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -8,9 +8,9 @@ import ( "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/baseapp" diff --git a/simapp/sim_test.go b/simapp/sim_test.go index a0a25d5185..b599171b6c 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -9,9 +9,9 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/baseapp" diff --git a/simapp/simd/cmd/root_test.go b/simapp/simd/cmd/root_test.go index d417f89e69..f3876962c1 100644 --- a/simapp/simd/cmd/root_test.go +++ b/simapp/simd/cmd/root_test.go @@ -8,9 +8,9 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" octypes "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/server" diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index 9322878f5a..d4665c33cf 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -13,17 +13,18 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" + "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + dbm "github.com/tendermint/tm-db" + + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" octypes "github.com/line/ostracon/types" - "github.com/stretchr/testify/require" - dbm "github.com/tendermint/tm-db" bam "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/client" - codectypes "github.com/line/lbm-sdk/codec/types" - cryptocodec "github.com/line/lbm-sdk/crypto/codec" "github.com/line/lbm-sdk/crypto/keys/ed25519" cryptotypes "github.com/line/lbm-sdk/crypto/types" "github.com/line/lbm-sdk/simapp/helpers" @@ -33,7 +34,6 @@ import ( authtypes "github.com/line/lbm-sdk/x/auth/types" banktypes "github.com/line/lbm-sdk/x/bank/types" minttypes "github.com/line/lbm-sdk/x/mint/types" - stakingtypes "github.com/line/lbm-sdk/x/staking/types" ) // DefaultConsensusParams defines the default Tendermint consensus params used in @@ -43,12 +43,12 @@ var DefaultConsensusParams = &abci.ConsensusParams{ MaxBytes: 200000, MaxGas: 2000000, }, - Evidence: &ocproto.EvidenceParams{ + Evidence: &tmproto.EvidenceParams{ MaxAgeNumBlocks: 302400, MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration MaxBytes: 10000, }, - Validator: &ocproto.ValidatorParams{ + Validator: &tmproto.ValidatorParams{ PubKeyTypes: []string{ octypes.ABCIPubKeyTypeEd25519, }, @@ -99,82 +99,82 @@ func Setup(isCheckTx bool) *SimApp { // that also act as delegators. For simplicity, each validator is bonded with a delegation // of one consensus engine unit (10^6) in the default token of the simapp from first genesis // account. A Nop logger is set in SimApp. -func SetupWithGenesisValSet(t *testing.T, valSet *octypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { - app, genesisState := setup(true, 5) - // set genesis accounts - authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) - genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) - - validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) - delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) - - bondAmt := sdk.NewInt(1000000) - - for _, val := range valSet.Validators { - pk, err := cryptocodec.FromOcPubKeyInterface(val.PubKey) - require.NoError(t, err) - pkAny, err := codectypes.NewAnyWithValue(pk) - require.NoError(t, err) - validator := stakingtypes.Validator{ - OperatorAddress: sdk.ValAddress(val.Address).String(), - ConsensusPubkey: pkAny, - Jailed: false, - Status: stakingtypes.Bonded, - Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), - Description: stakingtypes.Description{}, - UnbondingHeight: int64(0), - UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), - MinSelfDelegation: sdk.ZeroInt(), - } - validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) - - } - // set validators and delegations - stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) - genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) - - totalSupply := sdk.NewCoins() - for _, b := range balances { - // add genesis acc tokens and delegated tokens to total supply - totalSupply = totalSupply.Add(b.Coins.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt))...) - } - - // add bonded amount to bonded pool module account - balances = append(balances, banktypes.Balance{ - Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), - Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, - }) - - // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) - genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) - - stateBytes, err := json.MarshalIndent(genesisState, "", " ") - require.NoError(t, err) - - // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ - Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, - AppStateBytes: stateBytes, - }, - ) - - // commit genesis changes - app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{ - Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), - NextValidatorsHash: valSet.Hash(), - }}) - - return app -} +//func SetupWithGenesisValSet(t *testing.T, valSet *octypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { +// app, genesisState := setup(true, 5) +// // set genesis accounts +// authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) +// genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) +// +// validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) +// delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) +// +// bondAmt := sdk.NewInt(1000000) +// +// for _, val := range valSet.Validators { +// pk, err := cryptocodec.FromOcPubKeyInterface(val.PubKey) +// require.NoError(t, err) +// pkAny, err := codectypes.NewAnyWithValue(pk) +// require.NoError(t, err) +// validator := stakingtypes.Validator{ +// OperatorAddress: sdk.ValAddress(val.Address).String(), +// ConsensusPubkey: pkAny, +// Jailed: false, +// Status: stakingtypes.Bonded, +// Tokens: bondAmt, +// DelegatorShares: sdk.OneDec(), +// Description: stakingtypes.Description{}, +// UnbondingHeight: int64(0), +// UnbondingTime: time.Unix(0, 0).UTC(), +// Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), +// MinSelfDelegation: sdk.ZeroInt(), +// } +// validators = append(validators, validator) +// delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) +// +// } +// // set validators and delegations +// stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) +// genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) +// +// totalSupply := sdk.NewCoins() +// for _, b := range balances { +// // add genesis acc tokens and delegated tokens to total supply +// totalSupply = totalSupply.Add(b.Coins.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt))...) +// } +// +// // add bonded amount to bonded pool module account +// balances = append(balances, banktypes.Balance{ +// Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), +// Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, +// }) +// +// // update total supply +// bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) +// genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) +// +// stateBytes, err := json.MarshalIndent(genesisState, "", " ") +// require.NoError(t, err) +// +// // init chain will set the validator set and initialize the genesis accounts +// app.InitChain( +// abci.RequestInitChain{ +// Validators: []abci.ValidatorUpdate{}, +// ConsensusParams: DefaultConsensusParams, +// AppStateBytes: stateBytes, +// }, +// ) +// +// // commit genesis changes +// app.Commit() +// app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{ +// Height: app.LastBlockHeight() + 1, +// AppHash: app.LastCommitID().Hash, +// ValidatorsHash: valSet.Hash(), +// NextValidatorsHash: valSet.Hash(), +// }}) +// +// return app +//} // SetupWithGenesisAccounts initializes a new SimApp with the provided genesis // accounts and possible balances. @@ -205,7 +205,7 @@ func SetupWithGenesisAccounts(genAccs []authtypes.GenesisAccount, balances ...ba ) app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) return app } @@ -416,7 +416,7 @@ func SignCheckDeliver( } // Simulate a sending a transaction and committing a block and recheck - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) gInfo, res, err := app.Deliver(txCfg.TxEncoder(), tx) if expPass { @@ -430,8 +430,8 @@ func SignCheckDeliver( app.EndBlock(abci.RequestEndBlock{}) app.Commit() - app.BeginRecheckTx(abci.RequestBeginRecheckTx{Header: header}) - app.EndRecheckTx(abci.RequestEndRecheckTx{}) + app.BeginRecheckTx(ocabci.RequestBeginRecheckTx{Header: header}) + app.EndRecheckTx(ocabci.RequestEndRecheckTx{}) return gInfo, res, err } @@ -455,7 +455,7 @@ func SignAndDeliver( require.NoError(t, err) // Simulate a sending a transaction and committing a block - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) gInfo, res, err := app.Deliver(txCfg.TxEncoder(), tx) if expPass { diff --git a/simapp/types.go b/simapp/types.go index babe7a8ee7..9f50431277 100644 --- a/simapp/types.go +++ b/simapp/types.go @@ -1,7 +1,8 @@ package simapp import ( - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/server/types" @@ -20,7 +21,7 @@ type App interface { LegacyAmino() *codec.LegacyAmino // Application updates every begin block. - BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock + BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock) abci.ResponseBeginBlock // Application updates every end block. EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock diff --git a/simapp/utils_test.go b/simapp/utils_test.go index 7f9b711151..658d7c18d2 100644 --- a/simapp/utils_test.go +++ b/simapp/utils_test.go @@ -4,9 +4,9 @@ import ( "fmt" "testing" - "github.com/line/ostracon/abci/types" types2 "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/std" diff --git a/snapshots/types/convert.go b/snapshots/types/convert.go index 31e3a141e2..fdadb684aa 100644 --- a/snapshots/types/convert.go +++ b/snapshots/types/convert.go @@ -2,7 +2,7 @@ package types import ( proto "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdkerrors "github.com/line/lbm-sdk/types/errors" ) diff --git a/store/iavl/store.go b/store/iavl/store.go index f50263215b..0169a30594 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -8,11 +8,11 @@ import ( ics23 "github.com/confio/ics23/go" "github.com/cosmos/iavl" + abci "github.com/tendermint/tendermint/abci/types" + tmcrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" - occrypto "github.com/line/ostracon/proto/ostracon/crypto" "github.com/line/lbm-sdk/store/cachekv" "github.com/line/lbm-sdk/store/listenkv" @@ -387,7 +387,7 @@ func (st *Store) Query(req abci.RequestQuery) (res abci.ResponseQuery) { // Takes a MutableTree, a key, and a flag for creating existence or absence proof and returns the // appropriate merkle.Proof. Since this must be called after querying for the value, this function should never error // Thus, it will panic on error rather than returning it -func getProofFromTree(tree *iavl.MutableTree, key []byte, exists bool) *occrypto.ProofOps { +func getProofFromTree(tree *iavl.MutableTree, key []byte, exists bool) *tmcrypto.ProofOps { var ( commitmentProof *ics23.CommitmentProof err error @@ -410,7 +410,7 @@ func getProofFromTree(tree *iavl.MutableTree, key []byte, exists bool) *occrypto } op := types.NewIavlCommitmentOp(key, commitmentProof) - return &occrypto.ProofOps{Ops: []occrypto.ProofOp{op.ProofOp()}} + return &tmcrypto.ProofOps{Ops: []tmcrypto.ProofOp{op.ProofOp()}} } //---------------------------------------- diff --git a/store/iavl/store_test.go b/store/iavl/store_test.go index e26d3b4ded..d4cdc7c2f8 100644 --- a/store/iavl/store_test.go +++ b/store/iavl/store_test.go @@ -9,8 +9,8 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/store/cachekv" "github.com/line/lbm-sdk/store/types" diff --git a/store/internal/maps/maps.go b/store/internal/maps/maps.go index 230112b0a9..27005ef3b3 100644 --- a/store/internal/maps/maps.go +++ b/store/internal/maps/maps.go @@ -3,9 +3,10 @@ package maps import ( "encoding/binary" + tmcrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" + "github.com/line/ostracon/crypto/merkle" "github.com/line/ostracon/crypto/tmhash" - occrypto "github.com/line/ostracon/proto/ostracon/crypto" "github.com/line/lbm-sdk/types/kv" ) @@ -183,7 +184,7 @@ func HashFromMap(m map[string][]byte) []byte { // ProofsFromMap generates proofs from a map. The keys/values of the map will be used as the keys/values // in the underlying key-value pairs. // The keys are sorted before the proofs are computed. -func ProofsFromMap(m map[string][]byte) ([]byte, map[string]*occrypto.Proof, []string) { +func ProofsFromMap(m map[string][]byte) ([]byte, map[string]*tmcrypto.Proof, []string) { sm := newSimpleMap() for k, v := range m { sm.Set(k, v) @@ -197,7 +198,7 @@ func ProofsFromMap(m map[string][]byte) ([]byte, map[string]*occrypto.Proof, []s } rootHash, proofList := merkle.ProofsFromByteSlices(kvsBytes) - proofs := make(map[string]*occrypto.Proof) + proofs := make(map[string]*tmcrypto.Proof) keys := make([]string, len(proofList)) for i, kvp := range kvs.Pairs { diff --git a/store/internal/proofs/convert.go b/store/internal/proofs/convert.go index 7c5ed17c05..7e827ced5f 100644 --- a/store/internal/proofs/convert.go +++ b/store/internal/proofs/convert.go @@ -5,7 +5,7 @@ import ( "math/bits" ics23 "github.com/confio/ics23/go" - "github.com/line/ostracon/proto/ostracon/crypto" + "github.com/tendermint/tendermint/proto/tendermint/crypto" ) // ConvertExistenceProof will convert the given proof into a valid diff --git a/store/internal/proofs/helpers.go b/store/internal/proofs/helpers.go index ebb46f7147..1d45a90e10 100644 --- a/store/internal/proofs/helpers.go +++ b/store/internal/proofs/helpers.go @@ -3,8 +3,9 @@ package proofs import ( "sort" + tmcrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" + "github.com/line/ostracon/libs/rand" - occrypto "github.com/line/ostracon/proto/ostracon/crypto" sdkmaps "github.com/line/lbm-sdk/store/internal/maps" ) @@ -13,7 +14,7 @@ import ( type SimpleResult struct { Key []byte Value []byte - Proof *occrypto.Proof + Proof *tmcrypto.Proof RootHash []byte } diff --git a/store/rootmulti/proof_test.go b/store/rootmulti/proof_test.go index d694fb74b7..2867f652eb 100644 --- a/store/rootmulti/proof_test.go +++ b/store/rootmulti/proof_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/store/iavl" "github.com/line/lbm-sdk/store/types" diff --git a/store/rootmulti/rollback_test.go b/store/rootmulti/rollback_test.go index 9179caf73d..af660bfc7e 100644 --- a/store/rootmulti/rollback_test.go +++ b/store/rootmulti/rollback_test.go @@ -8,9 +8,10 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" ) @@ -59,7 +60,7 @@ func TestRollback(t *testing.T) { Height: ver0 + i, AppHash: app.LastCommitID().Hash, } - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) ctx := app.NewContext(false, header) store := ctx.KVStore(app.GetKey("bank")) store.Set([]byte("key"), []byte(fmt.Sprintf("value%d", i))) @@ -87,7 +88,7 @@ func TestRollback(t *testing.T) { Height: ver0 + i, AppHash: app.LastCommitID().Hash, } - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) ctx := app.NewContext(false, header) store := ctx.KVStore(app.GetKey("bank")) store.Set([]byte("key"), []byte(fmt.Sprintf("VALUE%d", i))) diff --git a/store/rootmulti/store.go b/store/rootmulti/store.go index 17fa7e7f0c..e0d33a9b51 100644 --- a/store/rootmulti/store.go +++ b/store/rootmulti/store.go @@ -13,11 +13,11 @@ import ( protoio "github.com/gogo/protobuf/io" gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" + abci "github.com/tendermint/tendermint/abci/types" + "github.com/tendermint/tendermint/proto/tendermint/crypto" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" - "github.com/line/ostracon/proto/ostracon/crypto" snapshottypes "github.com/line/lbm-sdk/snapshots/types" "github.com/line/lbm-sdk/store/cachemulti" diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index f314e0f1d0..970fa481c3 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/require" dbm "github.com/tendermint/tm-db" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" codecTypes "github.com/line/lbm-sdk/codec/types" diff --git a/store/streaming/file/service.go b/store/streaming/file/service.go index d5df937d6a..cc83af6dc0 100644 --- a/store/streaming/file/service.go +++ b/store/streaming/file/service.go @@ -8,7 +8,9 @@ import ( "path/filepath" "sync" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/codec" @@ -87,7 +89,7 @@ func (fss *StreamingService) Listeners() map[types.StoreKey][]types.WriteListene // ListenBeginBlock satisfies the baseapp.ABCIListener interface // It writes the received BeginBlock request and response and the resulting state changes // out to a file as described in the above the naming schema -func (fss *StreamingService) ListenBeginBlock(ctx sdk.Context, req abci.RequestBeginBlock, res abci.ResponseBeginBlock) error { +func (fss *StreamingService) ListenBeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock, res abci.ResponseBeginBlock) error { // generate the new file dstFile, err := fss.openBeginBlockFile(req) if err != nil { @@ -125,7 +127,7 @@ func (fss *StreamingService) ListenBeginBlock(ctx sdk.Context, req abci.RequestB return dstFile.Close() } -func (fss *StreamingService) openBeginBlockFile(req abci.RequestBeginBlock) (*os.File, error) { +func (fss *StreamingService) openBeginBlockFile(req ocabci.RequestBeginBlock) (*os.File, error) { fss.currentBlockNumber = req.GetHeader().Height fss.currentTxIndex = 0 fileName := fmt.Sprintf("block-%d-begin", fss.currentBlockNumber) diff --git a/store/streaming/file/service_test.go b/store/streaming/file/service_test.go index 755649fd67..e12059603f 100644 --- a/store/streaming/file/service_test.go +++ b/store/streaming/file/service_test.go @@ -9,8 +9,9 @@ import ( "testing" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" octypes "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/codec" @@ -28,7 +29,7 @@ var ( // test abci message types mockHash = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9} - testBeginBlockReq = abci.RequestBeginBlock{ + testBeginBlockReq = ocabci.RequestBeginBlock{ Header: octypes.Header{ Height: 1, }, diff --git a/store/types/commit_info.go b/store/types/commit_info.go index ff8c0c6163..4e0038e07b 100644 --- a/store/types/commit_info.go +++ b/store/types/commit_info.go @@ -4,7 +4,7 @@ import ( fmt "fmt" ics23 "github.com/confio/ics23/go" - occrypto "github.com/line/ostracon/proto/ostracon/crypto" + tmcrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" sdkmaps "github.com/line/lbm-sdk/store/internal/maps" sdkproofs "github.com/line/lbm-sdk/store/internal/proofs" @@ -41,7 +41,7 @@ func (ci CommitInfo) Hash() []byte { return rootHash } -func (ci CommitInfo) ProofOp(storeName string) occrypto.ProofOp { +func (ci CommitInfo) ProofOp(storeName string) tmcrypto.ProofOp { cmap := ci.toMap() _, proofs, _ := sdkmaps.ProofsFromMap(cmap) diff --git a/store/types/proof.go b/store/types/proof.go index ec5c5f6870..d5e54d8bcd 100644 --- a/store/types/proof.go +++ b/store/types/proof.go @@ -1,9 +1,10 @@ package types import ( + tmmerkle "github.com/tendermint/tendermint/proto/tendermint/crypto" + ics23 "github.com/confio/ics23/go" "github.com/line/ostracon/crypto/merkle" - ostmerkle "github.com/line/ostracon/proto/ostracon/crypto" sdkerrors "github.com/line/lbm-sdk/types/errors" ) @@ -49,7 +50,7 @@ func NewSimpleMerkleCommitmentOp(key []byte, proof *ics23.CommitmentProof) Commi // CommitmentOpDecoder takes a merkle.ProofOp and attempts to decode it into a CommitmentOp ProofOperator // The proofOp.Data is just a marshalled CommitmentProof. The Key of the CommitmentOp is extracted // from the unmarshalled proof. -func CommitmentOpDecoder(pop ostmerkle.ProofOp) (merkle.ProofOperator, error) { +func CommitmentOpDecoder(pop tmmerkle.ProofOp) (merkle.ProofOperator, error) { var spec *ics23.ProofSpec switch pop.Type { case ProofOpIAVLCommitment: @@ -118,12 +119,12 @@ func (op CommitmentOp) Run(args [][]byte) ([][]byte, error) { // ProofOp implements ProofOperator interface and converts a CommitmentOp // into a merkle.ProofOp format that can later be decoded by CommitmentOpDecoder // back into a CommitmentOp for proof verification -func (op CommitmentOp) ProofOp() ostmerkle.ProofOp { +func (op CommitmentOp) ProofOp() tmmerkle.ProofOp { bz, err := op.Proof.Marshal() if err != nil { panic(err.Error()) } - return ostmerkle.ProofOp{ + return tmmerkle.ProofOp{ Type: op.Type, Key: op.Key, Data: bz, diff --git a/store/types/store.go b/store/types/store.go index e7cbeca8ed..dbb7c64ac0 100644 --- a/store/types/store.go +++ b/store/types/store.go @@ -4,8 +4,8 @@ import ( "fmt" "io" - abci "github.com/line/ostracon/abci/types" oststrings "github.com/line/ostracon/libs/strings" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" snapshottypes "github.com/line/lbm-sdk/snapshots/types" diff --git a/tests/mocks/types_module_module.go b/tests/mocks/types_module_module.go index 83d8be66b6..f8a65c63b8 100644 --- a/tests/mocks/types_module_module.go +++ b/tests/mocks/types_module_module.go @@ -15,8 +15,9 @@ import ( types "github.com/line/lbm-sdk/codec/types" types0 "github.com/line/lbm-sdk/types" module "github.com/line/lbm-sdk/types/module" - types1 "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" cobra "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" ) // MockAppModuleBasic is a mock of AppModuleBasic interface. @@ -228,10 +229,10 @@ func (mr *MockAppModuleGenesisMockRecorder) GetTxCmd() *gomock.Call { } // InitGenesis mocks base method. -func (m *MockAppModuleGenesis) InitGenesis(arg0 types0.Context, arg1 codec.JSONCodec, arg2 json.RawMessage) []types1.ValidatorUpdate { +func (m *MockAppModuleGenesis) InitGenesis(arg0 types0.Context, arg1 codec.JSONCodec, arg2 json.RawMessage) []abci.ValidatorUpdate { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].([]types1.ValidatorUpdate) + ret0, _ := ret[0].([]abci.ValidatorUpdate) return ret0 } @@ -329,7 +330,7 @@ func (m *MockAppModule) EXPECT() *MockAppModuleMockRecorder { } // BeginBlock mocks base method. -func (m *MockAppModule) BeginBlock(arg0 types0.Context, arg1 types1.RequestBeginBlock) { +func (m *MockAppModule) BeginBlock(arg0 types0.Context, arg1 ocabci.RequestBeginBlock) { m.ctrl.T.Helper() m.ctrl.Call(m, "BeginBlock", arg0, arg1) } @@ -369,10 +370,10 @@ func (mr *MockAppModuleMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Ca } // EndBlock mocks base method. -func (m *MockAppModule) EndBlock(arg0 types0.Context, arg1 types1.RequestEndBlock) []types1.ValidatorUpdate { +func (m *MockAppModule) EndBlock(arg0 types0.Context, arg1 abci.RequestEndBlock) []abci.ValidatorUpdate { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "EndBlock", arg0, arg1) - ret0, _ := ret[0].([]types1.ValidatorUpdate) + ret0, _ := ret[0].([]abci.ValidatorUpdate) return ret0 } @@ -425,10 +426,10 @@ func (mr *MockAppModuleMockRecorder) GetTxCmd() *gomock.Call { } // InitGenesis mocks base method. -func (m *MockAppModule) InitGenesis(arg0 types0.Context, arg1 codec.JSONCodec, arg2 json.RawMessage) []types1.ValidatorUpdate { +func (m *MockAppModule) InitGenesis(arg0 types0.Context, arg1 codec.JSONCodec, arg2 json.RawMessage) []abci.ValidatorUpdate { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].([]types1.ValidatorUpdate) + ret0, _ := ret[0].([]abci.ValidatorUpdate) return ret0 } diff --git a/testutil/network/network.go b/testutil/network/network.go index f237fcef9d..cf0525a0b2 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -15,7 +15,6 @@ import ( "time" ostcfg "github.com/line/ostracon/config" - ostflags "github.com/line/ostracon/libs/cli/flags" "github.com/line/ostracon/libs/log" ostrand "github.com/line/ostracon/libs/rand" "github.com/line/ostracon/node" @@ -244,7 +243,7 @@ func New(t *testing.T, cfg Config) *Network { logger := log.NewNopLogger() if cfg.EnableLogging { logger = log.NewOCLogger(log.NewSyncWriter(os.Stdout)) - logger, _ = ostflags.ParseLogLevel("info", logger, ostcfg.DefaultLogLevel) + logger, _ = log.ParseLogLevel("info", logger, ostcfg.DefaultLogLevel) } ctx.Logger = logger diff --git a/testutil/network/util.go b/testutil/network/util.go index 1c04f8c650..26f8c348da 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -40,10 +40,7 @@ func startInProcess(cfg Config, val *Validator) error { app := cfg.AppConstructor(*val) genDocProvider := node.DefaultGenesisDocProviderFunc(tmCfg) - pv, err := pvm.LoadOrGenFilePV(tmCfg.PrivValidatorKeyFile(), tmCfg.PrivValidatorStateFile(), tmCfg.PrivKeyType) - if err != nil { - return err - } + pv := pvm.LoadOrGenFilePV(tmCfg.PrivValidatorKeyFile(), tmCfg.PrivValidatorStateFile()) tmNode, err := node.NewNode( tmCfg, pv, diff --git a/third_party/proto/ostracon/abci/types.proto b/third_party/proto/ostracon/abci/types.proto index 44e815a0a6..1b607fefd7 100644 --- a/third_party/proto/ostracon/abci/types.proto +++ b/third_party/proto/ostracon/abci/types.proto @@ -5,14 +5,15 @@ option go_package = "github.com/line/ostracon/abci/types"; // For more information on gogo.proto, see: // https://github.com/gogo/protobuf/blob/master/extensions.md -import "ostracon/crypto/proof.proto"; +import "tendermint/crypto/proof.proto"; +import "tendermint/types/params.proto"; +import "tendermint/abci/types.proto"; import "ostracon/types/types.proto"; -import "ostracon/crypto/keys.proto"; -import "ostracon/types/params.proto"; +import "tendermint/crypto/keys.proto"; import "google/protobuf/timestamp.proto"; import "gogoproto/gogo.proto"; -// This file is copied from http://github.com/ostracon/abci +// This file is copied from http://github.com/tendermint/abci // NOTE: When using custom types, mind the warnings. // https://github.com/gogo/protobuf/blob/master/custom_types.md#warnings-and-issues @@ -21,390 +22,112 @@ import "gogoproto/gogo.proto"; message Request { oneof value { - RequestEcho echo = 1; - RequestFlush flush = 2; - RequestInfo info = 3; - RequestSetOption set_option = 4; - RequestInitChain init_chain = 5; - RequestQuery query = 6; - RequestBeginBlock begin_block = 7; - RequestCheckTx check_tx = 8; - RequestDeliverTx deliver_tx = 9; - RequestEndBlock end_block = 10; - RequestCommit commit = 11; - RequestListSnapshots list_snapshots = 12; - RequestOfferSnapshot offer_snapshot = 13; - RequestLoadSnapshotChunk load_snapshot_chunk = 14; - RequestApplySnapshotChunk apply_snapshot_chunk = 15; + tendermint.abci.RequestEcho echo = 1; + tendermint.abci.RequestFlush flush = 2; + tendermint.abci.RequestInfo info = 3; + tendermint.abci.RequestSetOption set_option = 4; + tendermint.abci.RequestInitChain init_chain = 5; + tendermint.abci.RequestQuery query = 6; + RequestBeginBlock begin_block = 7; + tendermint.abci.RequestCheckTx check_tx = 8; + tendermint.abci.RequestDeliverTx deliver_tx = 9; + tendermint.abci.RequestEndBlock end_block = 10; + tendermint.abci.RequestCommit commit = 11; + tendermint.abci.RequestListSnapshots list_snapshots = 12; + tendermint.abci.RequestOfferSnapshot offer_snapshot = 13; + tendermint.abci.RequestLoadSnapshotChunk load_snapshot_chunk = 14; + tendermint.abci.RequestApplySnapshotChunk apply_snapshot_chunk = 15; + RequestBeginRecheckTx begin_recheck_tx = 1000; // 16~99 are reserved for merging original tendermint + RequestEndRecheckTx end_recheck_tx = 1001; } } -message RequestEcho { - string message = 1; -} - -message RequestFlush {} - -message RequestInfo { - string version = 1; - uint64 block_version = 2; - uint64 p2p_version = 3; -} - -// nondeterministic -message RequestSetOption { - string key = 1; - string value = 2; -} - -message RequestInitChain { - google.protobuf.Timestamp time = 1 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - string chain_id = 2; - ConsensusParams consensus_params = 3; - repeated ValidatorUpdate validators = 4 [(gogoproto.nullable) = false]; - bytes app_state_bytes = 5; - int64 initial_height = 6; -} - -message RequestQuery { - bytes data = 1; - string path = 2; - int64 height = 3; - bool prove = 4; -} - message RequestBeginBlock { - bytes hash = 1; - ostracon.types.Header header = 2 [(gogoproto.nullable) = false]; - LastCommitInfo last_commit_info = 3 [(gogoproto.nullable) = false]; - repeated Evidence byzantine_validators = 4 [(gogoproto.nullable) = false]; -} - -enum CheckTxType { - NEW = 0 [(gogoproto.enumvalue_customname) = "New"]; - RECHECK = 1 [(gogoproto.enumvalue_customname) = "Recheck"]; -} - -message RequestCheckTx { - bytes tx = 1; - CheckTxType type = 2; + bytes hash = 1; + ostracon.types.Header header = 2 [(gogoproto.nullable) = false]; + tendermint.abci.LastCommitInfo last_commit_info = 3 [(gogoproto.nullable) = false]; + repeated tendermint.abci.Evidence byzantine_validators = 4 [(gogoproto.nullable) = false]; } -message RequestDeliverTx { - bytes tx = 1; +message RequestBeginRecheckTx { + ostracon.types.Header header = 1 [(gogoproto.nullable) = false]; } -message RequestEndBlock { +message RequestEndRecheckTx { int64 height = 1; } -message RequestCommit {} - -// lists available snapshots -message RequestListSnapshots { -} - -// offers a snapshot to the application -message RequestOfferSnapshot { - Snapshot snapshot = 1; // snapshot offered by peers - bytes app_hash = 2; // light client-verified app hash for snapshot height -} - -// loads a snapshot chunk -message RequestLoadSnapshotChunk { - uint64 height = 1; - uint32 format = 2; - uint32 chunk = 3; -} - -// Applies a snapshot chunk -message RequestApplySnapshotChunk { - uint32 index = 1; - bytes chunk = 2; - string sender = 3; -} - //---------------------------------------- // Response types message Response { oneof value { - ResponseException exception = 1; - ResponseEcho echo = 2; - ResponseFlush flush = 3; - ResponseInfo info = 4; - ResponseSetOption set_option = 5; - ResponseInitChain init_chain = 6; - ResponseQuery query = 7; - ResponseBeginBlock begin_block = 8; - ResponseCheckTx check_tx = 9; - ResponseDeliverTx deliver_tx = 10; - ResponseEndBlock end_block = 11; - ResponseCommit commit = 12; - ResponseListSnapshots list_snapshots = 13; - ResponseOfferSnapshot offer_snapshot = 14; - ResponseLoadSnapshotChunk load_snapshot_chunk = 15; - ResponseApplySnapshotChunk apply_snapshot_chunk = 16; + tendermint.abci.ResponseException exception = 1; + tendermint.abci.ResponseEcho echo = 2; + tendermint.abci.ResponseFlush flush = 3; + tendermint.abci.ResponseInfo info = 4; + tendermint.abci.ResponseSetOption set_option = 5; + tendermint.abci.ResponseInitChain init_chain = 6; + tendermint.abci.ResponseQuery query = 7; + tendermint.abci.ResponseBeginBlock begin_block = 8; + ResponseCheckTx check_tx = 9; + tendermint.abci.ResponseDeliverTx deliver_tx = 10; + tendermint.abci.ResponseEndBlock end_block = 11; + tendermint.abci.ResponseCommit commit = 12; + tendermint.abci.ResponseListSnapshots list_snapshots = 13; + tendermint.abci.ResponseOfferSnapshot offer_snapshot = 14; + tendermint.abci.ResponseLoadSnapshotChunk load_snapshot_chunk = 15; + tendermint.abci.ResponseApplySnapshotChunk apply_snapshot_chunk = 16; + ResponseBeginRecheckTx begin_recheck_tx = 1000; // 17~99 are reserved for merging original tendermint + ResponseEndRecheckTx end_recheck_tx = 1001; } } -// nondeterministic -message ResponseException { - string error = 1; -} - -message ResponseEcho { - string message = 1; -} - -message ResponseFlush {} - -message ResponseInfo { - string data = 1; - - string version = 2; - uint64 app_version = 3; - - int64 last_block_height = 4; - bytes last_block_app_hash = 5; -} - -// nondeterministic -message ResponseSetOption { - uint32 code = 1; - // bytes data = 2; - string log = 3; - string info = 4; -} - -message ResponseInitChain { - ConsensusParams consensus_params = 1; - repeated ValidatorUpdate validators = 2 [(gogoproto.nullable) = false]; - bytes app_hash = 3; -} - -message ResponseQuery { - uint32 code = 1; - // bytes data = 2; // use "value" instead. - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 index = 5; - bytes key = 6; - bytes value = 7; - ostracon.crypto.ProofOps proof_ops = 8; - int64 height = 9; - string codespace = 10; -} - -message ResponseBeginBlock { - repeated Event events = 1 - [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; -} - message ResponseCheckTx { - uint32 code = 1; - bytes data = 2; - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 gas_wanted = 5 [json_name = "gas_wanted"]; - int64 gas_used = 6 [json_name = "gas_used"]; - repeated Event events = 7 - [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; - string codespace = 8; -} - -message ResponseDeliverTx { - uint32 code = 1; - bytes data = 2; - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 gas_wanted = 5 [json_name = "gas_wanted"]; - int64 gas_used = 6 [json_name = "gas_used"]; - repeated Event events = 7 + uint32 code = 1; + bytes data = 2; + string log = 3; // nondeterministic + string info = 4; // nondeterministic + int64 gas_wanted = 5 [json_name = "gas_wanted"]; + int64 gas_used = 6 [json_name = "gas_used"]; + repeated tendermint.abci.Event events = 7 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; string codespace = 8; -} - -message ResponseEndBlock { - repeated ValidatorUpdate validator_updates = 1 - [(gogoproto.nullable) = false]; - ConsensusParams consensus_param_updates = 2; - repeated Event events = 3 - [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; -} - -message ResponseCommit { - // reserve 1 - bytes data = 2; - int64 retain_height = 3; -} - -message ResponseListSnapshots { - repeated Snapshot snapshots = 1; -} - -message ResponseOfferSnapshot { - Result result = 1; - - enum Result { - UNKNOWN = 0; // Unknown result, abort all snapshot restoration - ACCEPT = 1; // Snapshot accepted, apply chunks - ABORT = 2; // Abort all snapshot restoration - REJECT = 3; // Reject this specific snapshot, try others - REJECT_FORMAT = 4; // Reject all snapshots of this format, try others - REJECT_SENDER = 5; // Reject all snapshots from the sender(s), try others - } -} - -message ResponseLoadSnapshotChunk { - bytes chunk = 1; -} - -message ResponseApplySnapshotChunk { - Result result = 1; - repeated uint32 refetch_chunks = 2; // Chunks to refetch and reapply - repeated string reject_senders = 3; // Chunk senders to reject and ban - - enum Result { - UNKNOWN = 0; // Unknown result, abort all snapshot restoration - ACCEPT = 1; // Chunk successfully accepted - ABORT = 2; // Abort all snapshot restoration - RETRY = 3; // Retry chunk (combine with refetch and reject) - RETRY_SNAPSHOT = 4; // Retry snapshot (combine with refetch and reject) - REJECT_SNAPSHOT = 5; // Reject this snapshot, try others - } -} - -//---------------------------------------- -// Misc. + string sender = 9; // MEMO: not used, just reservation to implement https://github.com/tendermint/tendermint/pull/6740 first + int64 priority = 10; // MEMO: not used, just reservation to implement https://github.com/tendermint/tendermint/pull/6740 first -// ConsensusParams contains all consensus-relevant parameters -// that can be adjusted by the abci app -message ConsensusParams { - BlockParams block = 1; - ostracon.types.EvidenceParams evidence = 2; - ostracon.types.ValidatorParams validator = 3; - ostracon.types.VersionParams version = 4; + // mempool_error is set by Ostracon. + // ABCI applictions creating a ResponseCheckTX should not set mempool_error. + string mempool_error = 11; } -// BlockParams contains limits on the block size. -message BlockParams { - // Note: must be greater than 0 - int64 max_bytes = 1; - // Note: must be greater or equal to -1 - int64 max_gas = 2; -} - -message LastCommitInfo { - int32 round = 1; - repeated VoteInfo votes = 2 [(gogoproto.nullable) = false]; -} - -// Event allows application developers to attach additional information to -// ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and ResponseDeliverTx. -// Later, transactions may be queried using these events. -message Event { - string type = 1; - repeated EventAttribute attributes = 2 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "attributes,omitempty" - ]; -} - -// EventAttribute is a single key-value pair, associated with an event. -message EventAttribute { - bytes key = 1; - bytes value = 2; - bool index = 3; // nondeterministic -} - -// TxResult contains results of executing the transaction. -// -// One usage is indexing transaction results. -message TxResult { - int64 height = 1; - uint32 index = 2; - bytes tx = 3; - ResponseDeliverTx result = 4 [(gogoproto.nullable) = false]; -} - -//---------------------------------------- -// Blockchain Types - -// Validator -message Validator { - bytes address = 1; // The first 20 bytes of SHA256(public key) - // PubKey pub_key = 2 [(gogoproto.nullable)=false]; - int64 power = 3; // The voting power - - // *** Ostracon Extended Fields *** - int64 voting_weight = 1000; // The voting weight -} - -// ValidatorUpdate -message ValidatorUpdate { - ostracon.crypto.PublicKey pub_key = 1 [(gogoproto.nullable) = false]; - int64 power = 2; -} - -// VoteInfo -message VoteInfo { - Validator validator = 1 [(gogoproto.nullable) = false]; - bool signed_last_block = 2; -} - -enum EvidenceType { - UNKNOWN = 0; - DUPLICATE_VOTE = 1; - LIGHT_CLIENT_ATTACK = 2; -} - -message Evidence { - EvidenceType type = 1; - // The offending validator - Validator validator = 2 [(gogoproto.nullable) = false]; - // The height when the offense occurred - int64 height = 3; - // The corresponding time where the offense occurred - google.protobuf.Timestamp time = 4 [ - (gogoproto.nullable) = false, - (gogoproto.stdtime) = true - ]; - // Total voting power of the validator set in case the ABCI application does - // not store historical validators. - // https://github.com/tendermint/tendermint/issues/4581 - int64 total_voting_power = 5; +message ResponseBeginRecheckTx { + uint32 code = 1; } -//---------------------------------------- -// State Sync Types - -message Snapshot { - uint64 height = 1; // The height at which the snapshot was taken - uint32 format = 2; // The application-specific snapshot format - uint32 chunks = 3; // Number of chunks in the snapshot - bytes hash = 4; // Arbitrary snapshot hash, equal only if identical - bytes metadata = 5; // Arbitrary application metadata +message ResponseEndRecheckTx { + uint32 code = 1; } //---------------------------------------- // Service Definition service ABCIApplication { - rpc Echo(RequestEcho) returns (ResponseEcho); - rpc Flush(RequestFlush) returns (ResponseFlush); - rpc Info(RequestInfo) returns (ResponseInfo); - rpc SetOption(RequestSetOption) returns (ResponseSetOption); - rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx); - rpc CheckTx(RequestCheckTx) returns (ResponseCheckTx); - rpc Query(RequestQuery) returns (ResponseQuery); - rpc Commit(RequestCommit) returns (ResponseCommit); - rpc InitChain(RequestInitChain) returns (ResponseInitChain); - rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); - rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); - rpc ListSnapshots(RequestListSnapshots) returns (ResponseListSnapshots); - rpc OfferSnapshot(RequestOfferSnapshot) returns (ResponseOfferSnapshot); - rpc LoadSnapshotChunk(RequestLoadSnapshotChunk) returns (ResponseLoadSnapshotChunk); - rpc ApplySnapshotChunk(RequestApplySnapshotChunk) returns (ResponseApplySnapshotChunk); -} \ No newline at end of file + rpc Echo(tendermint.abci.RequestEcho) returns (tendermint.abci.ResponseEcho); + rpc Flush(tendermint.abci.RequestFlush) returns (tendermint.abci.ResponseFlush); + rpc Info(tendermint.abci.RequestInfo) returns (tendermint.abci.ResponseInfo); + rpc SetOption(tendermint.abci.RequestSetOption) returns (tendermint.abci.ResponseSetOption); + rpc DeliverTx(tendermint.abci.RequestDeliverTx) returns (tendermint.abci.ResponseDeliverTx); + rpc CheckTx(tendermint.abci.RequestCheckTx) returns (ResponseCheckTx); + rpc Query(tendermint.abci.RequestQuery) returns (tendermint.abci.ResponseQuery); + rpc Commit(tendermint.abci.RequestCommit) returns (tendermint.abci.ResponseCommit); + rpc InitChain(tendermint.abci.RequestInitChain) returns (tendermint.abci.ResponseInitChain); + rpc BeginBlock(RequestBeginBlock) returns (tendermint.abci.ResponseBeginBlock); + rpc EndBlock(tendermint.abci.RequestEndBlock) returns (tendermint.abci.ResponseEndBlock); + rpc ListSnapshots(tendermint.abci.RequestListSnapshots) returns (tendermint.abci.ResponseListSnapshots); + rpc OfferSnapshot(tendermint.abci.RequestOfferSnapshot) returns (tendermint.abci.ResponseOfferSnapshot); + rpc LoadSnapshotChunk(tendermint.abci.RequestLoadSnapshotChunk) returns (tendermint.abci.ResponseLoadSnapshotChunk); + rpc ApplySnapshotChunk(tendermint.abci.RequestApplySnapshotChunk) returns (tendermint.abci.ResponseApplySnapshotChunk); + rpc BeginRecheckTx(RequestBeginRecheckTx) returns (ResponseBeginRecheckTx); + rpc EndRecheckTx(RequestEndRecheckTx) returns (ResponseEndRecheckTx); +} diff --git a/third_party/proto/ostracon/libs/bits/types.proto b/third_party/proto/ostracon/libs/bits/types.proto deleted file mode 100644 index bead2db26f..0000000000 --- a/third_party/proto/ostracon/libs/bits/types.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; -package ostracon.libs.bits; - -option go_package = "github.com/line/ostracon/proto/ostracon/libs/bits"; - -message BitArray { - int64 bits = 1; - repeated uint64 elems = 2; -} diff --git a/third_party/proto/ostracon/types/block.proto b/third_party/proto/ostracon/types/block.proto index 96c19fd8b3..756c223a3d 100644 --- a/third_party/proto/ostracon/types/block.proto +++ b/third_party/proto/ostracon/types/block.proto @@ -6,10 +6,11 @@ option go_package = "github.com/line/ostracon/proto/ostracon/types"; import "gogoproto/gogo.proto"; import "ostracon/types/types.proto"; import "ostracon/types/evidence.proto"; +import "tendermint/types/types.proto"; message Block { Header header = 1 [(gogoproto.nullable) = false]; - Data data = 2 [(gogoproto.nullable) = false]; + tendermint.types.Data data = 2 [(gogoproto.nullable) = false]; ostracon.types.EvidenceList evidence = 3 [(gogoproto.nullable) = false]; - Commit last_commit = 4; + tendermint.types.Commit last_commit = 4; } diff --git a/third_party/proto/ostracon/types/evidence.proto b/third_party/proto/ostracon/types/evidence.proto index a19e0d228b..688d7e9e0a 100644 --- a/third_party/proto/ostracon/types/evidence.proto +++ b/third_party/proto/ostracon/types/evidence.proto @@ -6,7 +6,8 @@ option go_package = "github.com/line/ostracon/proto/ostracon/types"; import "gogoproto/gogo.proto"; import "google/protobuf/timestamp.proto"; import "ostracon/types/types.proto"; -import "ostracon/types/validator.proto"; +import "tendermint/types/validator.proto"; +import "tendermint/types/types.proto"; message Evidence { oneof sum { @@ -17,25 +18,22 @@ message Evidence { // DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. message DuplicateVoteEvidence { - ostracon.types.Vote vote_a = 1; - ostracon.types.Vote vote_b = 2; - int64 total_voting_power = 3; // total voting weight - int64 validator_power = 4; // voting power + tendermint.types.Vote vote_a = 1; + tendermint.types.Vote vote_b = 2; + int64 total_voting_power = 3; // total voting power + int64 validator_power = 4; // voting power google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - - // *** Ostracon Extended Fields *** - int64 voting_weight = 1000; } // LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. message LightClientAttackEvidence { - ostracon.types.LightBlock conflicting_block = 1; - int64 common_height = 2; - repeated ostracon.types.Validator byzantine_validators = 3; - int64 total_voting_power = 4; // total voting weight - google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + ostracon.types.LightBlock conflicting_block = 1; + int64 common_height = 2; + repeated tendermint.types.Validator byzantine_validators = 3; + int64 total_voting_power = 4; // total voting power + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; } message EvidenceList { repeated Evidence evidence = 1 [(gogoproto.nullable) = false]; -} \ No newline at end of file +} diff --git a/third_party/proto/ostracon/types/types.proto b/third_party/proto/ostracon/types/types.proto index d3310f66b3..28ea9fbedf 100644 --- a/third_party/proto/ostracon/types/types.proto +++ b/third_party/proto/ostracon/types/types.proto @@ -5,65 +5,23 @@ option go_package = "github.com/line/ostracon/proto/ostracon/types"; import "gogoproto/gogo.proto"; import "google/protobuf/timestamp.proto"; -import "ostracon/crypto/proof.proto"; -import "ostracon/version/types.proto"; -import "ostracon/types/validator.proto"; - -// BlockIdFlag indicates which BlcokID the signature is for -enum BlockIDFlag { - option (gogoproto.goproto_enum_stringer) = true; - option (gogoproto.goproto_enum_prefix) = false; - - BLOCK_ID_FLAG_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "BlockIDFlagUnknown"]; - BLOCK_ID_FLAG_ABSENT = 1 [(gogoproto.enumvalue_customname) = "BlockIDFlagAbsent"]; - BLOCK_ID_FLAG_COMMIT = 2 [(gogoproto.enumvalue_customname) = "BlockIDFlagCommit"]; - BLOCK_ID_FLAG_NIL = 3 [(gogoproto.enumvalue_customname) = "BlockIDFlagNil"]; -} - -// SignedMsgType is a type of signed message in the consensus. -enum SignedMsgType { - option (gogoproto.goproto_enum_stringer) = true; - option (gogoproto.goproto_enum_prefix) = false; - - SIGNED_MSG_TYPE_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "UnknownType"]; - // Votes - SIGNED_MSG_TYPE_PREVOTE = 1 [(gogoproto.enumvalue_customname) = "PrevoteType"]; - SIGNED_MSG_TYPE_PRECOMMIT = 2 [(gogoproto.enumvalue_customname) = "PrecommitType"]; - - // Proposals - SIGNED_MSG_TYPE_PROPOSAL = 32 [(gogoproto.enumvalue_customname) = "ProposalType"]; -} - -// PartsetHeader -message PartSetHeader { - uint32 total = 1; - bytes hash = 2; -} - -message Part { - uint32 index = 1; - bytes bytes = 2; - ostracon.crypto.Proof proof = 3 [(gogoproto.nullable) = false]; -} - -// BlockID -message BlockID { - bytes hash = 1; - PartSetHeader part_set_header = 2 [(gogoproto.nullable) = false]; -} +import "tendermint/crypto/proof.proto"; +import "tendermint/version/types.proto"; +import "tendermint/types/types.proto"; +import "tendermint/types/validator.proto"; // -------------------------------- -// Header defines the structure of a Tendermint block header. +// Header defines the structure of an Ostracon block header. message Header { // basic block info - ostracon.version.Consensus version = 1 [(gogoproto.nullable) = false]; - string chain_id = 2 [(gogoproto.customname) = "ChainID"]; - int64 height = 3; - google.protobuf.Timestamp time = 4 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + tendermint.version.Consensus version = 1 [(gogoproto.nullable) = false]; + string chain_id = 2 [(gogoproto.customname) = "ChainID"]; + int64 height = 3; + google.protobuf.Timestamp time = 4 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; // prev block info - BlockID last_block_id = 5 [(gogoproto.nullable) = false]; + tendermint.types.BlockID last_block_id = 5 [(gogoproto.nullable) = false]; // hashes of block data bytes last_commit_hash = 6; // commit from validators from the last block @@ -79,79 +37,28 @@ message Header { // consensus info bytes evidence_hash = 13; // evidence included in the block bytes proposer_address = 14; // original proposer of the block -} - -// Data contains the set of transactions included in the block -message Data { - // Txs that will be applied by state @ block.Height+1. - // NOTE: not all txs here are valid. We're just agreeing on the order first. - // This means that block.AppHash does not include these txs. - repeated bytes txs = 1; -} -// Vote represents a prevote, precommit, or commit vote from validators for -// consensus. -message Vote { - SignedMsgType type = 1; - int64 height = 2; - int32 round = 3; - BlockID block_id = 4 - [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; // zero if vote is nil. - google.protobuf.Timestamp timestamp = 5 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - bytes validator_address = 6; - int32 validator_index = 7; - bytes signature = 8; -} + // *** Ostracon Extended Fields *** + // Note that MaxHeaderSize must be modified when adding/removing fields. -// Commit contains the evidence that a block was committed by a set of validators. -message Commit { - int64 height = 1; - int32 round = 2; - BlockID block_id = 3 [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; - repeated CommitSig signatures = 4 [(gogoproto.nullable) = false]; -} - -// CommitSig is a part of the Vote included in a Commit. -message CommitSig { - BlockIDFlag block_id_flag = 1; - bytes validator_address = 2; - google.protobuf.Timestamp timestamp = 3 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - bytes signature = 4; -} - -message Proposal { - SignedMsgType type = 1; - int64 height = 2; - int32 round = 3; - int32 pol_round = 4; - BlockID block_id = 5 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; - google.protobuf.Timestamp timestamp = 6 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - bytes signature = 7; + // vrf info + int32 round = 1000; + bytes proof = 1001; } message SignedHeader { - Header header = 1; - Commit commit = 2; + Header header = 1; + tendermint.types.Commit commit = 2; } message LightBlock { - SignedHeader signed_header = 1; - ostracon.types.ValidatorSet validator_set = 2; + SignedHeader signed_header = 1; + tendermint.types.ValidatorSet validator_set = 2; } message BlockMeta { - BlockID block_id = 1 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; - int64 block_size = 2; - Header header = 3 [(gogoproto.nullable) = false]; - int64 num_txs = 4; -} - -// TxProof represents a Merkle proof of the presence of a transaction in the Merkle tree. -message TxProof { - bytes root_hash = 1; - bytes data = 2; - ostracon.crypto.Proof proof = 3; + tendermint.types.BlockID block_id = 1 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; + int64 block_size = 2; + Header header = 3 [(gogoproto.nullable) = false]; + int64 num_txs = 4; } diff --git a/third_party/proto/ostracon/types/voter.proto b/third_party/proto/ostracon/types/voter.proto deleted file mode 100644 index 648ceca414..0000000000 --- a/third_party/proto/ostracon/types/voter.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; -package ostracon.types; - -option go_package = "github.com/line/ostracon/proto/ostracon/types"; - -import "ostracon/types/validator.proto"; - -message VoterSet { - repeated ostracon.types.Validator voters = 1; - int64 total_voting_weight = 2; -} diff --git a/third_party/proto/tendermint/abci/types.proto b/third_party/proto/tendermint/abci/types.proto new file mode 100644 index 0000000000..8e3a909363 --- /dev/null +++ b/third_party/proto/tendermint/abci/types.proto @@ -0,0 +1,407 @@ +syntax = "proto3"; +package tendermint.abci; + +option go_package = "github.com/tendermint/tendermint/abci/types"; + +// For more information on gogo.proto, see: +// https://github.com/gogo/protobuf/blob/master/extensions.md +import "tendermint/crypto/proof.proto"; +import "tendermint/types/types.proto"; +import "tendermint/crypto/keys.proto"; +import "tendermint/types/params.proto"; +import "google/protobuf/timestamp.proto"; +import "gogoproto/gogo.proto"; + +// This file is copied from http://github.com/tendermint/abci +// NOTE: When using custom types, mind the warnings. +// https://github.com/gogo/protobuf/blob/master/custom_types.md#warnings-and-issues + +//---------------------------------------- +// Request types + +message Request { + oneof value { + RequestEcho echo = 1; + RequestFlush flush = 2; + RequestInfo info = 3; + RequestSetOption set_option = 4; + RequestInitChain init_chain = 5; + RequestQuery query = 6; + RequestBeginBlock begin_block = 7; + RequestCheckTx check_tx = 8; + RequestDeliverTx deliver_tx = 9; + RequestEndBlock end_block = 10; + RequestCommit commit = 11; + RequestListSnapshots list_snapshots = 12; + RequestOfferSnapshot offer_snapshot = 13; + RequestLoadSnapshotChunk load_snapshot_chunk = 14; + RequestApplySnapshotChunk apply_snapshot_chunk = 15; + } +} + +message RequestEcho { + string message = 1; +} + +message RequestFlush {} + +message RequestInfo { + string version = 1; + uint64 block_version = 2; + uint64 p2p_version = 3; +} + +// nondeterministic +message RequestSetOption { + string key = 1; + string value = 2; +} + +message RequestInitChain { + google.protobuf.Timestamp time = 1 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + string chain_id = 2; + ConsensusParams consensus_params = 3; + repeated ValidatorUpdate validators = 4 [(gogoproto.nullable) = false]; + bytes app_state_bytes = 5; + int64 initial_height = 6; +} + +message RequestQuery { + bytes data = 1; + string path = 2; + int64 height = 3; + bool prove = 4; +} + +message RequestBeginBlock { + bytes hash = 1; + tendermint.types.Header header = 2 [(gogoproto.nullable) = false]; + LastCommitInfo last_commit_info = 3 [(gogoproto.nullable) = false]; + repeated Evidence byzantine_validators = 4 [(gogoproto.nullable) = false]; +} + +enum CheckTxType { + NEW = 0 [(gogoproto.enumvalue_customname) = "New"]; + RECHECK = 1 [(gogoproto.enumvalue_customname) = "Recheck"]; +} + +message RequestCheckTx { + bytes tx = 1; + CheckTxType type = 2; +} + +message RequestDeliverTx { + bytes tx = 1; +} + +message RequestEndBlock { + int64 height = 1; +} + +message RequestCommit {} + +// lists available snapshots +message RequestListSnapshots { +} + +// offers a snapshot to the application +message RequestOfferSnapshot { + Snapshot snapshot = 1; // snapshot offered by peers + bytes app_hash = 2; // light client-verified app hash for snapshot height +} + +// loads a snapshot chunk +message RequestLoadSnapshotChunk { + uint64 height = 1; + uint32 format = 2; + uint32 chunk = 3; +} + +// Applies a snapshot chunk +message RequestApplySnapshotChunk { + uint32 index = 1; + bytes chunk = 2; + string sender = 3; +} + +//---------------------------------------- +// Response types + +message Response { + oneof value { + ResponseException exception = 1; + ResponseEcho echo = 2; + ResponseFlush flush = 3; + ResponseInfo info = 4; + ResponseSetOption set_option = 5; + ResponseInitChain init_chain = 6; + ResponseQuery query = 7; + ResponseBeginBlock begin_block = 8; + ResponseCheckTx check_tx = 9; + ResponseDeliverTx deliver_tx = 10; + ResponseEndBlock end_block = 11; + ResponseCommit commit = 12; + ResponseListSnapshots list_snapshots = 13; + ResponseOfferSnapshot offer_snapshot = 14; + ResponseLoadSnapshotChunk load_snapshot_chunk = 15; + ResponseApplySnapshotChunk apply_snapshot_chunk = 16; + } +} + +// nondeterministic +message ResponseException { + string error = 1; +} + +message ResponseEcho { + string message = 1; +} + +message ResponseFlush {} + +message ResponseInfo { + string data = 1; + + string version = 2; + uint64 app_version = 3; + + int64 last_block_height = 4; + bytes last_block_app_hash = 5; +} + +// nondeterministic +message ResponseSetOption { + uint32 code = 1; + // bytes data = 2; + string log = 3; + string info = 4; +} + +message ResponseInitChain { + ConsensusParams consensus_params = 1; + repeated ValidatorUpdate validators = 2 [(gogoproto.nullable) = false]; + bytes app_hash = 3; +} + +message ResponseQuery { + uint32 code = 1; + // bytes data = 2; // use "value" instead. + string log = 3; // nondeterministic + string info = 4; // nondeterministic + int64 index = 5; + bytes key = 6; + bytes value = 7; + tendermint.crypto.ProofOps proof_ops = 8; + int64 height = 9; + string codespace = 10; +} + +message ResponseBeginBlock { + repeated Event events = 1 + [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; +} + +message ResponseCheckTx { + uint32 code = 1; + bytes data = 2; + string log = 3; // nondeterministic + string info = 4; // nondeterministic + int64 gas_wanted = 5 [json_name = "gas_wanted"]; + int64 gas_used = 6 [json_name = "gas_used"]; + repeated Event events = 7 + [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; + string codespace = 8; +} + +message ResponseDeliverTx { + uint32 code = 1; + bytes data = 2; + string log = 3; // nondeterministic + string info = 4; // nondeterministic + int64 gas_wanted = 5 [json_name = "gas_wanted"]; + int64 gas_used = 6 [json_name = "gas_used"]; + repeated Event events = 7 + [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; // nondeterministic + string codespace = 8; +} + +message ResponseEndBlock { + repeated ValidatorUpdate validator_updates = 1 + [(gogoproto.nullable) = false]; + ConsensusParams consensus_param_updates = 2; + repeated Event events = 3 + [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; +} + +message ResponseCommit { + // reserve 1 + bytes data = 2; + int64 retain_height = 3; +} + +message ResponseListSnapshots { + repeated Snapshot snapshots = 1; +} + +message ResponseOfferSnapshot { + Result result = 1; + + enum Result { + UNKNOWN = 0; // Unknown result, abort all snapshot restoration + ACCEPT = 1; // Snapshot accepted, apply chunks + ABORT = 2; // Abort all snapshot restoration + REJECT = 3; // Reject this specific snapshot, try others + REJECT_FORMAT = 4; // Reject all snapshots of this format, try others + REJECT_SENDER = 5; // Reject all snapshots from the sender(s), try others + } +} + +message ResponseLoadSnapshotChunk { + bytes chunk = 1; +} + +message ResponseApplySnapshotChunk { + Result result = 1; + repeated uint32 refetch_chunks = 2; // Chunks to refetch and reapply + repeated string reject_senders = 3; // Chunk senders to reject and ban + + enum Result { + UNKNOWN = 0; // Unknown result, abort all snapshot restoration + ACCEPT = 1; // Chunk successfully accepted + ABORT = 2; // Abort all snapshot restoration + RETRY = 3; // Retry chunk (combine with refetch and reject) + RETRY_SNAPSHOT = 4; // Retry snapshot (combine with refetch and reject) + REJECT_SNAPSHOT = 5; // Reject this snapshot, try others + } +} + +//---------------------------------------- +// Misc. + +// ConsensusParams contains all consensus-relevant parameters +// that can be adjusted by the abci app +message ConsensusParams { + BlockParams block = 1; + tendermint.types.EvidenceParams evidence = 2; + tendermint.types.ValidatorParams validator = 3; + tendermint.types.VersionParams version = 4; +} + +// BlockParams contains limits on the block size. +message BlockParams { + // Note: must be greater than 0 + int64 max_bytes = 1; + // Note: must be greater or equal to -1 + int64 max_gas = 2; +} + +message LastCommitInfo { + int32 round = 1; + repeated VoteInfo votes = 2 [(gogoproto.nullable) = false]; +} + +// Event allows application developers to attach additional information to +// ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and ResponseDeliverTx. +// Later, transactions may be queried using these events. +message Event { + string type = 1; + repeated EventAttribute attributes = 2 [ + (gogoproto.nullable) = false, + (gogoproto.jsontag) = "attributes,omitempty" + ]; +} + +// EventAttribute is a single key-value pair, associated with an event. +message EventAttribute { + bytes key = 1; + bytes value = 2; + bool index = 3; // nondeterministic +} + +// TxResult contains results of executing the transaction. +// +// One usage is indexing transaction results. +message TxResult { + int64 height = 1; + uint32 index = 2; + bytes tx = 3; + ResponseDeliverTx result = 4 [(gogoproto.nullable) = false]; +} + +//---------------------------------------- +// Blockchain Types + +// Validator +message Validator { + bytes address = 1; // The first 20 bytes of SHA256(public key) + // PubKey pub_key = 2 [(gogoproto.nullable)=false]; + int64 power = 3; // The voting power +} + +// ValidatorUpdate +message ValidatorUpdate { + tendermint.crypto.PublicKey pub_key = 1 [(gogoproto.nullable) = false]; + int64 power = 2; +} + +// VoteInfo +message VoteInfo { + Validator validator = 1 [(gogoproto.nullable) = false]; + bool signed_last_block = 2; +} + +enum EvidenceType { + UNKNOWN = 0; + DUPLICATE_VOTE = 1; + LIGHT_CLIENT_ATTACK = 2; +} + +message Evidence { + EvidenceType type = 1; + // The offending validator + Validator validator = 2 [(gogoproto.nullable) = false]; + // The height when the offense occurred + int64 height = 3; + // The corresponding time where the offense occurred + google.protobuf.Timestamp time = 4 [ + (gogoproto.nullable) = false, + (gogoproto.stdtime) = true + ]; + // Total voting power of the validator set in case the ABCI application does + // not store historical validators. + // https://github.com/tendermint/tendermint/issues/4581 + int64 total_voting_power = 5; +} + +//---------------------------------------- +// State Sync Types + +message Snapshot { + uint64 height = 1; // The height at which the snapshot was taken + uint32 format = 2; // The application-specific snapshot format + uint32 chunks = 3; // Number of chunks in the snapshot + bytes hash = 4; // Arbitrary snapshot hash, equal only if identical + bytes metadata = 5; // Arbitrary application metadata +} + +//---------------------------------------- +// Service Definition + +service ABCIApplication { + rpc Echo(RequestEcho) returns (ResponseEcho); + rpc Flush(RequestFlush) returns (ResponseFlush); + rpc Info(RequestInfo) returns (ResponseInfo); + rpc SetOption(RequestSetOption) returns (ResponseSetOption); + rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx); + rpc CheckTx(RequestCheckTx) returns (ResponseCheckTx); + rpc Query(RequestQuery) returns (ResponseQuery); + rpc Commit(RequestCommit) returns (ResponseCommit); + rpc InitChain(RequestInitChain) returns (ResponseInitChain); + rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); + rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); + rpc ListSnapshots(RequestListSnapshots) returns (ResponseListSnapshots); + rpc OfferSnapshot(RequestOfferSnapshot) returns (ResponseOfferSnapshot); + rpc LoadSnapshotChunk(RequestLoadSnapshotChunk) returns (ResponseLoadSnapshotChunk); + rpc ApplySnapshotChunk(RequestApplySnapshotChunk) returns (ResponseApplySnapshotChunk); +} diff --git a/third_party/proto/tendermint/blockchain/types.proto b/third_party/proto/tendermint/blockchain/types.proto new file mode 100644 index 0000000000..f5c143cf5b --- /dev/null +++ b/third_party/proto/tendermint/blockchain/types.proto @@ -0,0 +1,41 @@ +syntax = "proto3"; +package tendermint.blockchain; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/blockchain"; + +import "tendermint/types/block.proto"; + +// BlockRequest requests a block for a specific height +message BlockRequest { + int64 height = 1; +} + +// NoBlockResponse informs the node that the peer does not have block at the requested height +message NoBlockResponse { + int64 height = 1; +} + +// BlockResponse returns block to the requested +message BlockResponse { + tendermint.types.Block block = 1; +} + +// StatusRequest requests the status of a peer. +message StatusRequest { +} + +// StatusResponse is a peer response to inform their status. +message StatusResponse { + int64 height = 1; + int64 base = 2; +} + +message Message { + oneof sum { + BlockRequest block_request = 1; + NoBlockResponse no_block_response = 2; + BlockResponse block_response = 3; + StatusRequest status_request = 4; + StatusResponse status_response = 5; + } +} diff --git a/third_party/proto/tendermint/consensus/types.proto b/third_party/proto/tendermint/consensus/types.proto new file mode 100644 index 0000000000..6e1f413711 --- /dev/null +++ b/third_party/proto/tendermint/consensus/types.proto @@ -0,0 +1,92 @@ +syntax = "proto3"; +package tendermint.consensus; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/consensus"; + +import "gogoproto/gogo.proto"; +import "tendermint/types/types.proto"; +import "tendermint/libs/bits/types.proto"; + +// NewRoundStep is sent for every step taken in the ConsensusState. +// For every height/round/step transition +message NewRoundStep { + int64 height = 1; + int32 round = 2; + uint32 step = 3; + int64 seconds_since_start_time = 4; + int32 last_commit_round = 5; +} + +// NewValidBlock is sent when a validator observes a valid block B in some round r, +//i.e., there is a Proposal for block B and 2/3+ prevotes for the block B in the round r. +// In case the block is also committed, then IsCommit flag is set to true. +message NewValidBlock { + int64 height = 1; + int32 round = 2; + tendermint.types.PartSetHeader block_part_set_header = 3 [(gogoproto.nullable) = false]; + tendermint.libs.bits.BitArray block_parts = 4; + bool is_commit = 5; +} + +// Proposal is sent when a new block is proposed. +message Proposal { + tendermint.types.Proposal proposal = 1 [(gogoproto.nullable) = false]; +} + +// ProposalPOL is sent when a previous proposal is re-proposed. +message ProposalPOL { + int64 height = 1; + int32 proposal_pol_round = 2; + tendermint.libs.bits.BitArray proposal_pol = 3 [(gogoproto.nullable) = false]; +} + +// BlockPart is sent when gossipping a piece of the proposed block. +message BlockPart { + int64 height = 1; + int32 round = 2; + tendermint.types.Part part = 3 [(gogoproto.nullable) = false]; +} + +// Vote is sent when voting for a proposal (or lack thereof). +message Vote { + tendermint.types.Vote vote = 1; +} + +// HasVote is sent to indicate that a particular vote has been received. +message HasVote { + int64 height = 1; + int32 round = 2; + tendermint.types.SignedMsgType type = 3; + int32 index = 4; +} + +// VoteSetMaj23 is sent to indicate that a given BlockID has seen +2/3 votes. +message VoteSetMaj23 { + int64 height = 1; + int32 round = 2; + tendermint.types.SignedMsgType type = 3; + tendermint.types.BlockID block_id = 4 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; +} + +// VoteSetBits is sent to communicate the bit-array of votes seen for the BlockID. +message VoteSetBits { + int64 height = 1; + int32 round = 2; + tendermint.types.SignedMsgType type = 3; + tendermint.types.BlockID block_id = 4 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; + tendermint.libs.bits.BitArray votes = 5 [(gogoproto.nullable) = false]; +} + +message Message { + oneof sum { + NewRoundStep new_round_step = 1; + NewValidBlock new_valid_block = 2; + Proposal proposal = 3; + ProposalPOL proposal_pol = 4; + BlockPart block_part = 5; + Vote vote = 6; + HasVote has_vote = 7; + VoteSetMaj23 vote_set_maj23 = 8; + VoteSetBits vote_set_bits = 9; + } +} diff --git a/third_party/proto/tendermint/consensus/wal.proto b/third_party/proto/tendermint/consensus/wal.proto new file mode 100644 index 0000000000..44afa2c0c3 --- /dev/null +++ b/third_party/proto/tendermint/consensus/wal.proto @@ -0,0 +1,46 @@ +syntax = "proto3"; +package tendermint.consensus; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/consensus"; + +import "gogoproto/gogo.proto"; +import "tendermint/consensus/types.proto"; +import "tendermint/types/events.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; + +// MsgInfo are msgs from the reactor which may update the state +message MsgInfo { + Message msg = 1 [(gogoproto.nullable) = false]; + string peer_id = 2 [(gogoproto.customname) = "PeerID"]; +} + +// TimeoutInfo internally generated messages which may update the state +message TimeoutInfo { + google.protobuf.Duration duration = 1 + [(gogoproto.nullable) = false, (gogoproto.stdduration) = true]; + int64 height = 2; + int32 round = 3; + uint32 step = 4; +} + +// EndHeight marks the end of the given height inside WAL. +// @internal used by scripts/wal2json util. +message EndHeight { + int64 height = 1; +} + +message WALMessage { + oneof sum { + tendermint.types.EventDataRoundState event_data_round_state = 1; + MsgInfo msg_info = 2; + TimeoutInfo timeout_info = 3; + EndHeight end_height = 4; + } +} + +// TimedWALMessage wraps WALMessage and adds Time for debugging purposes. +message TimedWALMessage { + google.protobuf.Timestamp time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + WALMessage msg = 2; +} diff --git a/third_party/proto/ostracon/crypto/keys.proto b/third_party/proto/tendermint/crypto/keys.proto similarity index 54% rename from third_party/proto/ostracon/crypto/keys.proto rename to third_party/proto/tendermint/crypto/keys.proto index c375549cb2..16fd7adf3e 100644 --- a/third_party/proto/ostracon/crypto/keys.proto +++ b/third_party/proto/tendermint/crypto/keys.proto @@ -1,11 +1,11 @@ syntax = "proto3"; -package ostracon.crypto; +package tendermint.crypto; -option go_package = "github.com/line/ostracon/proto/ostracon/crypto"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/crypto"; import "gogoproto/gogo.proto"; -// PublicKey defines the keys available for use with Ostracon Validators +// PublicKey defines the keys available for use with Tendermint Validators message PublicKey { option (gogoproto.compare) = true; option (gogoproto.equal) = true; diff --git a/third_party/proto/ostracon/crypto/proof.proto b/third_party/proto/tendermint/crypto/proof.proto similarity index 88% rename from third_party/proto/ostracon/crypto/proof.proto rename to third_party/proto/tendermint/crypto/proof.proto index 7ea7b277f7..975df76853 100644 --- a/third_party/proto/ostracon/crypto/proof.proto +++ b/third_party/proto/tendermint/crypto/proof.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package ostracon.crypto; +package tendermint.crypto; -option go_package = "github.com/line/ostracon/proto/ostracon/crypto"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/crypto"; import "gogoproto/gogo.proto"; diff --git a/third_party/proto/tendermint/libs/bits/types.proto b/third_party/proto/tendermint/libs/bits/types.proto new file mode 100644 index 0000000000..3111d113a5 --- /dev/null +++ b/third_party/proto/tendermint/libs/bits/types.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; +package tendermint.libs.bits; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/libs/bits"; + +message BitArray { + int64 bits = 1; + repeated uint64 elems = 2; +} diff --git a/third_party/proto/tendermint/mempool/types.proto b/third_party/proto/tendermint/mempool/types.proto new file mode 100644 index 0000000000..b55d9717b1 --- /dev/null +++ b/third_party/proto/tendermint/mempool/types.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package tendermint.mempool; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/mempool"; + +message Txs { + repeated bytes txs = 1; +} + +message Message { + oneof sum { + Txs txs = 1; + } +} diff --git a/third_party/proto/tendermint/p2p/pex.proto b/third_party/proto/tendermint/p2p/pex.proto new file mode 100644 index 0000000000..dfe238dbe6 --- /dev/null +++ b/third_party/proto/tendermint/p2p/pex.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; +package tendermint.p2p; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/p2p"; + +import "tendermint/p2p/types.proto"; +import "gogoproto/gogo.proto"; + +message PexRequest {} + +message PexAddrs { + repeated NetAddress addrs = 1 [(gogoproto.nullable) = false]; +} + +message Message { + oneof sum { + PexRequest pex_request = 1; + PexAddrs pex_addrs = 2; + } +} diff --git a/third_party/proto/ostracon/p2p/types.proto b/third_party/proto/tendermint/p2p/types.proto similarity index 90% rename from third_party/proto/ostracon/p2p/types.proto rename to third_party/proto/tendermint/p2p/types.proto index 4db1912637..0d42ea4002 100644 --- a/third_party/proto/ostracon/p2p/types.proto +++ b/third_party/proto/tendermint/p2p/types.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package ostracon.p2p; +package tendermint.p2p; -option go_package = "github.com/line/ostracon/proto/ostracon/p2p"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/p2p"; import "gogoproto/gogo.proto"; diff --git a/third_party/proto/tendermint/privval/types.proto b/third_party/proto/tendermint/privval/types.proto new file mode 100644 index 0000000000..0fc8b61dc9 --- /dev/null +++ b/third_party/proto/tendermint/privval/types.proto @@ -0,0 +1,76 @@ +syntax = "proto3"; +package tendermint.privval; + +import "tendermint/crypto/keys.proto"; +import "tendermint/types/types.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/privval"; + +enum Errors { + ERRORS_UNKNOWN = 0; + ERRORS_UNEXPECTED_RESPONSE = 1; + ERRORS_NO_CONNECTION = 2; + ERRORS_CONNECTION_TIMEOUT = 3; + ERRORS_READ_TIMEOUT = 4; + ERRORS_WRITE_TIMEOUT = 5; +} + +message RemoteSignerError { + int32 code = 1; + string description = 2; +} + +// PubKeyRequest requests the consensus public key from the remote signer. +message PubKeyRequest { + string chain_id = 1; +} + +// PubKeyResponse is a response message containing the public key. +message PubKeyResponse { + tendermint.crypto.PublicKey pub_key = 1 [(gogoproto.nullable) = false]; + RemoteSignerError error = 2; +} + +// SignVoteRequest is a request to sign a vote +message SignVoteRequest { + tendermint.types.Vote vote = 1; + string chain_id = 2; +} + +// SignedVoteResponse is a response containing a signed vote or an error +message SignedVoteResponse { + tendermint.types.Vote vote = 1 [(gogoproto.nullable) = false]; + RemoteSignerError error = 2; +} + +// SignProposalRequest is a request to sign a proposal +message SignProposalRequest { + tendermint.types.Proposal proposal = 1; + string chain_id = 2; +} + +// SignedProposalResponse is response containing a signed proposal or an error +message SignedProposalResponse { + tendermint.types.Proposal proposal = 1 [(gogoproto.nullable) = false]; + RemoteSignerError error = 2; +} + +// PingRequest is a request to confirm that the connection is alive. +message PingRequest {} + +// PingResponse is a response to confirm that the connection is alive. +message PingResponse {} + +message Message { + oneof sum { + PubKeyRequest pub_key_request = 1; + PubKeyResponse pub_key_response = 2; + SignVoteRequest sign_vote_request = 3; + SignedVoteResponse signed_vote_response = 4; + SignProposalRequest sign_proposal_request = 5; + SignedProposalResponse signed_proposal_response = 6; + PingRequest ping_request = 7; + PingResponse ping_response = 8; + } +} diff --git a/third_party/proto/tendermint/state/types.proto b/third_party/proto/tendermint/state/types.proto new file mode 100644 index 0000000000..919da91e52 --- /dev/null +++ b/third_party/proto/tendermint/state/types.proto @@ -0,0 +1,75 @@ +syntax = "proto3"; +package tendermint.state; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/state"; + +import "gogoproto/gogo.proto"; +import "tendermint/abci/types.proto"; +import "tendermint/types/types.proto"; +import "tendermint/types/validator.proto"; +import "tendermint/types/params.proto"; +import "tendermint/version/types.proto"; +import "google/protobuf/timestamp.proto"; + +// ABCIResponses retains the responses +// of the various ABCI calls during block processing. +// It is persisted to disk for each height before calling Commit. +message ABCIResponses { + repeated tendermint.abci.ResponseDeliverTx deliver_txs = 1; + tendermint.abci.ResponseEndBlock end_block = 2; + tendermint.abci.ResponseBeginBlock begin_block = 3; +} + +// ValidatorsInfo represents the latest validator set, or the last height it changed +message ValidatorsInfo { + tendermint.types.ValidatorSet validator_set = 1; + int64 last_height_changed = 2; +} + +// ConsensusParamsInfo represents the latest consensus params, or the last height it changed +message ConsensusParamsInfo { + tendermint.types.ConsensusParams consensus_params = 1 [(gogoproto.nullable) = false]; + int64 last_height_changed = 2; +} + +message Version { + tendermint.version.Consensus consensus = 1 [(gogoproto.nullable) = false]; + string software = 2; +} + +message State { + Version version = 1 [(gogoproto.nullable) = false]; + + // immutable + string chain_id = 2 [(gogoproto.customname) = "ChainID"]; + int64 initial_height = 14; + + // LastBlockHeight=0 at genesis (ie. block(H=0) does not exist) + int64 last_block_height = 3; + tendermint.types.BlockID last_block_id = 4 + [(gogoproto.nullable) = false, (gogoproto.customname) = "LastBlockID"]; + google.protobuf.Timestamp last_block_time = 5 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + + // LastValidators is used to validate block.LastCommit. + // Validators are persisted to the database separately every time they change, + // so we can query for historical validator sets. + // Note that if s.LastBlockHeight causes a valset change, + // we set s.LastHeightValidatorsChanged = s.LastBlockHeight + 1 + 1 + // Extra +1 due to nextValSet delay. + tendermint.types.ValidatorSet next_validators = 6; + tendermint.types.ValidatorSet validators = 7; + tendermint.types.ValidatorSet last_validators = 8; + int64 last_height_validators_changed = 9; + + // Consensus parameters used for validating blocks. + // Changes returned by EndBlock and updated after Commit. + tendermint.types.ConsensusParams consensus_params = 10 [(gogoproto.nullable) = false]; + int64 last_height_consensus_params_changed = 11; + + // Merkle root of the results from executing prev block + bytes last_results_hash = 12; + + // the latest AppHash we've received from calling abci.Commit() + bytes app_hash = 13; +} diff --git a/third_party/proto/tendermint/statesync/types.proto b/third_party/proto/tendermint/statesync/types.proto new file mode 100644 index 0000000000..8d4a714c1d --- /dev/null +++ b/third_party/proto/tendermint/statesync/types.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; +package tendermint.statesync; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/statesync"; + +message Message { + oneof sum { + SnapshotsRequest snapshots_request = 1; + SnapshotsResponse snapshots_response = 2; + ChunkRequest chunk_request = 3; + ChunkResponse chunk_response = 4; + } +} + +message SnapshotsRequest {} + +message SnapshotsResponse { + uint64 height = 1; + uint32 format = 2; + uint32 chunks = 3; + bytes hash = 4; + bytes metadata = 5; +} + +message ChunkRequest { + uint64 height = 1; + uint32 format = 2; + uint32 index = 3; +} + +message ChunkResponse { + uint64 height = 1; + uint32 format = 2; + uint32 index = 3; + bytes chunk = 4; + bool missing = 5; +} diff --git a/third_party/proto/tendermint/store/types.proto b/third_party/proto/tendermint/store/types.proto new file mode 100644 index 0000000000..af2f97ad08 --- /dev/null +++ b/third_party/proto/tendermint/store/types.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; +package tendermint.store; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/store"; + +message BlockStoreState { + int64 base = 1; + int64 height = 2; +} diff --git a/third_party/proto/tendermint/types/block.proto b/third_party/proto/tendermint/types/block.proto new file mode 100644 index 0000000000..84e9bb15d8 --- /dev/null +++ b/third_party/proto/tendermint/types/block.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package tendermint.types; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; + +import "gogoproto/gogo.proto"; +import "tendermint/types/types.proto"; +import "tendermint/types/evidence.proto"; + +message Block { + Header header = 1 [(gogoproto.nullable) = false]; + Data data = 2 [(gogoproto.nullable) = false]; + tendermint.types.EvidenceList evidence = 3 [(gogoproto.nullable) = false]; + Commit last_commit = 4; +} diff --git a/third_party/proto/tendermint/types/canonical.proto b/third_party/proto/tendermint/types/canonical.proto new file mode 100644 index 0000000000..e88fd6ffe3 --- /dev/null +++ b/third_party/proto/tendermint/types/canonical.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; +package tendermint.types; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; + +import "gogoproto/gogo.proto"; +import "tendermint/types/types.proto"; +import "google/protobuf/timestamp.proto"; + +message CanonicalBlockID { + bytes hash = 1; + CanonicalPartSetHeader part_set_header = 2 [(gogoproto.nullable) = false]; +} + +message CanonicalPartSetHeader { + uint32 total = 1; + bytes hash = 2; +} + +message CanonicalProposal { + SignedMsgType type = 1; // type alias for byte + sfixed64 height = 2; // canonicalization requires fixed size encoding here + sfixed64 round = 3; // canonicalization requires fixed size encoding here + int64 pol_round = 4 [(gogoproto.customname) = "POLRound"]; + CanonicalBlockID block_id = 5 [(gogoproto.customname) = "BlockID"]; + google.protobuf.Timestamp timestamp = 6 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + string chain_id = 7 [(gogoproto.customname) = "ChainID"]; +} + +message CanonicalVote { + SignedMsgType type = 1; // type alias for byte + sfixed64 height = 2; // canonicalization requires fixed size encoding here + sfixed64 round = 3; // canonicalization requires fixed size encoding here + CanonicalBlockID block_id = 4 [(gogoproto.customname) = "BlockID"]; + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + string chain_id = 6 [(gogoproto.customname) = "ChainID"]; +} diff --git a/third_party/proto/tendermint/types/events.proto b/third_party/proto/tendermint/types/events.proto new file mode 100644 index 0000000000..a1e5cc498d --- /dev/null +++ b/third_party/proto/tendermint/types/events.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; +package tendermint.types; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; + +message EventDataRoundState { + int64 height = 1; + int32 round = 2; + string step = 3; +} diff --git a/third_party/proto/tendermint/types/evidence.proto b/third_party/proto/tendermint/types/evidence.proto new file mode 100644 index 0000000000..3b234571ba --- /dev/null +++ b/third_party/proto/tendermint/types/evidence.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; +package tendermint.types; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; + +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; +import "tendermint/types/types.proto"; +import "tendermint/types/validator.proto"; + +message Evidence { + oneof sum { + DuplicateVoteEvidence duplicate_vote_evidence = 1; + LightClientAttackEvidence light_client_attack_evidence = 2; + } +} + +// DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. +message DuplicateVoteEvidence { + tendermint.types.Vote vote_a = 1; + tendermint.types.Vote vote_b = 2; + int64 total_voting_power = 3; + int64 validator_power = 4; + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; +} + +// LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. +message LightClientAttackEvidence { + tendermint.types.LightBlock conflicting_block = 1; + int64 common_height = 2; + repeated tendermint.types.Validator byzantine_validators = 3; + int64 total_voting_power = 4; + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; +} + +message EvidenceList { + repeated Evidence evidence = 1 [(gogoproto.nullable) = false]; +} diff --git a/third_party/proto/ostracon/types/params.proto b/third_party/proto/tendermint/types/params.proto similarity index 95% rename from third_party/proto/ostracon/types/params.proto rename to third_party/proto/tendermint/types/params.proto index 37f39b47b1..0de7d846fb 100644 --- a/third_party/proto/ostracon/types/params.proto +++ b/third_party/proto/tendermint/types/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package ostracon.types; +package tendermint.types; -option go_package = "github.com/line/ostracon/proto/ostracon/types"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; diff --git a/third_party/proto/tendermint/types/types.proto b/third_party/proto/tendermint/types/types.proto new file mode 100644 index 0000000000..7f7ea74cac --- /dev/null +++ b/third_party/proto/tendermint/types/types.proto @@ -0,0 +1,157 @@ +syntax = "proto3"; +package tendermint.types; + +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; + +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; +import "tendermint/crypto/proof.proto"; +import "tendermint/version/types.proto"; +import "tendermint/types/validator.proto"; + +// BlockIdFlag indicates which BlcokID the signature is for +enum BlockIDFlag { + option (gogoproto.goproto_enum_stringer) = true; + option (gogoproto.goproto_enum_prefix) = false; + + BLOCK_ID_FLAG_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "BlockIDFlagUnknown"]; + BLOCK_ID_FLAG_ABSENT = 1 [(gogoproto.enumvalue_customname) = "BlockIDFlagAbsent"]; + BLOCK_ID_FLAG_COMMIT = 2 [(gogoproto.enumvalue_customname) = "BlockIDFlagCommit"]; + BLOCK_ID_FLAG_NIL = 3 [(gogoproto.enumvalue_customname) = "BlockIDFlagNil"]; +} + +// SignedMsgType is a type of signed message in the consensus. +enum SignedMsgType { + option (gogoproto.goproto_enum_stringer) = true; + option (gogoproto.goproto_enum_prefix) = false; + + SIGNED_MSG_TYPE_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "UnknownType"]; + // Votes + SIGNED_MSG_TYPE_PREVOTE = 1 [(gogoproto.enumvalue_customname) = "PrevoteType"]; + SIGNED_MSG_TYPE_PRECOMMIT = 2 [(gogoproto.enumvalue_customname) = "PrecommitType"]; + + // Proposals + SIGNED_MSG_TYPE_PROPOSAL = 32 [(gogoproto.enumvalue_customname) = "ProposalType"]; +} + +// PartsetHeader +message PartSetHeader { + uint32 total = 1; + bytes hash = 2; +} + +message Part { + uint32 index = 1; + bytes bytes = 2; + tendermint.crypto.Proof proof = 3 [(gogoproto.nullable) = false]; +} + +// BlockID +message BlockID { + bytes hash = 1; + PartSetHeader part_set_header = 2 [(gogoproto.nullable) = false]; +} + +// -------------------------------- + +// Header defines the structure of a Tendermint block header. +message Header { + // basic block info + tendermint.version.Consensus version = 1 [(gogoproto.nullable) = false]; + string chain_id = 2 [(gogoproto.customname) = "ChainID"]; + int64 height = 3; + google.protobuf.Timestamp time = 4 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + + // prev block info + BlockID last_block_id = 5 [(gogoproto.nullable) = false]; + + // hashes of block data + bytes last_commit_hash = 6; // commit from validators from the last block + bytes data_hash = 7; // transactions + + // hashes from the app output from the prev block + bytes validators_hash = 8; // validators for the current block + bytes next_validators_hash = 9; // validators for the next block + bytes consensus_hash = 10; // consensus params for current block + bytes app_hash = 11; // state after txs from the previous block + bytes last_results_hash = 12; // root hash of all results from the txs from the previous block + + // consensus info + bytes evidence_hash = 13; // evidence included in the block + bytes proposer_address = 14; // original proposer of the block +} + +// Data contains the set of transactions included in the block +message Data { + // Txs that will be applied by state @ block.Height+1. + // NOTE: not all txs here are valid. We're just agreeing on the order first. + // This means that block.AppHash does not include these txs. + repeated bytes txs = 1; +} + +// Vote represents a prevote, precommit, or commit vote from validators for +// consensus. +message Vote { + SignedMsgType type = 1; + int64 height = 2; + int32 round = 3; + BlockID block_id = 4 + [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; // zero if vote is nil. + google.protobuf.Timestamp timestamp = 5 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + bytes validator_address = 6; + int32 validator_index = 7; + bytes signature = 8; +} + +// Commit contains the evidence that a block was committed by a set of validators. +message Commit { + int64 height = 1; + int32 round = 2; + BlockID block_id = 3 [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; + repeated CommitSig signatures = 4 [(gogoproto.nullable) = false]; +} + +// CommitSig is a part of the Vote included in a Commit. +message CommitSig { + BlockIDFlag block_id_flag = 1; + bytes validator_address = 2; + google.protobuf.Timestamp timestamp = 3 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + bytes signature = 4; +} + +message Proposal { + SignedMsgType type = 1; + int64 height = 2; + int32 round = 3; + int32 pol_round = 4; + BlockID block_id = 5 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; + google.protobuf.Timestamp timestamp = 6 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + bytes signature = 7; +} + +message SignedHeader { + Header header = 1; + Commit commit = 2; +} + +message LightBlock { + SignedHeader signed_header = 1; + tendermint.types.ValidatorSet validator_set = 2; +} + +message BlockMeta { + BlockID block_id = 1 [(gogoproto.customname) = "BlockID", (gogoproto.nullable) = false]; + int64 block_size = 2; + Header header = 3 [(gogoproto.nullable) = false]; + int64 num_txs = 4; +} + +// TxProof represents a Merkle proof of the presence of a transaction in the Merkle tree. +message TxProof { + bytes root_hash = 1; + bytes data = 2; + tendermint.crypto.Proof proof = 3; +} diff --git a/third_party/proto/ostracon/types/validator.proto b/third_party/proto/tendermint/types/validator.proto similarity index 61% rename from third_party/proto/ostracon/types/validator.proto rename to third_party/proto/tendermint/types/validator.proto index 378bde5ce8..49860b96d6 100644 --- a/third_party/proto/ostracon/types/validator.proto +++ b/third_party/proto/tendermint/types/validator.proto @@ -1,10 +1,10 @@ syntax = "proto3"; -package ostracon.types; +package tendermint.types; -option go_package = "github.com/line/ostracon/proto/ostracon/types"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; import "gogoproto/gogo.proto"; -import "ostracon/crypto/keys.proto"; +import "tendermint/crypto/keys.proto"; message ValidatorSet { repeated Validator validators = 1; @@ -14,15 +14,12 @@ message ValidatorSet { message Validator { bytes address = 1; - ostracon.crypto.PublicKey pub_key = 2 [(gogoproto.nullable) = false]; + tendermint.crypto.PublicKey pub_key = 2 [(gogoproto.nullable) = false]; int64 voting_power = 3; int64 proposer_priority = 4; - - // *** Ostracon Extended Fields *** - int64 voting_weight = 1000; } message SimpleValidator { - ostracon.crypto.PublicKey pub_key = 1; + tendermint.crypto.PublicKey pub_key = 1; int64 voting_power = 2; } diff --git a/third_party/proto/ostracon/version/types.proto b/third_party/proto/tendermint/version/types.proto similarity index 84% rename from third_party/proto/ostracon/version/types.proto rename to third_party/proto/tendermint/version/types.proto index 135dbd49ee..6061868bd4 100644 --- a/third_party/proto/ostracon/version/types.proto +++ b/third_party/proto/tendermint/version/types.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package ostracon.version; +package tendermint.version; -option go_package = "github.com/line/ostracon/proto/ostracon/version"; +option go_package = "github.com/tendermint/tendermint/proto/tendermint/version"; import "gogoproto/gogo.proto"; diff --git a/tools/cosmovisor/upgrade.sh b/tools/cosmovisor/upgrade.sh index ca0f72dfd4..01f74007a7 100644 --- a/tools/cosmovisor/upgrade.sh +++ b/tools/cosmovisor/upgrade.sh @@ -12,7 +12,7 @@ set -e UPGRADE_HEIGHT=5 assert_begin() { - info=$($DAEMON_NAME q block 2>/dev/null) + info=$($DAEMON_NAME q block --log_level info 2>/dev/null) if [ -z "$info" ] then return 1 diff --git a/types/abci.go b/types/abci.go index c3a68bf6cf..f65c42e016 100644 --- a/types/abci.go +++ b/types/abci.go @@ -1,6 +1,10 @@ package types -import abci "github.com/line/ostracon/abci/types" +import ( + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" +) // InitChainer initializes application state at genesis type InitChainer func(ctx Context, req abci.RequestInitChain) abci.ResponseInitChain @@ -9,7 +13,7 @@ type InitChainer func(ctx Context, req abci.RequestInitChain) abci.ResponseInitC // // Note: applications which set create_empty_blocks=false will not have regular block timing and should use // e.g. BFT timestamps rather than block height for any periodic BeginBlock logic -type BeginBlocker func(ctx Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock +type BeginBlocker func(ctx Context, req ocabci.RequestBeginBlock) abci.ResponseBeginBlock // EndBlocker runs code after the transactions in a block and return updates to the validator set // diff --git a/types/abci.pb.go b/types/abci.pb.go index 10b15d91a9..e537bb58c7 100644 --- a/types/abci.pb.go +++ b/types/abci.pb.go @@ -8,7 +8,8 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" types "github.com/line/lbm-sdk/codec/types" - types1 "github.com/line/ostracon/abci/types" + _ "github.com/line/ostracon/abci/types" + types1 "github.com/tendermint/tendermint/abci/types" io "io" math "math" math_bits "math/bits" @@ -618,66 +619,67 @@ func init() { } var fileDescriptor_4e37629bc7eb0df8 = []byte{ - // 937 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcf, 0x8f, 0xdb, 0x44, - 0x14, 0x8e, 0x93, 0xd4, 0xd9, 0xbc, 0x6c, 0xbb, 0x30, 0x04, 0xea, 0x2d, 0x34, 0x0e, 0xde, 0x56, - 0xca, 0x05, 0x47, 0x4d, 0x01, 0xa1, 0x45, 0x42, 0x6a, 0x0a, 0xa5, 0x2b, 0xb5, 0x1c, 0xbc, 0xa9, - 0x90, 0xb8, 0x44, 0x93, 0x64, 0x3a, 0xb1, 0x6a, 0x7b, 0x22, 0xcf, 0x64, 0xd7, 0xb9, 0x71, 0xe4, - 0xc8, 0x89, 0x03, 0x27, 0xce, 0xfc, 0x25, 0xbd, 0xb1, 0xc7, 0x1e, 0x50, 0x28, 0xbb, 0xb7, 0x1e, - 0xf7, 0x2f, 0x40, 0xf3, 0xc6, 0x49, 0xbc, 0xa0, 0x54, 0xdc, 0xe6, 0x7b, 0xbf, 0xe6, 0xbd, 0xef, - 0x7d, 0x1e, 0xc3, 0xc1, 0x58, 0xc8, 0x58, 0xc8, 0xee, 0x88, 0x4a, 0xd6, 0xa5, 0xa3, 0x71, 0xd8, - 0x3d, 0xb9, 0x37, 0x62, 0x8a, 0xde, 0x43, 0xe0, 0xcf, 0x52, 0xa1, 0x04, 0x71, 0x4c, 0x90, 0xaf, - 0x83, 0x7c, 0xb4, 0xe7, 0x41, 0xb7, 0x9a, 0x5c, 0x70, 0x81, 0x41, 0x5d, 0x7d, 0x32, 0xf1, 0xb7, - 0xf6, 0x85, 0x54, 0x29, 0x1d, 0x8b, 0xc4, 0x54, 0x54, 0x8b, 0x19, 0x93, 0x2b, 0x17, 0x17, 0x82, - 0x47, 0xac, 0x8b, 0x68, 0x34, 0x7f, 0xde, 0xa5, 0xc9, 0xc2, 0xb8, 0xbc, 0xd7, 0x15, 0x80, 0x41, - 0x16, 0x30, 0x39, 0x13, 0x89, 0x64, 0xe4, 0x03, 0xb0, 0xa7, 0x2c, 0xe4, 0x53, 0xe5, 0x58, 0x6d, - 0xab, 0x53, 0x09, 0x72, 0x44, 0x3c, 0xb0, 0x55, 0x36, 0xa5, 0x72, 0xea, 0x94, 0xdb, 0x56, 0xa7, - 0xde, 0x87, 0xf3, 0xa5, 0x6b, 0x0f, 0xb2, 0xc7, 0x54, 0x4e, 0x83, 0xdc, 0x43, 0x3e, 0x82, 0xfa, - 0x58, 0x4c, 0x98, 0x9c, 0xd1, 0x31, 0x73, 0x2a, 0x3a, 0x2c, 0xd8, 0x18, 0x08, 0x81, 0xaa, 0x06, - 0x4e, 0xb5, 0x6d, 0x75, 0xae, 0x07, 0x78, 0xd6, 0xb6, 0x09, 0x55, 0xd4, 0xb9, 0x86, 0xc1, 0x78, - 0x26, 0x37, 0xa1, 0x96, 0xd2, 0xd3, 0x61, 0x24, 0xb8, 0x63, 0xa3, 0xd9, 0x4e, 0xe9, 0xe9, 0x13, - 0xc1, 0xc9, 0x33, 0xa8, 0x46, 0x82, 0x4b, 0xa7, 0xd6, 0xae, 0x74, 0x1a, 0xbd, 0x8e, 0xbf, 0x8d, - 0x1e, 0xff, 0x41, 0xff, 0xe1, 0xd1, 0x53, 0x26, 0x25, 0xe5, 0xec, 0x89, 0xe0, 0xfd, 0x9b, 0x2f, - 0x97, 0x6e, 0xe9, 0xf7, 0xbf, 0xdc, 0xbd, 0xab, 0x76, 0x19, 0x60, 0x39, 0xdd, 0x43, 0x98, 0x3c, - 0x17, 0xce, 0x8e, 0xe9, 0x41, 0x9f, 0xc9, 0x6d, 0x00, 0x4e, 0xe5, 0xf0, 0x94, 0x26, 0x8a, 0x4d, - 0x9c, 0x3a, 0x32, 0x51, 0xe7, 0x54, 0x7e, 0x8f, 0x06, 0xb2, 0x0f, 0x3b, 0xda, 0x3d, 0x97, 0x6c, - 0xe2, 0x00, 0x3a, 0x6b, 0x9c, 0xca, 0x67, 0x92, 0x4d, 0xc8, 0x1d, 0x28, 0xab, 0xcc, 0x69, 0xb4, - 0xad, 0x4e, 0xa3, 0xd7, 0xf4, 0x0d, 0xed, 0xfe, 0x8a, 0x76, 0xff, 0x41, 0xb2, 0x08, 0xca, 0x2a, - 0xd3, 0x4c, 0xa9, 0x30, 0x66, 0x52, 0xd1, 0x78, 0xe6, 0xec, 0x1a, 0xa6, 0xd6, 0x06, 0xd2, 0x03, - 0x9b, 0x9d, 0xb0, 0x44, 0x49, 0xe7, 0x3a, 0x8e, 0xda, 0xf4, 0x57, 0x9b, 0x35, 0x73, 0x7e, 0xa3, - 0x9d, 0xfd, 0xaa, 0x1e, 0x2b, 0xc8, 0x23, 0x49, 0x13, 0xae, 0x85, 0xc9, 0x84, 0x65, 0xce, 0x0d, - 0xa4, 0xd7, 0x80, 0xc3, 0xea, 0x4f, 0xbf, 0xb9, 0x25, 0xef, 0x57, 0x0b, 0x6e, 0x5c, 0x9d, 0x9d, - 0x7c, 0x08, 0xf5, 0x58, 0xf2, 0xa1, 0x49, 0xb1, 0x30, 0x65, 0x27, 0x96, 0xfc, 0x48, 0x63, 0xf2, - 0x0e, 0x54, 0x34, 0xfb, 0xb8, 0xe8, 0x40, 0x1f, 0xc9, 0xf1, 0xba, 0xa3, 0x0a, 0x76, 0x74, 0x77, - 0x3b, 0xf9, 0xc7, 0x2a, 0x0d, 0x13, 0x6e, 0x5a, 0x6c, 0xe6, 0xcc, 0xef, 0x16, 0x8c, 0x72, 0xd5, - 0xf2, 0x61, 0xf5, 0xc7, 0x3f, 0xdb, 0x96, 0x97, 0x42, 0xa3, 0xe0, 0xd5, 0xdb, 0xd0, 0xc2, 0xc5, - 0x9e, 0xea, 0x01, 0x9e, 0xc9, 0x11, 0x00, 0x55, 0x2a, 0x0d, 0x47, 0x73, 0xc5, 0xa4, 0x53, 0xc6, - 0x0e, 0x0e, 0xde, 0xb2, 0xfe, 0x55, 0x6c, 0x4e, 0x51, 0x21, 0x39, 0xbf, 0xf3, 0x3e, 0xd4, 0xd7, - 0x41, 0x7a, 0xda, 0x17, 0x6c, 0x91, 0x5f, 0xa8, 0x8f, 0x9a, 0xcb, 0x13, 0x1a, 0xcd, 0x59, 0xce, - 0x80, 0x01, 0x9e, 0x80, 0xda, 0xb7, 0x54, 0x1e, 0x69, 0x79, 0x7c, 0x7a, 0x45, 0x1e, 0x3a, 0xb3, - 0xda, 0x7f, 0xff, 0x72, 0xe9, 0xbe, 0xbb, 0xa0, 0x71, 0x74, 0xe8, 0x6d, 0x7c, 0x5e, 0x51, 0x35, - 0x7e, 0x41, 0x35, 0x65, 0xcc, 0x79, 0xef, 0x72, 0xe9, 0xee, 0x6d, 0x72, 0xb4, 0xc7, 0x5b, 0x4b, - 0xc9, 0x9b, 0x82, 0x1d, 0x30, 0x39, 0x8f, 0xd4, 0xfa, 0x33, 0xd1, 0x37, 0xed, 0xe6, 0x9f, 0xc9, - 0x7f, 0x97, 0xd4, 0xfb, 0xd7, 0x92, 0xfe, 0x87, 0x6c, 0x72, 0x81, 0xfc, 0x62, 0x01, 0x39, 0x0e, - 0xe3, 0x79, 0x44, 0x55, 0x28, 0x92, 0xf5, 0x5b, 0xf0, 0xc8, 0x34, 0x8c, 0x5f, 0x87, 0x85, 0x8a, - 0xfe, 0x78, 0x3b, 0xeb, 0x39, 0x37, 0xfd, 0x1d, 0x5d, 0xff, 0x6c, 0xe9, 0x5a, 0x38, 0x08, 0xd2, - 0xf5, 0x05, 0xd8, 0x29, 0x0e, 0x82, 0xdd, 0x36, 0x7a, 0xed, 0xed, 0x55, 0xcc, 0xc0, 0x41, 0x1e, - 0xef, 0x7d, 0x05, 0xb5, 0xa7, 0x92, 0x7f, 0xad, 0xe7, 0xdd, 0x07, 0x2d, 0xd0, 0x61, 0x41, 0x1c, - 0xb5, 0x58, 0xf2, 0x81, 0xd6, 0xc7, 0x8a, 0x9e, 0xf2, 0x86, 0x9e, 0x7c, 0xd1, 0x8f, 0xa1, 0x3e, - 0xc8, 0x56, 0x15, 0x3e, 0x5b, 0xb3, 0x58, 0x79, 0xfb, 0x28, 0x79, 0xc2, 0x95, 0x4a, 0x7f, 0x94, - 0x61, 0xef, 0x98, 0xd1, 0x74, 0x3c, 0x1d, 0x64, 0x32, 0x5f, 0xcb, 0x23, 0x68, 0x28, 0xa1, 0x68, - 0x34, 0x1c, 0x8b, 0x79, 0xa2, 0x72, 0x1d, 0xdc, 0x7d, 0xb3, 0x74, 0x8b, 0xe6, 0xcb, 0xa5, 0x4b, - 0xcc, 0x8a, 0x0b, 0x46, 0x2f, 0x00, 0x44, 0x0f, 0x35, 0xd0, 0x7a, 0x33, 0x15, 0x50, 0x15, 0x81, - 0x01, 0xba, 0xfa, 0x8c, 0x72, 0x36, 0x4c, 0xe6, 0xf1, 0x88, 0xa5, 0xf8, 0x9e, 0xe6, 0xd5, 0x0b, - 0xe6, 0x4d, 0xf5, 0x82, 0xd1, 0x0b, 0x40, 0xa3, 0xef, 0x10, 0x90, 0x3e, 0x20, 0x1a, 0xe2, 0x85, - 0xf8, 0xfa, 0x56, 0xfb, 0x07, 0x6f, 0x96, 0x6e, 0xc1, 0xba, 0x91, 0xee, 0xc6, 0xe6, 0x05, 0x75, - 0x0d, 0x06, 0xfa, 0xac, 0x3b, 0x8c, 0xc2, 0x38, 0x54, 0xf8, 0x50, 0x57, 0x03, 0x03, 0xc8, 0xe7, - 0x50, 0x51, 0x99, 0x74, 0x6c, 0xe4, 0xf3, 0xce, 0x76, 0x3e, 0x37, 0xbf, 0x97, 0x40, 0x27, 0x18, - 0x46, 0xfb, 0x5f, 0xbe, 0xfa, 0xbb, 0x55, 0x7a, 0x79, 0xde, 0xb2, 0xce, 0xce, 0x5b, 0xd6, 0xeb, - 0xf3, 0x96, 0xf5, 0xf3, 0x45, 0xab, 0x74, 0x76, 0xd1, 0x2a, 0xbd, 0xba, 0x68, 0x95, 0x7e, 0xb8, - 0xcd, 0x43, 0x35, 0x9d, 0x8f, 0xfc, 0xb1, 0x88, 0xbb, 0x51, 0x98, 0xb0, 0x6e, 0x34, 0x8a, 0x3f, - 0x91, 0x93, 0x17, 0xe6, 0xb7, 0x36, 0xb2, 0xf1, 0x49, 0xbd, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x13, 0x1c, 0xa2, 0x5f, 0x49, 0x07, 0x00, 0x00, + // 949 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xda, 0xee, 0x3a, 0x7e, 0x6e, 0x1b, 0x18, 0x42, 0xbb, 0x69, 0xa9, 0xd7, 0x6c, 0x5a, + 0xc9, 0x17, 0xd6, 0x6a, 0x1a, 0x10, 0x0a, 0x12, 0x52, 0x5d, 0x28, 0x8d, 0xd4, 0x72, 0xd8, 0xb8, + 0x42, 0xe2, 0x62, 0x8d, 0xed, 0xe9, 0x78, 0xe9, 0xee, 0x8e, 0xb5, 0x33, 0x4e, 0x9c, 0x1b, 0x47, + 0x8e, 0x9c, 0x38, 0x70, 0xe2, 0xcc, 0x5f, 0xd2, 0x1b, 0x39, 0xf6, 0x80, 0x0c, 0x24, 0xb7, 0x1e, + 0xf3, 0x17, 0xa0, 0x79, 0x33, 0xb6, 0x37, 0x54, 0xae, 0xb8, 0xcd, 0xf7, 0x7e, 0xcd, 0x7b, 0xdf, + 0xfb, 0x76, 0x16, 0x76, 0x86, 0x42, 0xa6, 0x42, 0x76, 0x06, 0x54, 0xb2, 0x0e, 0x1d, 0x0c, 0xe3, + 0xce, 0xd1, 0xfd, 0x01, 0x53, 0xf4, 0x3e, 0x82, 0x70, 0x92, 0x0b, 0x25, 0x88, 0x67, 0x82, 0x42, + 0x1d, 0x14, 0xa2, 0xdd, 0x06, 0xdd, 0xda, 0xe2, 0x82, 0x0b, 0x0c, 0xea, 0xe8, 0x93, 0x89, 0xbf, + 0xb5, 0x2d, 0xa4, 0xca, 0xe9, 0x50, 0x64, 0xa6, 0xa2, 0x3a, 0x99, 0x30, 0x69, 0x5d, 0xb7, 0x15, + 0xcb, 0x46, 0x2c, 0x4f, 0xe3, 0x4c, 0xbd, 0xed, 0xdc, 0xe6, 0x42, 0xf0, 0x84, 0x75, 0x10, 0x0d, + 0xa6, 0x2f, 0x3a, 0x34, 0x3b, 0x31, 0xae, 0xe0, 0xac, 0x02, 0xd0, 0x9b, 0x45, 0x4c, 0x4e, 0x44, + 0x26, 0x19, 0xb9, 0x01, 0xee, 0x98, 0xc5, 0x7c, 0xac, 0x3c, 0xa7, 0xe5, 0xb4, 0x2b, 0x91, 0x45, + 0x24, 0x00, 0x57, 0xcd, 0xc6, 0x54, 0x8e, 0xbd, 0x72, 0xcb, 0x69, 0xd7, 0xbb, 0x70, 0x36, 0xf7, + 0xdd, 0xde, 0xec, 0x09, 0x95, 0xe3, 0xc8, 0x7a, 0xc8, 0x47, 0x50, 0x1f, 0x8a, 0x11, 0x93, 0x13, + 0x3a, 0x64, 0x5e, 0x45, 0x87, 0x45, 0x2b, 0x03, 0x21, 0x50, 0xd5, 0xc0, 0xab, 0xb6, 0x9c, 0xf6, + 0xb5, 0x08, 0xcf, 0xda, 0x36, 0xa2, 0x8a, 0x7a, 0x57, 0x30, 0x18, 0xcf, 0xe4, 0x26, 0xd4, 0x72, + 0x7a, 0xdc, 0x4f, 0x04, 0xf7, 0x5c, 0x34, 0xbb, 0x39, 0x3d, 0x7e, 0x2a, 0x38, 0x79, 0x0e, 0xd5, + 0x44, 0x70, 0xe9, 0xd5, 0x5a, 0x95, 0x76, 0x63, 0xb7, 0x1d, 0xae, 0xe3, 0x2e, 0x7c, 0xd8, 0x7d, + 0x74, 0xf0, 0x8c, 0x49, 0x49, 0x39, 0x7b, 0x2a, 0x78, 0xf7, 0xe6, 0xab, 0xb9, 0x5f, 0xfa, 0xfd, + 0x2f, 0x7f, 0xf3, 0xb2, 0x5d, 0x46, 0x58, 0x4e, 0xf7, 0x10, 0x67, 0x2f, 0x84, 0xb7, 0x61, 0x7a, + 0xd0, 0x67, 0x72, 0x07, 0x80, 0x53, 0xd9, 0x3f, 0xa6, 0x99, 0x62, 0x23, 0xaf, 0x8e, 0x4c, 0xd4, + 0x39, 0x95, 0xdf, 0xa1, 0x81, 0x6c, 0xc3, 0x86, 0x76, 0x4f, 0x25, 0x1b, 0x79, 0x80, 0xce, 0x1a, + 0xa7, 0xf2, 0xb9, 0x64, 0x23, 0x72, 0x17, 0xca, 0x6a, 0xe6, 0x35, 0x5a, 0x4e, 0xbb, 0xb1, 0xbb, + 0x15, 0x1a, 0xda, 0xc3, 0x05, 0xed, 0xe1, 0xc3, 0xec, 0x24, 0x2a, 0xab, 0x99, 0x66, 0x4a, 0xc5, + 0x29, 0x93, 0x8a, 0xa6, 0x13, 0xef, 0xaa, 0x61, 0x6a, 0x69, 0x20, 0x7b, 0xe0, 0xb2, 0x23, 0x96, + 0x29, 0xe9, 0x5d, 0xc3, 0x51, 0x6f, 0x84, 0xab, 0xdd, 0x9a, 0x49, 0xbf, 0xd6, 0xee, 0x6e, 0x55, + 0x0f, 0x16, 0xd9, 0x58, 0xb2, 0x05, 0x57, 0xe2, 0x6c, 0xc4, 0x66, 0xde, 0x75, 0x24, 0xd8, 0x80, + 0xfd, 0xea, 0x4f, 0xbf, 0xf9, 0xa5, 0xe0, 0x57, 0x07, 0xae, 0x5f, 0x9e, 0x9e, 0xdc, 0x86, 0x7a, + 0x2a, 0x79, 0xdf, 0xa4, 0x38, 0x98, 0xb2, 0x91, 0x4a, 0x7e, 0xa0, 0x31, 0x79, 0x0f, 0x2a, 0x9a, + 0x7f, 0x5c, 0x75, 0xa4, 0x8f, 0xe4, 0x70, 0xd9, 0x53, 0x05, 0x7b, 0xba, 0xb7, 0x9e, 0xfe, 0x43, + 0x95, 0xc7, 0x19, 0x37, 0x2d, 0x6e, 0x59, 0xee, 0xaf, 0x16, 0x8c, 0x72, 0xd1, 0xf2, 0x7e, 0xf5, + 0xc7, 0x3f, 0x5b, 0x4e, 0x90, 0x43, 0xa3, 0xe0, 0xd5, 0xfb, 0xd0, 0xd2, 0xc5, 0x9e, 0xea, 0x11, + 0x9e, 0xc9, 0x01, 0x00, 0x55, 0x2a, 0x8f, 0x07, 0x53, 0xc5, 0xa4, 0x57, 0xc6, 0x0e, 0x76, 0xde, + 0x21, 0x80, 0x45, 0xac, 0xa5, 0xa8, 0x90, 0x6c, 0xef, 0x7c, 0x00, 0xf5, 0x65, 0x90, 0x9e, 0xf6, + 0x25, 0x3b, 0xb1, 0x17, 0xea, 0xa3, 0xe6, 0xf2, 0x88, 0x26, 0x53, 0x66, 0x19, 0x30, 0x20, 0x10, + 0x50, 0xfb, 0x86, 0xca, 0x03, 0x2d, 0x90, 0xbd, 0x4b, 0x02, 0xd1, 0x99, 0xd5, 0xee, 0x87, 0x17, + 0x73, 0xff, 0xfd, 0x13, 0x9a, 0x26, 0xfb, 0xc1, 0xca, 0x17, 0x14, 0x75, 0x13, 0x16, 0x74, 0x53, + 0xc6, 0x9c, 0x0f, 0x2e, 0xe6, 0xfe, 0xe6, 0x2a, 0x47, 0x7b, 0x82, 0xa5, 0x98, 0x82, 0x1f, 0xc0, + 0x8d, 0x98, 0x9c, 0x26, 0x6a, 0xf9, 0xa1, 0xe8, 0x9b, 0xae, 0xda, 0x0f, 0xe5, 0xed, 0x25, 0xed, + 0xfd, 0x67, 0x49, 0xff, 0x4b, 0x38, 0x56, 0x22, 0xbf, 0x38, 0x40, 0x0e, 0xe3, 0x74, 0x9a, 0x50, + 0x15, 0x8b, 0x6c, 0xf9, 0x1e, 0x3c, 0x36, 0x2d, 0xe3, 0x17, 0xe2, 0xa0, 0xaa, 0x3f, 0x5e, 0xcf, + 0xbb, 0x65, 0xa7, 0xbb, 0xa1, 0xeb, 0x9f, 0xce, 0x7d, 0x07, 0x47, 0x41, 0xc2, 0x3e, 0x07, 0x37, + 0xc7, 0x51, 0xb0, 0xdf, 0xc6, 0x6e, 0x6b, 0x7d, 0x15, 0x33, 0x72, 0x64, 0xe3, 0x83, 0x2f, 0xa1, + 0xf6, 0x4c, 0xf2, 0xaf, 0xf4, 0xc4, 0xdb, 0xa0, 0x25, 0xda, 0x2f, 0xc8, 0xa3, 0x96, 0x4a, 0xde, + 0xd3, 0x0a, 0x59, 0x10, 0x54, 0x5e, 0x11, 0x64, 0x57, 0xfd, 0x04, 0xea, 0xbd, 0xd9, 0xa2, 0xc2, + 0xa7, 0x4b, 0x1e, 0x2b, 0xef, 0x1e, 0xc5, 0x26, 0x5c, 0xaa, 0xf4, 0x47, 0x19, 0x36, 0x0f, 0x19, + 0xcd, 0x87, 0xe3, 0xde, 0x4c, 0xda, 0xc5, 0x3c, 0x86, 0x86, 0x12, 0x8a, 0x26, 0xfd, 0xa1, 0x98, + 0x66, 0xca, 0x2a, 0xe1, 0xde, 0x9b, 0xb9, 0x5f, 0x34, 0x5f, 0xcc, 0x7d, 0x62, 0x96, 0x5c, 0x30, + 0x06, 0x11, 0x20, 0x7a, 0xa4, 0x81, 0x56, 0x9c, 0xa9, 0x80, 0xba, 0x88, 0x0c, 0xd0, 0xd5, 0x27, + 0x94, 0xb3, 0x7e, 0x36, 0x4d, 0x07, 0x2c, 0xc7, 0x37, 0xd5, 0x56, 0x2f, 0x98, 0x57, 0xd5, 0x0b, + 0xc6, 0x20, 0x02, 0x8d, 0xbe, 0x45, 0x40, 0xba, 0x80, 0xa8, 0x8f, 0x17, 0xe2, 0x0b, 0x5c, 0xed, + 0xee, 0xbc, 0x99, 0xfb, 0x05, 0xeb, 0x4a, 0xbc, 0x2b, 0x5b, 0x10, 0xd5, 0x35, 0xe8, 0xe9, 0xb3, + 0xee, 0x30, 0x89, 0xd3, 0x58, 0xe1, 0x63, 0x5d, 0x8d, 0x0c, 0x20, 0x9f, 0x41, 0x45, 0xcd, 0xa4, + 0xe7, 0x22, 0x9f, 0x77, 0xd7, 0xf3, 0xb9, 0xfa, 0xc5, 0x44, 0x3a, 0xc1, 0x30, 0xda, 0xfd, 0xe2, + 0xf5, 0x3f, 0xcd, 0xd2, 0xab, 0xb3, 0xa6, 0x73, 0x7a, 0xd6, 0x74, 0xfe, 0x3e, 0x6b, 0x3a, 0x3f, + 0x9f, 0x37, 0x4b, 0xa7, 0xe7, 0xcd, 0xd2, 0xeb, 0xf3, 0x66, 0xe9, 0xfb, 0x3b, 0x3c, 0x56, 0xe3, + 0xe9, 0x20, 0x1c, 0x8a, 0xb4, 0x93, 0xc4, 0x19, 0xeb, 0x24, 0x83, 0xf4, 0x13, 0x39, 0x7a, 0x69, + 0x7e, 0x6d, 0x03, 0x17, 0x9f, 0xd5, 0x07, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x80, 0xd1, 0x38, + 0x2a, 0x6a, 0x07, 0x00, 0x00, } func (m *TxResponse) Marshal() (dAtA []byte, err error) { diff --git a/types/context.go b/types/context.go index d8d6ab635e..f638c22ffd 100644 --- a/types/context.go +++ b/types/context.go @@ -6,10 +6,10 @@ import ( "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" ocbytes "github.com/line/ostracon/libs/bytes" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/store/gaskv" stypes "github.com/line/lbm-sdk/store/types" diff --git a/types/context_test.go b/types/context_test.go index b1259cb0c6..dd0443a169 100644 --- a/types/context_test.go +++ b/types/context_test.go @@ -6,9 +6,9 @@ import ( "time" "github.com/golang/mock/gomock" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/crypto/keys/secp256k1" "github.com/line/lbm-sdk/tests/mocks" diff --git a/types/errors/abci.go b/types/errors/abci.go index 7f0195bd39..691856f318 100644 --- a/types/errors/abci.go +++ b/types/errors/abci.go @@ -4,7 +4,9 @@ import ( "fmt" "reflect" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" + + ocabci "github.com/line/ostracon/abci/types" ) const ( @@ -41,9 +43,9 @@ func ABCIInfo(err error, debug bool) (codespace string, code uint32, log string) // ResponseCheckTx returns an ABCI ResponseCheckTx object with fields filled in // from the given error and gas values. -func ResponseCheckTx(err error, gw, gu uint64, debug bool) abci.ResponseCheckTx { +func ResponseCheckTx(err error, gw, gu uint64, debug bool) ocabci.ResponseCheckTx { space, code, log := ABCIInfo(err, debug) - return abci.ResponseCheckTx{ + return ocabci.ResponseCheckTx{ Codespace: space, Code: code, Log: log, @@ -54,9 +56,9 @@ func ResponseCheckTx(err error, gw, gu uint64, debug bool) abci.ResponseCheckTx // ResponseCheckTxWithEvents returns an ABCI ResponseCheckTx object with fields filled in // from the given error, gas values and events. -func ResponseCheckTxWithEvents(err error, gw, gu uint64, events []abci.Event, debug bool) abci.ResponseCheckTx { +func ResponseCheckTxWithEvents(err error, gw, gu uint64, events []abci.Event, debug bool) ocabci.ResponseCheckTx { space, code, log := ABCIInfo(err, debug) - return abci.ResponseCheckTx{ + return ocabci.ResponseCheckTx{ Codespace: space, Code: code, Log: log, diff --git a/types/events.go b/types/events.go index f9c55f605b..ccfb4d65fc 100644 --- a/types/events.go +++ b/types/events.go @@ -12,7 +12,7 @@ import ( "github.com/gogo/protobuf/jsonpb" proto "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" ) diff --git a/types/events_test.go b/types/events_test.go index 77598f6505..363929a6f7 100644 --- a/types/events_test.go +++ b/types/events_test.go @@ -5,8 +5,8 @@ import ( "reflect" "testing" - abci "github.com/line/ostracon/abci/types" "github.com/stretchr/testify/suite" + abci "github.com/tendermint/tendermint/abci/types" codectypes "github.com/line/lbm-sdk/codec/types" testdata "github.com/line/lbm-sdk/testutil/testdata" diff --git a/types/module/module.go b/types/module/module.go index 1599eb52a6..a3f08eae27 100644 --- a/types/module/module.go +++ b/types/module/module.go @@ -36,7 +36,8 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -175,7 +176,7 @@ type AppModule interface { // BeginBlockAppModule is an extension interface that contains information about the AppModule and BeginBlock. type BeginBlockAppModule interface { AppModule - BeginBlock(sdk.Context, abci.RequestBeginBlock) + BeginBlock(sdk.Context, ocabci.RequestBeginBlock) } // EndBlockAppModule is an extension interface that contains information about the AppModule and EndBlock. @@ -215,7 +216,7 @@ func (gam GenesisOnlyAppModule) RegisterServices(Configurator) {} func (gam GenesisOnlyAppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock returns an empty module begin-block -func (gam GenesisOnlyAppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {} +func (gam GenesisOnlyAppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) {} // EndBlock returns an empty module end-block func (GenesisOnlyAppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { @@ -474,7 +475,7 @@ func (m Manager) RunMigrations(ctx sdk.Context, cfg Configurator, fromVM Version // BeginBlock performs begin block functionality for all modules. It creates a // child context with an event manager to aggregate events emitted from all // modules. -func (m *Manager) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { +func (m *Manager) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) abci.ResponseBeginBlock { ctx = ctx.WithEventManager(sdk.NewEventManager()) for _, moduleName := range m.OrderBeginBlockers { diff --git a/types/module/module_test.go b/types/module/module_test.go index 64180b73cf..c7f4ea5e71 100644 --- a/types/module/module_test.go +++ b/types/module/module_test.go @@ -8,9 +8,10 @@ import ( "github.com/line/lbm-sdk/codec/types" "github.com/golang/mock/gomock" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -249,7 +250,7 @@ func TestManager_BeginBlock(t *testing.T) { require.NotNil(t, mm) require.Equal(t, 2, len(mm.Modules)) - req := abci.RequestBeginBlock{Hash: []byte("test")} + req := ocabci.RequestBeginBlock{Hash: []byte("test")} mockAppModule1.EXPECT().BeginBlock(gomock.Any(), gomock.Eq(req)).Times(1) mockAppModule2.EXPECT().BeginBlock(gomock.Any(), gomock.Eq(req)).Times(1) diff --git a/types/queryable.go b/types/queryable.go index 3c413ebace..f89965906a 100644 --- a/types/queryable.go +++ b/types/queryable.go @@ -1,7 +1,7 @@ package types import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) // Querier defines a function type that a module querier must implement to handle diff --git a/types/result.go b/types/result.go index 19fe717cad..4660176cbb 100644 --- a/types/result.go +++ b/types/result.go @@ -8,8 +8,8 @@ import ( "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" ctypes "github.com/line/ostracon/rpc/core/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" diff --git a/types/result_test.go b/types/result_test.go index 36b410dc15..92cd3f200b 100644 --- a/types/result_test.go +++ b/types/result_test.go @@ -9,8 +9,9 @@ import ( "github.com/golang/protobuf/proto" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + abci "github.com/tendermint/tendermint/abci/types" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/bytes" ctypes "github.com/line/ostracon/rpc/core/types" @@ -214,7 +215,7 @@ func (s *resultTestSuite) TestResponseFormatBroadcastTxCommit() { checkTxResult := &ctypes.ResultBroadcastTxCommit{ Height: 10, Hash: bytes.HexBytes([]byte("test")), - CheckTx: abci.ResponseCheckTx{ + CheckTx: ocabci.ResponseCheckTx{ Code: 90, Data: nil, Log: `[]`, diff --git a/types/tx/service.pb.go b/types/tx/service.pb.go index 5e2157d75b..d11f7ce9cb 100644 --- a/types/tx/service.pb.go +++ b/types/tx/service.pb.go @@ -12,7 +12,8 @@ import ( golang_proto "github.com/golang/protobuf/proto" types "github.com/line/lbm-sdk/types" query "github.com/line/lbm-sdk/types/query" - types1 "github.com/line/ostracon/proto/ostracon/types" + types2 "github.com/line/ostracon/proto/ostracon/types" + types1 "github.com/tendermint/tendermint/proto/tendermint/types" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -619,7 +620,7 @@ type GetBlockWithTxsResponse struct { // txs are the transactions in the block. Txs []*Tx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` BlockId *types1.BlockID `protobuf:"bytes,2,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` - Block *types1.Block `protobuf:"bytes,3,opt,name=block,proto3" json:"block,omitempty"` + Block *types2.Block `protobuf:"bytes,3,opt,name=block,proto3" json:"block,omitempty"` // pagination defines a pagination for the response. Pagination *query.PageResponse `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` } @@ -671,7 +672,7 @@ func (m *GetBlockWithTxsResponse) GetBlockId() *types1.BlockID { return nil } -func (m *GetBlockWithTxsResponse) GetBlock() *types1.Block { +func (m *GetBlockWithTxsResponse) GetBlock() *types2.Block { if m != nil { return m.Block } @@ -718,69 +719,69 @@ func init() { } var fileDescriptor_e0b00a618705eca7 = []byte{ - // 977 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xae, 0x9b, 0xd8, 0x7d, 0x4e, 0x5a, 0x77, 0x92, 0x26, 0xc6, 0x05, 0xc7, 0xdd, 0x92, - 0x1f, 0x35, 0xea, 0xae, 0x6a, 0x40, 0x42, 0x08, 0x21, 0xc5, 0x3f, 0x1a, 0x2c, 0x68, 0x5d, 0x8d, - 0x83, 0xaa, 0x22, 0x24, 0x6b, 0xd7, 0x9e, 0xae, 0x57, 0xb5, 0x77, 0x9c, 0x9d, 0x71, 0xb4, 0x56, - 0x1a, 0x21, 0x71, 0xe4, 0x84, 0xe0, 0xc0, 0x1f, 0xc1, 0x3f, 0xc1, 0x91, 0x63, 0x24, 0x2e, 0x1c, - 0x51, 0xc2, 0x91, 0x3f, 0x02, 0xed, 0xec, 0xd8, 0x59, 0x3b, 0xeb, 0xa6, 0x54, 0x5c, 0xac, 0x19, - 0xcf, 0xf7, 0xde, 0xfb, 0xe6, 0x9b, 0xf9, 0xde, 0x2c, 0x6c, 0xb6, 0x29, 0xeb, 0x53, 0x66, 0x70, - 0xdf, 0x38, 0x7a, 0x68, 0x11, 0x6e, 0x3e, 0x34, 0x18, 0xf1, 0x8e, 0x9c, 0x36, 0xd1, 0x07, 0x1e, - 0xe5, 0x14, 0xdd, 0x0a, 0x01, 0x3a, 0xf7, 0x75, 0x09, 0xc8, 0xbd, 0x6b, 0x53, 0x6a, 0xf7, 0x88, - 0x61, 0x0e, 0x1c, 0xc3, 0x74, 0x5d, 0xca, 0x4d, 0xee, 0x50, 0x97, 0x85, 0x01, 0xb9, 0x7b, 0x32, - 0xa3, 0x65, 0x32, 0x62, 0x98, 0x56, 0xdb, 0x99, 0x24, 0x0e, 0x26, 0x12, 0x94, 0xbb, 0x5c, 0x96, - 0xfb, 0x72, 0x6d, 0xcd, 0xa6, 0x36, 0x15, 0x43, 0x23, 0x18, 0xc9, 0x7f, 0x8b, 0xd1, 0xb4, 0x87, - 0x43, 0xe2, 0x8d, 0x26, 0x91, 0x03, 0xd3, 0x76, 0x5c, 0xc1, 0x61, 0x9c, 0x9d, 0x32, 0xee, 0x99, - 0x6d, 0xea, 0x1a, 0x7c, 0x34, 0x20, 0xcc, 0xb0, 0x7a, 0xb4, 0xfd, 0x72, 0xce, 0x9a, 0xf8, 0x0d, - 0xd7, 0xb4, 0x5f, 0x15, 0x40, 0xfb, 0x84, 0x1f, 0xf8, 0xac, 0x76, 0x44, 0x5c, 0x8e, 0xc9, 0xe1, - 0x90, 0x30, 0x8e, 0xd6, 0x61, 0x89, 0x04, 0x73, 0x96, 0x55, 0x0a, 0x89, 0xdd, 0xeb, 0x58, 0xce, - 0xd0, 0x23, 0x80, 0x8b, 0xd2, 0x59, 0xb5, 0xa0, 0xec, 0xa6, 0x4b, 0xdb, 0xba, 0xd4, 0x2b, 0xe0, - 0xa9, 0x0b, 0x9e, 0x63, 0xdd, 0xf4, 0xa7, 0xa6, 0x4d, 0x64, 0x4e, 0x1c, 0x89, 0x44, 0x1f, 0x43, - 0x8a, 0x7a, 0x1d, 0xe2, 0xb5, 0xac, 0x51, 0x36, 0x51, 0x50, 0x76, 0x6f, 0x94, 0x72, 0xfa, 0x25, - 0xd5, 0xf5, 0x46, 0x00, 0x29, 0x8f, 0x70, 0x92, 0x86, 0x03, 0xed, 0x54, 0x81, 0xd5, 0x29, 0xb6, - 0x6c, 0x40, 0x5d, 0x46, 0xd0, 0x0e, 0x24, 0xb8, 0x1f, 0x72, 0x4d, 0x97, 0x6e, 0xc7, 0x64, 0x3a, - 0xf0, 0x71, 0x80, 0x40, 0xfb, 0xb0, 0xcc, 0xfd, 0x96, 0x27, 0xe3, 0x58, 0x56, 0x15, 0x11, 0xef, - 0x4f, 0xed, 0x40, 0x9c, 0x59, 0x24, 0x50, 0x82, 0x71, 0x9a, 0x4f, 0xc6, 0x41, 0xa2, 0xa8, 0x10, - 0x09, 0x21, 0xc4, 0xce, 0x95, 0x42, 0xc8, 0x4c, 0x91, 0x50, 0x8d, 0x00, 0x2a, 0x7b, 0xd4, 0xec, - 0xb4, 0x4d, 0xc6, 0x83, 0x62, 0xa1, 0xfe, 0xef, 0x40, 0x8a, 0xfb, 0x2d, 0x6b, 0xc4, 0x49, 0xb0, - 0x2b, 0x65, 0x77, 0x19, 0x27, 0xb9, 0x5f, 0x0e, 0xa6, 0xe8, 0x23, 0xb8, 0xd6, 0xa7, 0x1d, 0x22, - 0xc4, 0xbf, 0x51, 0x2a, 0xc4, 0x6c, 0x76, 0x92, 0xef, 0x31, 0xed, 0x10, 0x2c, 0xd0, 0xda, 0xb7, - 0xb0, 0x3a, 0x55, 0x46, 0x0a, 0x57, 0x83, 0x74, 0x44, 0x0f, 0x51, 0xea, 0x4d, 0xe5, 0x80, 0x0b, - 0x39, 0xb4, 0x67, 0x70, 0xb3, 0xe9, 0xf4, 0x87, 0x3d, 0x93, 0x8f, 0x4f, 0x1b, 0xdd, 0x07, 0x95, - 0xfb, 0x32, 0x61, 0xfc, 0x89, 0x94, 0xd5, 0xac, 0x82, 0x55, 0xee, 0x4f, 0x6d, 0x56, 0x9d, 0xda, - 0xac, 0xf6, 0x83, 0x02, 0x99, 0x8b, 0xcc, 0x92, 0xf4, 0x67, 0x90, 0xb2, 0x4d, 0xd6, 0x72, 0xdc, - 0x17, 0x54, 0x16, 0xb8, 0x3b, 0x9f, 0xf1, 0xbe, 0xc9, 0xea, 0xee, 0x0b, 0x8a, 0x93, 0x76, 0x38, - 0x40, 0x9f, 0xc0, 0x92, 0x47, 0xd8, 0xb0, 0xc7, 0xe5, 0xf5, 0x2d, 0xcc, 0x8f, 0xc5, 0x02, 0x87, - 0x25, 0x5e, 0xd3, 0x60, 0x59, 0x5c, 0xbe, 0xf1, 0x16, 0x11, 0x5c, 0xeb, 0x9a, 0xac, 0x2b, 0x38, - 0x5c, 0xc7, 0x62, 0xac, 0x9d, 0xc0, 0x8a, 0xc4, 0x48, 0xb2, 0x5b, 0x57, 0xea, 0x20, 0x34, 0x98, - 0x39, 0x08, 0xf5, 0x2d, 0x0f, 0xc2, 0x87, 0xf5, 0x7d, 0xc2, 0xcb, 0x81, 0xf9, 0x9f, 0x39, 0xbc, - 0x7b, 0xe0, 0xb3, 0x88, 0xa3, 0xbb, 0xc4, 0xb1, 0xbb, 0x5c, 0x70, 0x49, 0x60, 0x39, 0xfb, 0xbf, - 0x1c, 0xad, 0xfd, 0xa3, 0xc0, 0xc6, 0xa5, 0xd2, 0xff, 0xd5, 0x9e, 0x25, 0x48, 0x89, 0xc6, 0xd5, - 0x72, 0x3a, 0x92, 0xca, 0x86, 0x3e, 0x6e, 0x5e, 0x7a, 0xd8, 0xb6, 0x44, 0x81, 0x7a, 0x15, 0x27, - 0x05, 0xb0, 0xde, 0x41, 0x1f, 0xc0, 0xa2, 0x18, 0x4a, 0x13, 0xde, 0x8e, 0x0d, 0xc0, 0x21, 0x66, - 0xc6, 0xb6, 0xd7, 0xde, 0xda, 0xb6, 0xc5, 0x2f, 0x20, 0x29, 0xbb, 0x13, 0xca, 0xc2, 0x5a, 0x03, - 0x57, 0x6b, 0xb8, 0x55, 0x7e, 0xde, 0xfa, 0xfa, 0x49, 0xf3, 0x69, 0xad, 0x52, 0x7f, 0x54, 0xaf, - 0x55, 0x33, 0x0b, 0x28, 0x03, 0xcb, 0x93, 0x95, 0xbd, 0x66, 0x25, 0xa3, 0xa0, 0x5b, 0xb0, 0x32, - 0xf9, 0xa7, 0x5a, 0x6b, 0x56, 0x32, 0x6a, 0xf1, 0x15, 0xac, 0x4c, 0x19, 0x16, 0xe5, 0x21, 0x57, - 0xc6, 0x8d, 0xbd, 0x6a, 0x65, 0xaf, 0x79, 0xd0, 0x7a, 0xdc, 0xa8, 0xd6, 0x66, 0xb2, 0x66, 0x61, - 0x6d, 0x66, 0xbd, 0xfc, 0x55, 0xa3, 0xf2, 0x65, 0x46, 0x41, 0x1b, 0xb0, 0x3a, 0xb3, 0xd2, 0x7c, - 0xfe, 0xa4, 0x92, 0x51, 0x63, 0x42, 0xf6, 0xc4, 0x4a, 0xa2, 0xf4, 0xd3, 0x22, 0x24, 0x9b, 0xe1, - 0xeb, 0x87, 0x8e, 0x21, 0x35, 0xf6, 0x1a, 0xd2, 0x62, 0x4e, 0x69, 0xc6, 0xe2, 0xb9, 0x7b, 0xaf, - 0xc5, 0xc8, 0x1b, 0xb9, 0xfd, 0xfd, 0x1f, 0x7f, 0xff, 0xac, 0x16, 0xb4, 0x3b, 0x46, 0xcc, 0xb3, - 0x2b, 0xc1, 0x9f, 0x2a, 0x45, 0x74, 0x08, 0x8b, 0xc2, 0x38, 0x68, 0x33, 0x26, 0x6b, 0xd4, 0x76, - 0xb9, 0xc2, 0x7c, 0x80, 0xac, 0xb9, 0x25, 0x6a, 0x6e, 0xa2, 0xf7, 0x8c, 0xb8, 0x37, 0x97, 0x19, - 0xc7, 0x81, 0x55, 0x4f, 0xd0, 0x77, 0x90, 0x8e, 0xf4, 0x44, 0xb4, 0xf5, 0xba, 0x56, 0x7a, 0x51, - 0x7e, 0xfb, 0x2a, 0x98, 0x24, 0x71, 0x57, 0x90, 0xb8, 0xa3, 0xad, 0xc7, 0x93, 0x08, 0xf6, 0xfc, - 0x0a, 0xd2, 0x91, 0xd7, 0x2c, 0x96, 0xc0, 0xe5, 0xb7, 0x39, 0x96, 0x40, 0xcc, 0xa3, 0xa8, 0xe5, - 0x05, 0x81, 0x2c, 0x9a, 0x43, 0x00, 0xfd, 0xa2, 0xc0, 0xcd, 0x19, 0xc7, 0xa2, 0xfb, 0xf1, 0xb9, - 0x63, 0x1a, 0x4a, 0xae, 0xf8, 0x26, 0x50, 0x49, 0xe5, 0x81, 0xa0, 0xb2, 0x83, 0xb6, 0xe6, 0x1c, - 0x88, 0x30, 0xa7, 0x71, 0x1c, 0xb6, 0xa4, 0x93, 0xf2, 0xe7, 0xbf, 0x9f, 0xe5, 0x95, 0xd3, 0xb3, - 0xbc, 0xf2, 0xd7, 0x59, 0x5e, 0xf9, 0xf1, 0x3c, 0xbf, 0xf0, 0xdb, 0x79, 0x5e, 0x39, 0x3d, 0xcf, - 0x2f, 0xfc, 0x79, 0x9e, 0x5f, 0xf8, 0xa6, 0x60, 0x3b, 0xbc, 0x3b, 0xb4, 0xf4, 0x36, 0xed, 0x1b, - 0x3d, 0xc7, 0x25, 0x46, 0xcf, 0xea, 0x3f, 0x60, 0x9d, 0x97, 0xe3, 0xaf, 0x1b, 0xdf, 0x5a, 0x12, - 0xdf, 0x36, 0x1f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xc4, 0x63, 0x6c, 0xea, 0x09, 0x00, - 0x00, + // 992 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x5f, 0x6f, 0x1a, 0x47, + 0x10, 0xf7, 0x1d, 0xb6, 0x71, 0x06, 0x3b, 0x21, 0x6b, 0xc7, 0x21, 0x24, 0xc5, 0xe4, 0x52, 0xff, + 0x09, 0x55, 0xee, 0x14, 0x9a, 0x4a, 0x55, 0x55, 0x55, 0x32, 0x7f, 0xe2, 0xa2, 0x36, 0x21, 0x5a, + 0x5c, 0x45, 0xa9, 0x2a, 0xa1, 0x03, 0x36, 0xc7, 0x29, 0x70, 0x8b, 0x6f, 0x17, 0xeb, 0x90, 0x63, + 0x55, 0xea, 0x63, 0x9f, 0xaa, 0xf6, 0xa1, 0x1f, 0xa2, 0x5f, 0xa2, 0x8f, 0x7d, 0xb4, 0xd4, 0x97, + 0x3e, 0x56, 0x76, 0x9f, 0xfb, 0x19, 0xaa, 0xdb, 0x5b, 0xe0, 0x80, 0x23, 0x4e, 0xa3, 0xbc, 0xa0, + 0x59, 0xe6, 0x37, 0x33, 0xbf, 0x99, 0xd9, 0x99, 0x3d, 0xd8, 0x6a, 0x52, 0xd6, 0xa5, 0xcc, 0xe0, + 0x9e, 0x71, 0xfc, 0xb0, 0x41, 0xb8, 0xf9, 0xd0, 0x60, 0xc4, 0x3d, 0xb6, 0x9b, 0x44, 0xef, 0xb9, + 0x94, 0x53, 0x74, 0x3d, 0x00, 0xe8, 0xdc, 0xd3, 0x25, 0x20, 0x7d, 0xc7, 0xa2, 0xd4, 0xea, 0x10, + 0xc3, 0xec, 0xd9, 0x86, 0xe9, 0x38, 0x94, 0x9b, 0xdc, 0xa6, 0x0e, 0x0b, 0x0c, 0xd2, 0xf7, 0xa4, + 0xc7, 0x86, 0xc9, 0x88, 0x61, 0x36, 0x9a, 0xf6, 0xc8, 0xb1, 0x7f, 0x90, 0xa0, 0xf4, 0x6c, 0x58, + 0xee, 0x49, 0xdd, 0x86, 0x45, 0x2d, 0x2a, 0x44, 0xc3, 0x97, 0xe4, 0xbf, 0xb9, 0xb0, 0xdb, 0xa3, + 0x3e, 0x71, 0x07, 0x23, 0xcb, 0x9e, 0x69, 0xd9, 0x8e, 0xe0, 0x30, 0xf4, 0x4e, 0x19, 0x77, 0xcd, + 0x26, 0x75, 0x0c, 0x3e, 0xe8, 0x11, 0x66, 0x34, 0x3a, 0xb4, 0xf9, 0x6a, 0x8e, 0x4e, 0xfc, 0x4a, + 0xdd, 0x1d, 0x4e, 0x9c, 0x16, 0x71, 0xbb, 0xb6, 0xc3, 0x67, 0xb5, 0xda, 0x6f, 0x0a, 0xa0, 0x03, + 0xc2, 0x0f, 0x3d, 0x56, 0x3e, 0x26, 0x0e, 0xc7, 0xe4, 0xa8, 0x4f, 0x18, 0x47, 0x9b, 0xb0, 0x4c, + 0xfc, 0x33, 0x4b, 0x29, 0xd9, 0xd8, 0xde, 0x15, 0x2c, 0x4f, 0xe8, 0x31, 0xc0, 0x98, 0x58, 0x4a, + 0xcd, 0x2a, 0x7b, 0x89, 0xfc, 0x8e, 0x2e, 0xab, 0xe9, 0x67, 0xa1, 0x8b, 0x2c, 0x86, 0x55, 0xd5, + 0x9f, 0x99, 0x16, 0x91, 0x3e, 0x71, 0xc8, 0x12, 0x7d, 0x02, 0x2b, 0xd4, 0x6d, 0x11, 0xb7, 0xde, + 0x18, 0xa4, 0x62, 0x59, 0x65, 0xef, 0x6a, 0x3e, 0xad, 0xcf, 0xf4, 0x44, 0xaf, 0xfa, 0x90, 0xc2, + 0x00, 0xc7, 0x69, 0x20, 0x68, 0x67, 0x0a, 0xac, 0x4f, 0xb0, 0x65, 0x3d, 0xea, 0x30, 0x82, 0x76, + 0x21, 0xc6, 0xbd, 0x80, 0x6b, 0x22, 0x7f, 0x23, 0xc2, 0xd3, 0xa1, 0x87, 0x7d, 0x04, 0x3a, 0x80, + 0x55, 0xee, 0xd5, 0x5d, 0x69, 0xc7, 0x52, 0xaa, 0xb0, 0xf8, 0x70, 0x22, 0x03, 0xd1, 0xd1, 0x90, + 0xa1, 0x04, 0xe3, 0x04, 0x1f, 0xc9, 0xbe, 0xa3, 0x70, 0x21, 0x62, 0xa2, 0x10, 0xbb, 0x97, 0x16, + 0x42, 0x7a, 0x0a, 0x99, 0x6a, 0x04, 0x50, 0xc1, 0xa5, 0x66, 0xab, 0x69, 0x32, 0xee, 0x07, 0x0b, + 0xea, 0x7f, 0x0b, 0x56, 0xb8, 0x57, 0x6f, 0x0c, 0x38, 0xf1, 0xb3, 0x52, 0xf6, 0x56, 0x71, 0x9c, + 0x7b, 0x05, 0xff, 0x88, 0x1e, 0xc1, 0x62, 0x97, 0xb6, 0x88, 0x28, 0xfe, 0xd5, 0x7c, 0x36, 0x22, + 0xd9, 0x91, 0xbf, 0x27, 0xb4, 0x45, 0xb0, 0x40, 0x6b, 0xdf, 0xc1, 0xfa, 0x44, 0x18, 0x59, 0xb8, + 0x32, 0x24, 0x42, 0xf5, 0x10, 0xa1, 0xde, 0xb6, 0x1c, 0x30, 0x2e, 0x87, 0xf6, 0x1c, 0xae, 0xd5, + 0xec, 0x6e, 0xbf, 0x63, 0xf2, 0x61, 0xb7, 0xd1, 0x7d, 0x50, 0xb9, 0x27, 0x1d, 0x46, 0x77, 0xa4, + 0xa0, 0xa6, 0x14, 0xac, 0x72, 0x6f, 0x22, 0x59, 0x75, 0x22, 0x59, 0xed, 0x47, 0x05, 0x92, 0x63, + 0xcf, 0x92, 0xf4, 0xe7, 0xb0, 0x62, 0x99, 0xac, 0x6e, 0x3b, 0x2f, 0xa9, 0x0c, 0x70, 0x77, 0x3e, + 0xe3, 0x03, 0x93, 0x55, 0x9c, 0x97, 0x14, 0xc7, 0xad, 0x40, 0x40, 0x9f, 0xc2, 0xb2, 0x4b, 0x58, + 0xbf, 0xc3, 0xe5, 0xf5, 0xcd, 0xce, 0xb7, 0xc5, 0x02, 0x87, 0x25, 0x5e, 0xd3, 0x60, 0x55, 0x5c, + 0xbe, 0x61, 0x8a, 0x08, 0x16, 0xdb, 0x26, 0x6b, 0x0b, 0x0e, 0x57, 0xb0, 0x90, 0xb5, 0x53, 0x58, + 0x93, 0x18, 0x49, 0x76, 0xfb, 0xd2, 0x3a, 0x88, 0x1a, 0x4c, 0x35, 0x42, 0x7d, 0xc7, 0x46, 0x78, + 0xb0, 0x79, 0x40, 0x78, 0xc1, 0x5f, 0x0d, 0xcf, 0x6d, 0xde, 0x3e, 0xf4, 0x58, 0x68, 0xa2, 0xdb, + 0xc4, 0xb6, 0xda, 0x5c, 0x70, 0x89, 0x61, 0x79, 0x7a, 0x5f, 0x13, 0xad, 0xfd, 0xab, 0xc0, 0xcd, + 0x99, 0xd0, 0xff, 0x77, 0x3c, 0x1f, 0xc1, 0x8a, 0x58, 0x6b, 0x75, 0xbb, 0x25, 0xa9, 0xdc, 0xd2, + 0xc7, 0xeb, 0x4b, 0x0f, 0x16, 0x97, 0x08, 0x51, 0x29, 0xe1, 0xb8, 0x80, 0x56, 0x5a, 0xe8, 0x23, + 0x58, 0x12, 0xa2, 0x1c, 0xc3, 0x1b, 0xfa, 0x70, 0x1b, 0x86, 0x0d, 0x70, 0x80, 0x99, 0x1a, 0xdc, + 0xc5, 0x77, 0x1e, 0xdc, 0xdc, 0x97, 0x10, 0x97, 0xfb, 0x09, 0xa5, 0x60, 0xa3, 0x8a, 0x4b, 0x65, + 0x5c, 0x2f, 0xbc, 0xa8, 0x7f, 0xf3, 0xb4, 0xf6, 0xac, 0x5c, 0xac, 0x3c, 0xae, 0x94, 0x4b, 0xc9, + 0x05, 0x94, 0x84, 0xd5, 0x91, 0x66, 0xbf, 0x56, 0x4c, 0x2a, 0xe8, 0x3a, 0xac, 0x8d, 0xfe, 0x29, + 0x95, 0x6b, 0xc5, 0xa4, 0x9a, 0x7b, 0x0d, 0x6b, 0x13, 0x23, 0x8b, 0x32, 0x90, 0x2e, 0xe0, 0xea, + 0x7e, 0xa9, 0xb8, 0x5f, 0x3b, 0xac, 0x3f, 0xa9, 0x96, 0xca, 0x53, 0x5e, 0x53, 0xb0, 0x31, 0xa5, + 0x2f, 0x7c, 0x5d, 0x2d, 0x7e, 0x95, 0x54, 0xd0, 0x4d, 0x58, 0x9f, 0xd2, 0xd4, 0x5e, 0x3c, 0x2d, + 0x26, 0xd5, 0x08, 0x93, 0x7d, 0xa1, 0x89, 0xe5, 0x7f, 0x5e, 0x82, 0x78, 0x2d, 0x78, 0x1d, 0xd1, + 0x09, 0xac, 0x0c, 0xa7, 0x0d, 0x69, 0x11, 0x7d, 0x9a, 0x1a, 0xf2, 0xf4, 0xbd, 0x37, 0x62, 0xe4, + 0x9d, 0xdc, 0xf9, 0xe1, 0xcf, 0x7f, 0x7e, 0x51, 0xb3, 0xda, 0x6d, 0x23, 0xe2, 0x59, 0x96, 0xe0, + 0xcf, 0x94, 0x1c, 0x3a, 0x82, 0x25, 0x31, 0x3a, 0x68, 0x2b, 0xc2, 0x6b, 0x78, 0xf0, 0xd2, 0xd9, + 0xf9, 0x00, 0x19, 0x73, 0x5b, 0xc4, 0xdc, 0x42, 0x1f, 0x18, 0x51, 0x6f, 0x32, 0x33, 0x4e, 0xfc, + 0x61, 0x3d, 0x45, 0xdf, 0x43, 0x22, 0xb4, 0x15, 0xd1, 0xf6, 0x9b, 0x96, 0xe9, 0x38, 0xfc, 0xce, + 0x65, 0x30, 0x49, 0xe2, 0xae, 0x20, 0x71, 0x5b, 0xdb, 0x8c, 0x26, 0xe1, 0xe7, 0xfc, 0x1a, 0x12, + 0xa1, 0xf7, 0x2c, 0x92, 0xc0, 0xec, 0xeb, 0x1c, 0x49, 0x20, 0xe2, 0x59, 0xd4, 0x32, 0x82, 0x40, + 0x0a, 0xcd, 0x21, 0x80, 0x7e, 0x55, 0xe0, 0xda, 0xd4, 0xcc, 0xa2, 0xfb, 0xd1, 0xbe, 0x23, 0x56, + 0x4a, 0x3a, 0xf7, 0x36, 0x50, 0x49, 0xe5, 0x81, 0xa0, 0xb2, 0x8b, 0xb6, 0xe7, 0x34, 0x44, 0x0c, + 0xa7, 0x71, 0x12, 0x2c, 0xa5, 0xd3, 0xc2, 0x17, 0x7f, 0x9c, 0x67, 0x94, 0xb3, 0xf3, 0x8c, 0xf2, + 0xf7, 0x79, 0x46, 0xf9, 0xe9, 0x22, 0xb3, 0xf0, 0xfb, 0x45, 0x46, 0x39, 0xbb, 0xc8, 0x2c, 0xfc, + 0x75, 0x91, 0x59, 0xf8, 0x36, 0x6b, 0xd9, 0xbc, 0xdd, 0x6f, 0xe8, 0x4d, 0xda, 0x35, 0x3a, 0xb6, + 0x43, 0x8c, 0x4e, 0xa3, 0xfb, 0x80, 0xb5, 0x5e, 0x0d, 0xbf, 0x6f, 0xbc, 0xc6, 0xb2, 0xf8, 0xba, + 0xf9, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0xb1, 0xa3, 0x21, 0x0a, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2842,7 +2843,7 @@ func (m *GetBlockWithTxsResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Block == nil { - m.Block = &types1.Block{} + m.Block = &types2.Block{} } if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err diff --git a/x/auth/ante/setup_test.go b/x/auth/ante/setup_test.go index e864f2b49e..0cb47694cb 100644 --- a/x/auth/ante/setup_test.go +++ b/x/auth/ante/setup_test.go @@ -1,7 +1,7 @@ package ante_test import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" cryptotypes "github.com/line/lbm-sdk/crypto/types" "github.com/line/lbm-sdk/testutil/testdata" diff --git a/x/auth/keeper/querier.go b/x/auth/keeper/querier.go index 8e13585e77..2a17fb2faf 100644 --- a/x/auth/keeper/querier.go +++ b/x/auth/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/auth/keeper/querier_test.go b/x/auth/keeper/querier_test.go index 43f22cb7db..7755ca1dcf 100644 --- a/x/auth/keeper/querier_test.go +++ b/x/auth/keeper/querier_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/testutil/testdata" keep "github.com/line/lbm-sdk/x/auth/keeper" diff --git a/x/auth/legacy/v043/store.go b/x/auth/legacy/v043/store.go index 9feb3350e5..4d0ae94765 100644 --- a/x/auth/legacy/v043/store.go +++ b/x/auth/legacy/v043/store.go @@ -23,7 +23,7 @@ import ( "github.com/gogo/protobuf/grpc" "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" diff --git a/x/auth/module.go b/x/auth/module.go index 34c8b01ba3..856475a3ce 100644 --- a/x/auth/module.go +++ b/x/auth/module.go @@ -8,8 +8,8 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/auth/module_test.go b/x/auth/module_test.go index 1b7f1002ad..5f969ede9d 100644 --- a/x/auth/module_test.go +++ b/x/auth/module_test.go @@ -3,9 +3,9 @@ package auth_test import ( "testing" - abcitypes "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/x/auth/types" @@ -16,7 +16,7 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { ctx := app.BaseApp.NewContext(false, ocproto.Header{}) app.InitChain( - abcitypes.RequestInitChain{ + abci.RequestInitChain{ AppStateBytes: []byte("{}"), ChainId: "test-chain-id", }, diff --git a/x/auth/vesting/module.go b/x/auth/vesting/module.go index deb960f798..763b2cb7f7 100644 --- a/x/auth/vesting/module.go +++ b/x/auth/vesting/module.go @@ -4,8 +4,8 @@ import ( "encoding/json" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/authz/codec/doc.go b/x/authz/codec/doc.go index ecc365a221..90ba63f6d6 100644 --- a/x/authz/codec/doc.go +++ b/x/authz/codec/doc.go @@ -6,13 +6,12 @@ can be (de)serialized properly. Amino types should be ideally registered inside this codec within the init function of each module's codec.go file as follows: -func init() { - // ... + func init() { + // ... - RegisterLegacyAminoCodec(authzcodec.Amino) -} + RegisterLegacyAminoCodec(authzcodec.Amino) + } The codec instance is put inside this package and not the x/authz package in order to avoid any dependency cycle. - */ package codec diff --git a/x/authz/keeper/keeper.go b/x/authz/keeper/keeper.go index 4e7e6c094c..a6f202a78f 100644 --- a/x/authz/keeper/keeper.go +++ b/x/authz/keeper/keeper.go @@ -7,8 +7,8 @@ import ( "github.com/gogo/protobuf/proto" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/codec" diff --git a/x/authz/module/module.go b/x/authz/module/module.go index 7f71c9e737..34213e96fc 100644 --- a/x/authz/module/module.go +++ b/x/authz/module/module.go @@ -8,7 +8,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdkclient "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/authz/simulation/operations_test.go b/x/authz/simulation/operations_test.go index 6b3d74e66a..8e9783d926 100644 --- a/x/authz/simulation/operations_test.go +++ b/x/authz/simulation/operations_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/simapp" @@ -90,7 +90,7 @@ func (suite *SimTestSuite) TestSimulateGrant() { ctx := suite.ctx.WithBlockTime(blockTime) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{ + suite.app.BeginBlock(ocabci.RequestBeginBlock{ Header: ocproto.Header{ Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash, @@ -120,7 +120,7 @@ func (suite *SimTestSuite) TestSimulateRevoke() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{ + suite.app.BeginBlock(ocabci.RequestBeginBlock{ Header: ocproto.Header{ Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash, @@ -159,7 +159,7 @@ func (suite *SimTestSuite) TestSimulateExec() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) initAmt := suite.app.StakingKeeper.TokensFromConsensusPower(suite.ctx, 200000) initCoins := sdk.NewCoins(sdk.NewCoin("stake", initAmt)) diff --git a/x/bank/bench_test.go b/x/bank/bench_test.go index 5557bf5adb..8721574b29 100644 --- a/x/bank/bench_test.go +++ b/x/bank/bench_test.go @@ -3,9 +3,10 @@ package bank_test import ( "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" simappparams "github.com/line/lbm-sdk/simapp/params" @@ -45,7 +46,7 @@ func BenchmarkOneBankSendTxPerBlock(b *testing.B) { // Run this with a profiler, so its easy to distinguish what time comes from // Committing, and what time comes from Check/Deliver Tx. for i := 0; i < b.N; i++ { - benchmarkApp.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) + benchmarkApp.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) _, err := benchmarkApp.Check(txGen.TxEncoder(), txs[i]) if err != nil { panic("something is broken in checking transaction") @@ -87,7 +88,7 @@ func BenchmarkOneBankMultiSendTxPerBlock(b *testing.B) { // Run this with a profiler, so its easy to distinguish what time comes from // Committing, and what time comes from Check/Deliver Tx. for i := 0; i < b.N; i++ { - benchmarkApp.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) + benchmarkApp.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: height}}) _, err := benchmarkApp.Check(txGen.TxEncoder(), txs[i]) if err != nil { panic("something is broken in checking transaction") diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index d7b569a439..e7608992b6 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" ostproto "github.com/line/ostracon/proto/ostracon/types" osttime "github.com/line/ostracon/types/time" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/simapp" diff --git a/x/bank/keeper/querier.go b/x/bank/keeper/querier.go index e4dd48c5c7..607c715fd7 100644 --- a/x/bank/keeper/querier.go +++ b/x/bank/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/bank/keeper/querier_test.go b/x/bank/keeper/querier_test.go index 986acf5859..5259bb6ca8 100644 --- a/x/bank/keeper/querier_test.go +++ b/x/bank/keeper/querier_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/testutil/testdata" diff --git a/x/bank/module.go b/x/bank/module.go index 730746489f..b2f51be9f9 100644 --- a/x/bank/module.go +++ b/x/bank/module.go @@ -8,8 +8,8 @@ import ( "time" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/bank/simulation/operations_test.go b/x/bank/simulation/operations_test.go index 1f03d5b447..849689b8f7 100644 --- a/x/bank/simulation/operations_test.go +++ b/x/bank/simulation/operations_test.go @@ -4,7 +4,7 @@ import ( "math/rand" "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" @@ -71,7 +71,7 @@ func (suite *SimTestSuite) TestSimulateMsgSend() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgSend(suite.app.AccountKeeper, suite.app.BankKeeper) @@ -99,7 +99,7 @@ func (suite *SimTestSuite) TestSimulateMsgMultiSend() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgMultiSend(suite.app.AccountKeeper, suite.app.BankKeeper) @@ -134,7 +134,7 @@ func (suite *SimTestSuite) TestSimulateModuleAccountMsgSend() { accounts := suite.getTestingAccounts(r, accCount) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgSendToModuleAccount(suite.app.AccountKeeper, suite.app.BankKeeper, moduleAccCount) @@ -167,7 +167,7 @@ func (suite *SimTestSuite) TestSimulateMsgMultiSendToModuleAccount() { accounts := suite.getTestingAccounts(r, accCount) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgMultiSendToModuleAccount(suite.app.AccountKeeper, suite.app.BankKeeper, mAccCount) diff --git a/x/bankplus/keeper/inactive.go b/x/bankplus/keeper/inactive.go index 5abca4b16d..b1efdc82b7 100644 --- a/x/bankplus/keeper/inactive.go +++ b/x/bankplus/keeper/inactive.go @@ -13,8 +13,9 @@ func inactiveAddrKey(addr sdk.AccAddress) []byte { return append(inactiveAddrsKeyPrefix, addr.Bytes()...) } -//nolint:deadcode,unused // isStoredInactiveAddr checks if the address is stored or not as blocked address +// +//nolint:deadcode,unused func (keeper BaseKeeper) isStoredInactiveAddr(ctx sdk.Context, address sdk.AccAddress) bool { store := ctx.KVStore(keeper.storeKey) bz := store.Get(inactiveAddrKey(address)) diff --git a/x/capability/capability_test.go b/x/capability/capability_test.go index f07cf87580..30895026e4 100644 --- a/x/capability/capability_test.go +++ b/x/capability/capability_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/codec" @@ -65,7 +65,7 @@ func (suite *CapabilityTestSuite) TestInitializeMemStore() { ctx = suite.app.BaseApp.NewContext(false, ocproto.Header{}).WithBlockGasMeter(sdk.NewGasMeter(50)) prevGas := ctx.BlockGasMeter().GasConsumed() restartedModule := capability.NewAppModule(suite.cdc, *newKeeper) - restartedModule.BeginBlock(ctx, abci.RequestBeginBlock{}) + restartedModule.BeginBlock(ctx, ocabci.RequestBeginBlock{}) suite.Require().True(newKeeper.IsInitialized(ctx), "memstore initialized flag not set") gasUsed := ctx.BlockGasMeter().GasConsumed() @@ -86,7 +86,7 @@ func (suite *CapabilityTestSuite) TestInitializeMemStore() { // Ensure the capabilities don't get reinitialized on next BeginBlock // by testing to see if capability returns same pointer // also check that initialized flag is still set - restartedModule.BeginBlock(ctx, abci.RequestBeginBlock{}) + restartedModule.BeginBlock(ctx, ocabci.RequestBeginBlock{}) recap, ok := newSk1.GetCapability(ctx, "transfer") suite.Require().True(ok) suite.Require().Equal(cap1, recap, "capabilities got reinitialized after second BeginBlock") diff --git a/x/capability/module.go b/x/capability/module.go index 21acad6a10..97a649fef4 100644 --- a/x/capability/module.go +++ b/x/capability/module.go @@ -9,7 +9,8 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -145,7 +146,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlocker calls InitMemStore to assert that the memory store is initialized. // It's safe to run multiple times. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, _ ocabci.RequestBeginBlock) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) am.keeper.InitMemStore(ctx) diff --git a/x/collection/client/testutil/suite.go b/x/collection/client/testutil/suite.go index 9835a1d91f..0eb814b219 100644 --- a/x/collection/client/testutil/suite.go +++ b/x/collection/client/testutil/suite.go @@ -15,7 +15,7 @@ import ( bankcli "github.com/line/lbm-sdk/x/bank/client/cli" "github.com/line/lbm-sdk/x/collection" "github.com/line/lbm-sdk/x/collection/client/cli" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) type IntegrationTestSuite struct { diff --git a/x/collection/collection.pb.go b/x/collection/collection.pb.go index c497e23b6f..fbfc6b6047 100644 --- a/x/collection/collection.pb.go +++ b/x/collection/collection.pb.go @@ -488,10 +488,14 @@ var xxx_messageInfo_FT proto.InternalMessageInfo // Deprecated: use TokenClass // // TokenType defines the information of token type. +// It represents a NFTClass whose class_id is token_type. +// +// Note: There is no TokenType instance for FTClass. type TokenType struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type defines the unique identifier of the token type. + // the format of the value is identical to that of class_id. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // name defines the human-readable name of the token type. Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` diff --git a/x/collection/event.pb.go b/x/collection/event.pb.go index 7445d7227e..f91b2b8e52 100644 --- a/x/collection/event.pb.go +++ b/x/collection/event.pb.go @@ -617,6 +617,7 @@ type EventCreatedNFTClass struct { // address which triggered the create. Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // token type associated with the token class. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,3,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // name of the token class. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` @@ -1136,6 +1137,7 @@ type EventModifiedTokenClass struct { // address which triggered the modify. Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` // token type associated with the token class. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,3,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // changes of the attributes applied. // possible attribute keys are same as those of MsgModify. diff --git a/x/collection/module/module.go b/x/collection/module/module.go index f042be065d..65f7edad02 100644 --- a/x/collection/module/module.go +++ b/x/collection/module/module.go @@ -6,8 +6,8 @@ import ( "fmt" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/collection/query.pb.go b/x/collection/query.pb.go index 37c3035a4b..9af3fe3a82 100644 --- a/x/collection/query.pb.go +++ b/x/collection/query.pb.go @@ -548,6 +548,7 @@ type QueryNFTSupplyRequest struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type associated with the token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } @@ -642,6 +643,7 @@ type QueryNFTMintedRequest struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type associated with the token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } @@ -736,6 +738,7 @@ type QueryNFTBurntRequest struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type associated with the token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } @@ -1027,6 +1030,7 @@ type QueryTokenTypeRequest struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type associated with the token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } @@ -1339,6 +1343,7 @@ type QueryTokensWithTokenTypeRequest struct { // contract id associated with the contract. ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` // token type associated with the token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // pagination defines an optional pagination for the request. Pagination *query.PageRequest `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` diff --git a/x/collection/tx.pb.go b/x/collection/tx.pb.go index 261e3d6207..fa5631e93e 100644 --- a/x/collection/tx.pb.go +++ b/x/collection/tx.pb.go @@ -1042,6 +1042,7 @@ func (m *MsgIssueNFT) GetOwner() string { // MsgIssueNFTResponse is the Msg/IssueNFT response type. type MsgIssueNFTResponse struct { // id of the new token type. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,1,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } @@ -1323,6 +1324,7 @@ func (m *MsgMintNFTResponse) GetTokenIds() []string { type MintNFTParam struct { // token type or class id of the nft. // Note: it cannot start with zero. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,1,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // name defines the human-readable name of the nft (mandatory). // Note: it has an app-specific limit in length. @@ -1825,6 +1827,7 @@ type MsgModify struct { // the address of the grantee which must have modify permission. Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` // token type of the token. + // refer to TokenType for the definition. TokenType string `protobuf:"bytes,3,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` // token index of the token. // if index is empty, it would modify the corresponding token type. diff --git a/x/crisis/keeper/keeper_test.go b/x/crisis/keeper/keeper_test.go index 07731cecee..4eab70c68a 100644 --- a/x/crisis/keeper/keeper_test.go +++ b/x/crisis/keeper/keeper_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -21,7 +21,7 @@ func TestLogger(t *testing.T) { func TestInvariants(t *testing.T) { app := simapp.Setup(false) app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) require.Equal(t, app.CrisisKeeper.InvCheckPeriod(), uint(5)) @@ -34,7 +34,7 @@ func TestInvariants(t *testing.T) { func TestAssertInvariants(t *testing.T) { app := simapp.Setup(false) app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1}}) ctx := app.NewContext(true, ocproto.Header{}) diff --git a/x/crisis/module.go b/x/crisis/module.go index 5955dcea4b..8858b477a2 100644 --- a/x/crisis/module.go +++ b/x/crisis/module.go @@ -6,8 +6,8 @@ import ( "time" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/distribution/abci.go b/x/distribution/abci.go index 619ca1bb75..79bb405f80 100644 --- a/x/distribution/abci.go +++ b/x/distribution/abci.go @@ -3,7 +3,7 @@ package distribution import ( "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" @@ -13,15 +13,15 @@ import ( // BeginBlocker sets the proposer for determining distribution during endblock // and distribute rewards for the previous block -func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { +func BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock, k keeper.Keeper) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) // determine the total power signing the block var previousTotalPower, sumPreviousPrecommitPower int64 for _, voteInfo := range req.LastCommitInfo.GetVotes() { - previousTotalPower += voteInfo.Validator.VotingWeight + previousTotalPower += voteInfo.Validator.Power if voteInfo.SignedLastBlock { - sumPreviousPrecommitPower += voteInfo.Validator.VotingWeight + sumPreviousPrecommitPower += voteInfo.Validator.Power } } diff --git a/x/distribution/keeper/allocation.go b/x/distribution/keeper/allocation.go index d2b9fdc84e..6db0b33cb0 100644 --- a/x/distribution/keeper/allocation.go +++ b/x/distribution/keeper/allocation.go @@ -3,7 +3,7 @@ package keeper import ( "fmt" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/distribution/types" @@ -94,7 +94,7 @@ func (k Keeper) AllocateTokens( // TODO: Consider micro-slashing for missing votes. // // Ref: https://github.com/cosmos/cosmos-sdk/issues/2525#issuecomment-430838701 - powerFraction := sdk.NewDec(vote.Validator.VotingWeight).QuoTruncate(sdk.NewDec(totalPreviousPower)) + powerFraction := sdk.NewDec(vote.Validator.Power).QuoTruncate(sdk.NewDec(totalPreviousPower)) reward := feeMultiplier.MulDecTruncate(powerFraction) k.AllocateTokensToValidator(ctx, validator, reward) diff --git a/x/distribution/keeper/allocation_test.go b/x/distribution/keeper/allocation_test.go index 798e3d1626..8ca6240842 100644 --- a/x/distribution/keeper/allocation_test.go +++ b/x/distribution/keeper/allocation_test.go @@ -3,9 +3,9 @@ package keeper_test import ( "testing" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" @@ -60,14 +60,12 @@ func TestAllocateTokensToManyValidators(t *testing.T) { tstaking.CreateValidator(valAddrs[1], valConsPk2, sdk.NewInt(100), true) abciValA := abci.Validator{ - Address: valConsPk1.Address(), - Power: 100, - VotingWeight: 100, + Address: valConsPk1.Address(), + Power: 100, } abciValB := abci.Validator{ - Address: valConsPk2.Address(), - Power: 100, - VotingWeight: 100, + Address: valConsPk2.Address(), + Power: 100, } // assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards @@ -137,19 +135,16 @@ func TestAllocateTokensTruncation(t *testing.T) { tstaking.CreateValidator(valAddrs[2], valConsPk3, sdk.NewInt(100), true) abciValA := abci.Validator{ - Address: valConsPk1.Address(), - Power: 11, - VotingWeight: 11, + Address: valConsPk1.Address(), + Power: 11, } abciValB := abci.Validator{ - Address: valConsPk2.Address(), - Power: 10, - VotingWeight: 10, + Address: valConsPk2.Address(), + Power: 10, } abciValС := abci.Validator{ - Address: valConsPk3.Address(), - Power: 10, - VotingWeight: 10, + Address: valConsPk3.Address(), + Power: 10, } // assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards diff --git a/x/distribution/keeper/querier.go b/x/distribution/keeper/querier.go index fec3c25bd8..8b66273dd9 100644 --- a/x/distribution/keeper/querier.go +++ b/x/distribution/keeper/querier.go @@ -3,7 +3,7 @@ package keeper import ( "encoding/json" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/distribution/keeper/querier_test.go b/x/distribution/keeper/querier_test.go index 72f2a5dbcc..f2033866f0 100644 --- a/x/distribution/keeper/querier_test.go +++ b/x/distribution/keeper/querier_test.go @@ -4,9 +4,9 @@ import ( "strings" "testing" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/simapp" diff --git a/x/distribution/module.go b/x/distribution/module.go index de908d1aaf..8cb20b5671 100644 --- a/x/distribution/module.go +++ b/x/distribution/module.go @@ -8,8 +8,9 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" sdkclient "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -163,7 +164,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock returns the begin blocker for the distribution module. -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) { BeginBlocker(ctx, req, am.keeper) } diff --git a/x/distribution/module_test.go b/x/distribution/module_test.go index f26ac6a395..93f8006e5b 100644 --- a/x/distribution/module_test.go +++ b/x/distribution/module_test.go @@ -3,9 +3,9 @@ package distribution_test import ( "testing" - abcitypes "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" authtypes "github.com/line/lbm-sdk/x/auth/types" @@ -17,7 +17,7 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { ctx := app.BaseApp.NewContext(false, ocproto.Header{}) app.InitChain( - abcitypes.RequestInitChain{ + abci.RequestInitChain{ AppStateBytes: []byte("{}"), ChainId: "test-chain-id", }, diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 8d8a226cd3..a260e8de36 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -4,10 +4,6 @@ import ( "math/rand" "testing" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" - "github.com/stretchr/testify/suite" - "github.com/line/lbm-sdk/simapp" simappparams "github.com/line/lbm-sdk/simapp/params" sdk "github.com/line/lbm-sdk/types" @@ -16,6 +12,9 @@ import ( "github.com/line/lbm-sdk/x/distribution/types" distrtypes "github.com/line/lbm-sdk/x/distribution/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" + ocabci "github.com/line/ostracon/abci/types" + ocproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/stretchr/testify/suite" ) // TestWeightedOperations tests the weights of the operations. @@ -63,7 +62,7 @@ func (suite *SimTestSuite) TestSimulateMsgSetWithdrawAddress() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgSetWithdrawAddress(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper) @@ -104,7 +103,7 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() { suite.setupValidatorRewards(validator0.GetOperator()) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgWithdrawDelegatorReward(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) @@ -160,7 +159,7 @@ func (suite *SimTestSuite) testSimulateMsgWithdrawValidatorCommission(tokenName suite.app.DistrKeeper.SetValidatorAccumulatedCommission(suite.ctx, validator0.GetOperator(), types.ValidatorAccumulatedCommission{Commission: valCommission}) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgWithdrawValidatorCommission(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) @@ -186,7 +185,7 @@ func (suite *SimTestSuite) TestSimulateMsgFundCommunityPool() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - suite.app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + suite.app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgFundCommunityPool(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) diff --git a/x/evidence/abci.go b/x/evidence/abci.go index 358aba6d60..7bc7314f90 100644 --- a/x/evidence/abci.go +++ b/x/evidence/abci.go @@ -4,7 +4,8 @@ import ( "fmt" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" @@ -14,7 +15,7 @@ import ( // BeginBlocker iterates through and handles any newly discovered evidence of // misbehavior submitted by Tendermint. Currently, only equivocation is handled. -func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { +func BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock, k keeper.Keeper) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) for _, tmEvidence := range req.ByzantineValidators { diff --git a/x/evidence/keeper/querier.go b/x/evidence/keeper/querier.go index 44f83de615..cb54ac7d88 100644 --- a/x/evidence/keeper/querier.go +++ b/x/evidence/keeper/querier.go @@ -8,7 +8,7 @@ import ( "github.com/line/lbm-sdk/x/evidence/exported" "github.com/line/lbm-sdk/x/evidence/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { diff --git a/x/evidence/keeper/querier_test.go b/x/evidence/keeper/querier_test.go index f5e148c78e..339bcd7951 100644 --- a/x/evidence/keeper/querier_test.go +++ b/x/evidence/keeper/querier_test.go @@ -8,7 +8,7 @@ import ( "github.com/line/lbm-sdk/x/evidence/exported" "github.com/line/lbm-sdk/x/evidence/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) const ( diff --git a/x/evidence/module.go b/x/evidence/module.go index 67feef6674..01e601c142 100644 --- a/x/evidence/module.go +++ b/x/evidence/module.go @@ -10,7 +10,8 @@ import ( "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -174,7 +175,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock executes all ABCI BeginBlock logic respective to the evidence module. -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) { BeginBlocker(ctx, req, am.keeper) } diff --git a/x/evidence/types/evidence.go b/x/evidence/types/evidence.go index 40c1cf1357..62b1f9dfab 100644 --- a/x/evidence/types/evidence.go +++ b/x/evidence/types/evidence.go @@ -4,9 +4,9 @@ import ( "fmt" "time" - abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/crypto/tmhash" ostbytes "github.com/line/ostracon/libs/bytes" + abci "github.com/tendermint/tendermint/abci/types" "gopkg.in/yaml.v2" sdk "github.com/line/lbm-sdk/types" diff --git a/x/evidence/types/evidence_test.go b/x/evidence/types/evidence_test.go index a1fc8977d7..419471a3ee 100644 --- a/x/evidence/types/evidence_test.go +++ b/x/evidence/types/evidence_test.go @@ -4,8 +4,8 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/evidence/types" diff --git a/x/feegrant/module/module.go b/x/feegrant/module/module.go index 9d63aa57f3..a6cd92589a 100644 --- a/x/feegrant/module/module.go +++ b/x/feegrant/module/module.go @@ -6,8 +6,8 @@ import ( "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" sdkclient "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/feegrant/simulation/operations_test.go b/x/feegrant/simulation/operations_test.go index 140cdc5c3a..bb4ba99cbc 100644 --- a/x/feegrant/simulation/operations_test.go +++ b/x/feegrant/simulation/operations_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/lbm-sdk/simapp" @@ -104,7 +104,7 @@ func (suite *SimTestSuite) TestSimulateMsgGrantAllowance() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgGrantAllowance(app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper) @@ -129,7 +129,7 @@ func (suite *SimTestSuite) TestSimulateMsgRevokeAllowance() { accounts := suite.getTestingAccounts(r, 3) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) feeAmt := app.StakingKeeper.TokensFromConsensusPower(ctx, 200000) feeCoins := sdk.NewCoins(sdk.NewCoin("foo", feeAmt)) diff --git a/x/foundation/module/module.go b/x/foundation/module/module.go index 380fab6be7..f4dbf3a438 100644 --- a/x/foundation/module/module.go +++ b/x/foundation/module/module.go @@ -6,8 +6,9 @@ import ( "fmt" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -143,7 +144,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock performs a no-op. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, _ ocabci.RequestBeginBlock) { keeper.BeginBlocker(ctx, am.keeper) } diff --git a/x/genutil/client/cli/collect.go b/x/genutil/client/cli/collect.go index 698db4cf22..1a940b9e04 100644 --- a/x/genutil/client/cli/collect.go +++ b/x/genutil/client/cli/collect.go @@ -65,8 +65,6 @@ func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeH cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") cmd.Flags().String(flagGenTxDir, "", "override default \"gentx\" directory from which collect and execute genesis transactions; default [--home]/config/gentx/") - cmd.Flags().String(flags.FlagPrivKeyType, flags.DefaultPrivKeyType, "specify validator's private key type (currently only ed25519 is supported).\n"+ - "This option affects the priv_key.type setting in priv_validator_key.json") return cmd } diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index 0bd3fc1ba5..c50c13dd44 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -6,17 +6,16 @@ import ( "fmt" "os" "path/filepath" - "strings" "github.com/cosmos/go-bip39" + "github.com/pkg/errors" + "github.com/spf13/cobra" + cfg "github.com/line/ostracon/config" "github.com/line/ostracon/libs/cli" ostos "github.com/line/ostracon/libs/os" ostrand "github.com/line/ostracon/libs/rand" - "github.com/line/ostracon/privval" "github.com/line/ostracon/types" - "github.com/pkg/errors" - "github.com/spf13/cobra" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" @@ -101,10 +100,6 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { } } - if strings.ToLower(config.PrivKeyType) != privval.PrivKeyTypeEd25519 { - return fmt.Errorf("unsupported %s: \"%s\"", flags.FlagPrivKeyType, config.PrivKeyType) - } - nodeID, _, err := genutil.InitializeNodeValidatorFilesFromMnemonic(config, mnemonic) if err != nil { return err @@ -155,8 +150,6 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { cmd.Flags().BoolP(FlagOverwrite, "o", false, "overwrite the genesis.json file") cmd.Flags().Bool(FlagRecover, false, "provide seed phrase to recover existing key instead of creating") cmd.Flags().String(flags.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created") - cmd.Flags().String(flags.FlagPrivKeyType, flags.DefaultPrivKeyType, "specify validator's private key type (currently only ed25519 is supported).\n"+ - "This option affects the priv_key.type setting in priv_validator_key.json") return cmd } diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 0a7943662e..ddea3dc3f1 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -88,60 +88,6 @@ func TestInitCmd(t *testing.T) { } } -func TestPrivKeyTypeSupports(t *testing.T) { - tests := []struct { - privKeyType string - shouldErr bool - }{ - { - privKeyType: "Ed25519", - shouldErr: false, - }, - { - privKeyType: "Composite", - shouldErr: true, - }, - { - privKeyType: "Lamport", - shouldErr: true, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.privKeyType, func(t *testing.T) { - home := t.TempDir() - logger := log.NewNopLogger() - cfg, err := genutiltest.CreateDefaultTendermintConfig(home) - require.NoError(t, err) - cfg.PrivKeyType = tt.privKeyType - - serverCtx := server.NewContext(viper.New(), cfg, logger) - interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewProtoCodec(interfaceRegistry) - clientCtx := client.Context{}. - WithCodec(marshaler). - WithLegacyAmino(makeCodec()). - WithHomeDir(home) - - ctx := context.Background() - ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) - ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) - - cmd := genutilcli.InitCmd(testMbm, home) - cmd.SetArgs([]string{"alice"}) - - if tt.shouldErr { - err := cmd.ExecuteContext(ctx) - require.EqualError(t, err, fmt.Sprintf("unsupported priv_key_type: \"%s\"", tt.privKeyType)) - } else { - require.NoError(t, cmd.ExecuteContext(ctx)) - } - }) - } - -} - func TestInitRecover(t *testing.T) { home := t.TempDir() logger := log.NewNopLogger() diff --git a/x/genutil/genesis.go b/x/genutil/genesis.go index 52cc3cebb3..7c29601d8c 100644 --- a/x/genutil/genesis.go +++ b/x/genutil/genesis.go @@ -1,7 +1,7 @@ package genutil import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" sdk "github.com/line/lbm-sdk/types" diff --git a/x/genutil/gentx.go b/x/genutil/gentx.go index fc34b98926..75e342dbaa 100644 --- a/x/genutil/gentx.go +++ b/x/genutil/gentx.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/genutil/module.go b/x/genutil/module.go index ba438d34f0..e806e7e8dc 100644 --- a/x/genutil/module.go +++ b/x/genutil/module.go @@ -7,7 +7,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/genutil/types/expected_keepers.go b/x/genutil/types/expected_keepers.go index a99c7b5519..820552c093 100644 --- a/x/genutil/types/expected_keepers.go +++ b/x/genutil/types/expected_keepers.go @@ -3,7 +3,7 @@ package types import ( "encoding/json" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/genutil/utils.go b/x/genutil/utils.go index 01fab9de9e..8ee95fed5f 100644 --- a/x/genutil/utils.go +++ b/x/genutil/utils.go @@ -79,10 +79,7 @@ func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic strin var filePV *privval.FilePV if len(mnemonic) == 0 { - filePV, err = privval.LoadOrGenFilePV(pvKeyFile, pvStateFile, config.PrivKeyType) - if err != nil { - return "", nil, err - } + filePV = privval.LoadOrGenFilePV(pvKeyFile, pvStateFile) } else { privKey := osted25519.GenPrivKeyFromSecret([]byte(mnemonic)) filePV = privval.NewFilePV(privKey, pvKeyFile, pvStateFile) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index cdda519061..f54bc5efd0 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -5,15 +5,14 @@ import ( "time" "github.com/golang/protobuf/proto" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" - "github.com/stretchr/testify/require" - "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/gov" "github.com/line/lbm-sdk/x/gov/types" "github.com/line/lbm-sdk/x/staking" + ocabci "github.com/line/ostracon/abci/types" + ocproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/stretchr/testify/require" ) func TestTickExpiredDepositPeriod(t *testing.T) { @@ -22,7 +21,7 @@ func TestTickExpiredDepositPeriod(t *testing.T) { addrs := simapp.AddTestAddrs(app, ctx, 10, valTokens) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) govHandler := gov.NewHandler(app.GovKeeper) @@ -74,7 +73,7 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { addrs := simapp.AddTestAddrs(app, ctx, 10, valTokens) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) govHandler := gov.NewHandler(app.GovKeeper) @@ -151,7 +150,7 @@ func TestTickPassedDepositPeriod(t *testing.T) { addrs := simapp.AddTestAddrs(app, ctx, 10, valTokens) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) govHandler := gov.NewHandler(app.GovKeeper) @@ -210,7 +209,7 @@ func TestTickPassedVotingPeriod(t *testing.T) { SortAddresses(addrs) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) govHandler := gov.NewHandler(app.GovKeeper) @@ -281,7 +280,7 @@ func TestProposalPassedEndblocker(t *testing.T) { stakingHandler := staking.NewHandler(app.StakingKeeper) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) valAddr := sdk.ValAddress(addrs[0]) @@ -330,7 +329,7 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { stakingHandler := staking.NewHandler(app.StakingKeeper) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) valAddr := sdk.ValAddress(addrs[0]) diff --git a/x/gov/genesis_test.go b/x/gov/genesis_test.go index d7578ee573..0d3d027648 100644 --- a/x/gov/genesis_test.go +++ b/x/gov/genesis_test.go @@ -4,10 +4,11 @@ import ( "encoding/json" "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/simapp" @@ -27,7 +28,7 @@ func TestImportExportQueues(t *testing.T) { SortAddresses(addrs) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) ctx = app.BaseApp.NewContext(false, ocproto.Header{}) @@ -80,10 +81,10 @@ func TestImportExportQueues(t *testing.T) { ) app2.Commit() - app2.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app2.LastBlockHeight() + 1}}) + app2.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app2.LastBlockHeight() + 1}}) header = ocproto.Header{Height: app2.LastBlockHeight() + 1} - app2.BeginBlock(abci.RequestBeginBlock{Header: header}) + app2.BeginBlock(ocabci.RequestBeginBlock{Header: header}) ctx2 := app2.BaseApp.NewContext(false, ocproto.Header{}) @@ -141,7 +142,7 @@ func TestEqualProposals(t *testing.T) { SortAddresses(addrs) header := ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) // Submit two proposals proposal := TestProposal diff --git a/x/gov/keeper/querier.go b/x/gov/keeper/querier.go index 3c1f93f00a..73ef6ecfd1 100644 --- a/x/gov/keeper/querier.go +++ b/x/gov/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/gov/keeper/querier_test.go b/x/gov/keeper/querier_test.go index 1bfe9cdd5d..9ccec3dee4 100644 --- a/x/gov/keeper/querier_test.go +++ b/x/gov/keeper/querier_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/simapp" diff --git a/x/gov/module.go b/x/gov/module.go index 6121f7dc16..8b84bf4338 100644 --- a/x/gov/module.go +++ b/x/gov/module.go @@ -11,7 +11,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/gov/module_test.go b/x/gov/module_test.go index 897ae27ba7..7253f6937b 100644 --- a/x/gov/module_test.go +++ b/x/gov/module_test.go @@ -3,9 +3,9 @@ package gov_test import ( "testing" - abcitypes "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" authtypes "github.com/line/lbm-sdk/x/auth/types" @@ -17,7 +17,7 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { ctx := app.BaseApp.NewContext(false, ocproto.Header{}) app.InitChain( - abcitypes.RequestInitChain{ + abci.RequestInitChain{ AppStateBytes: []byte("{}"), ChainId: "test-chain-id", }, diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index 6d077771a3..08ad65d556 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -104,7 +104,7 @@ func TestSimulateMsgSubmitProposal(t *testing.T) { accounts := getTestingAccounts(t, r, app, ctx, 3) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgSubmitProposal(app.AccountKeeper, app.BankKeeper, app.GovKeeper, MockWeightedProposalContent{3}.ContentSimulatorFn()) @@ -148,7 +148,7 @@ func TestSimulateMsgDeposit(t *testing.T) { app.GovKeeper.SetProposal(ctx, proposal) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgDeposit(app.AccountKeeper, app.BankKeeper, app.GovKeeper) @@ -191,7 +191,7 @@ func TestSimulateMsgVote(t *testing.T) { app.GovKeeper.ActivateVotingPeriod(ctx, proposal) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgVote(app.AccountKeeper, app.BankKeeper, app.GovKeeper) @@ -234,7 +234,7 @@ func TestSimulateMsgVoteWeighted(t *testing.T) { app.GovKeeper.ActivateVotingPeriod(ctx, proposal) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgVoteWeighted(app.AccountKeeper, app.BankKeeper, app.GovKeeper) diff --git a/x/mint/keeper/querier.go b/x/mint/keeper/querier.go index c53d2fd655..5feeac5c96 100644 --- a/x/mint/keeper/querier.go +++ b/x/mint/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/mint/keeper/querier_test.go b/x/mint/keeper/querier_test.go index 5b5cd29029..66cef7ab28 100644 --- a/x/mint/keeper/querier_test.go +++ b/x/mint/keeper/querier_test.go @@ -11,7 +11,7 @@ import ( keep "github.com/line/lbm-sdk/x/mint/keeper" "github.com/line/lbm-sdk/x/mint/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) func TestNewQuerier(t *testing.T) { diff --git a/x/mint/module.go b/x/mint/module.go index a8832b8f6a..e1f7bf631b 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -7,8 +7,9 @@ import ( "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -146,7 +147,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock returns the begin blocker for the mint module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, _ ocabci.RequestBeginBlock) { BeginBlocker(ctx, am.keeper) } diff --git a/x/mint/module_test.go b/x/mint/module_test.go index 17445d5f3d..47dacb8e29 100644 --- a/x/mint/module_test.go +++ b/x/mint/module_test.go @@ -3,9 +3,9 @@ package mint_test import ( "testing" - abcitypes "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" authtypes "github.com/line/lbm-sdk/x/auth/types" @@ -17,7 +17,7 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { ctx := app.BaseApp.NewContext(false, ocproto.Header{}) app.InitChain( - abcitypes.RequestInitChain{ + abci.RequestInitChain{ AppStateBytes: []byte("{}"), ChainId: "test-chain-id", }, diff --git a/x/params/keeper/consensus_params.go b/x/params/keeper/consensus_params.go index ebb15bbedd..45848cb736 100644 --- a/x/params/keeper/consensus_params.go +++ b/x/params/keeper/consensus_params.go @@ -1,8 +1,8 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/x/params/types" @@ -19,10 +19,10 @@ func ConsensusParamsKeyTable() types.KeyTable { baseapp.ParamStoreKeyBlockParams, abci.BlockParams{}, baseapp.ValidateBlockParams, ), types.NewParamSetPair( - baseapp.ParamStoreKeyEvidenceParams, ocproto.EvidenceParams{}, baseapp.ValidateEvidenceParams, + baseapp.ParamStoreKeyEvidenceParams, tmproto.EvidenceParams{}, baseapp.ValidateEvidenceParams, ), types.NewParamSetPair( - baseapp.ParamStoreKeyValidatorParams, ocproto.ValidatorParams{}, baseapp.ValidateValidatorParams, + baseapp.ParamStoreKeyValidatorParams, tmproto.ValidatorParams{}, baseapp.ValidateValidatorParams, ), ) } diff --git a/x/params/keeper/querier.go b/x/params/keeper/querier.go index 0bf1dae80a..04fde5a862 100644 --- a/x/params/keeper/querier.go +++ b/x/params/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/params/module.go b/x/params/module.go index 375a436e52..70c22e5ba0 100644 --- a/x/params/module.go +++ b/x/params/module.go @@ -7,8 +7,8 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/simulation/doc.go b/x/simulation/doc.go index 7598983148..b4dbda4726 100644 --- a/x/simulation/doc.go +++ b/x/simulation/doc.go @@ -48,71 +48,70 @@ others state execution outcome. To execute a completely pseudo-random simulation: - $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -v -timeout 24h + $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -v -timeout 24h To execute simulation from a genesis file: - $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -Genesis=/path/to/genesis.json \ - -v -timeout 24h + $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -Genesis=/path/to/genesis.json \ + -v -timeout 24h To execute simulation from a simulation params file: - $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -Params=/path/to/params.json \ - -v -timeout 24h + $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -Params=/path/to/params.json \ + -v -timeout 24h To export the simulation params to a file at a given block height: - $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -ExportParamsPath=/path/to/params.json \ - -ExportParamsHeight=50 \ - -v -timeout 24h - + $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -ExportParamsPath=/path/to/params.json \ + -ExportParamsHeight=50 \ + -v -timeout 24h To export the simulation app state (i.e genesis) to a file: - $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -ExportStatePath=/path/to/genesis.json \ - v -timeout 24h - -Params + $ go test -mod=readonly github.com/line/lbm-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -ExportStatePath=/path/to/genesis.json \ + v -timeout 24h + +# Params Params that are provided to simulation from a JSON file are used to used to set both module parameters and simulation parameters. See sim_test.go for the full diff --git a/x/simulation/mock_ostracon.go b/x/simulation/mock_ostracon.go index 9107ce0c16..e583f5f019 100644 --- a/x/simulation/mock_ostracon.go +++ b/x/simulation/mock_ostracon.go @@ -7,10 +7,11 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" cryptoenc "github.com/line/ostracon/crypto/encoding" ostbytes "github.com/line/ostracon/libs/bytes" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" ) type mockValidator struct { @@ -118,9 +119,9 @@ func RandomRequestBeginBlock(r *rand.Rand, params Params, validators mockValidators, pastTimes []time.Time, pastVoteInfos [][]abci.VoteInfo, event func(route, op, evResult string), header ocproto.Header, -) abci.RequestBeginBlock { +) ocabci.RequestBeginBlock { if len(validators) == 0 { - return abci.RequestBeginBlock{ + return ocabci.RequestBeginBlock{ Header: header, } } @@ -155,9 +156,8 @@ func RandomRequestBeginBlock(r *rand.Rand, params Params, voteInfos[i] = abci.VoteInfo{ Validator: abci.Validator{ - Address: pubkey.Address(), - Power: mVal.val.Power, - VotingWeight: mVal.val.Power, + Address: pubkey.Address(), + Power: mVal.val.Power, }, SignedLastBlock: signed, } @@ -165,7 +165,7 @@ func RandomRequestBeginBlock(r *rand.Rand, params Params, // return if no past times if len(pastTimes) == 0 { - return abci.RequestBeginBlock{ + return ocabci.RequestBeginBlock{ Header: header, LastCommitInfo: abci.LastCommitInfo{ Votes: voteInfos, @@ -208,7 +208,7 @@ func RandomRequestBeginBlock(r *rand.Rand, params Params, event("begin_block", "evidence", "ok") } - return abci.RequestBeginBlock{ + return ocabci.RequestBeginBlock{ Header: header, LastCommitInfo: abci.LastCommitInfo{ Votes: voteInfos, diff --git a/x/simulation/params.go b/x/simulation/params.go index fc149a3eb9..9cd7d971fa 100644 --- a/x/simulation/params.go +++ b/x/simulation/params.go @@ -5,9 +5,9 @@ import ( "fmt" "math/rand" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/types/simulation" @@ -164,10 +164,10 @@ func randomConsensusParams(r *rand.Rand, appState json.RawMessage, cdc codec.JSO MaxBytes: int64(simulation.RandIntBetween(r, 20000000, 30000000)), MaxGas: -1, }, - Validator: &ocproto.ValidatorParams{ + Validator: &tmproto.ValidatorParams{ PubKeyTypes: []string{types.ABCIPubKeyTypeEd25519}, }, - Evidence: &ocproto.EvidenceParams{ + Evidence: &tmproto.EvidenceParams{ MaxAgeNumBlocks: int64(stakingGenesisState.Params.UnbondingTime / AverageBlockTime), MaxAgeDuration: stakingGenesisState.Params.UnbondingTime, }, diff --git a/x/simulation/simulate.go b/x/simulation/simulate.go index 59a302d3d0..165162003b 100644 --- a/x/simulation/simulate.go +++ b/x/simulation/simulate.go @@ -10,8 +10,8 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/codec" diff --git a/x/slashing/abci.go b/x/slashing/abci.go index baea82f2da..e0120ace09 100644 --- a/x/slashing/abci.go +++ b/x/slashing/abci.go @@ -3,7 +3,7 @@ package slashing import ( "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" @@ -13,7 +13,7 @@ import ( // BeginBlocker check for infraction evidence or downtime of validators // on every begin block -func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { +func BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock, k keeper.Keeper) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) // Iterate over all the validators which *should* have signed this block diff --git a/x/slashing/abci_test.go b/x/slashing/abci_test.go index a5ac8ef938..eece3a5adf 100644 --- a/x/slashing/abci_test.go +++ b/x/slashing/abci_test.go @@ -4,9 +4,10 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" @@ -36,13 +37,12 @@ func TestBeginBlocker(t *testing.T) { require.Equal(t, amt, app.StakingKeeper.Validator(ctx, addr).GetBondedTokens()) val := abci.Validator{ - Address: pk.Address(), - Power: power, - VotingWeight: power, + Address: pk.Address(), + Power: power, } // mark the validator as having signed - req := abci.RequestBeginBlock{ + req := ocabci.RequestBeginBlock{ LastCommitInfo: abci.LastCommitInfo{ Votes: []abci.VoteInfo{{ Validator: val, @@ -65,7 +65,7 @@ func TestBeginBlocker(t *testing.T) { // for 1000 blocks, mark the validator as having signed for ; height < app.SlashingKeeper.SignedBlocksWindow(ctx); height++ { ctx = ctx.WithBlockHeight(height) - req = abci.RequestBeginBlock{ + req = ocabci.RequestBeginBlock{ LastCommitInfo: abci.LastCommitInfo{ Votes: []abci.VoteInfo{{ Validator: val, @@ -80,7 +80,7 @@ func TestBeginBlocker(t *testing.T) { // for 500 blocks, mark the validator as having not signed for ; height < ((app.SlashingKeeper.SignedBlocksWindow(ctx) * 2) - app.SlashingKeeper.MinSignedPerWindow(ctx) + 1); height++ { ctx = ctx.WithBlockHeight(height) - req = abci.RequestBeginBlock{ + req = ocabci.RequestBeginBlock{ LastCommitInfo: abci.LastCommitInfo{ Votes: []abci.VoteInfo{{ Validator: val, diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index 5304b2b1de..76519ea007 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -4,7 +4,7 @@ import ( "errors" "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -75,7 +75,7 @@ func TestSlashingMsgs(t *testing.T) { simapp.CheckBalance(t, app, addr1, sdk.Coins{genCoin.Sub(bondCoin)}) header = ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) validator := checkValidator(t, app, addr1, true) require.Equal(t, sdk.ValAddress(addr1).String(), validator.OperatorAddress) diff --git a/x/slashing/keeper/querier.go b/x/slashing/keeper/querier.go index 53f231f62a..c10093ca94 100644 --- a/x/slashing/keeper/querier.go +++ b/x/slashing/keeper/querier.go @@ -1,7 +1,7 @@ package keeper import ( - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/slashing/keeper/querier_test.go b/x/slashing/keeper/querier_test.go index afde0a4215..ee2c0e8254 100644 --- a/x/slashing/keeper/querier_test.go +++ b/x/slashing/keeper/querier_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/simapp" diff --git a/x/slashing/module.go b/x/slashing/module.go index 387d8bd71d..7a704b48c0 100644 --- a/x/slashing/module.go +++ b/x/slashing/module.go @@ -10,7 +10,8 @@ import ( "github.com/spf13/cobra" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -159,7 +160,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock returns the begin blocker for the slashing module. -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) { BeginBlocker(ctx, req, am.keeper) } diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index 3c85eb76a4..ff70d57f62 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -86,7 +86,7 @@ func TestSimulateMsgUnjail(t *testing.T) { app.DistrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), val0AccAddress.Bytes(), distrtypes.NewDelegatorStartingInfo(2, sdk.OneDec(), 200)) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgUnjail(app.AccountKeeper, app.BankKeeper, app.SlashingKeeper, app.StakingKeeper) diff --git a/x/staking/abci.go b/x/staking/abci.go index 6cb467ef25..11268a4db5 100644 --- a/x/staking/abci.go +++ b/x/staking/abci.go @@ -3,7 +3,7 @@ package staking import ( "time" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" diff --git a/x/staking/app_test.go b/x/staking/app_test.go index 53f331ab96..542ca8d672 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -3,7 +3,7 @@ package staking_test import ( "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -76,7 +76,7 @@ func TestStakingMsgs(t *testing.T) { simapp.CheckBalance(t, app, addr1, sdk.Coins{genCoin.Sub(bondCoin)}) header = ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) validator := checkValidator(t, app, sdk.ValAddress(addr1), true) require.Equal(t, sdk.ValAddress(addr1).String(), validator.OperatorAddress) @@ -84,7 +84,7 @@ func TestStakingMsgs(t *testing.T) { require.True(sdk.IntEq(t, bondTokens, validator.BondedTokens())) header = ocproto.Header{Height: app.LastBlockHeight() + 1} - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: header}) // edit the validator description = types.NewDescription("bar_moniker", "", "", "", "") diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index fd3b9967a7..1d5e214519 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -8,9 +8,9 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" + "github.com/tendermint/tendermint/proto/tendermint/crypto" ostcli "github.com/line/ostracon/libs/cli" - "github.com/line/ostracon/proto/ostracon/crypto" "github.com/line/ostracon/rpc/client/http" "github.com/line/lbm-sdk/client/flags" diff --git a/x/staking/genesis.go b/x/staking/genesis.go index 65c00f1b71..29fe005302 100644 --- a/x/staking/genesis.go +++ b/x/staking/genesis.go @@ -4,8 +4,8 @@ import ( "fmt" "log" - abci "github.com/line/ostracon/abci/types" octypes "github.com/line/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" cryptocodec "github.com/line/lbm-sdk/crypto/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/staking/genesis_test.go b/x/staking/genesis_test.go index ed967ef61b..211fbce4fb 100644 --- a/x/staking/genesis_test.go +++ b/x/staking/genesis_test.go @@ -5,10 +5,10 @@ import ( "log" "testing" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" codectypes "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/crypto/keys/ed25519" diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index 256da26402..32a6a1b479 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -6,11 +6,12 @@ import ( "time" "github.com/golang/protobuf/proto" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" octypes "github.com/line/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" cryptocodec "github.com/line/lbm-sdk/crypto/codec" "github.com/line/lbm-sdk/crypto/keys/ed25519" @@ -170,7 +171,7 @@ func TestInvalidPubKeyTypeMsgCreateValidator(t *testing.T) { initPower := int64(1000) app, ctx, _, valAddrs := bootstrapHandlerGenesisTest(t, initPower, 1, sdk.TokensFromConsensusPower(initPower, sdk.DefaultPowerReduction)) ctx = ctx.WithConsensusParams(&abci.ConsensusParams{ - Validator: &ocproto.ValidatorParams{PubKeyTypes: []string{octypes.ABCIPubKeyTypeEd25519}}, + Validator: &tmproto.ValidatorParams{PubKeyTypes: []string{octypes.ABCIPubKeyTypeEd25519}}, }) addr := valAddrs[0] @@ -184,7 +185,7 @@ func TestInvalidPubKeyTypeMsgCreateValidator(t *testing.T) { func TestBothPubKeyTypesMsgCreateValidator(t *testing.T) { app, ctx, _, valAddrs := bootstrapHandlerGenesisTest(t, 1000, 2, sdk.NewInt(1000)) ctx = ctx.WithConsensusParams(&abci.ConsensusParams{ - Validator: &ocproto.ValidatorParams{PubKeyTypes: []string{octypes.ABCIPubKeyTypeEd25519, octypes.ABCIPubKeyTypeSecp256k1}}, + Validator: &tmproto.ValidatorParams{PubKeyTypes: []string{octypes.ABCIPubKeyTypeEd25519, octypes.ABCIPubKeyTypeSecp256k1}}, }) tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) diff --git a/x/staking/keeper/querier.go b/x/staking/keeper/querier.go index 5a1eff2afd..4e0e8176ed 100644 --- a/x/staking/keeper/querier.go +++ b/x/staking/keeper/querier.go @@ -4,7 +4,7 @@ import ( "errors" "strings" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/staking/keeper/querier_test.go b/x/staking/keeper/querier_test.go index 1fa36ecfc2..cc9a2d8f42 100644 --- a/x/staking/keeper/querier_test.go +++ b/x/staking/keeper/querier_test.go @@ -4,9 +4,9 @@ import ( "fmt" "testing" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/simapp" diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index 1a6ced8914..8cdf574390 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -8,7 +8,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/staking/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" ) // BlockValidatorUpdates calculates the ValidatorUpdates for the current block diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index c6ce65628f..f0e40b199e 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -5,10 +5,10 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" cryptotypes "github.com/line/lbm-sdk/crypto/types" "github.com/line/lbm-sdk/simapp" diff --git a/x/staking/module.go b/x/staking/module.go index 129eb091d9..2cabbfad60 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -8,8 +8,9 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -161,7 +162,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock returns the begin blocker for the staking module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, _ ocabci.RequestBeginBlock) { BeginBlocker(ctx, am.keeper) } diff --git a/x/staking/module_test.go b/x/staking/module_test.go index 54673ed5e4..623d021e9c 100644 --- a/x/staking/module_test.go +++ b/x/staking/module_test.go @@ -3,9 +3,9 @@ package staking_test import ( "testing" - abcitypes "github.com/line/ostracon/abci/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/simapp" authtypes "github.com/line/lbm-sdk/x/auth/types" @@ -17,7 +17,7 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { ctx := app.BaseApp.NewContext(false, ocproto.Header{}) app.InitChain( - abcitypes.RequestInitChain{ + abci.RequestInitChain{ AppStateBytes: []byte("{}"), ChainId: "test-chain-id", }, diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index 123241caca..e50a9b28ec 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -5,10 +5,6 @@ import ( "testing" "time" - abci "github.com/line/ostracon/abci/types" - ocproto "github.com/line/ostracon/proto/ostracon/types" - "github.com/stretchr/testify/require" - "github.com/line/lbm-sdk/simapp" simappparams "github.com/line/lbm-sdk/simapp/params" sdk "github.com/line/lbm-sdk/types" @@ -18,6 +14,9 @@ import ( "github.com/line/lbm-sdk/x/staking/simulation" "github.com/line/lbm-sdk/x/staking/teststaking" "github.com/line/lbm-sdk/x/staking/types" + ocabci "github.com/line/ostracon/abci/types" + ocproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/stretchr/testify/require" ) // TestWeightedOperations tests the weights of the operations. @@ -71,7 +70,7 @@ func TestSimulateMsgCreateValidator(t *testing.T) { accounts := getTestingAccounts(t, r, app, ctx, 3) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash}}) // execute operation op := simulation.SimulateMsgCreateValidator(app.AccountKeeper, app.BankKeeper, app.StakingKeeper) @@ -108,7 +107,7 @@ func TestSimulateMsgEditValidator(t *testing.T) { _ = getTestingValidator0(t, app, ctx, accounts) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgEditValidator(app.AccountKeeper, app.BankKeeper, app.StakingKeeper) @@ -146,7 +145,7 @@ func TestSimulateMsgDelegate(t *testing.T) { setupValidatorRewards(app, ctx, validator0.GetOperator()) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgDelegate(app.AccountKeeper, app.BankKeeper, app.StakingKeeper) @@ -191,7 +190,7 @@ func TestSimulateMsgUndelegate(t *testing.T) { setupValidatorRewards(app, ctx, validator0.GetOperator()) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation op := simulation.SimulateMsgUndelegate(app.AccountKeeper, app.BankKeeper, app.StakingKeeper) @@ -239,7 +238,7 @@ func TestSimulateMsgBeginRedelegate(t *testing.T) { setupValidatorRewards(app, ctx, validator1.GetOperator()) // begin a new block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: app.LastBlockHeight() + 1, AppHash: app.LastCommitID().Hash, Time: blockTime}}) // execute operation // SimulateMsgBeginRedelegate selects a validator randomly, so this test code was modified such that diff --git a/x/staking/types/exported.go b/x/staking/types/exported.go index 98e80a8c5e..66fe305416 100644 --- a/x/staking/types/exported.go +++ b/x/staking/types/exported.go @@ -1,7 +1,7 @@ package types import ( - ocprotocrypto "github.com/line/ostracon/proto/ostracon/crypto" + tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" cryptotypes "github.com/line/lbm-sdk/crypto/types" sdk "github.com/line/lbm-sdk/types" @@ -24,7 +24,7 @@ type ValidatorI interface { IsUnbonding() bool // check if has status unbonding GetOperator() sdk.ValAddress // operator address to receive/return validators coins ConsPubKey() (cryptotypes.PubKey, error) // validation consensus pubkey (cryptotypes.PubKey) - OcConsPublicKey() (ocprotocrypto.PublicKey, error) // validation consensus pubkey (Ostracon) + OcConsPublicKey() (tmprotocrypto.PublicKey, error) // validation consensus pubkey (Ostracon) GetConsAddr() (sdk.ConsAddress, error) // validation consensus address GetTokens() sdk.Int // validation tokens GetBondedTokens() sdk.Int // validator bonded tokens diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 352378b9c6..3e50991cc1 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -1260,623 +1260,630 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 9853 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x70, 0x1c, 0xd9, - 0x75, 0x18, 0x8c, 0x9e, 0x07, 0x30, 0x73, 0x30, 0x00, 0x06, 0x17, 0x20, 0x38, 0x1c, 0x72, 0x01, - 0x6c, 0xef, 0x8b, 0xcb, 0x5d, 0x82, 0xbb, 0xdc, 0x25, 0x77, 0x39, 0x94, 0x44, 0xcf, 0x00, 0x43, - 0x10, 0x4b, 0xbc, 0xb6, 0x01, 0x70, 0x57, 0x6b, 0xfb, 0x9b, 0xaf, 0xd1, 0x73, 0x31, 0xe8, 0xc5, - 0x4c, 0x77, 0xab, 0xbb, 0x87, 0x24, 0x56, 0x51, 0x6a, 0x25, 0xd9, 0xb2, 0xb4, 0xae, 0x24, 0x92, - 0x95, 0x2a, 0xeb, 0x45, 0x65, 0x65, 0x29, 0x91, 0x22, 0x3b, 0xb6, 0x14, 0x2b, 0x72, 0x9c, 0xb8, - 0x12, 0xa9, 0x52, 0xb6, 0x1e, 0x3f, 0x12, 0x29, 0x49, 0x39, 0x8e, 0xe2, 0xa2, 0x9c, 0xd5, 0x56, - 0x59, 0x51, 0x94, 0x58, 0xa1, 0xe5, 0x3c, 0x4a, 0x3f, 0x92, 0xba, 0xaf, 0x7e, 0xcd, 0x13, 0x5c, - 0x52, 0x92, 0xe3, 0xfc, 0xc2, 0xdc, 0x7b, 0xcf, 0x39, 0xf7, 0x9c, 0x73, 0xcf, 0x39, 0xf7, 0xdc, - 0x57, 0x03, 0x3e, 0x7f, 0x1e, 0x66, 0x6b, 0xa6, 0x59, 0xab, 0xe3, 0x53, 0x96, 0x6d, 0xba, 0xe6, - 0x76, 0x73, 0xe7, 0x54, 0x15, 0x3b, 0x9a, 0xad, 0x5b, 0xae, 0x69, 0xcf, 0xd1, 0x3a, 0x34, 0xc6, - 0x20, 0xe6, 0x04, 0x84, 0xbc, 0x02, 0xe3, 0x17, 0xf5, 0x3a, 0x5e, 0xf0, 0x00, 0x37, 0xb0, 0x8b, - 0x9e, 0x86, 0xc4, 0x8e, 0x5e, 0xc7, 0x39, 0x69, 0x36, 0x7e, 0x7c, 0xf8, 0xf4, 0xfd, 0x73, 0x11, - 0xa4, 0xb9, 0x30, 0xc6, 0x3a, 0xa9, 0x56, 0x28, 0x86, 0xfc, 0x7a, 0x02, 0x26, 0xda, 0xb4, 0x22, - 0x04, 0x09, 0x43, 0x6d, 0x10, 0x8a, 0xd2, 0xf1, 0xb4, 0x42, 0x7f, 0xa3, 0x1c, 0x0c, 0x59, 0xaa, - 0xb6, 0xa7, 0xd6, 0x70, 0x2e, 0x46, 0xab, 0x45, 0x11, 0x4d, 0x03, 0x54, 0xb1, 0x85, 0x8d, 0x2a, - 0x36, 0xb4, 0xfd, 0x5c, 0x7c, 0x36, 0x7e, 0x3c, 0xad, 0x04, 0x6a, 0xd0, 0x23, 0x30, 0x6e, 0x35, - 0xb7, 0xeb, 0xba, 0x56, 0x09, 0x80, 0xc1, 0x6c, 0xfc, 0x78, 0x52, 0xc9, 0xb2, 0x86, 0x05, 0x1f, - 0xf8, 0x21, 0x18, 0xbb, 0x86, 0xd5, 0xbd, 0x20, 0xe8, 0x30, 0x05, 0x1d, 0x25, 0xd5, 0x01, 0xc0, - 0x79, 0xc8, 0x34, 0xb0, 0xe3, 0xa8, 0x35, 0x5c, 0x71, 0xf7, 0x2d, 0x9c, 0x4b, 0x50, 0xe9, 0x67, - 0x5b, 0xa4, 0x8f, 0x4a, 0x3e, 0xcc, 0xb1, 0x36, 0xf7, 0x2d, 0x8c, 0x8a, 0x90, 0xc6, 0x46, 0xb3, - 0xc1, 0x28, 0x24, 0x3b, 0xe8, 0xaf, 0x6c, 0x34, 0x1b, 0x51, 0x2a, 0x29, 0x82, 0xc6, 0x49, 0x0c, - 0x39, 0xd8, 0xbe, 0xaa, 0x6b, 0x38, 0x37, 0x48, 0x09, 0x3c, 0xd4, 0x42, 0x60, 0x83, 0xb5, 0x47, - 0x69, 0x08, 0x3c, 0x34, 0x0f, 0x69, 0x7c, 0xdd, 0xc5, 0x86, 0xa3, 0x9b, 0x46, 0x6e, 0x88, 0x12, - 0x79, 0xa0, 0xcd, 0x28, 0xe2, 0x7a, 0x35, 0x4a, 0xc2, 0xc7, 0x43, 0x67, 0x61, 0xc8, 0xb4, 0x5c, - 0xdd, 0x34, 0x9c, 0x5c, 0x6a, 0x56, 0x3a, 0x3e, 0x7c, 0xfa, 0x58, 0x5b, 0x43, 0x58, 0x63, 0x30, - 0x8a, 0x00, 0x46, 0x4b, 0x90, 0x75, 0xcc, 0xa6, 0xad, 0xe1, 0x8a, 0x66, 0x56, 0x71, 0x45, 0x37, - 0x76, 0xcc, 0x5c, 0x9a, 0x12, 0x98, 0x69, 0x15, 0x84, 0x02, 0xce, 0x9b, 0x55, 0xbc, 0x64, 0xec, - 0x98, 0xca, 0xa8, 0x13, 0x2a, 0xa3, 0x29, 0x18, 0x74, 0xf6, 0x0d, 0x57, 0xbd, 0x9e, 0xcb, 0x50, - 0x0b, 0xe1, 0x25, 0xf9, 0x77, 0x07, 0x61, 0xac, 0x1f, 0x13, 0x3b, 0x0f, 0xc9, 0x1d, 0x22, 0x65, - 0x2e, 0x76, 0x10, 0x1d, 0x30, 0x9c, 0xb0, 0x12, 0x07, 0x6f, 0x53, 0x89, 0x45, 0x18, 0x36, 0xb0, - 0xe3, 0xe2, 0x2a, 0xb3, 0x88, 0x78, 0x9f, 0x36, 0x05, 0x0c, 0xa9, 0xd5, 0xa4, 0x12, 0xb7, 0x65, - 0x52, 0xcf, 0xc3, 0x98, 0xc7, 0x52, 0xc5, 0x56, 0x8d, 0x9a, 0xb0, 0xcd, 0x53, 0xbd, 0x38, 0x99, - 0x2b, 0x0b, 0x3c, 0x85, 0xa0, 0x29, 0xa3, 0x38, 0x54, 0x46, 0x0b, 0x00, 0xa6, 0x81, 0xcd, 0x9d, - 0x4a, 0x15, 0x6b, 0xf5, 0x5c, 0xaa, 0x83, 0x96, 0xd6, 0x08, 0x48, 0x8b, 0x96, 0x4c, 0x56, 0xab, - 0xd5, 0xd1, 0x39, 0xdf, 0xd4, 0x86, 0x3a, 0x58, 0xca, 0x0a, 0x73, 0xb2, 0x16, 0x6b, 0xdb, 0x82, - 0x51, 0x1b, 0x13, 0xbb, 0xc7, 0x55, 0x2e, 0x59, 0x9a, 0x32, 0x31, 0xd7, 0x53, 0x32, 0x85, 0xa3, - 0x31, 0xc1, 0x46, 0xec, 0x60, 0x11, 0xdd, 0x07, 0x5e, 0x45, 0x85, 0x9a, 0x15, 0xd0, 0x28, 0x94, - 0x11, 0x95, 0xab, 0x6a, 0x03, 0xe7, 0x5f, 0x82, 0xd1, 0xb0, 0x7a, 0xd0, 0x24, 0x24, 0x1d, 0x57, - 0xb5, 0x5d, 0x6a, 0x85, 0x49, 0x85, 0x15, 0x50, 0x16, 0xe2, 0xd8, 0xa8, 0xd2, 0x28, 0x97, 0x54, - 0xc8, 0x4f, 0xf4, 0x33, 0xbe, 0xc0, 0x71, 0x2a, 0xf0, 0x83, 0xad, 0x23, 0x1a, 0xa2, 0x1c, 0x95, - 0x3b, 0xff, 0x14, 0x8c, 0x84, 0x04, 0xe8, 0xb7, 0x6b, 0xf9, 0xaf, 0xc1, 0xa1, 0xb6, 0xa4, 0xd1, - 0xf3, 0x30, 0xd9, 0x34, 0x74, 0xc3, 0xc5, 0xb6, 0x65, 0x63, 0x62, 0xb1, 0xac, 0xab, 0xdc, 0x9f, - 0x0e, 0x75, 0xb0, 0xb9, 0xad, 0x20, 0x34, 0xa3, 0xa2, 0x4c, 0x34, 0x5b, 0x2b, 0x4f, 0xa4, 0x53, - 0xdf, 0x1d, 0xca, 0xbe, 0xfc, 0xf2, 0xcb, 0x2f, 0xc7, 0xe4, 0x2f, 0x0f, 0xc2, 0x64, 0x3b, 0x9f, - 0x69, 0xeb, 0xbe, 0x53, 0x30, 0x68, 0x34, 0x1b, 0xdb, 0xd8, 0xa6, 0x4a, 0x4a, 0x2a, 0xbc, 0x84, - 0x8a, 0x90, 0xac, 0xab, 0xdb, 0xb8, 0x9e, 0x4b, 0xcc, 0x4a, 0xc7, 0x47, 0x4f, 0x3f, 0xd2, 0x97, - 0x57, 0xce, 0x2d, 0x13, 0x14, 0x85, 0x61, 0xa2, 0xb7, 0x40, 0x82, 0x87, 0x68, 0x42, 0xe1, 0x44, - 0x7f, 0x14, 0x88, 0x2f, 0x29, 0x14, 0x0f, 0x1d, 0x85, 0x34, 0xf9, 0xcb, 0x6c, 0x63, 0x90, 0xf2, - 0x9c, 0x22, 0x15, 0xc4, 0x2e, 0x50, 0x1e, 0x52, 0xd4, 0x4d, 0xaa, 0x58, 0x4c, 0x6d, 0x5e, 0x99, - 0x18, 0x56, 0x15, 0xef, 0xa8, 0xcd, 0xba, 0x5b, 0xb9, 0xaa, 0xd6, 0x9b, 0x98, 0x1a, 0x7c, 0x5a, - 0xc9, 0xf0, 0xca, 0x2b, 0xa4, 0x0e, 0xcd, 0xc0, 0x30, 0xf3, 0x2a, 0xdd, 0xa8, 0xe2, 0xeb, 0x34, - 0x7a, 0x26, 0x15, 0xe6, 0x68, 0x4b, 0xa4, 0x86, 0x74, 0xff, 0xa2, 0x63, 0x1a, 0xc2, 0x34, 0x69, - 0x17, 0xa4, 0x82, 0x76, 0xff, 0x54, 0x34, 0x70, 0xdf, 0xd3, 0x5e, 0xbc, 0x16, 0x5f, 0x7a, 0x08, - 0xc6, 0x28, 0xc4, 0x13, 0x7c, 0xe8, 0xd5, 0x7a, 0x6e, 0x7c, 0x56, 0x3a, 0x9e, 0x52, 0x46, 0x59, - 0xf5, 0x1a, 0xaf, 0x95, 0xbf, 0x18, 0x83, 0x04, 0x0d, 0x2c, 0x63, 0x30, 0xbc, 0xf9, 0xd6, 0xf5, - 0x72, 0x65, 0x61, 0x6d, 0xab, 0xb4, 0x5c, 0xce, 0x4a, 0x68, 0x14, 0x80, 0x56, 0x5c, 0x5c, 0x5e, - 0x2b, 0x6e, 0x66, 0x63, 0x5e, 0x79, 0x69, 0x75, 0xf3, 0xec, 0x93, 0xd9, 0xb8, 0x87, 0xb0, 0xc5, - 0x2a, 0x12, 0x41, 0x80, 0x27, 0x4e, 0x67, 0x93, 0x28, 0x0b, 0x19, 0x46, 0x60, 0xe9, 0xf9, 0xf2, - 0xc2, 0xd9, 0x27, 0xb3, 0x83, 0xe1, 0x9a, 0x27, 0x4e, 0x67, 0x87, 0xd0, 0x08, 0xa4, 0x69, 0x4d, - 0x69, 0x6d, 0x6d, 0x39, 0x9b, 0xf2, 0x68, 0x6e, 0x6c, 0x2a, 0x4b, 0xab, 0x8b, 0xd9, 0xb4, 0x47, - 0x73, 0x51, 0x59, 0xdb, 0x5a, 0xcf, 0x82, 0x47, 0x61, 0xa5, 0xbc, 0xb1, 0x51, 0x5c, 0x2c, 0x67, - 0x87, 0x3d, 0x88, 0xd2, 0x5b, 0x37, 0xcb, 0x1b, 0xd9, 0x4c, 0x88, 0xad, 0x27, 0x4e, 0x67, 0x47, - 0xbc, 0x2e, 0xca, 0xab, 0x5b, 0x2b, 0xd9, 0x51, 0x34, 0x0e, 0x23, 0xac, 0x0b, 0xc1, 0xc4, 0x58, - 0xa4, 0xea, 0xec, 0x93, 0xd9, 0xac, 0xcf, 0x08, 0xa3, 0x32, 0x1e, 0xaa, 0x38, 0xfb, 0x64, 0x16, - 0xc9, 0xf3, 0x90, 0xa4, 0x66, 0x88, 0x10, 0x8c, 0x2e, 0x17, 0x4b, 0xe5, 0xe5, 0xca, 0xda, 0xfa, - 0xe6, 0xd2, 0xda, 0x6a, 0x71, 0x39, 0x2b, 0xf9, 0x75, 0x4a, 0xf9, 0xd9, 0xad, 0x25, 0xa5, 0xbc, - 0x90, 0x8d, 0x05, 0xeb, 0xd6, 0xcb, 0xc5, 0xcd, 0xf2, 0x42, 0x36, 0x2e, 0x6b, 0x30, 0xd9, 0x2e, - 0xa0, 0xb6, 0x75, 0xa1, 0x80, 0x2d, 0xc4, 0x3a, 0xd8, 0x02, 0xa5, 0x15, 0xb5, 0x05, 0xf9, 0x3b, - 0x31, 0x98, 0x68, 0x33, 0xa9, 0xb4, 0xed, 0xe4, 0x02, 0x24, 0x99, 0x2d, 0xb3, 0x69, 0xf6, 0xe1, - 0xb6, 0xb3, 0x13, 0xb5, 0xec, 0x96, 0xa9, 0x96, 0xe2, 0x05, 0x53, 0x8d, 0x78, 0x87, 0x54, 0x83, - 0x90, 0x68, 0x31, 0xd8, 0x9f, 0x6f, 0x09, 0xfe, 0x6c, 0x7e, 0x3c, 0xdb, 0xcf, 0xfc, 0x48, 0xeb, - 0x0e, 0x36, 0x09, 0x24, 0xdb, 0x4c, 0x02, 0xe7, 0x61, 0xbc, 0x85, 0x50, 0xdf, 0xc1, 0xf8, 0xdd, - 0x12, 0xe4, 0x3a, 0x29, 0xa7, 0x47, 0x48, 0x8c, 0x85, 0x42, 0xe2, 0xf9, 0xa8, 0x06, 0xef, 0xed, - 0x3c, 0x08, 0x2d, 0x63, 0xfd, 0x69, 0x09, 0xa6, 0xda, 0xa7, 0x94, 0x6d, 0x79, 0x78, 0x0b, 0x0c, - 0x36, 0xb0, 0xbb, 0x6b, 0x8a, 0xb4, 0xea, 0xc1, 0x36, 0x93, 0x35, 0x69, 0x8e, 0x0e, 0x36, 0xc7, - 0x0a, 0xce, 0xf6, 0xf1, 0x4e, 0x79, 0x21, 0xe3, 0xa6, 0x85, 0xd3, 0xf7, 0xc5, 0xe0, 0x50, 0x5b, - 0xe2, 0x6d, 0x19, 0xbd, 0x07, 0x40, 0x37, 0xac, 0xa6, 0xcb, 0x52, 0x27, 0x16, 0x89, 0xd3, 0xb4, - 0x86, 0x06, 0x2f, 0x12, 0x65, 0x9b, 0xae, 0xd7, 0x1e, 0xa7, 0xed, 0xc0, 0xaa, 0x28, 0xc0, 0xd3, - 0x3e, 0xa3, 0x09, 0xca, 0xe8, 0x74, 0x07, 0x49, 0x5b, 0x0c, 0xf3, 0x31, 0xc8, 0x6a, 0x75, 0x1d, - 0x1b, 0x6e, 0xc5, 0x71, 0x6d, 0xac, 0x36, 0x74, 0xa3, 0x46, 0xa7, 0x9a, 0x54, 0x21, 0xb9, 0xa3, - 0xd6, 0x1d, 0xac, 0x8c, 0xb1, 0xe6, 0x0d, 0xd1, 0x4a, 0x30, 0xa8, 0x01, 0xd9, 0x01, 0x8c, 0xc1, - 0x10, 0x06, 0x6b, 0xf6, 0x30, 0xe4, 0x0f, 0xa4, 0x61, 0x38, 0x90, 0x80, 0xa3, 0x7b, 0x21, 0xf3, - 0xa2, 0x7a, 0x55, 0xad, 0x88, 0x45, 0x15, 0xd3, 0xc4, 0x30, 0xa9, 0x5b, 0xe7, 0x0b, 0xab, 0xc7, - 0x60, 0x92, 0x82, 0x98, 0x4d, 0x17, 0xdb, 0x15, 0xad, 0xae, 0x3a, 0x0e, 0x55, 0x5a, 0x8a, 0x82, - 0x22, 0xd2, 0xb6, 0x46, 0x9a, 0xe6, 0x45, 0x0b, 0x3a, 0x03, 0x13, 0x14, 0xa3, 0xd1, 0xac, 0xbb, - 0xba, 0x55, 0xc7, 0x15, 0xb2, 0xcc, 0x73, 0xe8, 0x94, 0xe3, 0x71, 0x36, 0x4e, 0x20, 0x56, 0x38, - 0x00, 0xe1, 0xc8, 0x41, 0x0b, 0x70, 0x0f, 0x45, 0xab, 0x61, 0x03, 0xdb, 0xaa, 0x8b, 0x2b, 0xf8, - 0x6d, 0x4d, 0xb5, 0xee, 0x54, 0x54, 0xa3, 0x5a, 0xd9, 0x55, 0x9d, 0xdd, 0xdc, 0x24, 0x21, 0x50, - 0x8a, 0xe5, 0x24, 0xe5, 0x08, 0x01, 0x5c, 0xe4, 0x70, 0x65, 0x0a, 0x56, 0x34, 0xaa, 0x97, 0x54, - 0x67, 0x17, 0x15, 0x60, 0x8a, 0x52, 0x71, 0x5c, 0x5b, 0x37, 0x6a, 0x15, 0x6d, 0x17, 0x6b, 0x7b, - 0x95, 0xa6, 0xbb, 0xf3, 0x74, 0xee, 0x68, 0xb0, 0x7f, 0xca, 0xe1, 0x06, 0x85, 0x99, 0x27, 0x20, - 0x5b, 0xee, 0xce, 0xd3, 0x68, 0x03, 0x32, 0x64, 0x30, 0x1a, 0xfa, 0x4b, 0xb8, 0xb2, 0x63, 0xda, - 0x74, 0x0e, 0x1d, 0x6d, 0x13, 0x9a, 0x02, 0x1a, 0x9c, 0x5b, 0xe3, 0x08, 0x2b, 0x66, 0x15, 0x17, - 0x92, 0x1b, 0xeb, 0xe5, 0xf2, 0x82, 0x32, 0x2c, 0xa8, 0x5c, 0x34, 0x6d, 0x62, 0x50, 0x35, 0xd3, - 0x53, 0xf0, 0x30, 0x33, 0xa8, 0x9a, 0x29, 0xd4, 0x7b, 0x06, 0x26, 0x34, 0x8d, 0xc9, 0xac, 0x6b, - 0x15, 0xbe, 0x18, 0x73, 0x72, 0xd9, 0x90, 0xb2, 0x34, 0x6d, 0x91, 0x01, 0x70, 0x1b, 0x77, 0xd0, - 0x39, 0x38, 0xe4, 0x2b, 0x2b, 0x88, 0x38, 0xde, 0x22, 0x65, 0x14, 0xf5, 0x0c, 0x4c, 0x58, 0xfb, - 0xad, 0x88, 0x28, 0xd4, 0xa3, 0xb5, 0x1f, 0x45, 0x7b, 0x0a, 0x26, 0xad, 0x5d, 0xab, 0x15, 0xef, - 0x44, 0x10, 0x0f, 0x59, 0xbb, 0x56, 0x14, 0xf1, 0x01, 0xba, 0x32, 0xb7, 0xb1, 0xa6, 0xba, 0xb8, - 0x9a, 0x3b, 0x1c, 0x04, 0x0f, 0x34, 0xa0, 0x39, 0xc8, 0x6a, 0x5a, 0x05, 0x1b, 0xea, 0x76, 0x1d, - 0x57, 0x54, 0x1b, 0x1b, 0xaa, 0x93, 0x9b, 0xa1, 0xc0, 0x09, 0xd7, 0x6e, 0x62, 0x65, 0x54, 0xd3, - 0xca, 0xb4, 0xb1, 0x48, 0xdb, 0xd0, 0x09, 0x18, 0x37, 0xb7, 0x5f, 0xd4, 0x98, 0x45, 0x56, 0x2c, - 0x1b, 0xef, 0xe8, 0xd7, 0x73, 0xf7, 0x53, 0xf5, 0x8e, 0x91, 0x06, 0x6a, 0x8f, 0xeb, 0xb4, 0x1a, - 0x3d, 0x0c, 0x59, 0xcd, 0xd9, 0x55, 0x6d, 0x8b, 0x86, 0x64, 0xc7, 0x52, 0x35, 0x9c, 0x7b, 0x80, - 0x81, 0xb2, 0xfa, 0x55, 0x51, 0x4d, 0x3c, 0xc2, 0xb9, 0xa6, 0xef, 0xb8, 0x82, 0xe2, 0x43, 0xcc, - 0x23, 0x68, 0x1d, 0xa7, 0x76, 0x1c, 0xb2, 0x44, 0x13, 0xa1, 0x8e, 0x8f, 0x53, 0xb0, 0x51, 0x6b, - 0xd7, 0x0a, 0xf6, 0x7b, 0x1f, 0x8c, 0x10, 0x48, 0xbf, 0xd3, 0x87, 0x59, 0xe2, 0x66, 0xed, 0x06, - 0x7a, 0x7c, 0x12, 0xa6, 0x08, 0x50, 0x03, 0xbb, 0x6a, 0x55, 0x75, 0xd5, 0x00, 0xf4, 0xa3, 0x14, - 0x9a, 0xa8, 0x7d, 0x85, 0x37, 0x86, 0xf8, 0xb4, 0x9b, 0xdb, 0xfb, 0x9e, 0x61, 0x9d, 0x64, 0x7c, - 0x92, 0x3a, 0x61, 0x5a, 0x77, 0x2d, 0x39, 0x97, 0x0b, 0x90, 0x09, 0xda, 0x3d, 0x4a, 0x03, 0xb3, - 0xfc, 0xac, 0x44, 0x92, 0xa0, 0xf9, 0xb5, 0x05, 0x92, 0xbe, 0xbc, 0x50, 0xce, 0xc6, 0x48, 0x1a, - 0xb5, 0xbc, 0xb4, 0x59, 0xae, 0x28, 0x5b, 0xab, 0x9b, 0x4b, 0x2b, 0xe5, 0x6c, 0x3c, 0x90, 0xd8, - 0x3f, 0x93, 0x48, 0x3d, 0x98, 0x7d, 0x48, 0xfe, 0x66, 0x0c, 0x46, 0xc3, 0x2b, 0x35, 0xf4, 0x26, - 0x38, 0x2c, 0xb6, 0x55, 0x1c, 0xec, 0x56, 0xae, 0xe9, 0x36, 0x75, 0xc8, 0x86, 0xca, 0x26, 0x47, - 0xcf, 0x7e, 0x26, 0x39, 0xd4, 0x06, 0x76, 0x9f, 0xd3, 0x6d, 0xe2, 0x6e, 0x0d, 0xd5, 0x45, 0xcb, - 0x30, 0x63, 0x98, 0x15, 0xc7, 0x55, 0x8d, 0xaa, 0x6a, 0x57, 0x2b, 0xfe, 0x86, 0x56, 0x45, 0xd5, - 0x34, 0xec, 0x38, 0x26, 0x9b, 0x08, 0x3d, 0x2a, 0xc7, 0x0c, 0x73, 0x83, 0x03, 0xfb, 0x33, 0x44, - 0x91, 0x83, 0x46, 0xcc, 0x37, 0xde, 0xc9, 0x7c, 0x8f, 0x42, 0xba, 0xa1, 0x5a, 0x15, 0x6c, 0xb8, - 0xf6, 0x3e, 0xcd, 0xcf, 0x53, 0x4a, 0xaa, 0xa1, 0x5a, 0x65, 0x52, 0xfe, 0xb1, 0x2c, 0x93, 0x9e, - 0x49, 0xa4, 0x52, 0xd9, 0xf4, 0x33, 0x89, 0x54, 0x3a, 0x0b, 0xf2, 0x6b, 0x71, 0xc8, 0x04, 0xf3, - 0x75, 0xb2, 0xfc, 0xd1, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x5f, 0xd7, 0xec, 0x7e, 0x6e, 0x9e, - 0x4c, 0x65, 0x85, 0x41, 0x96, 0x1c, 0x2b, 0x0c, 0x93, 0xa4, 0x11, 0xc4, 0xd8, 0x30, 0x4b, 0x46, - 0x52, 0x0a, 0x2f, 0xa1, 0x45, 0x18, 0x7c, 0xd1, 0xa1, 0xb4, 0x07, 0x29, 0xed, 0xfb, 0xbb, 0xd3, - 0x7e, 0x66, 0x83, 0x12, 0x4f, 0x3f, 0xb3, 0x51, 0x59, 0x5d, 0x53, 0x56, 0x8a, 0xcb, 0x0a, 0x47, - 0x47, 0x47, 0x20, 0x51, 0x57, 0x5f, 0xda, 0x0f, 0x4f, 0x7a, 0xb4, 0xaa, 0xdf, 0x41, 0x38, 0x02, - 0x89, 0x6b, 0x58, 0xdd, 0x0b, 0x4f, 0x35, 0xb4, 0xea, 0x2e, 0x3a, 0xc3, 0x29, 0x48, 0x52, 0x7d, - 0x21, 0x00, 0xae, 0xb1, 0xec, 0x00, 0x4a, 0x41, 0x62, 0x7e, 0x4d, 0x21, 0x0e, 0x91, 0x85, 0x0c, - 0xab, 0xad, 0xac, 0x2f, 0x95, 0xe7, 0xcb, 0xd9, 0x98, 0x7c, 0x06, 0x06, 0x99, 0x12, 0x88, 0xb3, - 0x78, 0x6a, 0xc8, 0x0e, 0xf0, 0x22, 0xa7, 0x21, 0x89, 0xd6, 0xad, 0x95, 0x52, 0x59, 0xc9, 0xc6, - 0xc2, 0x43, 0x9d, 0xc8, 0x26, 0x65, 0x07, 0x32, 0xc1, 0x3c, 0xfc, 0xc7, 0xb3, 0x18, 0xff, 0x92, - 0x04, 0xc3, 0x81, 0xbc, 0x9a, 0x24, 0x44, 0x6a, 0xbd, 0x6e, 0x5e, 0xab, 0xa8, 0x75, 0x5d, 0x75, - 0xb8, 0x69, 0x00, 0xad, 0x2a, 0x92, 0x9a, 0x7e, 0x87, 0xee, 0xc7, 0xe4, 0x22, 0xc9, 0xec, 0xa0, - 0xfc, 0x71, 0x09, 0xb2, 0xd1, 0xc4, 0x36, 0xc2, 0xa6, 0xf4, 0x93, 0x64, 0x53, 0xfe, 0x98, 0x04, - 0xa3, 0xe1, 0x6c, 0x36, 0xc2, 0xde, 0xbd, 0x3f, 0x51, 0xf6, 0xfe, 0x24, 0x06, 0x23, 0xa1, 0x1c, - 0xb6, 0x5f, 0xee, 0xde, 0x06, 0xe3, 0x7a, 0x15, 0x37, 0x2c, 0xd3, 0xc5, 0x86, 0xb6, 0x5f, 0xa9, - 0xe3, 0xab, 0xb8, 0x9e, 0x93, 0x69, 0xd0, 0x38, 0xd5, 0x3d, 0x4b, 0x9e, 0x5b, 0xf2, 0xf1, 0x96, - 0x09, 0x5a, 0x61, 0x62, 0x69, 0xa1, 0xbc, 0xb2, 0xbe, 0xb6, 0x59, 0x5e, 0x9d, 0x7f, 0x6b, 0x65, - 0x6b, 0xf5, 0xf2, 0xea, 0xda, 0x73, 0xab, 0x4a, 0x56, 0x8f, 0x80, 0xdd, 0x45, 0xb7, 0x5f, 0x87, - 0x6c, 0x94, 0x29, 0x74, 0x18, 0xda, 0xb1, 0x95, 0x1d, 0x40, 0x13, 0x30, 0xb6, 0xba, 0x56, 0xd9, - 0x58, 0x5a, 0x28, 0x57, 0xca, 0x17, 0x2f, 0x96, 0xe7, 0x37, 0x37, 0xd8, 0xbe, 0x87, 0x07, 0xbd, - 0x19, 0x72, 0x70, 0xf9, 0x23, 0x71, 0x98, 0x68, 0xc3, 0x09, 0x2a, 0xf2, 0x15, 0x0b, 0x5b, 0x44, - 0x9d, 0xec, 0x87, 0xfb, 0x39, 0x92, 0x33, 0xac, 0xab, 0xb6, 0xcb, 0x17, 0x38, 0x0f, 0x03, 0xd1, - 0x92, 0xe1, 0xea, 0x3b, 0x3a, 0xb6, 0xf9, 0x7e, 0x12, 0x5b, 0xc6, 0x8c, 0xf9, 0xf5, 0x6c, 0x4b, - 0xe9, 0x51, 0x40, 0x96, 0xe9, 0xe8, 0xae, 0x7e, 0x15, 0x57, 0x74, 0x43, 0x6c, 0x3e, 0x91, 0x65, - 0x4d, 0x42, 0xc9, 0x8a, 0x96, 0x25, 0xc3, 0xf5, 0xa0, 0x0d, 0x5c, 0x53, 0x23, 0xd0, 0x24, 0x98, - 0xc7, 0x95, 0xac, 0x68, 0xf1, 0xa0, 0xef, 0x85, 0x4c, 0xd5, 0x6c, 0x92, 0x5c, 0x8f, 0xc1, 0x91, - 0xb9, 0x43, 0x52, 0x86, 0x59, 0x9d, 0x07, 0xc2, 0xb3, 0x78, 0x7f, 0xd7, 0x2b, 0xa3, 0x0c, 0xb3, - 0x3a, 0x06, 0xf2, 0x10, 0x8c, 0xa9, 0xb5, 0x9a, 0x4d, 0x88, 0x0b, 0x42, 0x6c, 0x5d, 0x32, 0xea, - 0x55, 0x53, 0xc0, 0xfc, 0x33, 0x90, 0x12, 0x7a, 0x20, 0x53, 0x35, 0xd1, 0x44, 0xc5, 0x62, 0x8b, - 0xed, 0xd8, 0xf1, 0xb4, 0x92, 0x32, 0x44, 0xe3, 0xbd, 0x90, 0xd1, 0x9d, 0x8a, 0xbf, 0x89, 0x1f, - 0x9b, 0x8d, 0x1d, 0x4f, 0x29, 0xc3, 0xba, 0xe3, 0x6d, 0x80, 0xca, 0x9f, 0x8e, 0xc1, 0x68, 0xf8, - 0x10, 0x02, 0x2d, 0x40, 0xaa, 0x6e, 0x6a, 0x2a, 0x35, 0x2d, 0x76, 0x02, 0x76, 0xbc, 0xc7, 0xb9, - 0xc5, 0xdc, 0x32, 0x87, 0x57, 0x3c, 0xcc, 0xfc, 0xbf, 0x94, 0x20, 0x25, 0xaa, 0xd1, 0x14, 0x24, - 0x2c, 0xd5, 0xdd, 0xa5, 0xe4, 0x92, 0xa5, 0x58, 0x56, 0x52, 0x68, 0x99, 0xd4, 0x3b, 0x96, 0x6a, - 0x50, 0x13, 0xe0, 0xf5, 0xa4, 0x4c, 0xc6, 0xb5, 0x8e, 0xd5, 0x2a, 0x5d, 0xf4, 0x98, 0x8d, 0x06, - 0x36, 0x5c, 0x47, 0x8c, 0x2b, 0xaf, 0x9f, 0xe7, 0xd5, 0xe8, 0x11, 0x18, 0x77, 0x6d, 0x55, 0xaf, - 0x87, 0x60, 0x13, 0x14, 0x36, 0x2b, 0x1a, 0x3c, 0xe0, 0x02, 0x1c, 0x11, 0x74, 0xab, 0xd8, 0x55, - 0xb5, 0x5d, 0x5c, 0xf5, 0x91, 0x06, 0xe9, 0xe6, 0xc6, 0x61, 0x0e, 0xb0, 0xc0, 0xdb, 0x05, 0xae, - 0xfc, 0x4d, 0x09, 0xc6, 0xc5, 0x32, 0xad, 0xea, 0x29, 0x6b, 0x05, 0x40, 0x35, 0x0c, 0xd3, 0x0d, - 0xaa, 0xab, 0xd5, 0x94, 0x5b, 0xf0, 0xe6, 0x8a, 0x1e, 0x92, 0x12, 0x20, 0x90, 0x6f, 0x00, 0xf8, - 0x2d, 0x1d, 0xd5, 0x36, 0x03, 0xc3, 0xfc, 0x84, 0x89, 0x1e, 0x53, 0xb2, 0x85, 0x3d, 0xb0, 0x2a, - 0xb2, 0x9e, 0x43, 0x93, 0x90, 0xdc, 0xc6, 0x35, 0xdd, 0xe0, 0xfb, 0xc6, 0xac, 0x20, 0xb6, 0x5f, - 0x12, 0xde, 0xf6, 0x4b, 0xe9, 0xaf, 0xc3, 0x84, 0x66, 0x36, 0xa2, 0xec, 0x96, 0xb2, 0x91, 0xcd, - 0x05, 0xe7, 0x92, 0xf4, 0xc2, 0x49, 0x0e, 0x54, 0x33, 0xeb, 0xaa, 0x51, 0x9b, 0x33, 0xed, 0x9a, - 0x7f, 0xcc, 0x4a, 0x32, 0x1e, 0x27, 0x70, 0xd8, 0x6a, 0x6d, 0xff, 0x4f, 0x49, 0xfa, 0xb5, 0x58, - 0x7c, 0x71, 0xbd, 0xf4, 0xd9, 0x58, 0x7e, 0x91, 0x21, 0xae, 0x0b, 0x65, 0x28, 0x78, 0xa7, 0x8e, - 0x35, 0x22, 0x20, 0x7c, 0xef, 0x11, 0x98, 0xac, 0x99, 0x35, 0x93, 0x52, 0x3a, 0x45, 0x7e, 0xf1, - 0x73, 0xda, 0xb4, 0x57, 0x9b, 0xef, 0x79, 0xa8, 0x5b, 0x58, 0x85, 0x09, 0x0e, 0x5c, 0xa1, 0x07, - 0x45, 0x6c, 0x19, 0x83, 0xba, 0xee, 0xa1, 0xe5, 0x3e, 0xff, 0x3a, 0x9d, 0xbe, 0x95, 0x71, 0x8e, - 0x4a, 0xda, 0xd8, 0x4a, 0xa7, 0xa0, 0xc0, 0xa1, 0x10, 0x3d, 0xe6, 0xa4, 0xd8, 0xee, 0x41, 0xf1, - 0xf7, 0x39, 0xc5, 0x89, 0x00, 0xc5, 0x0d, 0x8e, 0x5a, 0x98, 0x87, 0x91, 0x83, 0xd0, 0xfa, 0x03, - 0x4e, 0x2b, 0x83, 0x83, 0x44, 0x16, 0x61, 0x8c, 0x12, 0xd1, 0x9a, 0x8e, 0x6b, 0x36, 0x68, 0x04, - 0xec, 0x4e, 0xe6, 0x2b, 0xaf, 0x33, 0xaf, 0x19, 0x25, 0x68, 0xf3, 0x1e, 0x56, 0xa1, 0x00, 0xf4, - 0x6c, 0xac, 0x8a, 0xb5, 0x7a, 0x0f, 0x0a, 0x5f, 0xe5, 0x8c, 0x78, 0xf0, 0x85, 0x2b, 0x30, 0x49, - 0x7e, 0xd3, 0x00, 0x15, 0xe4, 0xa4, 0xf7, 0x86, 0x5b, 0xee, 0x9b, 0xef, 0x66, 0x8e, 0x39, 0xe1, - 0x11, 0x08, 0xf0, 0x14, 0x18, 0xc5, 0x1a, 0x76, 0x5d, 0x6c, 0x3b, 0x15, 0xb5, 0xde, 0x8e, 0xbd, - 0xc0, 0x8e, 0x45, 0xee, 0xc3, 0xdf, 0x0f, 0x8f, 0xe2, 0x22, 0xc3, 0x2c, 0xd6, 0xeb, 0x85, 0x2d, - 0x38, 0xdc, 0xc6, 0x2a, 0xfa, 0xa0, 0xf9, 0x11, 0x4e, 0x73, 0xb2, 0xc5, 0x32, 0x08, 0xd9, 0x75, - 0x10, 0xf5, 0xde, 0x58, 0xf6, 0x41, 0xf3, 0xa3, 0x9c, 0x26, 0xe2, 0xb8, 0x62, 0x48, 0x09, 0xc5, - 0x67, 0x60, 0xfc, 0x2a, 0xb6, 0xb7, 0x4d, 0x87, 0xef, 0x12, 0xf5, 0x41, 0xee, 0x63, 0x9c, 0xdc, - 0x18, 0x47, 0xa4, 0xdb, 0x46, 0x84, 0xd6, 0x39, 0x48, 0xed, 0xa8, 0x1a, 0xee, 0x83, 0xc4, 0x0d, - 0x4e, 0x62, 0x88, 0xc0, 0x13, 0xd4, 0x22, 0x64, 0x6a, 0x26, 0x9f, 0xa3, 0x7a, 0xa3, 0x7f, 0x9c, - 0xa3, 0x0f, 0x0b, 0x1c, 0x4e, 0xc2, 0x32, 0xad, 0x66, 0x9d, 0x4c, 0x60, 0xbd, 0x49, 0xfc, 0x1d, - 0x41, 0x42, 0xe0, 0x70, 0x12, 0x07, 0x50, 0xeb, 0xab, 0x82, 0x84, 0x13, 0xd0, 0xe7, 0x05, 0x18, - 0x36, 0x8d, 0xfa, 0xbe, 0x69, 0xf4, 0xc3, 0xc4, 0x27, 0x38, 0x05, 0xe0, 0x28, 0x84, 0xc0, 0x79, - 0x48, 0xf7, 0x3b, 0x10, 0x7f, 0xf7, 0xfb, 0xc2, 0x3d, 0xc4, 0x08, 0x2c, 0xc2, 0x98, 0x08, 0x50, - 0xba, 0x69, 0xf4, 0x41, 0xe2, 0xef, 0x71, 0x12, 0xa3, 0x01, 0x34, 0x2e, 0x86, 0x8b, 0x1d, 0xb7, - 0x86, 0xfb, 0x21, 0xf2, 0x69, 0x21, 0x06, 0x47, 0xe1, 0xaa, 0xdc, 0xc6, 0x86, 0xb6, 0xdb, 0x1f, - 0x85, 0xcf, 0x08, 0x55, 0x0a, 0x1c, 0x42, 0x62, 0x1e, 0x46, 0x1a, 0xaa, 0xed, 0xec, 0xaa, 0xf5, - 0xbe, 0x86, 0xe3, 0xef, 0x73, 0x1a, 0x19, 0x0f, 0x89, 0x6b, 0xa4, 0x69, 0x1c, 0x84, 0xcc, 0x67, - 0x85, 0x46, 0x02, 0x68, 0xdc, 0xf5, 0x1c, 0x97, 0x6e, 0xa9, 0x1d, 0x84, 0xda, 0xaf, 0x0b, 0xd7, - 0x63, 0xb8, 0x2b, 0x41, 0x8a, 0xe7, 0x21, 0xed, 0xe8, 0x2f, 0xf5, 0x45, 0xe6, 0x37, 0xc4, 0x48, - 0x53, 0x04, 0x82, 0xfc, 0x56, 0x38, 0xd2, 0x76, 0x9a, 0xe8, 0x83, 0xd8, 0x3f, 0xe0, 0xc4, 0xa6, - 0xda, 0x4c, 0x15, 0x3c, 0x24, 0x1c, 0x94, 0xe4, 0x6f, 0x8a, 0x90, 0x80, 0x23, 0xb4, 0xd6, 0xc9, - 0xaa, 0xc1, 0x51, 0x77, 0x0e, 0xa6, 0xb5, 0xdf, 0x12, 0x5a, 0x63, 0xb8, 0x21, 0xad, 0x6d, 0xc2, - 0x14, 0xa7, 0x78, 0xb0, 0x71, 0xfd, 0x9c, 0x08, 0xac, 0x0c, 0x7b, 0x2b, 0x3c, 0xba, 0x3f, 0x0b, - 0x79, 0x4f, 0x9d, 0x22, 0x3d, 0x75, 0x2a, 0x0d, 0xd5, 0xea, 0x83, 0xf2, 0xe7, 0x39, 0x65, 0x11, - 0xf1, 0xbd, 0xfc, 0xd6, 0x59, 0x51, 0x2d, 0x42, 0xfc, 0x79, 0xc8, 0x09, 0xe2, 0x4d, 0xc3, 0xc6, - 0x9a, 0x59, 0x33, 0xf4, 0x97, 0x70, 0xb5, 0x0f, 0xd2, 0xff, 0x30, 0x32, 0x54, 0x5b, 0x01, 0x74, - 0x42, 0x79, 0x09, 0xb2, 0x5e, 0xae, 0x52, 0xd1, 0x1b, 0x96, 0x69, 0xbb, 0x3d, 0x28, 0xfe, 0xb6, - 0x18, 0x29, 0x0f, 0x6f, 0x89, 0xa2, 0x15, 0xca, 0xc0, 0xce, 0x99, 0xfb, 0x35, 0xc9, 0x2f, 0x70, - 0x42, 0x23, 0x3e, 0x16, 0x0f, 0x1c, 0x9a, 0xd9, 0xb0, 0x54, 0xbb, 0x9f, 0xf8, 0xf7, 0x8f, 0x44, - 0xe0, 0xe0, 0x28, 0x3c, 0x70, 0x90, 0x8c, 0x8e, 0xcc, 0xf6, 0x7d, 0x50, 0xf8, 0xa2, 0x08, 0x1c, - 0x02, 0x87, 0x93, 0x10, 0x09, 0x43, 0x1f, 0x24, 0x7e, 0x47, 0x90, 0x10, 0x38, 0x84, 0xc4, 0xb3, - 0xfe, 0x44, 0x6b, 0xe3, 0x9a, 0xee, 0xb8, 0x36, 0x4b, 0x8a, 0xbb, 0x93, 0xfa, 0xc7, 0xdf, 0x0f, - 0x27, 0x61, 0x4a, 0x00, 0x95, 0x44, 0x22, 0xbe, 0xc9, 0x4a, 0xd7, 0x4c, 0xbd, 0x19, 0xfb, 0x5d, - 0x11, 0x89, 0x02, 0x68, 0x84, 0xb7, 0x40, 0x86, 0x48, 0xd4, 0xae, 0x91, 0x95, 0x42, 0x1f, 0xe4, - 0xfe, 0x49, 0x84, 0xb9, 0x0d, 0x81, 0x4b, 0x68, 0x06, 0xf2, 0x9f, 0xa6, 0xb1, 0x87, 0xf7, 0xfb, - 0xb2, 0xce, 0x7f, 0x1a, 0xc9, 0x7f, 0xb6, 0x18, 0x26, 0x8b, 0x21, 0x63, 0x91, 0x7c, 0x0a, 0xf5, - 0xba, 0x55, 0x94, 0x7b, 0xe7, 0x0f, 0xb9, 0xbc, 0xe1, 0x74, 0xaa, 0xb0, 0x4c, 0x8c, 0x3c, 0x9c, - 0xf4, 0xf4, 0x26, 0xf6, 0xee, 0x1f, 0x7a, 0x76, 0x1e, 0xca, 0x79, 0x0a, 0x17, 0x61, 0x24, 0x94, - 0xf0, 0xf4, 0x26, 0xf5, 0x0b, 0x9c, 0x54, 0x26, 0x98, 0xef, 0x14, 0xce, 0x40, 0x82, 0x24, 0x2f, - 0xbd, 0xd1, 0x7f, 0x91, 0xa3, 0x53, 0xf0, 0xc2, 0x9b, 0x21, 0x25, 0x92, 0x96, 0xde, 0xa8, 0xef, - 0xe1, 0xa8, 0x1e, 0x0a, 0x41, 0x17, 0x09, 0x4b, 0x6f, 0xf4, 0x5f, 0x12, 0xe8, 0x02, 0x85, 0xa0, - 0xf7, 0xaf, 0xc2, 0x2f, 0xfd, 0x72, 0x82, 0x4f, 0x3a, 0x42, 0x77, 0xe7, 0x61, 0x88, 0x67, 0x2a, - 0xbd, 0xb1, 0xdf, 0xc7, 0x3b, 0x17, 0x18, 0x85, 0xa7, 0x20, 0xd9, 0xa7, 0xc2, 0xff, 0x06, 0x47, - 0x65, 0xf0, 0x85, 0x79, 0x18, 0x0e, 0x64, 0x27, 0xbd, 0xd1, 0xff, 0x26, 0x47, 0x0f, 0x62, 0x11, - 0xd6, 0x79, 0x76, 0xd2, 0x9b, 0xc0, 0xdf, 0x12, 0xac, 0x73, 0x0c, 0xa2, 0x36, 0x91, 0x98, 0xf4, - 0xc6, 0x7e, 0xbf, 0xd0, 0xba, 0x40, 0x29, 0x5c, 0x80, 0xb4, 0x37, 0xd9, 0xf4, 0xc6, 0xff, 0x00, - 0xc7, 0xf7, 0x71, 0x88, 0x06, 0x02, 0x93, 0x5d, 0x6f, 0x12, 0xbf, 0x22, 0x34, 0x10, 0xc0, 0x22, - 0x6e, 0x14, 0x4d, 0x60, 0x7a, 0x53, 0xfa, 0xa0, 0x70, 0xa3, 0x48, 0xfe, 0x42, 0x46, 0x93, 0xc6, - 0xfc, 0xde, 0x24, 0xfe, 0xb6, 0x18, 0x4d, 0x0a, 0x4f, 0xd8, 0x88, 0x66, 0x04, 0xbd, 0x69, 0xfc, - 0xaa, 0x60, 0x23, 0x92, 0x10, 0x14, 0xd6, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xe9, 0x7d, 0x88, 0xd3, - 0x1b, 0x6f, 0x49, 0x06, 0x0a, 0xcf, 0xc1, 0x54, 0xfb, 0x4c, 0xa0, 0x37, 0xd5, 0x0f, 0xff, 0x30, - 0xb2, 0x76, 0x0b, 0x26, 0x02, 0x85, 0x4d, 0x7f, 0x4a, 0x09, 0x66, 0x01, 0xbd, 0xc9, 0x7e, 0xe4, - 0x87, 0xe1, 0xc0, 0x1d, 0x4c, 0x02, 0x0a, 0x45, 0x00, 0x7f, 0x02, 0xee, 0x4d, 0xeb, 0x63, 0x9c, - 0x56, 0x00, 0x89, 0xb8, 0x06, 0x9f, 0x7f, 0x7b, 0xe3, 0xdf, 0x10, 0xae, 0xc1, 0x31, 0x88, 0x6b, - 0x88, 0xa9, 0xb7, 0x37, 0xf6, 0xc7, 0x85, 0x6b, 0x08, 0x14, 0x62, 0xd9, 0x81, 0xd9, 0xad, 0x37, - 0x85, 0x4f, 0x08, 0xcb, 0x0e, 0x60, 0x15, 0x56, 0x61, 0xbc, 0x65, 0x42, 0xec, 0x4d, 0xea, 0xd7, - 0x38, 0xa9, 0x6c, 0x74, 0x3e, 0x0c, 0x4e, 0x5e, 0x7c, 0x32, 0xec, 0x4d, 0xed, 0x93, 0x91, 0xc9, - 0x8b, 0xcf, 0x85, 0x85, 0xf3, 0x90, 0x32, 0x9a, 0xf5, 0x3a, 0x71, 0x1e, 0xd4, 0xfd, 0x26, 0x60, - 0xee, 0x3f, 0xfd, 0x88, 0x6b, 0x47, 0x20, 0x14, 0xce, 0x40, 0x12, 0x37, 0xb6, 0x71, 0xb5, 0x17, - 0xe6, 0xf7, 0x7e, 0x24, 0x02, 0x26, 0x81, 0x2e, 0x5c, 0x00, 0x60, 0x5b, 0x23, 0xf4, 0x30, 0xb0, - 0x07, 0xee, 0x7f, 0xfe, 0x11, 0xbf, 0x7a, 0xe3, 0xa3, 0xf8, 0x04, 0xd8, 0x45, 0x9e, 0xee, 0x04, - 0xbe, 0x1f, 0x26, 0x40, 0x47, 0xe4, 0x1c, 0x0c, 0xbd, 0xe8, 0x98, 0x86, 0xab, 0xd6, 0x7a, 0x61, - 0xff, 0x17, 0x8e, 0x2d, 0xe0, 0x89, 0xc2, 0x1a, 0xa6, 0x8d, 0x5d, 0xb5, 0xe6, 0xf4, 0xc2, 0xfd, - 0xaf, 0x1c, 0xd7, 0x43, 0x20, 0xc8, 0x9a, 0xea, 0xb8, 0xfd, 0xc8, 0xfd, 0x67, 0x02, 0x59, 0x20, - 0x10, 0xa6, 0xc9, 0xef, 0x3d, 0xbc, 0xdf, 0x0b, 0xf7, 0x07, 0x82, 0x69, 0x0e, 0x5f, 0x78, 0x33, - 0xa4, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf2, 0x7f, 0xe3, 0xc8, 0x3e, 0x06, 0xe9, 0xd9, 0x71, - 0xab, 0xae, 0xde, 0x5b, 0xd9, 0xb7, 0xf8, 0x48, 0x0b, 0xf8, 0x42, 0x11, 0x86, 0x1d, 0xb7, 0x5a, - 0x6d, 0xf2, 0xfc, 0xb4, 0x07, 0xfa, 0x9f, 0xff, 0xc8, 0xdb, 0xb2, 0xf0, 0x70, 0xc8, 0x68, 0x5f, - 0xdb, 0x73, 0x2d, 0x93, 0x1e, 0x78, 0xf4, 0xa2, 0xf0, 0x43, 0x4e, 0x21, 0x80, 0x52, 0x98, 0x87, - 0x0c, 0x91, 0xc5, 0xc6, 0x16, 0xa6, 0xa7, 0x53, 0x3d, 0x48, 0xfc, 0x05, 0x57, 0x40, 0x08, 0xa9, - 0xf4, 0xf3, 0x5f, 0x7d, 0x6d, 0x5a, 0xfa, 0xc6, 0x6b, 0xd3, 0xd2, 0x9f, 0xbc, 0x36, 0x2d, 0xbd, - 0xff, 0x3b, 0xd3, 0x03, 0xdf, 0xf8, 0xce, 0xf4, 0xc0, 0x1f, 0x7d, 0x67, 0x7a, 0xa0, 0xfd, 0x2e, - 0x31, 0x2c, 0x9a, 0x8b, 0x26, 0xdb, 0x1f, 0x7e, 0x41, 0xae, 0xe9, 0xee, 0x6e, 0x73, 0x7b, 0x4e, - 0x33, 0x1b, 0x74, 0x1b, 0xd7, 0xdf, 0xad, 0xf5, 0x16, 0x39, 0xf0, 0xae, 0x38, 0x1c, 0xd1, 0x4c, - 0xa7, 0x61, 0x3a, 0x15, 0xb6, 0xdf, 0xcb, 0x0a, 0x7c, 0xc7, 0x37, 0x13, 0x6c, 0xea, 0x63, 0xd3, - 0xf7, 0x12, 0x8c, 0x52, 0xd1, 0xe9, 0x76, 0x17, 0xb5, 0xb6, 0x9e, 0x01, 0xe2, 0x6b, 0x7f, 0x98, - 0xa4, 0x52, 0x8f, 0x78, 0x88, 0xf4, 0xf4, 0x7e, 0x13, 0x26, 0xf5, 0x86, 0x55, 0xc7, 0x74, 0x9b, - 0xbf, 0xe2, 0xb5, 0xf5, 0xa6, 0xf7, 0x75, 0x4e, 0x6f, 0xc2, 0x47, 0x5f, 0x12, 0xd8, 0x85, 0x65, - 0x18, 0x57, 0x35, 0x0d, 0x5b, 0x21, 0x92, 0x3d, 0x86, 0x45, 0x30, 0x98, 0xe5, 0x98, 0x1e, 0xb5, - 0xd2, 0x85, 0x4e, 0x43, 0xf3, 0xc2, 0x03, 0x01, 0xcd, 0xdb, 0xb8, 0x86, 0x8d, 0x93, 0x06, 0x76, - 0xaf, 0x99, 0xf6, 0x1e, 0x57, 0xef, 0x49, 0xd6, 0xd5, 0x20, 0xbb, 0xc1, 0x0c, 0xff, 0x3b, 0x06, - 0xd3, 0xac, 0xe1, 0xd4, 0xb6, 0xea, 0xe0, 0x53, 0x57, 0x1f, 0xdf, 0xc6, 0xae, 0xfa, 0xf8, 0x29, - 0xcd, 0xd4, 0x0d, 0x3e, 0x12, 0x13, 0x7c, 0x5c, 0x48, 0xfb, 0x1c, 0x6f, 0xcf, 0xb7, 0xdd, 0xa6, - 0x97, 0x17, 0x21, 0x31, 0x6f, 0xea, 0x06, 0x9a, 0x84, 0x64, 0x15, 0x1b, 0x66, 0x83, 0xdf, 0xb9, - 0x63, 0x05, 0x74, 0x1f, 0x0c, 0xaa, 0x0d, 0xb3, 0x69, 0xb8, 0xec, 0x84, 0xa2, 0x34, 0xfc, 0xd5, - 0x9b, 0x33, 0x03, 0xdf, 0xba, 0x39, 0x13, 0x5f, 0x32, 0x5c, 0x85, 0x37, 0x15, 0x12, 0xdf, 0x7d, - 0x75, 0x46, 0x92, 0x9f, 0x81, 0xa1, 0x05, 0xac, 0xdd, 0x0e, 0xad, 0x05, 0xac, 0x45, 0x68, 0x3d, - 0x0c, 0xa9, 0x25, 0xc3, 0x65, 0xb7, 0x22, 0xef, 0x81, 0xb8, 0x6e, 0xb0, 0x8b, 0x36, 0x91, 0xfe, - 0x49, 0x3d, 0x01, 0x5d, 0xc0, 0x9a, 0x07, 0x5a, 0xc5, 0x5a, 0x14, 0x94, 0x90, 0x27, 0xf5, 0xa5, - 0x0b, 0x7f, 0xf4, 0x1f, 0xa7, 0x07, 0x5e, 0x7e, 0x6d, 0x7a, 0xa0, 0xe3, 0x48, 0xdc, 0x13, 0x18, - 0x89, 0xba, 0x6e, 0xe0, 0x53, 0xf5, 0xed, 0xc6, 0x49, 0xa7, 0xba, 0xc7, 0x8e, 0x47, 0xbc, 0x11, - 0xf8, 0x17, 0x83, 0x20, 0xf3, 0x11, 0x70, 0x5c, 0x75, 0x4f, 0x37, 0x6a, 0xde, 0x20, 0xa8, 0x4d, - 0x77, 0xf7, 0x25, 0x3e, 0x0a, 0x53, 0x7c, 0x14, 0x38, 0x4c, 0xf7, 0x81, 0xc8, 0x77, 0x76, 0xac, - 0x7c, 0x8f, 0xe1, 0x96, 0xbf, 0x12, 0x07, 0xb4, 0xe1, 0xaa, 0x7b, 0xb8, 0xd8, 0x74, 0x77, 0x4d, - 0x5b, 0x7f, 0x89, 0x85, 0xb1, 0xff, 0x1f, 0xa0, 0xa1, 0x5e, 0xaf, 0xb8, 0xe6, 0x1e, 0x36, 0x1c, - 0xaa, 0x95, 0xe1, 0xd3, 0x47, 0xe6, 0xda, 0x98, 0xc6, 0x1c, 0x19, 0xb5, 0xd2, 0x83, 0x9f, 0xfd, - 0xf6, 0x8c, 0xdc, 0x55, 0x01, 0x14, 0x8e, 0xa4, 0xd4, 0xd7, 0x37, 0x29, 0x4d, 0x74, 0x05, 0xd8, - 0xd5, 0x8a, 0x4a, 0x5d, 0x77, 0x5c, 0x7e, 0x3b, 0xfb, 0xcc, 0x5c, 0x7b, 0xb1, 0xe7, 0x5a, 0x39, - 0x9c, 0xbb, 0xa2, 0xd6, 0xf5, 0xaa, 0xea, 0x9a, 0xb6, 0x73, 0x69, 0x40, 0x49, 0x53, 0x52, 0xcb, - 0xba, 0xe3, 0xa2, 0x4d, 0x48, 0x57, 0xb1, 0xb1, 0xcf, 0xc8, 0xc6, 0xdf, 0x18, 0xd9, 0x14, 0xa1, - 0x44, 0xa9, 0x3e, 0x0f, 0x48, 0x0d, 0xc2, 0x89, 0xe7, 0x48, 0xec, 0x56, 0x65, 0x07, 0xf2, 0x21, - 0xca, 0xf4, 0xf5, 0xc4, 0xb8, 0x1a, 0xad, 0xca, 0x3f, 0x08, 0xe0, 0xf7, 0x89, 0x72, 0x30, 0xa4, - 0x56, 0xab, 0x36, 0x76, 0x1c, 0x7a, 0xec, 0x97, 0x56, 0x44, 0xb1, 0x30, 0xfe, 0xaf, 0xbf, 0x70, - 0x72, 0x24, 0x44, 0xb1, 0x94, 0x01, 0xb8, 0xea, 0xa1, 0x9e, 0xf8, 0xb8, 0x04, 0xe3, 0x2d, 0x3d, - 0x22, 0x19, 0xa6, 0x8b, 0x5b, 0x9b, 0x97, 0xd6, 0x94, 0xa5, 0x17, 0x8a, 0x9b, 0x4b, 0x6b, 0xab, - 0x15, 0x76, 0xd1, 0x7f, 0x75, 0x63, 0xbd, 0x3c, 0xbf, 0x74, 0x71, 0xa9, 0xbc, 0x90, 0x1d, 0x40, - 0x33, 0x70, 0xb4, 0x0d, 0xcc, 0x42, 0x79, 0xb9, 0xbc, 0x58, 0xdc, 0x2c, 0x67, 0x25, 0x74, 0x2f, - 0xdc, 0xd3, 0x96, 0x88, 0x07, 0x12, 0xeb, 0x00, 0xa2, 0x94, 0x3d, 0x90, 0x78, 0xa9, 0xd8, 0xd1, - 0x77, 0x1e, 0xea, 0x64, 0x3a, 0xd7, 0x3d, 0x27, 0x09, 0x7b, 0xd1, 0x3b, 0x63, 0x70, 0x24, 0x3a, - 0x47, 0xa8, 0xc6, 0x7e, 0x87, 0x67, 0x9e, 0x1d, 0xc2, 0xd7, 0x25, 0x88, 0x17, 0x8d, 0x7d, 0x74, - 0x84, 0x25, 0xd0, 0x95, 0xa6, 0x5d, 0xe7, 0x41, 0x67, 0x88, 0x94, 0xb7, 0xec, 0x3a, 0x09, 0x46, - 0xe2, 0x66, 0xbf, 0x74, 0x3c, 0xc3, 0xaf, 0xeb, 0x17, 0xb2, 0x1f, 0x7a, 0x75, 0x66, 0xe0, 0x73, - 0xaf, 0xce, 0x0c, 0xfc, 0xe0, 0x13, 0x33, 0x03, 0x2f, 0xff, 0xf1, 0xec, 0x40, 0x69, 0x2f, 0x2a, - 0xd9, 0x97, 0x7a, 0x4e, 0x9f, 0xa9, 0xa2, 0xb1, 0x4f, 0x23, 0xcf, 0xba, 0xf4, 0x42, 0x92, 0x0a, - 0x27, 0x4e, 0x4c, 0xa7, 0xa3, 0x27, 0xa6, 0xcf, 0xe1, 0x7a, 0xfd, 0xb2, 0x61, 0x5e, 0xa3, 0x03, - 0xea, 0xeb, 0xe0, 0x83, 0x31, 0x98, 0x6e, 0x99, 0x27, 0x79, 0x4a, 0xd1, 0xe9, 0xbd, 0x6b, 0x01, - 0x52, 0x0b, 0x22, 0x53, 0xc9, 0xc1, 0x90, 0x83, 0x35, 0xd3, 0xa8, 0x32, 0xff, 0x8e, 0x2b, 0xa2, - 0x48, 0xc4, 0x36, 0x54, 0xc3, 0x74, 0xf8, 0x25, 0x7b, 0x56, 0x28, 0x7d, 0x54, 0x3a, 0x58, 0x82, - 0x30, 0x22, 0x7a, 0x12, 0x62, 0x3e, 0xde, 0xf3, 0x0c, 0x79, 0x8f, 0x48, 0xe9, 0x09, 0x11, 0x3a, - 0x47, 0xee, 0x57, 0x2b, 0xbf, 0x1a, 0x83, 0x99, 0xa8, 0x56, 0x48, 0x9e, 0xe6, 0xb8, 0x6a, 0xc3, - 0xea, 0xa4, 0x96, 0xf3, 0x90, 0xde, 0x14, 0x30, 0x07, 0xd6, 0xcb, 0x8d, 0x03, 0xea, 0x65, 0xd4, - 0xeb, 0x4a, 0x28, 0xe6, 0x74, 0x9f, 0x8a, 0xf1, 0xe4, 0xb8, 0x2d, 0xcd, 0x7c, 0x28, 0x01, 0x47, - 0x4d, 0xc7, 0xb5, 0x55, 0xcd, 0x34, 0x4e, 0x69, 0xf6, 0xbe, 0xe5, 0xd2, 0x3c, 0xcd, 0xdc, 0x11, - 0x5a, 0x11, 0x8d, 0x73, 0xac, 0xb1, 0x83, 0xd7, 0xec, 0x40, 0x72, 0x9d, 0x60, 0x11, 0x6d, 0xb8, - 0xa6, 0xab, 0xd6, 0xb9, 0x96, 0x58, 0x81, 0xd4, 0xb2, 0x57, 0x5b, 0x31, 0x56, 0xab, 0x8b, 0x07, - 0x5b, 0x75, 0xac, 0xee, 0xb0, 0xcb, 0xef, 0x71, 0xea, 0x4c, 0x29, 0x52, 0x41, 0xef, 0xb9, 0x4f, - 0x42, 0x52, 0x6d, 0xb2, 0x7b, 0x1b, 0x71, 0xe2, 0x65, 0xb4, 0x20, 0x2f, 0xc1, 0x10, 0x3f, 0x3d, - 0x46, 0x59, 0x88, 0xef, 0xe1, 0x7d, 0xda, 0x4f, 0x46, 0x21, 0x3f, 0xd1, 0xa3, 0x90, 0xa4, 0xac, - 0xf3, 0x79, 0x63, 0x6a, 0x2e, 0xc2, 0xfb, 0x1c, 0x65, 0x51, 0x61, 0x40, 0xf2, 0x33, 0x90, 0x5a, - 0x30, 0x1b, 0xba, 0x61, 0x86, 0x69, 0xa5, 0x19, 0x2d, 0xca, 0xb1, 0xd5, 0xe4, 0xa9, 0x85, 0xc2, - 0x0a, 0x68, 0x0a, 0x06, 0xd9, 0x53, 0x08, 0x7e, 0xf3, 0x84, 0x97, 0xe4, 0x79, 0x18, 0xa2, 0xb4, - 0xd7, 0x2c, 0x84, 0xf8, 0x23, 0x3a, 0xfe, 0xe6, 0x82, 0x66, 0xa1, 0x9c, 0x7c, 0xcc, 0x67, 0x15, - 0x41, 0xa2, 0xaa, 0xba, 0x2a, 0x97, 0x9a, 0xfe, 0x96, 0xdf, 0x04, 0x29, 0x4e, 0xc4, 0x41, 0x8f, - 0x41, 0xdc, 0xb4, 0x1c, 0x7e, 0x77, 0x24, 0xd7, 0x5e, 0x90, 0x35, 0xab, 0x94, 0x20, 0x29, 0x89, - 0x42, 0x40, 0x4b, 0x97, 0x3a, 0xc6, 0xd1, 0xb9, 0x68, 0x1c, 0xf5, 0xc6, 0x9b, 0x0d, 0x63, 0x64, - 0xf8, 0x83, 0xa1, 0xe4, 0x98, 0xd7, 0x76, 0x15, 0xdb, 0x8e, 0x6e, 0x1a, 0x7c, 0xda, 0x66, 0xb6, - 0x91, 0xf5, 0xd8, 0xe2, 0xad, 0x1d, 0x8c, 0xe3, 0xcd, 0x10, 0x2f, 0x5a, 0x16, 0xca, 0x43, 0x8a, - 0x96, 0x35, 0x93, 0x59, 0x47, 0x42, 0xf1, 0xca, 0xa4, 0xcd, 0x31, 0x77, 0xdc, 0x6b, 0xaa, 0xed, - 0xbd, 0x0e, 0x14, 0x65, 0xf9, 0x1c, 0xa4, 0xe7, 0x4d, 0xc3, 0xc1, 0x86, 0xd3, 0xa4, 0xde, 0xb6, - 0x5d, 0x37, 0xb5, 0x3d, 0x4e, 0x81, 0x15, 0x88, 0x82, 0x55, 0xcb, 0xa2, 0x98, 0x09, 0x85, 0xfc, - 0x64, 0x69, 0x5f, 0x69, 0xa9, 0xa3, 0x52, 0x4e, 0xf5, 0xab, 0x14, 0x2e, 0x9a, 0xa7, 0x95, 0x3f, - 0x93, 0x20, 0x1f, 0x75, 0x98, 0x3d, 0xbc, 0xef, 0x1c, 0xcc, 0x5f, 0x9e, 0x87, 0xf4, 0x3a, 0x7d, - 0x94, 0x7f, 0x19, 0xef, 0xa3, 0x3c, 0x0c, 0xe1, 0xea, 0xe9, 0x33, 0x67, 0x1e, 0x3f, 0xc7, 0xac, - 0xf9, 0xd2, 0x80, 0x22, 0x2a, 0xd0, 0x34, 0xa4, 0x1d, 0xac, 0x59, 0xa7, 0xcf, 0x9c, 0xdd, 0x7b, - 0x9c, 0x19, 0x10, 0x49, 0x6c, 0xbc, 0xaa, 0x42, 0x8a, 0xc8, 0xf9, 0xdd, 0x4f, 0xcc, 0x48, 0xa5, - 0x24, 0xc4, 0x9d, 0x66, 0xe3, 0x2e, 0xd8, 0xc1, 0x67, 0x92, 0x30, 0xed, 0xb5, 0xb1, 0xc8, 0xe3, - 0x25, 0x18, 0x5c, 0xea, 0x51, 0x4f, 0x6a, 0xda, 0xde, 0x21, 0x21, 0xed, 0xa2, 0x37, 0xf9, 0x37, - 0x25, 0xc8, 0x78, 0x19, 0xcf, 0x06, 0x76, 0xd1, 0xb9, 0x60, 0x1a, 0xc3, 0x1d, 0xe1, 0xc8, 0x5c, - 0xb8, 0x1f, 0x3f, 0x2f, 0x53, 0x02, 0xc0, 0xe8, 0x0c, 0x35, 0x34, 0xcb, 0x74, 0xf8, 0x8b, 0xb0, - 0xae, 0x88, 0x1e, 0x28, 0x7a, 0x14, 0x10, 0x8d, 0x56, 0x95, 0xab, 0xa6, 0xab, 0x1b, 0xb5, 0x8a, - 0x65, 0x5e, 0xe3, 0xaf, 0x6c, 0xe3, 0x4a, 0x96, 0xb6, 0x5c, 0xa1, 0x0d, 0xeb, 0xa4, 0x5e, 0xfe, - 0x43, 0x09, 0xd2, 0x1e, 0x95, 0x70, 0x86, 0x46, 0x5c, 0x5a, 0x14, 0xd1, 0x39, 0x18, 0xb2, 0x9a, - 0xdb, 0x15, 0xe1, 0xff, 0xc3, 0xa7, 0xf3, 0xad, 0xde, 0x2c, 0x2c, 0x81, 0xfb, 0xf3, 0xa0, 0xd5, - 0xdc, 0x26, 0x76, 0x71, 0x2f, 0x64, 0xda, 0xb0, 0x32, 0x7c, 0xd5, 0xe7, 0x82, 0x7e, 0xf5, 0x81, - 0xf3, 0x5f, 0xb1, 0x6c, 0xdd, 0xb4, 0x75, 0x77, 0x9f, 0x26, 0xa0, 0x71, 0x25, 0x2b, 0x1a, 0xd6, - 0x79, 0x3d, 0xba, 0x1f, 0x46, 0x38, 0xbd, 0x6b, 0x58, 0xaf, 0xed, 0xba, 0xb9, 0xef, 0x0e, 0x51, - 0x48, 0xde, 0xcb, 0x73, 0xb4, 0x52, 0xd6, 0x61, 0x6c, 0x83, 0x2e, 0x5e, 0x7d, 0xe9, 0x9e, 0xf0, - 0x65, 0x90, 0x7a, 0xc9, 0xd0, 0x91, 0xfb, 0x58, 0x0b, 0xf7, 0xa5, 0xc5, 0x8e, 0xb6, 0x7a, 0xb2, - 0x5f, 0x5b, 0x0d, 0x67, 0x80, 0xbf, 0x73, 0x24, 0xe0, 0x9c, 0xcc, 0x54, 0x83, 0x01, 0xab, 0x3f, - 0x33, 0xed, 0x95, 0x29, 0xe4, 0xbb, 0x4d, 0x98, 0xf9, 0xae, 0x21, 0x33, 0xdf, 0xc3, 0x91, 0xe4, - 0x73, 0x30, 0xb2, 0xae, 0xda, 0xee, 0x06, 0x76, 0x2f, 0x61, 0xb5, 0x8a, 0xed, 0xf0, 0x7c, 0x3a, - 0x22, 0xe6, 0x53, 0x04, 0x09, 0x3a, 0x69, 0xb2, 0x19, 0x85, 0xfe, 0x96, 0x77, 0x20, 0x41, 0x2f, - 0x78, 0x7a, 0x73, 0x2d, 0xc7, 0x60, 0x73, 0x2d, 0x89, 0x9b, 0xfb, 0x2e, 0x76, 0x44, 0xd2, 0x4a, - 0x0b, 0xe8, 0xb4, 0x98, 0x31, 0xe3, 0xdd, 0x66, 0x4c, 0x6e, 0x96, 0x7c, 0xde, 0x7c, 0x11, 0x86, - 0x4a, 0x24, 0xe8, 0x2e, 0x2d, 0x78, 0x6c, 0x48, 0x3e, 0x1b, 0xe8, 0x32, 0x8c, 0x59, 0xaa, 0xed, - 0xd2, 0x77, 0x2d, 0xbb, 0x54, 0x06, 0xef, 0x91, 0x6d, 0xc4, 0x07, 0x43, 0x82, 0xf2, 0x3e, 0x46, - 0xac, 0x60, 0xa5, 0xfc, 0x5a, 0x02, 0x06, 0xb9, 0x22, 0xce, 0xc3, 0x10, 0x57, 0x28, 0xb7, 0xc1, - 0xa3, 0x73, 0xd1, 0xe9, 0x67, 0xce, 0x9b, 0x26, 0x38, 0x35, 0x81, 0x81, 0x1e, 0x84, 0x94, 0xb6, - 0xab, 0xea, 0x46, 0x45, 0xaf, 0x8a, 0xbd, 0x82, 0xd7, 0x6e, 0xce, 0x0c, 0xcd, 0x93, 0xba, 0xa5, - 0x05, 0x65, 0x88, 0x36, 0x2e, 0x55, 0xc9, 0xfc, 0xbe, 0xcb, 0x5c, 0x83, 0xf9, 0x1a, 0x2f, 0xa1, - 0xa7, 0x21, 0x41, 0x8c, 0x80, 0xbf, 0x78, 0xcc, 0xb7, 0xec, 0xd8, 0x78, 0xc9, 0x5b, 0x29, 0x45, - 0x3a, 0x7e, 0xff, 0xb7, 0x67, 0x24, 0x85, 0x62, 0xa0, 0x22, 0x8c, 0xd4, 0x55, 0xc7, 0xad, 0xd0, - 0x79, 0x8a, 0x74, 0x9f, 0xa4, 0x24, 0x0e, 0x47, 0x95, 0xc1, 0x55, 0xca, 0x19, 0x1f, 0x26, 0x38, - 0xac, 0xaa, 0x8a, 0x8e, 0x43, 0x96, 0x92, 0xd0, 0xcc, 0x46, 0x43, 0x77, 0x59, 0xb6, 0x34, 0x48, - 0x35, 0x3e, 0x4a, 0xea, 0xe7, 0x69, 0x35, 0xcd, 0x99, 0x8e, 0x42, 0x9a, 0xbe, 0xb0, 0xa2, 0x20, - 0xec, 0x36, 0x71, 0x8a, 0x54, 0xd0, 0xc6, 0x87, 0x60, 0xcc, 0x8f, 0x91, 0x0c, 0x24, 0xc5, 0xa8, - 0xf8, 0xd5, 0x14, 0xf0, 0x31, 0x98, 0x34, 0xf0, 0x75, 0x7a, 0xbf, 0x39, 0x04, 0x9d, 0xa6, 0xd0, - 0x88, 0xb4, 0x5d, 0x09, 0x63, 0x3c, 0x00, 0xa3, 0x9a, 0x50, 0x3d, 0x83, 0x05, 0x0a, 0x3b, 0xe2, - 0xd5, 0x52, 0xb0, 0x23, 0x90, 0x52, 0x2d, 0x8b, 0x01, 0x0c, 0xf3, 0x28, 0x69, 0x59, 0xb4, 0xe9, - 0x04, 0x8c, 0x53, 0x19, 0x6d, 0xec, 0x34, 0xeb, 0x2e, 0x27, 0x92, 0xa1, 0x30, 0x63, 0xa4, 0x41, - 0x61, 0xf5, 0x14, 0xf6, 0x3e, 0x18, 0xc1, 0x57, 0xf5, 0x2a, 0x36, 0x34, 0xcc, 0xe0, 0x46, 0x28, - 0x5c, 0x46, 0x54, 0x52, 0xa0, 0x87, 0xc1, 0x8b, 0x7f, 0x15, 0x11, 0x99, 0x47, 0x19, 0x3d, 0x51, - 0x5f, 0x64, 0xd5, 0x72, 0x0e, 0x12, 0x0b, 0xaa, 0xab, 0x92, 0x24, 0xc2, 0xbd, 0xce, 0xa6, 0x9a, - 0x8c, 0x42, 0x7e, 0xca, 0xaf, 0xc7, 0x20, 0x71, 0xc5, 0x74, 0x31, 0x7a, 0x3c, 0x90, 0xd4, 0x8d, - 0xb6, 0x5a, 0xf2, 0x86, 0x5e, 0x33, 0x70, 0x75, 0xc5, 0xa9, 0x05, 0x3e, 0x86, 0xe0, 0x9b, 0x52, - 0x2c, 0x64, 0x4a, 0x93, 0x90, 0xb4, 0xcd, 0xa6, 0x51, 0x15, 0xd7, 0x70, 0x69, 0x01, 0xcd, 0x43, - 0xca, 0xb3, 0x90, 0x44, 0x77, 0x0b, 0x19, 0x23, 0x16, 0x42, 0xac, 0x97, 0x57, 0x28, 0x43, 0xdb, - 0xdc, 0x50, 0x4a, 0x90, 0xf6, 0x42, 0x15, 0xb7, 0xb3, 0xfe, 0x4c, 0xd5, 0x47, 0x23, 0x13, 0x8a, - 0x37, 0xee, 0x9e, 0xe2, 0x98, 0xb5, 0x65, 0xbd, 0x06, 0xae, 0xb9, 0x90, 0x49, 0xf1, 0xcf, 0x32, - 0x0c, 0x51, 0xa9, 0x7c, 0x93, 0x62, 0x9f, 0x66, 0x38, 0x06, 0x69, 0x47, 0xaf, 0x19, 0xaa, 0xdb, - 0xb4, 0x31, 0xb7, 0x3a, 0xbf, 0x42, 0xfe, 0x3d, 0x09, 0x06, 0x99, 0x15, 0x07, 0xb4, 0x26, 0xb5, - 0xd7, 0x5a, 0xac, 0x93, 0xd6, 0xe2, 0xb7, 0xab, 0xb5, 0x0b, 0x00, 0x1e, 0x2b, 0x0e, 0x7f, 0x2b, - 0xdf, 0x92, 0x2f, 0x30, 0xf6, 0x36, 0xf4, 0x1a, 0x77, 0xd0, 0x00, 0x8a, 0xfc, 0x1f, 0x24, 0x92, - 0xa0, 0xf2, 0x76, 0x74, 0x01, 0x46, 0x04, 0x4f, 0x95, 0x9d, 0xba, 0x5a, 0xe3, 0x36, 0x73, 0xb4, - 0x03, 0x63, 0x17, 0xeb, 0x6a, 0x4d, 0x19, 0xe6, 0xbc, 0x90, 0x42, 0xfb, 0x11, 0x88, 0x75, 0x18, - 0x81, 0xd0, 0x90, 0xc7, 0x6f, 0x6f, 0xc8, 0x43, 0x83, 0x93, 0x88, 0x0e, 0xce, 0x6f, 0xc5, 0xe8, - 0xb2, 0xc4, 0x32, 0x1d, 0xb5, 0x7e, 0xf7, 0xfd, 0xe0, 0x28, 0xa4, 0x2d, 0xb3, 0x5e, 0x61, 0x2d, - 0xec, 0x52, 0x7a, 0xca, 0x32, 0xeb, 0x4a, 0xcb, 0x70, 0x27, 0xef, 0x88, 0x93, 0x0c, 0xde, 0x01, - 0x8d, 0x0d, 0x45, 0x35, 0x66, 0x40, 0x86, 0x29, 0x82, 0xcf, 0x5c, 0x73, 0x44, 0x03, 0x74, 0x22, - 0x94, 0xa2, 0xb3, 0x2c, 0x63, 0x9a, 0xc1, 0x29, 0x1c, 0x8a, 0xc0, 0xb3, 0x50, 0xdf, 0xba, 0x8e, - 0x0d, 0x1a, 0xa3, 0xc2, 0xa1, 0xe4, 0x5f, 0x91, 0x00, 0x96, 0x89, 0x4e, 0xa9, 0xac, 0x64, 0xc6, - 0x71, 0x68, 0xf7, 0x95, 0x50, 0xaf, 0xc7, 0xda, 0x0f, 0x16, 0xef, 0x3b, 0xe3, 0x04, 0x39, 0x2e, - 0xc2, 0x88, 0x6f, 0x82, 0x0e, 0x16, 0x8c, 0x1c, 0xeb, 0x98, 0x45, 0x6f, 0x60, 0x57, 0xc9, 0x5c, - 0x0d, 0x94, 0xe4, 0x7f, 0x26, 0x41, 0x9a, 0xf2, 0xb3, 0x82, 0x5d, 0x35, 0x34, 0x72, 0xd2, 0xed, - 0x8e, 0xdc, 0x3d, 0x00, 0x8c, 0x88, 0xa3, 0xbf, 0x84, 0xb9, 0x35, 0xa5, 0x69, 0xcd, 0x86, 0xfe, - 0x12, 0x46, 0x4f, 0x7a, 0x6a, 0x8e, 0x77, 0x53, 0xb3, 0xc8, 0xb1, 0xb9, 0xb2, 0x0f, 0xc3, 0x10, - 0xfd, 0x8e, 0xd4, 0x75, 0x87, 0xa7, 0xcd, 0x83, 0x46, 0xb3, 0xb1, 0x79, 0xdd, 0x91, 0x77, 0x61, - 0x68, 0xf3, 0x3a, 0xdb, 0xd3, 0x38, 0x0a, 0x69, 0xdb, 0x34, 0xf9, 0xcc, 0xcb, 0x72, 0x9d, 0x14, - 0xa9, 0xa0, 0x13, 0x8d, 0x58, 0xc9, 0xc7, 0xfc, 0x95, 0xbc, 0xbf, 0x11, 0x11, 0xef, 0x63, 0x23, - 0xe2, 0xc4, 0xbf, 0x93, 0x60, 0x38, 0x10, 0x0d, 0xd0, 0xe3, 0x70, 0xa8, 0xb4, 0xbc, 0x36, 0x7f, - 0xb9, 0xb2, 0xb4, 0x50, 0xb9, 0xb8, 0x5c, 0x5c, 0xf4, 0x9f, 0x59, 0xe5, 0xa7, 0x5e, 0xb9, 0x31, - 0x8b, 0x02, 0xb0, 0x5b, 0x06, 0xdd, 0x03, 0x42, 0xa7, 0x60, 0x32, 0x8c, 0x52, 0x2c, 0x6d, 0x94, - 0x57, 0x37, 0xb3, 0x52, 0xfe, 0xd0, 0x2b, 0x37, 0x66, 0xc7, 0x03, 0x18, 0xc5, 0x6d, 0x07, 0x1b, - 0x6e, 0x2b, 0xc2, 0xfc, 0xda, 0xca, 0xca, 0xd2, 0x66, 0x36, 0xd6, 0x82, 0xc0, 0x03, 0xf3, 0xc3, - 0x30, 0x1e, 0x46, 0x58, 0x5d, 0x5a, 0xce, 0xc6, 0xf3, 0xe8, 0x95, 0x1b, 0xb3, 0xa3, 0x01, 0xe8, - 0x55, 0xbd, 0x9e, 0x4f, 0xbd, 0xf7, 0x93, 0xd3, 0x03, 0x9f, 0xf9, 0xd4, 0xb4, 0x44, 0x24, 0x1b, - 0x09, 0xc5, 0x04, 0xf4, 0x28, 0x1c, 0xde, 0x58, 0x5a, 0x5c, 0x2d, 0x2f, 0x54, 0x56, 0x36, 0x16, - 0xc5, 0x86, 0xb1, 0x90, 0x6e, 0xec, 0x95, 0x1b, 0xb3, 0xc3, 0x5c, 0xa4, 0x4e, 0xd0, 0xeb, 0x4a, - 0xf9, 0xca, 0xda, 0x66, 0x39, 0x2b, 0x31, 0xe8, 0x75, 0x1b, 0x5f, 0x35, 0x5d, 0xf6, 0x99, 0xb9, - 0xc7, 0xe0, 0x48, 0x1b, 0x68, 0x4f, 0xb0, 0xf1, 0x57, 0x6e, 0xcc, 0x8e, 0xac, 0xdb, 0x98, 0x79, - 0x0d, 0xc5, 0x98, 0x83, 0x5c, 0x2b, 0xc6, 0xda, 0xfa, 0xda, 0x46, 0x71, 0x39, 0x3b, 0x9b, 0xcf, - 0xbe, 0x72, 0x63, 0x36, 0x23, 0x42, 0x1f, 0xdd, 0x95, 0xf7, 0x24, 0xbb, 0xf3, 0x2b, 0x97, 0x4f, - 0x9d, 0x84, 0xfb, 0x3b, 0x9c, 0x00, 0x89, 0x03, 0x84, 0xdb, 0x3a, 0x03, 0xea, 0xb8, 0x1f, 0x9e, - 0xef, 0xb1, 0x4d, 0xdc, 0x7b, 0x19, 0x74, 0xfb, 0xe7, 0x4b, 0xf9, 0x2e, 0x8b, 0x34, 0xf9, 0x97, - 0x24, 0x18, 0xbd, 0xa4, 0x3b, 0xae, 0x69, 0xeb, 0x9a, 0x5a, 0xa7, 0x0f, 0xaa, 0x9e, 0xec, 0x2f, - 0x82, 0x46, 0x5c, 0xfb, 0x02, 0x0c, 0x5e, 0x55, 0xeb, 0x2c, 0x7c, 0xc5, 0xe9, 0xd7, 0x5f, 0x3a, - 0x9c, 0xc8, 0x78, 0x61, 0x4c, 0x10, 0x60, 0x68, 0xf2, 0xab, 0x31, 0x18, 0xa3, 0xe6, 0xef, 0xb0, - 0xef, 0x82, 0x91, 0x15, 0xd3, 0x9b, 0x21, 0x61, 0xab, 0x2e, 0xdf, 0xde, 0x2b, 0x3d, 0xcc, 0x8f, - 0x04, 0xef, 0xed, 0x7e, 0xca, 0xb5, 0x80, 0x35, 0x85, 0xa2, 0xa1, 0xe7, 0x20, 0xd5, 0x50, 0xaf, - 0x57, 0x28, 0x09, 0xb6, 0x10, 0x79, 0x53, 0xdf, 0x24, 0x6e, 0xdd, 0x9c, 0x19, 0xdb, 0x57, 0x1b, - 0xf5, 0x82, 0x2c, 0x48, 0xc8, 0xca, 0x50, 0x43, 0xbd, 0x4e, 0x18, 0x43, 0x7b, 0x30, 0x46, 0x6a, - 0xb5, 0x5d, 0xd5, 0xa8, 0x61, 0x46, 0x9f, 0x6e, 0x51, 0x96, 0xe6, 0x0f, 0x42, 0x7f, 0xca, 0xa7, - 0x1f, 0xa0, 0x24, 0x2b, 0x23, 0x0d, 0xf5, 0xfa, 0x3c, 0xad, 0x20, 0x9d, 0x15, 0x52, 0x1f, 0x7a, - 0x75, 0x66, 0x80, 0x9e, 0xab, 0x7e, 0x53, 0x02, 0xf0, 0x55, 0x84, 0x7e, 0x0e, 0xb2, 0x9a, 0x57, - 0xa2, 0xb8, 0xe2, 0x98, 0xf0, 0xa1, 0x4e, 0xca, 0x8f, 0x28, 0x98, 0x4d, 0xb8, 0xdf, 0xb8, 0x39, - 0x23, 0x29, 0x63, 0x5a, 0x44, 0xf7, 0x3f, 0x0b, 0xc3, 0x4d, 0xab, 0xaa, 0xba, 0xb8, 0x42, 0x17, - 0x63, 0xb1, 0x9e, 0x93, 0xf7, 0x34, 0xa1, 0x75, 0xeb, 0xe6, 0x0c, 0x62, 0x62, 0x05, 0x90, 0x65, - 0x3a, 0xa5, 0x03, 0xab, 0x21, 0x08, 0x01, 0x99, 0xbe, 0x26, 0xc1, 0xf0, 0x42, 0xe0, 0x66, 0x63, - 0x0e, 0x86, 0x1a, 0xa6, 0xa1, 0xef, 0x71, 0xf3, 0x4b, 0x2b, 0xa2, 0x88, 0xf2, 0x90, 0x62, 0x4f, - 0x4a, 0xdd, 0x7d, 0xb1, 0x6b, 0x29, 0xca, 0x04, 0xeb, 0x1a, 0xde, 0x76, 0x74, 0x31, 0x10, 0x8a, - 0x28, 0xa2, 0x8b, 0x90, 0x75, 0xb0, 0xd6, 0xb4, 0x75, 0x77, 0xbf, 0xa2, 0x99, 0x86, 0xab, 0x6a, - 0x2e, 0x7b, 0x9c, 0x58, 0x3a, 0x7a, 0xeb, 0xe6, 0xcc, 0x61, 0xc6, 0x6b, 0x14, 0x42, 0x56, 0xc6, - 0x44, 0xd5, 0x3c, 0xab, 0x21, 0x3d, 0x54, 0xb1, 0xab, 0xea, 0x75, 0x27, 0xc7, 0xae, 0x08, 0x88, - 0x62, 0x40, 0x96, 0x1b, 0x43, 0xc1, 0x5d, 0xaa, 0x8b, 0x90, 0x35, 0x2d, 0x6c, 0x87, 0x32, 0x4b, - 0x29, 0xda, 0x73, 0x14, 0x42, 0x56, 0xc6, 0x44, 0x95, 0xc8, 0x3a, 0x5d, 0x32, 0xcc, 0x62, 0xbd, - 0x67, 0x35, 0xb7, 0xfd, 0xcd, 0xad, 0xc9, 0x96, 0xd1, 0x28, 0x1a, 0xfb, 0xa5, 0x27, 0x7c, 0xea, - 0x51, 0x3c, 0xf9, 0xeb, 0x5f, 0x38, 0x39, 0xc9, 0x4d, 0xc3, 0xdf, 0x4a, 0xba, 0x8c, 0xf7, 0xc9, - 0xf0, 0x73, 0xd0, 0x75, 0x0a, 0x49, 0x32, 0xc9, 0x17, 0x55, 0xbd, 0x2e, 0x1e, 0xd9, 0x2b, 0xbc, - 0x84, 0x0a, 0x30, 0xe8, 0xb8, 0xaa, 0xdb, 0x74, 0xf8, 0xc9, 0xab, 0xdc, 0xc9, 0xd4, 0x4a, 0xa6, - 0x51, 0xdd, 0xa0, 0x90, 0x0a, 0xc7, 0x40, 0x45, 0x18, 0xe4, 0xa7, 0xd9, 0xc9, 0x83, 0x38, 0x34, - 0xbd, 0xac, 0xc0, 0x10, 0x91, 0x09, 0xd9, 0x2a, 0xae, 0xe3, 0x1a, 0x4b, 0x96, 0x76, 0x55, 0xb2, - 0x8a, 0xa0, 0x1f, 0xbf, 0x2b, 0x2d, 0x1c, 0xc4, 0xf5, 0xb8, 0x7e, 0xa2, 0xa4, 0x64, 0x65, 0xcc, - 0xab, 0xda, 0xa0, 0x35, 0xe8, 0x72, 0xe8, 0xe2, 0x2d, 0xff, 0x38, 0xe4, 0x7d, 0x9d, 0x84, 0x0e, - 0x58, 0xb2, 0xd8, 0x5c, 0x08, 0x5e, 0xdb, 0xbd, 0x08, 0xd9, 0xa6, 0xb1, 0x6d, 0x1a, 0xf4, 0xfd, - 0x2b, 0x4f, 0xd4, 0xc9, 0x02, 0x2d, 0x1e, 0x34, 0x89, 0x28, 0x84, 0xac, 0x8c, 0x79, 0x55, 0x97, - 0x58, 0x3a, 0x5f, 0x85, 0x51, 0x1f, 0x8a, 0xba, 0x67, 0xba, 0xa7, 0x7b, 0xde, 0xcb, 0xdd, 0xf3, - 0x50, 0xb4, 0x17, 0xdf, 0x43, 0x47, 0xbc, 0x4a, 0x82, 0x86, 0x2e, 0x01, 0xf8, 0x41, 0x81, 0x6e, - 0x32, 0x0c, 0x77, 0x1e, 0x6e, 0x3f, 0xb2, 0x88, 0x45, 0x9b, 0x8f, 0x8b, 0xae, 0xc1, 0x44, 0x43, - 0x37, 0x2a, 0x0e, 0xae, 0xef, 0x54, 0xb8, 0x82, 0x09, 0x49, 0xfa, 0xf9, 0xa2, 0xd2, 0x62, 0xdf, - 0x56, 0x70, 0xeb, 0xe6, 0x4c, 0x9e, 0xc7, 0xcc, 0x56, 0x6a, 0xb2, 0x32, 0xde, 0xd0, 0x8d, 0x0d, - 0x5c, 0xdf, 0x59, 0xf0, 0xea, 0x0a, 0x99, 0xf7, 0xbe, 0x3a, 0x33, 0xc0, 0xfd, 0x73, 0x40, 0x3e, - 0x4b, 0x77, 0xbd, 0xb9, 0x5f, 0x61, 0x87, 0xac, 0x2c, 0x54, 0x51, 0xe0, 0x67, 0xfd, 0x7e, 0x05, - 0xf3, 0xeb, 0x97, 0xff, 0x78, 0x56, 0x92, 0x7f, 0x43, 0x82, 0xc1, 0x85, 0x2b, 0xeb, 0xaa, 0x6e, - 0xa3, 0x25, 0x18, 0xf7, 0x8d, 0x26, 0xec, 0xd5, 0xc7, 0x6e, 0xdd, 0x9c, 0xc9, 0x45, 0xed, 0xca, - 0x73, 0x6b, 0xdf, 0x6c, 0x85, 0x5f, 0x2f, 0x75, 0x5a, 0x7a, 0x86, 0x48, 0xb5, 0x80, 0xc8, 0xad, - 0x0b, 0xd3, 0x88, 0x98, 0x65, 0x18, 0x62, 0xdc, 0x3a, 0xa8, 0x00, 0x49, 0x8b, 0xfc, 0xe0, 0x5b, - 0xfa, 0xd3, 0x1d, 0xed, 0x96, 0xc2, 0x7b, 0x5b, 0x8f, 0x04, 0x45, 0xfe, 0x40, 0x0c, 0x60, 0xe1, - 0xca, 0x95, 0x4d, 0x5b, 0xb7, 0xea, 0xd8, 0xbd, 0x93, 0x92, 0x6f, 0xc2, 0xa1, 0xc0, 0x8a, 0xc7, - 0xd6, 0x22, 0xd2, 0xcf, 0xde, 0xba, 0x39, 0x73, 0x2c, 0x2a, 0x7d, 0x00, 0x4c, 0x56, 0x26, 0xfc, - 0xd5, 0x8f, 0xad, 0xb5, 0xa5, 0x5a, 0x75, 0x5c, 0x8f, 0x6a, 0xbc, 0x33, 0xd5, 0x00, 0x58, 0x90, - 0xea, 0x82, 0xe3, 0xb6, 0x57, 0xed, 0x06, 0x0c, 0xfb, 0x2a, 0x71, 0xd0, 0x02, 0xa4, 0x5c, 0xfe, - 0x9b, 0x6b, 0x58, 0xee, 0xac, 0x61, 0x81, 0xc6, 0xb5, 0xec, 0x61, 0xca, 0x7f, 0x2e, 0x01, 0xf8, - 0x36, 0xfb, 0xd3, 0x69, 0x62, 0x24, 0x76, 0xf3, 0x70, 0x1b, 0x3f, 0x68, 0x32, 0xc6, 0x11, 0x23, - 0xaa, 0xfc, 0xe5, 0x18, 0x4c, 0x6c, 0x89, 0x78, 0xf3, 0x53, 0x2f, 0xfe, 0x3a, 0x0c, 0x61, 0xc3, - 0xb5, 0x75, 0x2a, 0x3f, 0x19, 0xe8, 0xc7, 0x3a, 0x0d, 0x74, 0x1b, 0x99, 0xe8, 0x67, 0x9b, 0xc4, - 0x2e, 0x39, 0x27, 0x13, 0xd1, 0xc6, 0x2f, 0xc6, 0x21, 0xd7, 0x09, 0x13, 0xcd, 0xc3, 0x98, 0x66, - 0x63, 0x76, 0xe9, 0x29, 0xb8, 0x61, 0x57, 0xca, 0xfb, 0x59, 0x64, 0x04, 0x40, 0x56, 0x46, 0x45, - 0x0d, 0x9f, 0x33, 0x6a, 0x40, 0x52, 0x3c, 0x62, 0x71, 0xf4, 0xee, 0x54, 0x7f, 0x39, 0x9d, 0xcc, - 0x27, 0x0d, 0xd1, 0x49, 0x98, 0x00, 0x9b, 0x35, 0x46, 0xfd, 0x5a, 0x3a, 0x6d, 0xd4, 0x61, 0x4c, - 0x37, 0x74, 0x57, 0x57, 0xeb, 0x95, 0x6d, 0xb5, 0xae, 0x1a, 0xda, 0x01, 0x93, 0x63, 0x16, 0xe8, - 0x79, 0x8f, 0x11, 0x4a, 0xb2, 0x32, 0xca, 0x6b, 0x4a, 0xac, 0x02, 0xcd, 0xc3, 0x90, 0xe8, 0x25, - 0x71, 0xd0, 0xa4, 0x42, 0x60, 0x06, 0x52, 0xb8, 0x77, 0xc7, 0x61, 0x5c, 0xc1, 0xd5, 0xff, 0x37, - 0x00, 0x7d, 0x0f, 0xc0, 0x25, 0x00, 0xe6, 0xdf, 0x24, 0x98, 0x1e, 0x6c, 0x0c, 0x48, 0x70, 0x48, - 0x33, 0xe4, 0x05, 0xc7, 0x0d, 0x8c, 0xc2, 0xcd, 0x18, 0x64, 0x82, 0xa3, 0xf0, 0x57, 0x74, 0xf2, - 0x41, 0x4b, 0x7e, 0xd4, 0x49, 0xf0, 0x0f, 0xdb, 0x76, 0x88, 0x3a, 0x2d, 0x36, 0xdb, 0x3d, 0xdc, - 0xfc, 0xf7, 0x18, 0x0c, 0xae, 0xab, 0xb6, 0xda, 0x70, 0x90, 0xd6, 0x92, 0x4b, 0x8a, 0xab, 0xa6, - 0x2d, 0x9f, 0x2f, 0xe7, 0x5b, 0x16, 0x3d, 0x52, 0xc9, 0x0f, 0xb5, 0x49, 0x25, 0x7f, 0x06, 0x46, - 0xc9, 0x32, 0x37, 0x70, 0xc7, 0x80, 0x68, 0x7b, 0xa4, 0x74, 0xc4, 0xa7, 0x12, 0x6e, 0x67, 0xab, - 0xe0, 0xc0, 0xad, 0xcc, 0xa7, 0x60, 0x98, 0x40, 0xf8, 0x41, 0x98, 0xa0, 0x4f, 0xf9, 0xcb, 0xcd, - 0x40, 0xa3, 0xac, 0x40, 0x43, 0xbd, 0x5e, 0x66, 0x05, 0xb4, 0x0c, 0x68, 0xd7, 0xdb, 0xe0, 0xa8, - 0xf8, 0xea, 0x24, 0xf8, 0xf7, 0xdc, 0xba, 0x39, 0x73, 0x84, 0xe1, 0xb7, 0xc2, 0xc8, 0xca, 0xb8, - 0x5f, 0x29, 0xa8, 0x3d, 0x09, 0x40, 0xe4, 0xaa, 0xb0, 0x0b, 0xd2, 0x6c, 0x19, 0x73, 0xe8, 0xd6, - 0xcd, 0x99, 0x71, 0x46, 0xc5, 0x6f, 0x93, 0x95, 0x34, 0x29, 0x2c, 0x90, 0xdf, 0x01, 0xcb, 0xfe, - 0xa4, 0x04, 0xc8, 0x0f, 0xef, 0x0a, 0x76, 0x2c, 0xb2, 0xee, 0x22, 0x4e, 0x14, 0xc8, 0x8b, 0xa5, - 0xee, 0xa9, 0xb6, 0x8f, 0x2f, 0x52, 0xed, 0x80, 0xa7, 0x9c, 0xf3, 0xe3, 0x61, 0xac, 0xd7, 0x95, - 0x61, 0x6e, 0x22, 0xd1, 0x28, 0x38, 0x20, 0xff, 0x81, 0x04, 0x47, 0x5a, 0x2c, 0xca, 0x63, 0xf6, - 0xff, 0x03, 0x64, 0x07, 0x1a, 0xf9, 0x57, 0x0a, 0x19, 0xd3, 0x07, 0x36, 0xd0, 0x71, 0xbb, 0x4d, - 0xb4, 0xbd, 0x03, 0x21, 0x9d, 0xdd, 0x44, 0xff, 0xe7, 0x12, 0x4c, 0x06, 0x7b, 0xf6, 0x64, 0x58, - 0x85, 0x4c, 0xb0, 0x63, 0xce, 0xfd, 0xfd, 0xfd, 0x70, 0xcf, 0x19, 0x0f, 0xe1, 0xa3, 0x67, 0x7d, - 0x4f, 0x65, 0xfb, 0x5f, 0x8f, 0xf7, 0xad, 0x08, 0xc1, 0x53, 0xd4, 0x63, 0x13, 0x74, 0x28, 0xfe, - 0x42, 0x82, 0xc4, 0xba, 0x69, 0xd6, 0xd1, 0x8b, 0x30, 0x6e, 0x98, 0x6e, 0x85, 0x18, 0x15, 0xae, - 0x06, 0x6f, 0x85, 0xa7, 0x4b, 0x6f, 0xe9, 0x5b, 0x3f, 0xdf, 0xbb, 0x39, 0xd3, 0x4a, 0x45, 0x19, - 0x33, 0x4c, 0xb7, 0x44, 0x6b, 0xf8, 0xc5, 0xf0, 0x6b, 0x30, 0x12, 0xee, 0x87, 0xc5, 0x46, 0xe5, - 0x20, 0xfd, 0x84, 0x29, 0xdc, 0xba, 0x39, 0x33, 0xe9, 0xbb, 0x88, 0x57, 0x2d, 0x2b, 0x99, 0xed, - 0x40, 0xc7, 0xec, 0x82, 0xd5, 0x0f, 0x5e, 0x9d, 0x91, 0x4e, 0x7c, 0x51, 0x02, 0xf0, 0xb7, 0x10, - 0xd0, 0xa3, 0x70, 0xb8, 0xb4, 0xb6, 0xba, 0x50, 0xd9, 0xd8, 0x2c, 0x6e, 0x6e, 0x6d, 0x84, 0x2f, - 0x4f, 0x8b, 0xad, 0x6c, 0xc7, 0xc2, 0x9a, 0xbe, 0xa3, 0xe3, 0x2a, 0x7a, 0x10, 0x26, 0xc3, 0xd0, - 0xa4, 0x54, 0x5e, 0xc8, 0x4a, 0xf9, 0xcc, 0x2b, 0x37, 0x66, 0x53, 0x2c, 0xd1, 0xc2, 0x55, 0x74, - 0x1c, 0x0e, 0xb5, 0xc2, 0x2d, 0xad, 0x2e, 0x66, 0x63, 0xf9, 0x91, 0x57, 0x6e, 0xcc, 0xa6, 0xbd, - 0x8c, 0x0c, 0xc9, 0x80, 0x82, 0x90, 0x9c, 0x5e, 0x3c, 0x0f, 0xaf, 0xdc, 0x98, 0x1d, 0x64, 0xba, - 0xcb, 0x27, 0xde, 0xfb, 0xc9, 0xe9, 0x81, 0x3b, 0x79, 0xc5, 0xfa, 0x4f, 0x87, 0x3a, 0x6e, 0x53, - 0xd7, 0xb0, 0x81, 0x1d, 0xdd, 0xb9, 0xad, 0x6d, 0xea, 0xbe, 0xb6, 0xbe, 0xe5, 0x7f, 0x95, 0x84, - 0xcc, 0x22, 0xeb, 0x85, 0x8c, 0x01, 0x46, 0x6f, 0x82, 0x41, 0x8b, 0x4e, 0x19, 0xdc, 0x59, 0x3a, - 0x2e, 0x26, 0xd9, 0xc4, 0xe2, 0x5d, 0xaf, 0x62, 0xd3, 0x8c, 0xc1, 0xef, 0x55, 0xb0, 0x4b, 0x5f, - 0xfe, 0x25, 0xa5, 0x4c, 0xbf, 0x1b, 0x37, 0x2c, 0x2b, 0xe1, 0x7b, 0x24, 0x51, 0x52, 0x32, 0xbb, - 0x9d, 0xb1, 0x49, 0x6a, 0xd8, 0x5d, 0xad, 0x5f, 0x90, 0xe0, 0x10, 0x85, 0xf2, 0xe7, 0x5b, 0x0a, - 0x29, 0xf2, 0xf7, 0x13, 0x9d, 0xb8, 0x5f, 0x56, 0x1d, 0xff, 0xc6, 0x05, 0xbb, 0x39, 0x75, 0x3f, - 0x9f, 0xef, 0x8e, 0x05, 0x3a, 0x8f, 0x92, 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa6, 0x83, 0x16, 0x43, - 0x17, 0xeb, 0x12, 0x07, 0xdb, 0x1a, 0x0f, 0x5e, 0xb3, 0x7b, 0x06, 0x86, 0xfd, 0xb8, 0xe1, 0xf0, - 0x7f, 0x9e, 0xd2, 0xff, 0x14, 0x11, 0x44, 0x46, 0xef, 0x91, 0xe0, 0x90, 0x3f, 0x69, 0x07, 0xc9, - 0xb2, 0x7f, 0x32, 0xf3, 0xc8, 0x01, 0xd6, 0x36, 0x51, 0xe5, 0xb4, 0xa5, 0x2b, 0x2b, 0x93, 0xcd, - 0x56, 0x54, 0xb2, 0xaa, 0x1a, 0x09, 0x46, 0x51, 0x27, 0x27, 0xbe, 0xa3, 0xd8, 0x7f, 0x18, 0x0e, - 0x13, 0x60, 0xff, 0xf8, 0xc2, 0x32, 0x6d, 0x17, 0x57, 0xe9, 0xce, 0x5a, 0x4a, 0xf1, 0xca, 0xf2, - 0x2a, 0xa0, 0xd6, 0xc1, 0x8d, 0x5e, 0x26, 0xf4, 0x9f, 0x7b, 0xa0, 0x49, 0x48, 0x06, 0x2f, 0xd3, - 0xb1, 0x42, 0x21, 0xf5, 0x5e, 0x3e, 0x4b, 0xde, 0x49, 0x4f, 0xff, 0x56, 0x0c, 0x4e, 0x04, 0x4f, - 0x71, 0xde, 0xd6, 0xc4, 0xf6, 0xbe, 0xe7, 0x98, 0x96, 0x5a, 0xd3, 0x8d, 0xe0, 0xa3, 0x82, 0x23, - 0xc1, 0x29, 0x9d, 0xc2, 0x0a, 0x15, 0xc9, 0xef, 0x95, 0x60, 0x78, 0x5d, 0xad, 0x61, 0x05, 0xbf, - 0xad, 0x89, 0x1d, 0xb7, 0xcd, 0xc5, 0xed, 0x29, 0x18, 0x34, 0x77, 0x76, 0xc4, 0x41, 0x73, 0x42, - 0xe1, 0x25, 0x22, 0x6e, 0x5d, 0x6f, 0xe8, 0xec, 0x36, 0x56, 0x42, 0x61, 0x05, 0x34, 0x03, 0xc3, - 0x9a, 0xd9, 0x34, 0xb8, 0xb7, 0xe5, 0x12, 0xe2, 0x5b, 0x25, 0x4d, 0x83, 0x79, 0x1b, 0xd1, 0x9f, - 0x8d, 0xaf, 0x62, 0xdb, 0x61, 0x5f, 0x67, 0x4c, 0x29, 0xa2, 0x28, 0x5f, 0x80, 0x0c, 0xe3, 0x84, - 0xcf, 0xb9, 0x47, 0x20, 0x45, 0xaf, 0x3a, 0xf9, 0xfc, 0x0c, 0x91, 0xf2, 0x65, 0x76, 0x01, 0x9c, - 0xd1, 0x67, 0x2c, 0xb1, 0x42, 0xe9, 0xcd, 0x1d, 0x15, 0x7c, 0x5f, 0xd7, 0x58, 0xc1, 0xd4, 0xe7, - 0x29, 0xf7, 0xf7, 0x93, 0x70, 0x88, 0x1f, 0xaf, 0xa9, 0x96, 0x7e, 0x6a, 0xd7, 0x75, 0xc5, 0x2b, - 0x04, 0xe0, 0x29, 0xae, 0x6a, 0xe9, 0xf2, 0x3e, 0x24, 0x2e, 0xb9, 0xae, 0x85, 0x4e, 0x40, 0xd2, - 0x6e, 0xd6, 0xb1, 0xd8, 0xd0, 0xf1, 0xf6, 0xd8, 0x55, 0x4b, 0x9f, 0x23, 0x00, 0x4a, 0xb3, 0x8e, - 0x15, 0x06, 0x82, 0xca, 0x30, 0xb3, 0xd3, 0xac, 0xd7, 0xf7, 0x2b, 0x55, 0x4c, 0xff, 0xd3, 0x94, - 0xf7, 0xbf, 0x1a, 0xf0, 0x75, 0x4b, 0x15, 0x5f, 0x7c, 0x24, 0x3a, 0x39, 0x46, 0xc1, 0x16, 0x28, - 0x94, 0xf8, 0x3f, 0x0d, 0x65, 0x01, 0x23, 0x7f, 0x2b, 0x06, 0x29, 0x41, 0x9a, 0x5e, 0xce, 0xc6, - 0x75, 0xac, 0xb9, 0xa6, 0x38, 0x01, 0xf1, 0xca, 0x08, 0x41, 0xbc, 0xc6, 0xc7, 0x2d, 0x7d, 0x69, - 0x40, 0x21, 0x05, 0x52, 0xe7, 0x5d, 0x91, 0x27, 0x75, 0x56, 0x93, 0x0c, 0x65, 0xc2, 0x32, 0xc5, - 0x6a, 0xec, 0xd2, 0x80, 0x42, 0x4b, 0x28, 0x07, 0x83, 0xc4, 0x55, 0x5c, 0x36, 0x50, 0xa4, 0x9e, - 0x97, 0xd1, 0x14, 0x24, 0x2d, 0xd5, 0xd5, 0xd8, 0x4d, 0x37, 0xd2, 0xc0, 0x8a, 0xe8, 0x29, 0x18, - 0x64, 0x0f, 0x9a, 0xa3, 0xff, 0xc6, 0x85, 0x28, 0x83, 0x7d, 0x39, 0x8e, 0xf0, 0xbd, 0xae, 0xba, - 0x2e, 0xb6, 0x0d, 0x42, 0x90, 0x81, 0x23, 0x04, 0x89, 0x6d, 0xb3, 0xba, 0xcf, 0xff, 0xb5, 0x0c, - 0xfd, 0xcd, 0xff, 0x97, 0x05, 0x35, 0x85, 0x0a, 0x6d, 0x64, 0xff, 0x51, 0x2b, 0x23, 0x2a, 0x4b, - 0x04, 0xa8, 0x0c, 0x13, 0x6a, 0xb5, 0xaa, 0xb3, 0xff, 0xf2, 0x52, 0xd9, 0xd6, 0x69, 0xc8, 0x70, - 0xe8, 0xff, 0x4b, 0xeb, 0x34, 0x16, 0xc8, 0x47, 0x28, 0x71, 0xf8, 0x52, 0x1a, 0x86, 0x2c, 0xc6, - 0x94, 0x7c, 0x1e, 0xc6, 0x5b, 0x38, 0x25, 0xfc, 0xed, 0xe9, 0x46, 0x55, 0xbc, 0x1b, 0x20, 0xbf, - 0x49, 0x1d, 0xfd, 0xd6, 0x23, 0x3b, 0x5b, 0xa2, 0xbf, 0x4b, 0xef, 0xea, 0xfc, 0xb0, 0x64, 0x34, - 0xf0, 0xb0, 0x44, 0xb5, 0xf4, 0x52, 0x9a, 0xd2, 0xe7, 0xcf, 0x49, 0x8a, 0xad, 0xcf, 0x49, 0x6a, - 0xd8, 0x10, 0x33, 0x31, 0x69, 0x52, 0x2d, 0xdd, 0xa1, 0xe6, 0xe8, 0x7f, 0x7b, 0xd2, 0x39, 0x1f, - 0xf8, 0x4d, 0x5f, 0x97, 0x24, 0x16, 0x8b, 0xeb, 0x4b, 0x9e, 0x1d, 0x7f, 0x39, 0x06, 0xc7, 0x02, - 0x76, 0x1c, 0x00, 0x6e, 0x35, 0xe7, 0x7c, 0x7b, 0x8b, 0xef, 0xe3, 0x59, 0xef, 0x65, 0x48, 0x10, - 0x78, 0xd4, 0xe3, 0x3f, 0x4d, 0xe4, 0x3e, 0xf7, 0xf5, 0xdf, 0x93, 0xc3, 0xa7, 0x50, 0xa1, 0x51, - 0xa1, 0x44, 0x4a, 0xef, 0xe9, 0x5f, 0x7f, 0x59, 0xff, 0xb3, 0x9b, 0xce, 0x9d, 0x53, 0x63, 0x54, - 0x87, 0xdf, 0x3e, 0xd3, 0xf1, 0xed, 0x27, 0x8b, 0xa3, 0xdd, 0x13, 0xaa, 0x03, 0x04, 0xe9, 0x0e, - 0xc9, 0x57, 0xd7, 0x11, 0xec, 0x33, 0x35, 0xbb, 0x0e, 0x53, 0xcf, 0x92, 0xbe, 0xfd, 0xe5, 0xb1, - 0x88, 0xf6, 0x53, 0xde, 0xe9, 0x9c, 0xc4, 0xff, 0x5d, 0x1d, 0x4b, 0x9f, 0x2f, 0x02, 0xf8, 0xfc, - 0xf1, 0x85, 0xe1, 0x83, 0x73, 0x1d, 0x67, 0x91, 0xb9, 0xc0, 0x0c, 0xa2, 0x04, 0x30, 0xe5, 0x5f, - 0x97, 0xe0, 0x70, 0x4b, 0xd7, 0x3c, 0xbc, 0x2f, 0xb6, 0x79, 0x43, 0x70, 0x5b, 0xa9, 0xce, 0x62, - 0x1b, 0x66, 0x1f, 0xea, 0xc9, 0x2c, 0xe3, 0x22, 0xc4, 0xed, 0x5b, 0xe0, 0x50, 0x98, 0x59, 0xa1, - 0xa6, 0x07, 0x60, 0x34, 0xbc, 0xeb, 0xcb, 0xd5, 0x35, 0x12, 0xda, 0xf7, 0x95, 0x2b, 0x51, 0x3d, - 0x7b, 0xb2, 0x96, 0x21, 0xed, 0x81, 0xf2, 0x74, 0xb8, 0x6f, 0x51, 0x7d, 0x4c, 0xf9, 0x03, 0x12, - 0xcc, 0x86, 0x7b, 0x08, 0x64, 0x47, 0x07, 0x63, 0xf6, 0x8e, 0x0d, 0xf1, 0x77, 0x25, 0xb8, 0xb7, - 0x0b, 0x4f, 0x5c, 0x01, 0x2f, 0xc1, 0x64, 0x60, 0x07, 0x40, 0x84, 0x70, 0x31, 0xec, 0x27, 0x7a, - 0xe7, 0xa5, 0xde, 0xaa, 0xf7, 0x28, 0x51, 0xca, 0x67, 0xbf, 0x3d, 0x33, 0xd1, 0xda, 0xe6, 0x28, - 0x13, 0xad, 0x4b, 0xf7, 0x3b, 0x68, 0x1f, 0x1f, 0x91, 0xe0, 0xe1, 0xb0, 0xa8, 0x6d, 0x12, 0xdc, - 0x9f, 0xd4, 0x38, 0xfc, 0x7b, 0x09, 0x4e, 0xf4, 0xc3, 0x1c, 0x1f, 0x90, 0x6d, 0x98, 0xf0, 0x53, - 0xef, 0xe8, 0x78, 0x1c, 0x28, 0xa1, 0x67, 0x56, 0x8a, 0x3c, 0x6a, 0x77, 0x41, 0xf1, 0x16, 0x77, - 0xac, 0xe0, 0x90, 0x7b, 0x4a, 0x0e, 0xef, 0xe2, 0x0a, 0x25, 0x87, 0xf6, 0x71, 0xdb, 0x8c, 0x45, - 0xac, 0xcd, 0x58, 0xf8, 0xb9, 0xba, 0x7c, 0x95, 0xc7, 0xad, 0x36, 0x7b, 0x6f, 0x3f, 0x0b, 0x13, - 0x6d, 0x4c, 0x99, 0x7b, 0xf5, 0x01, 0x2c, 0x59, 0x41, 0xad, 0xc6, 0x2a, 0xef, 0xc3, 0x0c, 0xed, - 0xb7, 0x8d, 0xa2, 0xef, 0xb6, 0xc8, 0x0d, 0x1e, 0x5b, 0xda, 0x76, 0xcd, 0x65, 0x5f, 0x82, 0x41, - 0x36, 0xce, 0x5c, 0xdc, 0xdb, 0x30, 0x14, 0x4e, 0x40, 0xfe, 0xa8, 0x88, 0x65, 0x0b, 0x82, 0xed, - 0xf6, 0x3e, 0xd4, 0x8f, 0xac, 0x77, 0xc8, 0x87, 0x02, 0xca, 0xf8, 0xa6, 0x88, 0x6a, 0xed, 0xb9, - 0xe3, 0xea, 0xd0, 0xee, 0x58, 0x54, 0x63, 0xba, 0xb9, 0xbb, 0xe1, 0xeb, 0x53, 0x22, 0x7c, 0x79, - 0x32, 0xf5, 0x08, 0x5f, 0x3f, 0x19, 0xd5, 0x7b, 0x81, 0xac, 0x07, 0x9b, 0x7f, 0x19, 0x03, 0xd9, - 0x0f, 0x24, 0x38, 0x42, 0x65, 0x0b, 0xee, 0x4c, 0x1c, 0x54, 0xe5, 0x8f, 0x02, 0x72, 0x6c, 0xad, - 0xd2, 0xd6, 0xbb, 0xb3, 0x8e, 0xad, 0x5d, 0x09, 0xcd, 0x2f, 0x8f, 0x02, 0xaa, 0x86, 0xf6, 0x9f, - 0x28, 0x34, 0xbb, 0xf5, 0x96, 0xad, 0x06, 0xb6, 0x37, 0xda, 0x0c, 0x67, 0xe2, 0x0e, 0x0c, 0xe7, - 0x37, 0x24, 0xc8, 0xb7, 0x13, 0x99, 0x0f, 0x9f, 0x0e, 0x53, 0xa1, 0xc3, 0x81, 0xe8, 0x08, 0x3e, - 0xda, 0xcf, 0xde, 0x4e, 0xc4, 0x8d, 0x0e, 0xd9, 0xf8, 0x6e, 0xe7, 0x01, 0x33, 0x61, 0x0b, 0x6d, - 0xcd, 0xac, 0x7f, 0x62, 0xee, 0xf3, 0x85, 0x96, 0xb8, 0xfa, 0x97, 0x22, 0xf7, 0xbe, 0x0e, 0xd3, - 0x1d, 0xb8, 0xbe, 0xdb, 0xf3, 0xde, 0x6e, 0xc7, 0xc1, 0xbc, 0xd3, 0xe9, 0xfb, 0x93, 0xdc, 0x13, - 0xc2, 0x17, 0xa8, 0x03, 0x6b, 0xb1, 0x76, 0xaf, 0xab, 0xe4, 0xb7, 0xc2, 0xd1, 0xb6, 0x58, 0x9c, - 0xb7, 0x02, 0x24, 0x76, 0x75, 0xc7, 0xe5, 0x6c, 0x3d, 0xd8, 0x89, 0xad, 0x08, 0x36, 0xc5, 0x91, - 0x11, 0x64, 0x29, 0xe9, 0x75, 0xd3, 0xac, 0x73, 0x36, 0xe4, 0xcb, 0x30, 0x1e, 0xa8, 0xe3, 0x9d, - 0x9c, 0x85, 0x84, 0x65, 0xf2, 0x2f, 0x03, 0x0c, 0x9f, 0x3e, 0xd6, 0x71, 0x27, 0xdf, 0x34, 0xeb, - 0x5c, 0x6c, 0x0a, 0x2f, 0x4f, 0x02, 0x62, 0xc4, 0xe8, 0xa6, 0xbe, 0xe8, 0x62, 0x03, 0x26, 0x42, - 0xb5, 0xbc, 0x93, 0x37, 0x74, 0x60, 0x70, 0xfa, 0x7b, 0x87, 0x20, 0x49, 0xa9, 0xa2, 0x0f, 0x4b, - 0xa1, 0xef, 0xf3, 0xcc, 0x75, 0x22, 0xd3, 0x7e, 0x4d, 0x9c, 0x3f, 0xd5, 0x37, 0x3c, 0xcf, 0xd9, - 0x4e, 0xbc, 0xeb, 0xdf, 0xbc, 0xfe, 0xc1, 0xd8, 0xfd, 0x48, 0x3e, 0xd5, 0x61, 0x35, 0x1e, 0xf0, - 0x97, 0x4f, 0x87, 0x1e, 0xa6, 0x9f, 0xec, 0xaf, 0x2b, 0xc1, 0xd9, 0x5c, 0xbf, 0xe0, 0x9c, 0xb1, - 0xf3, 0x94, 0xb1, 0x33, 0xe8, 0x89, 0xde, 0x8c, 0x9d, 0x7a, 0x7b, 0xd8, 0x69, 0xde, 0x81, 0xfe, - 0xad, 0x04, 0x93, 0xed, 0x96, 0x74, 0xe8, 0xe9, 0xfe, 0xb8, 0x68, 0x4d, 0x29, 0xf2, 0xe7, 0x6e, - 0x03, 0x93, 0x8b, 0xb2, 0x48, 0x45, 0x29, 0xa2, 0x0b, 0xb7, 0x21, 0xca, 0xa9, 0xe0, 0x86, 0xff, - 0xff, 0x92, 0xe0, 0x9e, 0xae, 0x2b, 0x24, 0x54, 0xec, 0x8f, 0xcb, 0x2e, 0xb9, 0x53, 0xbe, 0xf4, - 0x46, 0x48, 0x70, 0x89, 0x9f, 0xa5, 0x12, 0x5f, 0x46, 0x4b, 0xb7, 0x23, 0x71, 0xdb, 0x53, 0x15, - 0xf4, 0x95, 0xf0, 0xc5, 0xc1, 0xee, 0xe6, 0xd4, 0xb2, 0xf0, 0xe8, 0xe1, 0x18, 0xad, 0x49, 0xad, - 0xfc, 0x3c, 0x15, 0x41, 0x41, 0xeb, 0x6f, 0x70, 0xd0, 0x4e, 0xbd, 0x3d, 0x1c, 0xf8, 0xdf, 0x81, - 0xfe, 0x87, 0xd4, 0xfe, 0x32, 0xe0, 0x53, 0x5d, 0x59, 0xec, 0xbc, 0xa8, 0xca, 0x3f, 0x7d, 0x70, - 0x44, 0x2e, 0x64, 0x83, 0x0a, 0x59, 0x43, 0xf8, 0x4e, 0x0b, 0xd9, 0x76, 0x10, 0xd1, 0xd7, 0x24, - 0x98, 0x6c, 0xb7, 0x26, 0xe9, 0xe1, 0x96, 0x5d, 0x16, 0x59, 0x3d, 0xdc, 0xb2, 0xdb, 0x02, 0x48, - 0x7e, 0x13, 0x15, 0xfe, 0x2c, 0x7a, 0xb2, 0x93, 0xf0, 0x5d, 0x47, 0x91, 0xf8, 0x62, 0xd7, 0x24, - 0xbf, 0x87, 0x2f, 0xf6, 0xb3, 0x8e, 0xe9, 0xe1, 0x8b, 0x7d, 0xad, 0x31, 0x7a, 0xfb, 0xa2, 0x27, - 0x59, 0x9f, 0xc3, 0xe8, 0xa0, 0x2f, 0x4b, 0x30, 0x12, 0xca, 0x88, 0xd1, 0xe3, 0x5d, 0x19, 0x6d, - 0xb7, 0x60, 0xc8, 0x9f, 0x3e, 0x08, 0x0a, 0x97, 0x65, 0x89, 0xca, 0x32, 0x8f, 0x8a, 0xb7, 0x23, - 0x4b, 0xf8, 0xf0, 0xf4, 0x1b, 0x12, 0x4c, 0xb4, 0xc9, 0x32, 0x7b, 0x78, 0x61, 0xe7, 0xa4, 0x39, - 0xff, 0xf4, 0xc1, 0x11, 0xb9, 0x54, 0x17, 0xa9, 0x54, 0x3f, 0x83, 0xde, 0x72, 0x3b, 0x52, 0x05, - 0xe6, 0xe7, 0x9b, 0xfe, 0x7d, 0xab, 0x40, 0x3f, 0xe8, 0xec, 0x01, 0x19, 0x13, 0x02, 0x3d, 0x75, - 0x60, 0x3c, 0x2e, 0xcf, 0x73, 0x54, 0x9e, 0x67, 0xd1, 0xda, 0x1b, 0x93, 0xa7, 0x75, 0x5a, 0xff, - 0xed, 0xd6, 0x07, 0x7c, 0xdd, 0xad, 0xa8, 0x6d, 0xb2, 0x9a, 0x7f, 0xe2, 0x40, 0x38, 0x5c, 0xa8, - 0xa7, 0xa9, 0x50, 0xa7, 0xd1, 0x63, 0x9d, 0x84, 0x0a, 0x5c, 0xaa, 0xd3, 0x8d, 0x1d, 0xf3, 0xd4, - 0xdb, 0x59, 0x0a, 0xfc, 0x0e, 0xf4, 0x4e, 0x71, 0xab, 0xe9, 0x78, 0xd7, 0x7e, 0x03, 0x79, 0x6c, - 0xfe, 0xe1, 0x3e, 0x20, 0x39, 0x5f, 0xf7, 0x53, 0xbe, 0xa6, 0xd1, 0xb1, 0x4e, 0x7c, 0x91, 0x5c, - 0x16, 0xbd, 0x4f, 0xf2, 0xee, 0x40, 0x9e, 0xe8, 0x4e, 0x3b, 0x98, 0xec, 0xe6, 0x1f, 0xe9, 0x0b, - 0x96, 0x73, 0xf2, 0x20, 0xe5, 0x64, 0x16, 0x4d, 0x77, 0xe4, 0x84, 0xa5, 0xbe, 0x77, 0xf0, 0x2a, - 0xc1, 0xf7, 0xa6, 0x60, 0xa6, 0x43, 0x67, 0xee, 0xf5, 0x1e, 0xc7, 0x5b, 0x5d, 0x1e, 0xb0, 0xf6, - 0x7c, 0xa0, 0x7a, 0xa7, 0x3f, 0x8b, 0xda, 0xe7, 0x59, 0xd8, 0x57, 0x13, 0x80, 0x56, 0x9c, 0xda, - 0xbc, 0x8d, 0xd9, 0x7f, 0x67, 0xe4, 0x0e, 0x1e, 0x79, 0xb6, 0x25, 0xbd, 0xa1, 0x67, 0x5b, 0x2b, - 0xa1, 0x87, 0x50, 0xb1, 0x83, 0x3d, 0xb1, 0xec, 0xfb, 0x35, 0x54, 0xfc, 0x6e, 0xbf, 0x86, 0x6a, - 0x7f, 0x8b, 0x3a, 0x71, 0xe7, 0x9e, 0x56, 0x24, 0x6f, 0xeb, 0x69, 0xc5, 0x45, 0x18, 0xe4, 0xaf, - 0x1a, 0x07, 0xbb, 0xbc, 0x6a, 0xcc, 0x75, 0x7c, 0xba, 0xc8, 0xb1, 0xd1, 0x19, 0xf1, 0xa5, 0xd0, - 0xa1, 0xfe, 0xee, 0xbd, 0xf2, 0x4f, 0x89, 0xfa, 0x1b, 0x07, 0xc7, 0x20, 0xdf, 0x6a, 0x49, 0x9e, - 0x2b, 0xbf, 0x2f, 0x0e, 0xd9, 0x15, 0xa7, 0x56, 0xae, 0xea, 0xee, 0x5d, 0x32, 0xb3, 0x0b, 0x9d, - 0x9f, 0xab, 0xa0, 0x5b, 0x37, 0x67, 0x46, 0x99, 0x4e, 0xbb, 0x68, 0x72, 0x17, 0xc6, 0x22, 0x0f, - 0x82, 0xb9, 0x51, 0x5d, 0x38, 0xe0, 0x93, 0xe4, 0x08, 0x15, 0x99, 0x3e, 0x31, 0x08, 0x58, 0x35, - 0x72, 0xda, 0x9b, 0x30, 0xb3, 0xa5, 0xf9, 0xbb, 0xf4, 0x98, 0xcf, 0x1f, 0xa9, 0x3c, 0xe4, 0xa2, - 0x43, 0xe1, 0x8d, 0xd3, 0x6b, 0x12, 0x0c, 0xaf, 0x38, 0x22, 0xed, 0xc3, 0x3f, 0xa5, 0xef, 0x89, - 0x9e, 0xf2, 0xbe, 0xa6, 0x1d, 0xef, 0xcf, 0x5a, 0x83, 0x5f, 0xd8, 0x1e, 0x90, 0x0f, 0xc1, 0x44, - 0x40, 0x46, 0x4f, 0xf6, 0xaf, 0xc7, 0x68, 0x30, 0x2c, 0xe1, 0x9a, 0x6e, 0x78, 0xd9, 0x22, 0xfe, - 0xab, 0xfa, 0x7a, 0xc2, 0xd7, 0x71, 0xe2, 0x76, 0x74, 0xbc, 0x47, 0xc3, 0x41, 0x44, 0x97, 0xde, - 0xe6, 0xd6, 0x4a, 0xeb, 0x6b, 0x1e, 0xe9, 0x00, 0xdf, 0xb7, 0x89, 0xbc, 0xd9, 0x91, 0x5f, 0x97, - 0x60, 0x64, 0xc5, 0xa9, 0x6d, 0x19, 0xd5, 0xff, 0xab, 0xed, 0x76, 0x07, 0x0e, 0x85, 0xa4, 0xbc, - 0x4b, 0xea, 0x3c, 0xfd, 0x91, 0x04, 0xc4, 0x57, 0x9c, 0x1a, 0x7a, 0x1b, 0x8c, 0x45, 0x33, 0x83, - 0x8e, 0xb9, 0x5e, 0x6b, 0xec, 0xef, 0xbc, 0x1e, 0xeb, 0x3c, 0x4f, 0xa0, 0x3d, 0x18, 0x09, 0xcf, - 0x11, 0xc7, 0xbb, 0x10, 0x09, 0x41, 0xe6, 0x1f, 0xeb, 0x17, 0xd2, 0xeb, 0xec, 0xe7, 0x20, 0xe5, - 0x05, 0xba, 0xfb, 0xba, 0x60, 0x0b, 0xa0, 0xce, 0xd9, 0x6b, 0x9b, 0x70, 0x42, 0xb4, 0x17, 0x0d, - 0x25, 0xdd, 0xb4, 0x17, 0x81, 0xed, 0xaa, 0xbd, 0x4e, 0x6e, 0xb5, 0x0d, 0x10, 0xf0, 0x81, 0x07, - 0xba, 0x50, 0xf0, 0xc1, 0xf2, 0x27, 0xfb, 0x02, 0xf3, 0x0e, 0x95, 0xee, 0x5c, 0xb2, 0xfd, 0x7f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x55, 0xce, 0xb1, 0xf3, 0x96, 0x00, 0x00, + // 9960 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x74, 0x1c, 0xd7, + 0x75, 0x18, 0x66, 0x3f, 0x80, 0xdd, 0xbb, 0x0b, 0x60, 0xf1, 0x00, 0x42, 0xcb, 0x25, 0x09, 0x40, + 0xa3, 0x2f, 0x8a, 0x12, 0x41, 0x89, 0x22, 0x29, 0x69, 0x69, 0x89, 0xde, 0x05, 0x96, 0x20, 0x44, + 0x7c, 0x69, 0x00, 0x50, 0xb2, 0x9c, 0x74, 0x3b, 0xd8, 0x7d, 0x58, 0x8c, 0xb0, 0x3b, 0x33, 0x9e, + 0x99, 0x25, 0x09, 0xb9, 0xee, 0x91, 0xed, 0xc4, 0xb1, 0x95, 0xd3, 0xd6, 0xae, 0x7d, 0x12, 0x5b, + 0x36, 0x5d, 0x39, 0x76, 0xeb, 0xd4, 0x49, 0x5b, 0x3b, 0x76, 0xdd, 0xa6, 0xed, 0x39, 0xb5, 0xdb, + 0x93, 0xf8, 0xe3, 0x47, 0x6b, 0xb7, 0x3d, 0x6d, 0xea, 0x93, 0xd2, 0xa9, 0xec, 0xd3, 0x28, 0xae, + 0xdb, 0xb8, 0x8c, 0xd2, 0x8f, 0xe3, 0xd3, 0xd3, 0x9e, 0xf7, 0x35, 0x5f, 0xfb, 0x09, 0x8a, 0xb4, + 0x9c, 0xc4, 0xbf, 0xb0, 0xef, 0xbe, 0x7b, 0xef, 0xbb, 0xef, 0xbe, 0xfb, 0xee, 0xbd, 0xef, 0x6b, + 0x00, 0x5f, 0x38, 0x0b, 0x33, 0x35, 0xc3, 0xa8, 0xd5, 0xf1, 0x09, 0xd3, 0x32, 0x1c, 0x63, 0xab, + 0xb9, 0x7d, 0xa2, 0x8a, 0xed, 0x8a, 0xa5, 0x99, 0x8e, 0x61, 0xcd, 0x52, 0x18, 0x1a, 0x65, 0x18, + 0xb3, 0x02, 0x43, 0x5e, 0x86, 0xb1, 0xf3, 0x5a, 0x1d, 0xcf, 0xbb, 0x88, 0xeb, 0xd8, 0x41, 0x8f, + 0x41, 0x6c, 0x5b, 0xab, 0xe3, 0xac, 0x34, 0x13, 0x3d, 0x9a, 0x3a, 0x79, 0xf7, 0x6c, 0x88, 0x68, + 0x36, 0x48, 0xb1, 0x46, 0xc0, 0x0a, 0xa5, 0x90, 0xbf, 0x1f, 0x83, 0xf1, 0x36, 0xb5, 0x08, 0x41, + 0x4c, 0x57, 0x1b, 0x84, 0xa3, 0x74, 0x34, 0xa9, 0xd0, 0xdf, 0x28, 0x0b, 0x43, 0xa6, 0x5a, 0xd9, + 0x55, 0x6b, 0x38, 0x1b, 0xa1, 0x60, 0x51, 0x44, 0x53, 0x00, 0x55, 0x6c, 0x62, 0xbd, 0x8a, 0xf5, + 0xca, 0x5e, 0x36, 0x3a, 0x13, 0x3d, 0x9a, 0x54, 0x7c, 0x10, 0xf4, 0x00, 0x8c, 0x99, 0xcd, 0xad, + 0xba, 0x56, 0x29, 0xfb, 0xd0, 0x60, 0x26, 0x7a, 0x34, 0xae, 0x64, 0x58, 0xc5, 0xbc, 0x87, 0x7c, + 0x1f, 0x8c, 0x5e, 0xc1, 0xea, 0xae, 0x1f, 0x35, 0x45, 0x51, 0x47, 0x08, 0xd8, 0x87, 0x38, 0x07, + 0xe9, 0x06, 0xb6, 0x6d, 0xb5, 0x86, 0xcb, 0xce, 0x9e, 0x89, 0xb3, 0x31, 0xda, 0xfb, 0x99, 0x96, + 0xde, 0x87, 0x7b, 0x9e, 0xe2, 0x54, 0x1b, 0x7b, 0x26, 0x46, 0x05, 0x48, 0x62, 0xbd, 0xd9, 0x60, + 0x1c, 0xe2, 0x1d, 0xf4, 0x57, 0xd2, 0x9b, 0x8d, 0x30, 0x97, 0x04, 0x21, 0xe3, 0x2c, 0x86, 0x6c, + 0x6c, 0x5d, 0xd6, 0x2a, 0x38, 0x3b, 0x48, 0x19, 0xdc, 0xd7, 0xc2, 0x60, 0x9d, 0xd5, 0x87, 0x79, + 0x08, 0x3a, 0x34, 0x07, 0x49, 0x7c, 0xd5, 0xc1, 0xba, 0xad, 0x19, 0x7a, 0x76, 0x88, 0x32, 0xb9, + 0xa7, 0xcd, 0x28, 0xe2, 0x7a, 0x35, 0xcc, 0xc2, 0xa3, 0x43, 0x67, 0x60, 0xc8, 0x30, 0x1d, 0xcd, + 0xd0, 0xed, 0x6c, 0x62, 0x46, 0x3a, 0x9a, 0x3a, 0x79, 0xb8, 0xad, 0x21, 0xac, 0x32, 0x1c, 0x45, + 0x20, 0xa3, 0x45, 0xc8, 0xd8, 0x46, 0xd3, 0xaa, 0xe0, 0x72, 0xc5, 0xa8, 0xe2, 0xb2, 0xa6, 0x6f, + 0x1b, 0xd9, 0x24, 0x65, 0x30, 0xdd, 0xda, 0x11, 0x8a, 0x38, 0x67, 0x54, 0xf1, 0xa2, 0xbe, 0x6d, + 0x28, 0x23, 0x76, 0xa0, 0x8c, 0x26, 0x61, 0xd0, 0xde, 0xd3, 0x1d, 0xf5, 0x6a, 0x36, 0x4d, 0x2d, + 0x84, 0x97, 0xe4, 0xdf, 0x1e, 0x84, 0xd1, 0x7e, 0x4c, 0xec, 0x2c, 0xc4, 0xb7, 0x49, 0x2f, 0xb3, + 0x91, 0xfd, 0xe8, 0x80, 0xd1, 0x04, 0x95, 0x38, 0x78, 0x93, 0x4a, 0x2c, 0x40, 0x4a, 0xc7, 0xb6, + 0x83, 0xab, 0xcc, 0x22, 0xa2, 0x7d, 0xda, 0x14, 0x30, 0xa2, 0x56, 0x93, 0x8a, 0xdd, 0x94, 0x49, + 0x3d, 0x0b, 0xa3, 0xae, 0x48, 0x65, 0x4b, 0xd5, 0x6b, 0xc2, 0x36, 0x4f, 0xf4, 0x92, 0x64, 0xb6, + 0x24, 0xe8, 0x14, 0x42, 0xa6, 0x8c, 0xe0, 0x40, 0x19, 0xcd, 0x03, 0x18, 0x3a, 0x36, 0xb6, 0xcb, + 0x55, 0x5c, 0xa9, 0x67, 0x13, 0x1d, 0xb4, 0xb4, 0x4a, 0x50, 0x5a, 0xb4, 0x64, 0x30, 0x68, 0xa5, + 0x8e, 0x1e, 0xf7, 0x4c, 0x6d, 0xa8, 0x83, 0xa5, 0x2c, 0xb3, 0x49, 0xd6, 0x62, 0x6d, 0x9b, 0x30, + 0x62, 0x61, 0x62, 0xf7, 0xb8, 0xca, 0x7b, 0x96, 0xa4, 0x42, 0xcc, 0xf6, 0xec, 0x99, 0xc2, 0xc9, + 0x58, 0xc7, 0x86, 0x2d, 0x7f, 0x11, 0xdd, 0x05, 0x2e, 0xa0, 0x4c, 0xcd, 0x0a, 0xa8, 0x17, 0x4a, + 0x0b, 0xe0, 0x8a, 0xda, 0xc0, 0xb9, 0x17, 0x60, 0x24, 0xa8, 0x1e, 0x34, 0x01, 0x71, 0xdb, 0x51, + 0x2d, 0x87, 0x5a, 0x61, 0x5c, 0x61, 0x05, 0x94, 0x81, 0x28, 0xd6, 0xab, 0xd4, 0xcb, 0xc5, 0x15, + 0xf2, 0x13, 0xbd, 0xd5, 0xeb, 0x70, 0x94, 0x76, 0xf8, 0xde, 0xd6, 0x11, 0x0d, 0x70, 0x0e, 0xf7, + 0x3b, 0xf7, 0x28, 0x0c, 0x07, 0x3a, 0xd0, 0x6f, 0xd3, 0xf2, 0x5f, 0x81, 0x03, 0x6d, 0x59, 0xa3, + 0x67, 0x61, 0xa2, 0xa9, 0x6b, 0xba, 0x83, 0x2d, 0xd3, 0xc2, 0xc4, 0x62, 0x59, 0x53, 0xd9, 0x3f, + 0x1c, 0xea, 0x60, 0x73, 0x9b, 0x7e, 0x6c, 0xc6, 0x45, 0x19, 0x6f, 0xb6, 0x02, 0x8f, 0x25, 0x13, + 0xaf, 0x0d, 0x65, 0x5e, 0x7c, 0xf1, 0xc5, 0x17, 0x23, 0xf2, 0x57, 0x07, 0x61, 0xa2, 0xdd, 0x9c, + 0x69, 0x3b, 0x7d, 0x27, 0x61, 0x50, 0x6f, 0x36, 0xb6, 0xb0, 0x45, 0x95, 0x14, 0x57, 0x78, 0x09, + 0x15, 0x20, 0x5e, 0x57, 0xb7, 0x70, 0x3d, 0x1b, 0x9b, 0x91, 0x8e, 0x8e, 0x9c, 0x7c, 0xa0, 0xaf, + 0x59, 0x39, 0xbb, 0x44, 0x48, 0x14, 0x46, 0x89, 0x9e, 0x84, 0x18, 0x77, 0xd1, 0x84, 0xc3, 0xb1, + 0xfe, 0x38, 0x90, 0xb9, 0xa4, 0x50, 0x3a, 0x74, 0x08, 0x92, 0xe4, 0x2f, 0xb3, 0x8d, 0x41, 0x2a, + 0x73, 0x82, 0x00, 0x88, 0x5d, 0xa0, 0x1c, 0x24, 0xe8, 0x34, 0xa9, 0x62, 0x11, 0xda, 0xdc, 0x32, + 0x31, 0xac, 0x2a, 0xde, 0x56, 0x9b, 0x75, 0xa7, 0x7c, 0x59, 0xad, 0x37, 0x31, 0x35, 0xf8, 0xa4, + 0x92, 0xe6, 0xc0, 0x4b, 0x04, 0x86, 0xa6, 0x21, 0xc5, 0x66, 0x95, 0xa6, 0x57, 0xf1, 0x55, 0xea, + 0x3d, 0xe3, 0x0a, 0x9b, 0x68, 0x8b, 0x04, 0x42, 0x9a, 0x7f, 0xde, 0x36, 0x74, 0x61, 0x9a, 0xb4, + 0x09, 0x02, 0xa0, 0xcd, 0x3f, 0x1a, 0x76, 0xdc, 0x47, 0xda, 0x77, 0xaf, 0x65, 0x2e, 0xdd, 0x07, + 0xa3, 0x14, 0xe3, 0x11, 0x3e, 0xf4, 0x6a, 0x3d, 0x3b, 0x36, 0x23, 0x1d, 0x4d, 0x28, 0x23, 0x0c, + 0xbc, 0xca, 0xa1, 0xf2, 0x97, 0x23, 0x10, 0xa3, 0x8e, 0x65, 0x14, 0x52, 0x1b, 0x6f, 0x5b, 0x2b, + 0x95, 0xe7, 0x57, 0x37, 0x8b, 0x4b, 0xa5, 0x8c, 0x84, 0x46, 0x00, 0x28, 0xe0, 0xfc, 0xd2, 0x6a, + 0x61, 0x23, 0x13, 0x71, 0xcb, 0x8b, 0x2b, 0x1b, 0x67, 0x4e, 0x65, 0xa2, 0x2e, 0xc1, 0x26, 0x03, + 0xc4, 0xfc, 0x08, 0x8f, 0x9c, 0xcc, 0xc4, 0x51, 0x06, 0xd2, 0x8c, 0xc1, 0xe2, 0xb3, 0xa5, 0xf9, + 0x33, 0xa7, 0x32, 0x83, 0x41, 0xc8, 0x23, 0x27, 0x33, 0x43, 0x68, 0x18, 0x92, 0x14, 0x52, 0x5c, + 0x5d, 0x5d, 0xca, 0x24, 0x5c, 0x9e, 0xeb, 0x1b, 0xca, 0xe2, 0xca, 0x42, 0x26, 0xe9, 0xf2, 0x5c, + 0x50, 0x56, 0x37, 0xd7, 0x32, 0xe0, 0x72, 0x58, 0x2e, 0xad, 0xaf, 0x17, 0x16, 0x4a, 0x99, 0x94, + 0x8b, 0x51, 0x7c, 0xdb, 0x46, 0x69, 0x3d, 0x93, 0x0e, 0x88, 0xf5, 0xc8, 0xc9, 0xcc, 0xb0, 0xdb, + 0x44, 0x69, 0x65, 0x73, 0x39, 0x33, 0x82, 0xc6, 0x60, 0x98, 0x35, 0x21, 0x84, 0x18, 0x0d, 0x81, + 0xce, 0x9c, 0xca, 0x64, 0x3c, 0x41, 0x18, 0x97, 0xb1, 0x00, 0xe0, 0xcc, 0xa9, 0x0c, 0x92, 0xe7, + 0x20, 0x4e, 0xcd, 0x10, 0x21, 0x18, 0x59, 0x2a, 0x14, 0x4b, 0x4b, 0xe5, 0xd5, 0xb5, 0x8d, 0xc5, + 0xd5, 0x95, 0xc2, 0x52, 0x46, 0xf2, 0x60, 0x4a, 0xe9, 0xe9, 0xcd, 0x45, 0xa5, 0x34, 0x9f, 0x89, + 0xf8, 0x61, 0x6b, 0xa5, 0xc2, 0x46, 0x69, 0x3e, 0x13, 0x95, 0x2b, 0x30, 0xd1, 0xce, 0xa1, 0xb6, + 0x9d, 0x42, 0x3e, 0x5b, 0x88, 0x74, 0xb0, 0x05, 0xca, 0x2b, 0x6c, 0x0b, 0xf2, 0xf7, 0x22, 0x30, + 0xde, 0x26, 0xa8, 0xb4, 0x6d, 0xe4, 0x1c, 0xc4, 0x99, 0x2d, 0xb3, 0x30, 0x7b, 0x7f, 0xdb, 0xe8, + 0x44, 0x2d, 0xbb, 0x25, 0xd4, 0x52, 0x3a, 0x7f, 0xaa, 0x11, 0xed, 0x90, 0x6a, 0x10, 0x16, 0x2d, + 0x06, 0xfb, 0xf3, 0x2d, 0xce, 0x9f, 0xc5, 0xc7, 0x33, 0xfd, 0xc4, 0x47, 0x0a, 0xdb, 0x5f, 0x10, + 0x88, 0xb7, 0x09, 0x02, 0x67, 0x61, 0xac, 0x85, 0x51, 0xdf, 0xce, 0xf8, 0xbd, 0x12, 0x64, 0x3b, + 0x29, 0xa7, 0x87, 0x4b, 0x8c, 0x04, 0x5c, 0xe2, 0xd9, 0xb0, 0x06, 0xef, 0xec, 0x3c, 0x08, 0x2d, + 0x63, 0xfd, 0x59, 0x09, 0x26, 0xdb, 0xa7, 0x94, 0x6d, 0x65, 0x78, 0x12, 0x06, 0x1b, 0xd8, 0xd9, + 0x31, 0x44, 0x5a, 0x75, 0x6f, 0x9b, 0x60, 0x4d, 0xaa, 0xc3, 0x83, 0xcd, 0xa9, 0xfc, 0xd1, 0x3e, + 0xda, 0x29, 0x2f, 0x64, 0xd2, 0xb4, 0x48, 0xfa, 0x81, 0x08, 0x1c, 0x68, 0xcb, 0xbc, 0xad, 0xa0, + 0x47, 0x00, 0x34, 0xdd, 0x6c, 0x3a, 0x2c, 0x75, 0x62, 0x9e, 0x38, 0x49, 0x21, 0xd4, 0x79, 0x11, + 0x2f, 0xdb, 0x74, 0xdc, 0xfa, 0x28, 0xad, 0x07, 0x06, 0xa2, 0x08, 0x8f, 0x79, 0x82, 0xc6, 0xa8, + 0xa0, 0x53, 0x1d, 0x7a, 0xda, 0x62, 0x98, 0x0f, 0x41, 0xa6, 0x52, 0xd7, 0xb0, 0xee, 0x94, 0x6d, + 0xc7, 0xc2, 0x6a, 0x43, 0xd3, 0x6b, 0x34, 0xd4, 0x24, 0xf2, 0xf1, 0x6d, 0xb5, 0x6e, 0x63, 0x65, + 0x94, 0x55, 0xaf, 0x8b, 0x5a, 0x42, 0x41, 0x0d, 0xc8, 0xf2, 0x51, 0x0c, 0x06, 0x28, 0x58, 0xb5, + 0x4b, 0x21, 0x7f, 0x28, 0x09, 0x29, 0x5f, 0x02, 0x8e, 0xee, 0x84, 0xf4, 0xf3, 0xea, 0x65, 0xb5, + 0x2c, 0x16, 0x55, 0x4c, 0x13, 0x29, 0x02, 0x5b, 0xe3, 0x0b, 0xab, 0x87, 0x60, 0x82, 0xa2, 0x18, + 0x4d, 0x07, 0x5b, 0xe5, 0x4a, 0x5d, 0xb5, 0x6d, 0xaa, 0xb4, 0x04, 0x45, 0x45, 0xa4, 0x6e, 0x95, + 0x54, 0xcd, 0x89, 0x1a, 0x74, 0x1a, 0xc6, 0x29, 0x45, 0xa3, 0x59, 0x77, 0x34, 0xb3, 0x8e, 0xcb, + 0x64, 0x99, 0x67, 0xd3, 0x90, 0xe3, 0x4a, 0x36, 0x46, 0x30, 0x96, 0x39, 0x02, 0x91, 0xc8, 0x46, + 0xf3, 0x70, 0x84, 0x92, 0xd5, 0xb0, 0x8e, 0x2d, 0xd5, 0xc1, 0x65, 0xfc, 0x8e, 0xa6, 0x5a, 0xb7, + 0xcb, 0xaa, 0x5e, 0x2d, 0xef, 0xa8, 0xf6, 0x4e, 0x76, 0x82, 0x30, 0x28, 0x46, 0xb2, 0x92, 0x72, + 0x90, 0x20, 0x2e, 0x70, 0xbc, 0x12, 0x45, 0x2b, 0xe8, 0xd5, 0x0b, 0xaa, 0xbd, 0x83, 0xf2, 0x30, + 0x49, 0xb9, 0xd8, 0x8e, 0xa5, 0xe9, 0xb5, 0x72, 0x65, 0x07, 0x57, 0x76, 0xcb, 0x4d, 0x67, 0xfb, + 0xb1, 0xec, 0x21, 0x7f, 0xfb, 0x54, 0xc2, 0x75, 0x8a, 0x33, 0x47, 0x50, 0x36, 0x9d, 0xed, 0xc7, + 0xd0, 0x3a, 0xa4, 0xc9, 0x60, 0x34, 0xb4, 0x17, 0x70, 0x79, 0xdb, 0xb0, 0x68, 0x0c, 0x1d, 0x69, + 0xe3, 0x9a, 0x7c, 0x1a, 0x9c, 0x5d, 0xe5, 0x04, 0xcb, 0x46, 0x15, 0xe7, 0xe3, 0xeb, 0x6b, 0xa5, + 0xd2, 0xbc, 0x92, 0x12, 0x5c, 0xce, 0x1b, 0x16, 0x31, 0xa8, 0x9a, 0xe1, 0x2a, 0x38, 0xc5, 0x0c, + 0xaa, 0x66, 0x08, 0xf5, 0x9e, 0x86, 0xf1, 0x4a, 0x85, 0xf5, 0x59, 0xab, 0x94, 0xf9, 0x62, 0xcc, + 0xce, 0x66, 0x02, 0xca, 0xaa, 0x54, 0x16, 0x18, 0x02, 0xb7, 0x71, 0x1b, 0x3d, 0x0e, 0x07, 0x3c, + 0x65, 0xf9, 0x09, 0xc7, 0x5a, 0x7a, 0x19, 0x26, 0x3d, 0x0d, 0xe3, 0xe6, 0x5e, 0x2b, 0x21, 0x0a, + 0xb4, 0x68, 0xee, 0x85, 0xc9, 0x1e, 0x85, 0x09, 0x73, 0xc7, 0x6c, 0xa5, 0x3b, 0xe6, 0xa7, 0x43, + 0xe6, 0x8e, 0x19, 0x26, 0xbc, 0x87, 0xae, 0xcc, 0x2d, 0x5c, 0x51, 0x1d, 0x5c, 0xcd, 0xde, 0xe1, + 0x47, 0xf7, 0x55, 0xa0, 0x59, 0xc8, 0x54, 0x2a, 0x65, 0xac, 0xab, 0x5b, 0x75, 0x5c, 0x56, 0x2d, + 0xac, 0xab, 0x76, 0x76, 0x9a, 0x22, 0xc7, 0x1c, 0xab, 0x89, 0x95, 0x91, 0x4a, 0xa5, 0x44, 0x2b, + 0x0b, 0xb4, 0x0e, 0x1d, 0x83, 0x31, 0x63, 0xeb, 0xf9, 0x0a, 0xb3, 0xc8, 0xb2, 0x69, 0xe1, 0x6d, + 0xed, 0x6a, 0xf6, 0x6e, 0xaa, 0xde, 0x51, 0x52, 0x41, 0xed, 0x71, 0x8d, 0x82, 0xd1, 0xfd, 0x90, + 0xa9, 0xd8, 0x3b, 0xaa, 0x65, 0x52, 0x97, 0x6c, 0x9b, 0x6a, 0x05, 0x67, 0xef, 0x61, 0xa8, 0x0c, + 0xbe, 0x22, 0xc0, 0x64, 0x46, 0xd8, 0x57, 0xb4, 0x6d, 0x47, 0x70, 0xbc, 0x8f, 0xcd, 0x08, 0x0a, + 0xe3, 0xdc, 0x8e, 0x42, 0x86, 0x68, 0x22, 0xd0, 0xf0, 0x51, 0x8a, 0x36, 0x62, 0xee, 0x98, 0xfe, + 0x76, 0xef, 0x82, 0x61, 0x82, 0xe9, 0x35, 0x7a, 0x3f, 0x4b, 0xdc, 0xcc, 0x1d, 0x5f, 0x8b, 0xa7, + 0x60, 0x92, 0x20, 0x35, 0xb0, 0xa3, 0x56, 0x55, 0x47, 0xf5, 0x61, 0x3f, 0x48, 0xb1, 0x89, 0xda, + 0x97, 0x79, 0x65, 0x40, 0x4e, 0xab, 0xb9, 0xb5, 0xe7, 0x1a, 0xd6, 0x71, 0x26, 0x27, 0x81, 0x09, + 0xd3, 0xba, 0x6d, 0xc9, 0xb9, 0x9c, 0x87, 0xb4, 0xdf, 0xee, 0x51, 0x12, 0x98, 0xe5, 0x67, 0x24, + 0x92, 0x04, 0xcd, 0xad, 0xce, 0x93, 0xf4, 0xe5, 0xb9, 0x52, 0x26, 0x42, 0xd2, 0xa8, 0xa5, 0xc5, + 0x8d, 0x52, 0x59, 0xd9, 0x5c, 0xd9, 0x58, 0x5c, 0x2e, 0x65, 0xa2, 0xbe, 0xc4, 0xfe, 0xa9, 0x58, + 0xe2, 0xde, 0xcc, 0x7d, 0xf2, 0xb7, 0x23, 0x30, 0x12, 0x5c, 0xa9, 0xa1, 0xb7, 0xc0, 0x1d, 0x62, + 0x5b, 0xc5, 0xc6, 0x4e, 0xf9, 0x8a, 0x66, 0xd1, 0x09, 0xd9, 0x50, 0x59, 0x70, 0x74, 0xed, 0x67, + 0x82, 0x63, 0xad, 0x63, 0xe7, 0x19, 0xcd, 0x22, 0xd3, 0xad, 0xa1, 0x3a, 0x68, 0x09, 0xa6, 0x75, + 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95, 0x0a, 0xb6, + 0x6d, 0x83, 0x05, 0x42, 0x97, 0xcb, 0x61, 0xdd, 0x58, 0xe7, 0xc8, 0x5e, 0x84, 0x28, 0x70, 0xd4, + 0x90, 0xf9, 0x46, 0x3b, 0x99, 0xef, 0x21, 0x48, 0x36, 0x54, 0xb3, 0x8c, 0x75, 0xc7, 0xda, 0xa3, + 0xf9, 0x79, 0x42, 0x49, 0x34, 0x54, 0xb3, 0x44, 0xca, 0x3f, 0x91, 0x65, 0xd2, 0x53, 0xb1, 0x44, + 0x22, 0x93, 0x7c, 0x2a, 0x96, 0x48, 0x66, 0x40, 0x7e, 0x35, 0x0a, 0x69, 0x7f, 0xbe, 0x4e, 0x96, + 0x3f, 0x15, 0x1a, 0xb1, 0x24, 0xea, 0xd3, 0xee, 0xea, 0x9a, 0xdd, 0xcf, 0xce, 0x91, 0x50, 0x96, + 0x1f, 0x64, 0xc9, 0xb1, 0xc2, 0x28, 0x49, 0x1a, 0x41, 0x8c, 0x0d, 0xb3, 0x64, 0x24, 0xa1, 0xf0, + 0x12, 0x5a, 0x80, 0xc1, 0xe7, 0x6d, 0xca, 0x7b, 0x90, 0xf2, 0xbe, 0xbb, 0x3b, 0xef, 0xa7, 0xd6, + 0x29, 0xf3, 0xe4, 0x53, 0xeb, 0xe5, 0x95, 0x55, 0x65, 0xb9, 0xb0, 0xa4, 0x70, 0x72, 0x74, 0x10, + 0x62, 0x75, 0xf5, 0x85, 0xbd, 0x60, 0xd0, 0xa3, 0xa0, 0x7e, 0x07, 0xe1, 0x20, 0xc4, 0xae, 0x60, + 0x75, 0x37, 0x18, 0x6a, 0x28, 0xe8, 0x36, 0x4e, 0x86, 0x13, 0x10, 0xa7, 0xfa, 0x42, 0x00, 0x5c, + 0x63, 0x99, 0x01, 0x94, 0x80, 0xd8, 0xdc, 0xaa, 0x42, 0x26, 0x44, 0x06, 0xd2, 0x0c, 0x5a, 0x5e, + 0x5b, 0x2c, 0xcd, 0x95, 0x32, 0x11, 0xf9, 0x34, 0x0c, 0x32, 0x25, 0x90, 0xc9, 0xe2, 0xaa, 0x21, + 0x33, 0xc0, 0x8b, 0x9c, 0x87, 0x24, 0x6a, 0x37, 0x97, 0x8b, 0x25, 0x25, 0x13, 0x09, 0x0e, 0x75, + 0x2c, 0x13, 0x97, 0x6d, 0x48, 0xfb, 0xf3, 0xf0, 0x9f, 0xcc, 0x62, 0xfc, 0x2b, 0x12, 0xa4, 0x7c, + 0x79, 0x35, 0x49, 0x88, 0xd4, 0x7a, 0xdd, 0xb8, 0x52, 0x56, 0xeb, 0x9a, 0x6a, 0x73, 0xd3, 0x00, + 0x0a, 0x2a, 0x10, 0x48, 0xbf, 0x43, 0xf7, 0x13, 0x9a, 0x22, 0xf1, 0xcc, 0xa0, 0xfc, 0x49, 0x09, + 0x32, 0xe1, 0xc4, 0x36, 0x24, 0xa6, 0xf4, 0x66, 0x8a, 0x29, 0x7f, 0x42, 0x82, 0x91, 0x60, 0x36, + 0x1b, 0x12, 0xef, 0xce, 0x37, 0x55, 0xbc, 0x3f, 0x88, 0xc0, 0x70, 0x20, 0x87, 0xed, 0x57, 0xba, + 0x77, 0xc0, 0x98, 0x56, 0xc5, 0x0d, 0xd3, 0x70, 0xb0, 0x5e, 0xd9, 0x2b, 0xd7, 0xf1, 0x65, 0x5c, + 0xcf, 0xca, 0xd4, 0x69, 0x9c, 0xe8, 0x9e, 0x25, 0xcf, 0x2e, 0x7a, 0x74, 0x4b, 0x84, 0x2c, 0x3f, + 0xbe, 0x38, 0x5f, 0x5a, 0x5e, 0x5b, 0xdd, 0x28, 0xad, 0xcc, 0xbd, 0xad, 0xbc, 0xb9, 0x72, 0x71, + 0x65, 0xf5, 0x99, 0x15, 0x25, 0xa3, 0x85, 0xd0, 0x6e, 0xe3, 0xb4, 0x5f, 0x83, 0x4c, 0x58, 0x28, + 0x74, 0x07, 0xb4, 0x13, 0x2b, 0x33, 0x80, 0xc6, 0x61, 0x74, 0x65, 0xb5, 0xbc, 0xbe, 0x38, 0x5f, + 0x2a, 0x97, 0xce, 0x9f, 0x2f, 0xcd, 0x6d, 0xac, 0xb3, 0x7d, 0x0f, 0x17, 0x7b, 0x23, 0x30, 0xc1, + 0xe5, 0x97, 0xa3, 0x30, 0xde, 0x46, 0x12, 0x54, 0xe0, 0x2b, 0x16, 0xb6, 0x88, 0x3a, 0xde, 0x8f, + 0xf4, 0xb3, 0x24, 0x67, 0x58, 0x53, 0x2d, 0x87, 0x2f, 0x70, 0xee, 0x07, 0xa2, 0x25, 0xdd, 0xd1, + 0xb6, 0x35, 0x6c, 0xf1, 0xfd, 0x24, 0xb6, 0x8c, 0x19, 0xf5, 0xe0, 0x6c, 0x4b, 0xe9, 0x41, 0x40, + 0xa6, 0x61, 0x6b, 0x8e, 0x76, 0x19, 0x97, 0x35, 0x5d, 0x6c, 0x3e, 0x91, 0x65, 0x4d, 0x4c, 0xc9, + 0x88, 0x9a, 0x45, 0xdd, 0x71, 0xb1, 0x75, 0x5c, 0x53, 0x43, 0xd8, 0xc4, 0x99, 0x47, 0x95, 0x8c, + 0xa8, 0x71, 0xb1, 0xef, 0x84, 0x74, 0xd5, 0x68, 0x92, 0x5c, 0x8f, 0xe1, 0x91, 0xd8, 0x21, 0x29, + 0x29, 0x06, 0x73, 0x51, 0x78, 0x16, 0xef, 0xed, 0x7a, 0xa5, 0x95, 0x14, 0x83, 0x31, 0x94, 0xfb, + 0x60, 0x54, 0xad, 0xd5, 0x2c, 0xc2, 0x5c, 0x30, 0x62, 0xeb, 0x92, 0x11, 0x17, 0x4c, 0x11, 0x73, + 0x4f, 0x41, 0x42, 0xe8, 0x81, 0x84, 0x6a, 0xa2, 0x89, 0xb2, 0xc9, 0x16, 0xdb, 0x91, 0xa3, 0x49, + 0x25, 0xa1, 0x8b, 0xca, 0x3b, 0x21, 0xad, 0xd9, 0x65, 0x6f, 0x13, 0x3f, 0x32, 0x13, 0x39, 0x9a, + 0x50, 0x52, 0x9a, 0xed, 0x6e, 0x80, 0xca, 0x9f, 0x8d, 0xc0, 0x48, 0xf0, 0x10, 0x02, 0xcd, 0x43, + 0xa2, 0x6e, 0x54, 0x54, 0x6a, 0x5a, 0xec, 0x04, 0xec, 0x68, 0x8f, 0x73, 0x8b, 0xd9, 0x25, 0x8e, + 0xaf, 0xb8, 0x94, 0xb9, 0x7f, 0x25, 0x41, 0x42, 0x80, 0xd1, 0x24, 0xc4, 0x4c, 0xd5, 0xd9, 0xa1, + 0xec, 0xe2, 0xc5, 0x48, 0x46, 0x52, 0x68, 0x99, 0xc0, 0x6d, 0x53, 0xd5, 0xa9, 0x09, 0x70, 0x38, + 0x29, 0x93, 0x71, 0xad, 0x63, 0xb5, 0x4a, 0x17, 0x3d, 0x46, 0xa3, 0x81, 0x75, 0xc7, 0x16, 0xe3, + 0xca, 0xe1, 0x73, 0x1c, 0x8c, 0x1e, 0x80, 0x31, 0xc7, 0x52, 0xb5, 0x7a, 0x00, 0x37, 0x46, 0x71, + 0x33, 0xa2, 0xc2, 0x45, 0xce, 0xc3, 0x41, 0xc1, 0xb7, 0x8a, 0x1d, 0xb5, 0xb2, 0x83, 0xab, 0x1e, + 0xd1, 0x20, 0xdd, 0xdc, 0xb8, 0x83, 0x23, 0xcc, 0xf3, 0x7a, 0x41, 0x2b, 0x7f, 0x5b, 0x82, 0x31, + 0xb1, 0x4c, 0xab, 0xba, 0xca, 0x5a, 0x06, 0x50, 0x75, 0xdd, 0x70, 0xfc, 0xea, 0x6a, 0x35, 0xe5, + 0x16, 0xba, 0xd9, 0x82, 0x4b, 0xa4, 0xf8, 0x18, 0xe4, 0x1a, 0x00, 0x5e, 0x4d, 0x47, 0xb5, 0x4d, + 0x43, 0x8a, 0x9f, 0x30, 0xd1, 0x63, 0x4a, 0xb6, 0xb0, 0x07, 0x06, 0x22, 0xeb, 0x39, 0x34, 0x01, + 0xf1, 0x2d, 0x5c, 0xd3, 0x74, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, 0x25, 0xe6, 0x6e, 0xbf, 0x14, + 0xff, 0x2a, 0x8c, 0x57, 0x8c, 0x46, 0x58, 0xdc, 0x62, 0x26, 0xb4, 0xb9, 0x60, 0x5f, 0x90, 0x9e, + 0x3b, 0xce, 0x91, 0x6a, 0x46, 0x5d, 0xd5, 0x6b, 0xb3, 0x86, 0x55, 0xf3, 0x8e, 0x59, 0x49, 0xc6, + 0x63, 0xfb, 0x0e, 0x5b, 0xcd, 0xad, 0xff, 0x2d, 0x49, 0xbf, 0x16, 0x89, 0x2e, 0xac, 0x15, 0x3f, + 0x17, 0xc9, 0x2d, 0x30, 0xc2, 0x35, 0xa1, 0x0c, 0x05, 0x6f, 0xd7, 0x71, 0x85, 0x74, 0x10, 0x7e, + 0xf0, 0x00, 0x4c, 0xd4, 0x8c, 0x9a, 0x41, 0x39, 0x9d, 0x20, 0xbf, 0xf8, 0x39, 0x6d, 0xd2, 0x85, + 0xe6, 0x7a, 0x1e, 0xea, 0xe6, 0x57, 0x60, 0x9c, 0x23, 0x97, 0xe9, 0x41, 0x11, 0x5b, 0xc6, 0xa0, + 0xae, 0x7b, 0x68, 0xd9, 0x2f, 0x7c, 0x9f, 0x86, 0x6f, 0x65, 0x8c, 0x93, 0x92, 0x3a, 0xb6, 0xd2, + 0xc9, 0x2b, 0x70, 0x20, 0xc0, 0x8f, 0x4d, 0x52, 0x6c, 0xf5, 0xe0, 0xf8, 0x3b, 0x9c, 0xe3, 0xb8, + 0x8f, 0xe3, 0x3a, 0x27, 0xcd, 0xcf, 0xc1, 0xf0, 0x7e, 0x78, 0xfd, 0x2e, 0xe7, 0x95, 0xc6, 0x7e, + 0x26, 0x0b, 0x30, 0x4a, 0x99, 0x54, 0x9a, 0xb6, 0x63, 0x34, 0xa8, 0x07, 0xec, 0xce, 0xe6, 0x6b, + 0xdf, 0x67, 0xb3, 0x66, 0x84, 0x90, 0xcd, 0xb9, 0x54, 0xf9, 0x3c, 0xd0, 0xb3, 0xb1, 0x2a, 0xae, + 0xd4, 0x7b, 0x70, 0xf8, 0x3a, 0x17, 0xc4, 0xc5, 0xcf, 0x5f, 0x82, 0x09, 0xf2, 0x9b, 0x3a, 0x28, + 0xbf, 0x24, 0xbd, 0x37, 0xdc, 0xb2, 0xdf, 0x7e, 0x2f, 0x9b, 0x98, 0xe3, 0x2e, 0x03, 0x9f, 0x4c, + 0xbe, 0x51, 0xac, 0x61, 0xc7, 0xc1, 0x96, 0x5d, 0x56, 0xeb, 0xed, 0xc4, 0xf3, 0xed, 0x58, 0x64, + 0x3f, 0xf6, 0xc3, 0xe0, 0x28, 0x2e, 0x30, 0xca, 0x42, 0xbd, 0x9e, 0xdf, 0x84, 0x3b, 0xda, 0x58, + 0x45, 0x1f, 0x3c, 0x5f, 0xe6, 0x3c, 0x27, 0x5a, 0x2c, 0x83, 0xb0, 0x5d, 0x03, 0x01, 0x77, 0xc7, + 0xb2, 0x0f, 0x9e, 0x1f, 0xe7, 0x3c, 0x11, 0xa7, 0x15, 0x43, 0x4a, 0x38, 0x3e, 0x05, 0x63, 0x97, + 0xb1, 0xb5, 0x65, 0xd8, 0x7c, 0x97, 0xa8, 0x0f, 0x76, 0x9f, 0xe0, 0xec, 0x46, 0x39, 0x21, 0xdd, + 0x36, 0x22, 0xbc, 0x1e, 0x87, 0xc4, 0xb6, 0x5a, 0xc1, 0x7d, 0xb0, 0xb8, 0xc6, 0x59, 0x0c, 0x11, + 0x7c, 0x42, 0x5a, 0x80, 0x74, 0xcd, 0xe0, 0x31, 0xaa, 0x37, 0xf9, 0x27, 0x39, 0x79, 0x4a, 0xd0, + 0x70, 0x16, 0xa6, 0x61, 0x36, 0xeb, 0x24, 0x80, 0xf5, 0x66, 0xf1, 0xb7, 0x04, 0x0b, 0x41, 0xc3, + 0x59, 0xec, 0x43, 0xad, 0xaf, 0x08, 0x16, 0xb6, 0x4f, 0x9f, 0xe7, 0x20, 0x65, 0xe8, 0xf5, 0x3d, + 0x43, 0xef, 0x47, 0x88, 0x4f, 0x71, 0x0e, 0xc0, 0x49, 0x08, 0x83, 0xb3, 0x90, 0xec, 0x77, 0x20, + 0xfe, 0xf6, 0x0f, 0xc5, 0xf4, 0x10, 0x23, 0xb0, 0x00, 0xa3, 0xc2, 0x41, 0x69, 0x86, 0xde, 0x07, + 0x8b, 0xbf, 0xc3, 0x59, 0x8c, 0xf8, 0xc8, 0x78, 0x37, 0x1c, 0x6c, 0x3b, 0x35, 0xdc, 0x0f, 0x93, + 0xcf, 0x8a, 0x6e, 0x70, 0x12, 0xae, 0xca, 0x2d, 0xac, 0x57, 0x76, 0xfa, 0xe3, 0xf0, 0xeb, 0x42, + 0x95, 0x82, 0x86, 0xb0, 0x98, 0x83, 0xe1, 0x86, 0x6a, 0xd9, 0x3b, 0x6a, 0xbd, 0xaf, 0xe1, 0xf8, + 0xbb, 0x9c, 0x47, 0xda, 0x25, 0xe2, 0x1a, 0x69, 0xea, 0xfb, 0x61, 0xf3, 0x39, 0xa1, 0x11, 0x1f, + 0x19, 0x9f, 0x7a, 0xb6, 0x43, 0xb7, 0xd4, 0xf6, 0xc3, 0xed, 0x37, 0xc4, 0xd4, 0x63, 0xb4, 0xcb, + 0x7e, 0x8e, 0x67, 0x21, 0x69, 0x6b, 0x2f, 0xf4, 0xc5, 0xe6, 0x37, 0xc5, 0x48, 0x53, 0x02, 0x42, + 0xfc, 0x36, 0x38, 0xd8, 0x36, 0x4c, 0xf4, 0xc1, 0xec, 0xef, 0x71, 0x66, 0x93, 0x6d, 0x42, 0x05, + 0x77, 0x09, 0xfb, 0x65, 0xf9, 0xf7, 0x85, 0x4b, 0xc0, 0x21, 0x5e, 0x6b, 0x64, 0xd5, 0x60, 0xab, + 0xdb, 0xfb, 0xd3, 0xda, 0x3f, 0x10, 0x5a, 0x63, 0xb4, 0x01, 0xad, 0x6d, 0xc0, 0x24, 0xe7, 0xb8, + 0xbf, 0x71, 0xfd, 0xbc, 0x70, 0xac, 0x8c, 0x7a, 0x33, 0x38, 0xba, 0x6f, 0x87, 0x9c, 0xab, 0x4e, + 0x91, 0x9e, 0xda, 0xe5, 0x86, 0x6a, 0xf6, 0xc1, 0xf9, 0x0b, 0x9c, 0xb3, 0xf0, 0xf8, 0x6e, 0x7e, + 0x6b, 0x2f, 0xab, 0x26, 0x61, 0xfe, 0x2c, 0x64, 0x05, 0xf3, 0xa6, 0x6e, 0xe1, 0x8a, 0x51, 0xd3, + 0xb5, 0x17, 0x70, 0xb5, 0x0f, 0xd6, 0xbf, 0x15, 0x1a, 0xaa, 0x4d, 0x1f, 0x39, 0xe1, 0xbc, 0x08, + 0x19, 0x37, 0x57, 0x29, 0x6b, 0x0d, 0xd3, 0xb0, 0x9c, 0x1e, 0x1c, 0xbf, 0x28, 0x46, 0xca, 0xa5, + 0x5b, 0xa4, 0x64, 0xf9, 0x12, 0xb0, 0x73, 0xe6, 0x7e, 0x4d, 0xf2, 0x4b, 0x9c, 0xd1, 0xb0, 0x47, + 0xc5, 0x1d, 0x47, 0xc5, 0x68, 0x98, 0xaa, 0xd5, 0x8f, 0xff, 0xfb, 0x87, 0xc2, 0x71, 0x70, 0x12, + 0xee, 0x38, 0x48, 0x46, 0x47, 0xa2, 0x7d, 0x1f, 0x1c, 0xbe, 0x2c, 0x1c, 0x87, 0xa0, 0xe1, 0x2c, + 0x44, 0xc2, 0xd0, 0x07, 0x8b, 0x7f, 0x24, 0x58, 0x08, 0x1a, 0xc2, 0xe2, 0x69, 0x2f, 0xd0, 0x5a, + 0xb8, 0xa6, 0xd9, 0x8e, 0xc5, 0x92, 0xe2, 0xee, 0xac, 0xfe, 0xf1, 0x0f, 0x83, 0x49, 0x98, 0xe2, + 0x23, 0x25, 0x9e, 0x88, 0x6f, 0xb2, 0xd2, 0x35, 0x53, 0x6f, 0xc1, 0x7e, 0x5b, 0x78, 0x22, 0x1f, + 0x19, 0x91, 0xcd, 0x97, 0x21, 0x12, 0xb5, 0x57, 0xc8, 0x4a, 0xa1, 0x0f, 0x76, 0xff, 0x24, 0x24, + 0xdc, 0xba, 0xa0, 0x25, 0x3c, 0x7d, 0xf9, 0x4f, 0x53, 0xdf, 0xc5, 0x7b, 0x7d, 0x59, 0xe7, 0x3f, + 0x0d, 0xe5, 0x3f, 0x9b, 0x8c, 0x92, 0xf9, 0x90, 0xd1, 0x50, 0x3e, 0x85, 0x7a, 0xdd, 0x2a, 0xca, + 0xbe, 0xfb, 0x75, 0xde, 0xdf, 0x60, 0x3a, 0x95, 0x5f, 0x22, 0x46, 0x1e, 0x4c, 0x7a, 0x7a, 0x33, + 0x7b, 0xef, 0xeb, 0xae, 0x9d, 0x07, 0x72, 0x9e, 0xfc, 0x79, 0x18, 0x0e, 0x24, 0x3c, 0xbd, 0x59, + 0xfd, 0x02, 0x67, 0x95, 0xf6, 0xe7, 0x3b, 0xf9, 0xd3, 0x10, 0x23, 0xc9, 0x4b, 0x6f, 0xf2, 0x5f, + 0xe4, 0xe4, 0x14, 0x3d, 0xff, 0x04, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0x7d, 0x9c, 0xd4, 0x25, + 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x4b, 0x82, 0x5c, 0x90, 0x10, 0xf2, 0xfe, 0x55, 0xf8, + 0x95, 0x5f, 0x8e, 0xf1, 0xa0, 0x23, 0x74, 0x77, 0x16, 0x86, 0x78, 0xa6, 0xd2, 0x9b, 0xfa, 0x03, + 0xbc, 0x71, 0x41, 0x91, 0x7f, 0x14, 0xe2, 0x7d, 0x2a, 0xfc, 0xaf, 0x71, 0x52, 0x86, 0x9f, 0x9f, + 0x83, 0x94, 0x2f, 0x3b, 0xe9, 0x4d, 0xfe, 0xd7, 0x39, 0xb9, 0x9f, 0x8a, 0x88, 0xce, 0xb3, 0x93, + 0xde, 0x0c, 0xfe, 0x86, 0x10, 0x9d, 0x53, 0x10, 0xb5, 0x89, 0xc4, 0xa4, 0x37, 0xf5, 0x07, 0x85, + 0xd6, 0x05, 0x49, 0xfe, 0x1c, 0x24, 0xdd, 0x60, 0xd3, 0x9b, 0xfe, 0x43, 0x9c, 0xde, 0xa3, 0x21, + 0x1a, 0xf0, 0x05, 0xbb, 0xde, 0x2c, 0xfe, 0xa6, 0xd0, 0x80, 0x8f, 0x8a, 0x4c, 0xa3, 0x70, 0x02, + 0xd3, 0x9b, 0xd3, 0x87, 0xc5, 0x34, 0x0a, 0xe5, 0x2f, 0x64, 0x34, 0xa9, 0xcf, 0xef, 0xcd, 0xe2, + 0x23, 0x62, 0x34, 0x29, 0x3e, 0x11, 0x23, 0x9c, 0x11, 0xf4, 0xe6, 0xf1, 0xab, 0x42, 0x8c, 0x50, + 0x42, 0x90, 0x5f, 0x03, 0xd4, 0x9a, 0x0d, 0xf4, 0xe6, 0xf7, 0x51, 0xce, 0x6f, 0xac, 0x25, 0x19, + 0xc8, 0x3f, 0x03, 0x93, 0xed, 0x33, 0x81, 0xde, 0x5c, 0x3f, 0xf6, 0x7a, 0x68, 0xed, 0xe6, 0x4f, + 0x04, 0xf2, 0x1b, 0x5e, 0x48, 0xf1, 0x67, 0x01, 0xbd, 0xd9, 0xbe, 0xfc, 0x7a, 0xd0, 0x71, 0xfb, + 0x93, 0x80, 0x7c, 0x01, 0xc0, 0x0b, 0xc0, 0xbd, 0x79, 0x7d, 0x82, 0xf3, 0xf2, 0x11, 0x91, 0xa9, + 0xc1, 0xe3, 0x6f, 0x6f, 0xfa, 0x6b, 0x62, 0x6a, 0x70, 0x0a, 0x32, 0x35, 0x44, 0xe8, 0xed, 0x4d, + 0xfd, 0x49, 0x31, 0x35, 0x04, 0x09, 0xb1, 0x6c, 0x5f, 0x74, 0xeb, 0xcd, 0xe1, 0x53, 0xc2, 0xb2, + 0x7d, 0x54, 0xf9, 0x15, 0x18, 0x6b, 0x09, 0x88, 0xbd, 0x59, 0xfd, 0x1a, 0x67, 0x95, 0x09, 0xc7, + 0x43, 0x7f, 0xf0, 0xe2, 0xc1, 0xb0, 0x37, 0xb7, 0x4f, 0x87, 0x82, 0x17, 0x8f, 0x85, 0xf9, 0xb3, + 0x90, 0xd0, 0x9b, 0xf5, 0x3a, 0x99, 0x3c, 0xa8, 0xfb, 0x4d, 0xc0, 0xec, 0x1f, 0xfd, 0x98, 0x6b, + 0x47, 0x10, 0xe4, 0x4f, 0x43, 0x1c, 0x37, 0xb6, 0x70, 0xb5, 0x17, 0xe5, 0x0f, 0x7e, 0x2c, 0x1c, + 0x26, 0xc1, 0xce, 0x9f, 0x03, 0x60, 0x5b, 0x23, 0xf4, 0x30, 0xb0, 0x07, 0xed, 0x7f, 0xfd, 0x31, + 0xbf, 0x7a, 0xe3, 0x91, 0x78, 0x0c, 0xd8, 0x45, 0x9e, 0xee, 0x0c, 0x7e, 0x18, 0x64, 0x40, 0x47, + 0xe4, 0x71, 0x18, 0x7a, 0xde, 0x36, 0x74, 0x47, 0xad, 0xf5, 0xa2, 0xfe, 0x6f, 0x9c, 0x5a, 0xe0, + 0x13, 0x85, 0x35, 0x0c, 0x0b, 0x3b, 0x6a, 0xcd, 0xee, 0x45, 0xfb, 0xdf, 0x39, 0xad, 0x4b, 0x40, + 0x88, 0x2b, 0xaa, 0xed, 0xf4, 0xd3, 0xef, 0x3f, 0x16, 0xc4, 0x82, 0x80, 0x08, 0x4d, 0x7e, 0xef, + 0xe2, 0xbd, 0x5e, 0xb4, 0x3f, 0x12, 0x42, 0x73, 0xfc, 0xfc, 0x13, 0x90, 0x24, 0x3f, 0xd9, 0x7d, + 0xba, 0x1e, 0xc4, 0xff, 0x83, 0x13, 0x7b, 0x14, 0xa4, 0x65, 0xdb, 0xa9, 0x3a, 0x5a, 0x6f, 0x65, + 0xdf, 0xe0, 0x23, 0x2d, 0xf0, 0xf3, 0x05, 0x48, 0xd9, 0x4e, 0xb5, 0xda, 0xe4, 0xf9, 0x69, 0x0f, + 0xf2, 0x3f, 0xf9, 0xb1, 0xbb, 0x65, 0xe1, 0xd2, 0x90, 0xd1, 0xbe, 0xb2, 0xeb, 0x98, 0x06, 0x3d, + 0xf0, 0xe8, 0xc5, 0xe1, 0x75, 0xce, 0xc1, 0x47, 0x92, 0x9f, 0x83, 0x34, 0xe9, 0x8b, 0x85, 0x4d, + 0x4c, 0x4f, 0xa7, 0x7a, 0xb0, 0xf8, 0x53, 0xae, 0x80, 0x00, 0x51, 0xf1, 0xe7, 0xbf, 0xfe, 0xea, + 0x94, 0xf4, 0xad, 0x57, 0xa7, 0xa4, 0x3f, 0x78, 0x75, 0x4a, 0xfa, 0xe0, 0xf7, 0xa6, 0x06, 0xbe, + 0xf5, 0xbd, 0xa9, 0x81, 0xdf, 0xfb, 0xde, 0xd4, 0x40, 0xfb, 0x5d, 0x62, 0x58, 0x30, 0x16, 0x0c, + 0xb6, 0x3f, 0xfc, 0x9c, 0x5c, 0xd3, 0x9c, 0x9d, 0xe6, 0xd6, 0x6c, 0xc5, 0x68, 0xd0, 0x6d, 0x5c, + 0x6f, 0xb7, 0xd6, 0x5d, 0xe4, 0xc0, 0x7b, 0xa2, 0x70, 0xb0, 0x62, 0xd8, 0x0d, 0xc3, 0x2e, 0xb3, + 0xfd, 0x5e, 0x56, 0xe0, 0x3b, 0xbe, 0x69, 0x7f, 0x55, 0x1f, 0x9b, 0xbe, 0x17, 0x60, 0x84, 0x76, + 0x9d, 0x6e, 0x77, 0x51, 0x6b, 0xeb, 0xe9, 0x20, 0xbe, 0xf1, 0xef, 0xe3, 0xb4, 0xd7, 0xc3, 0x2e, + 0x21, 0x3d, 0xbd, 0xdf, 0x80, 0x09, 0xad, 0x61, 0xd6, 0x31, 0xdd, 0xe6, 0x2f, 0xbb, 0x75, 0xbd, + 0xf9, 0x7d, 0x93, 0xf3, 0x1b, 0xf7, 0xc8, 0x17, 0x05, 0x75, 0x7e, 0x09, 0xc6, 0xd4, 0x4a, 0x05, + 0x9b, 0x01, 0x96, 0x3d, 0x86, 0x45, 0x08, 0x98, 0xe1, 0x94, 0x2e, 0xb7, 0xe2, 0xb9, 0x4e, 0x43, + 0xf3, 0xdc, 0x3d, 0x3e, 0xcd, 0x5b, 0xb8, 0x86, 0xf5, 0xe3, 0x3a, 0x76, 0xae, 0x18, 0xd6, 0x2e, + 0x57, 0xef, 0x71, 0xd6, 0xd4, 0x20, 0xbb, 0xc1, 0x0c, 0xff, 0x2f, 0x02, 0x53, 0xac, 0xe2, 0xc4, + 0x96, 0x6a, 0xe3, 0x13, 0x97, 0x1f, 0xde, 0xc2, 0x8e, 0xfa, 0xf0, 0x89, 0x8a, 0xa1, 0xe9, 0x7c, + 0x24, 0xc6, 0xf9, 0xb8, 0x90, 0xfa, 0x59, 0x5e, 0x9f, 0x6b, 0xbb, 0x4d, 0x2f, 0x2f, 0x40, 0x6c, + 0xce, 0xd0, 0x74, 0x34, 0x01, 0xf1, 0x2a, 0xd6, 0x8d, 0x06, 0xbf, 0x73, 0xc7, 0x0a, 0xe8, 0x2e, + 0x18, 0x54, 0x1b, 0x46, 0x53, 0x77, 0xd8, 0x09, 0x45, 0x31, 0xf5, 0xf5, 0xeb, 0xd3, 0x03, 0xdf, + 0xb9, 0x3e, 0x1d, 0x5d, 0xd4, 0x1d, 0x85, 0x57, 0xe5, 0x63, 0xaf, 0xbd, 0x32, 0x2d, 0xc9, 0x4f, + 0xc1, 0xd0, 0x3c, 0xae, 0xdc, 0x0c, 0xaf, 0x79, 0x5c, 0x09, 0xf1, 0xba, 0x1f, 0x12, 0x8b, 0xba, + 0xc3, 0x6e, 0x45, 0x1e, 0x81, 0xa8, 0xa6, 0xb3, 0x8b, 0x36, 0xa1, 0xf6, 0x09, 0x9c, 0xa0, 0xce, + 0xe3, 0x8a, 0x8b, 0x5a, 0xc5, 0x95, 0x30, 0x2a, 0x61, 0x4f, 0xe0, 0xc5, 0x73, 0xbf, 0xf7, 0x9f, + 0xa7, 0x06, 0x5e, 0x7c, 0x75, 0x6a, 0xa0, 0xe3, 0x48, 0x1c, 0xf1, 0x8d, 0x44, 0x5d, 0xd3, 0xf1, + 0x89, 0xfa, 0x56, 0xe3, 0xb8, 0x5d, 0xdd, 0x65, 0xc7, 0x23, 0xee, 0x08, 0xfc, 0xcb, 0x41, 0x90, + 0xf9, 0x08, 0xd8, 0x8e, 0xba, 0xab, 0xe9, 0x35, 0x77, 0x10, 0xd4, 0xa6, 0xb3, 0xf3, 0x02, 0x1f, + 0x85, 0x49, 0x3e, 0x0a, 0x1c, 0xa7, 0xfb, 0x40, 0xe4, 0x3a, 0x4f, 0xac, 0x5c, 0x8f, 0xe1, 0x96, + 0xbf, 0x16, 0x05, 0xb4, 0xee, 0xa8, 0xbb, 0xb8, 0xd0, 0x74, 0x76, 0x0c, 0x4b, 0x7b, 0x81, 0xb9, + 0xb1, 0xbf, 0x0c, 0xd0, 0x50, 0xaf, 0x96, 0x1d, 0x63, 0x17, 0xeb, 0x36, 0xd5, 0x4a, 0xea, 0xe4, + 0xc1, 0xd9, 0x36, 0xa6, 0x31, 0x4b, 0x46, 0xad, 0x78, 0xef, 0xe7, 0xbe, 0x3b, 0x2d, 0x77, 0x55, + 0x00, 0xc5, 0x23, 0x29, 0xf5, 0xd5, 0x0d, 0xca, 0x13, 0x5d, 0x02, 0x76, 0xb5, 0xa2, 0x5c, 0xd7, + 0x6c, 0x87, 0xdf, 0xce, 0x3e, 0x3d, 0xdb, 0xbe, 0xdb, 0xb3, 0xad, 0x12, 0xce, 0x5e, 0x52, 0xeb, + 0x5a, 0x55, 0x75, 0x0c, 0xcb, 0xbe, 0x30, 0xa0, 0x24, 0x29, 0xab, 0x25, 0xcd, 0x76, 0xd0, 0x06, + 0x24, 0xab, 0x58, 0xdf, 0x63, 0x6c, 0xa3, 0x6f, 0x8c, 0x6d, 0x82, 0x70, 0xa2, 0x5c, 0x9f, 0x05, + 0xa4, 0xfa, 0xf1, 0xc4, 0x73, 0x24, 0x76, 0xab, 0xb2, 0x03, 0xfb, 0x00, 0x67, 0xfa, 0x7a, 0x62, + 0x4c, 0x0d, 0x83, 0x72, 0xf7, 0x02, 0x78, 0x6d, 0xa2, 0x2c, 0x0c, 0xa9, 0xd5, 0xaa, 0x85, 0x6d, + 0x9b, 0x1e, 0xfb, 0x25, 0x15, 0x51, 0xcc, 0x8f, 0xfd, 0x9b, 0x2f, 0x1d, 0x1f, 0x0e, 0x70, 0x2c, + 0xa6, 0x01, 0x2e, 0xbb, 0xa4, 0xc7, 0x3e, 0x29, 0xc1, 0x58, 0x4b, 0x8b, 0x48, 0x86, 0xa9, 0xc2, + 0xe6, 0xc6, 0x85, 0x55, 0x65, 0xf1, 0xb9, 0xc2, 0xc6, 0xe2, 0xea, 0x4a, 0x99, 0x5d, 0xf4, 0x5f, + 0x59, 0x5f, 0x2b, 0xcd, 0x2d, 0x9e, 0x5f, 0x2c, 0xcd, 0x67, 0x06, 0xd0, 0x34, 0x1c, 0x6a, 0x83, + 0x33, 0x5f, 0x5a, 0x2a, 0x2d, 0x14, 0x36, 0x4a, 0x19, 0x09, 0xdd, 0x09, 0x47, 0xda, 0x32, 0x71, + 0x51, 0x22, 0x1d, 0x50, 0x94, 0x92, 0x8b, 0x12, 0x2d, 0x16, 0x3a, 0xce, 0x9d, 0xfb, 0x3a, 0x99, + 0xce, 0x55, 0x77, 0x92, 0x04, 0x67, 0xd1, 0xbb, 0x23, 0x70, 0x30, 0x1c, 0x23, 0x54, 0x7d, 0xaf, + 0xc3, 0x33, 0xcf, 0x0e, 0xee, 0xeb, 0x02, 0x44, 0x0b, 0xfa, 0x1e, 0x3a, 0xc8, 0x12, 0xe8, 0x72, + 0xd3, 0xaa, 0x73, 0xa7, 0x33, 0x44, 0xca, 0x9b, 0x56, 0x9d, 0x38, 0x23, 0x71, 0xb3, 0x5f, 0x3a, + 0x9a, 0xe6, 0xd7, 0xf5, 0xf3, 0x99, 0x8f, 0xbe, 0x32, 0x3d, 0xf0, 0xf9, 0x57, 0xa6, 0x07, 0x7e, + 0xf4, 0xa9, 0xe9, 0x81, 0x17, 0x7f, 0x7f, 0x66, 0xa0, 0xb8, 0x1b, 0xee, 0xd9, 0x57, 0x7a, 0x86, + 0xcf, 0x44, 0x41, 0xdf, 0xa3, 0x9e, 0x67, 0x4d, 0x7a, 0x2e, 0x4e, 0x3b, 0x27, 0x4e, 0x4c, 0xa7, + 0xc2, 0x27, 0xa6, 0xcf, 0xe0, 0x7a, 0xfd, 0xa2, 0x6e, 0x5c, 0xa1, 0x03, 0xea, 0xe9, 0xe0, 0xc3, + 0x11, 0x98, 0x6a, 0x89, 0x93, 0x3c, 0xa5, 0xe8, 0xf4, 0xde, 0x35, 0x0f, 0x89, 0x79, 0x91, 0xa9, + 0x64, 0x61, 0xc8, 0xc6, 0x15, 0x43, 0xaf, 0xb2, 0xf9, 0x1d, 0x55, 0x44, 0x91, 0x74, 0x5b, 0x57, + 0x75, 0xc3, 0xe6, 0x97, 0xec, 0x59, 0xa1, 0xf8, 0x71, 0x69, 0x7f, 0x09, 0xc2, 0xb0, 0x68, 0x49, + 0x74, 0xf3, 0xe1, 0x9e, 0x67, 0xc8, 0xbb, 0xa4, 0x97, 0x6e, 0x27, 0x02, 0xe7, 0xc8, 0xfd, 0x6a, + 0xe5, 0x57, 0x23, 0x30, 0x1d, 0xd6, 0x0a, 0xc9, 0xd3, 0x6c, 0x47, 0x6d, 0x98, 0x9d, 0xd4, 0x72, + 0x16, 0x92, 0x1b, 0x02, 0x67, 0xdf, 0x7a, 0xb9, 0xb6, 0x4f, 0xbd, 0x8c, 0xb8, 0x4d, 0x09, 0xc5, + 0x9c, 0xec, 0x53, 0x31, 0x6e, 0x3f, 0x6e, 0x4a, 0x33, 0x9f, 0x8b, 0xc1, 0x11, 0xfa, 0x0a, 0xcb, + 0x6a, 0x68, 0xba, 0x73, 0xa2, 0x62, 0xed, 0x99, 0x0e, 0xcd, 0xd4, 0x8c, 0x6d, 0xae, 0x97, 0x31, + 0xaf, 0x7a, 0x96, 0x55, 0x77, 0x98, 0x39, 0xdb, 0x10, 0x5f, 0x23, 0x74, 0x44, 0x23, 0x8e, 0xe1, + 0xa8, 0x75, 0xae, 0x29, 0x56, 0x20, 0x50, 0xf6, 0x72, 0x2b, 0xc2, 0xa0, 0x9a, 0x78, 0xb4, 0x55, + 0xc7, 0xea, 0x36, 0xbb, 0x00, 0x1f, 0xa5, 0x13, 0x2a, 0x41, 0x00, 0xf4, 0xae, 0xfb, 0x04, 0xc4, + 0xd5, 0x26, 0xbb, 0xbb, 0x11, 0x25, 0x33, 0x8d, 0x16, 0xe4, 0x8b, 0x30, 0xc4, 0x4f, 0x90, 0x51, + 0x06, 0xa2, 0xbb, 0x78, 0x8f, 0xb6, 0x93, 0x56, 0xc8, 0x4f, 0x34, 0x0b, 0x71, 0x2a, 0x3c, 0x8f, + 0x1d, 0xd9, 0xd9, 0x16, 0xe9, 0x67, 0xa9, 0x90, 0x0a, 0x43, 0x93, 0x9f, 0x82, 0xc4, 0xbc, 0xd1, + 0xd0, 0x74, 0x23, 0xc8, 0x2d, 0xc9, 0xb8, 0x51, 0x99, 0xcd, 0x26, 0x4f, 0x30, 0x14, 0x56, 0x40, + 0x93, 0x30, 0xc8, 0x1e, 0x44, 0xf0, 0xfb, 0x27, 0xbc, 0x24, 0xcf, 0xc1, 0x10, 0xe5, 0xbd, 0x6a, + 0x22, 0xc4, 0x9f, 0xd2, 0xf1, 0x97, 0x17, 0x34, 0x17, 0xe5, 0xec, 0x23, 0x9e, 0xb0, 0x08, 0x62, + 0x55, 0xd5, 0x51, 0x79, 0xbf, 0xe9, 0x6f, 0xf9, 0x49, 0x48, 0x70, 0x26, 0x36, 0x3a, 0x09, 0x51, + 0xc3, 0xb4, 0xf9, 0x0d, 0x92, 0x5c, 0xa7, 0xae, 0xac, 0x9a, 0xc5, 0x18, 0x49, 0x4d, 0x14, 0x82, + 0x5c, 0x54, 0x3a, 0xfa, 0xd3, 0xc7, 0x7c, 0xfe, 0xd4, 0x37, 0xe4, 0xbe, 0x9f, 0x6c, 0x48, 0x5b, + 0xcc, 0xc1, 0x35, 0x96, 0x4f, 0x45, 0x60, 0xca, 0x57, 0x7b, 0x19, 0x5b, 0xb6, 0x66, 0xe8, 0x3c, + 0x94, 0x33, 0x6b, 0x41, 0x3e, 0x21, 0x79, 0x7d, 0x07, 0x73, 0x79, 0x02, 0xa2, 0x05, 0xd3, 0x44, + 0x39, 0x48, 0xd0, 0x72, 0xc5, 0x60, 0xf6, 0x12, 0x53, 0xdc, 0x32, 0xa9, 0xb3, 0x8d, 0x6d, 0xe7, + 0x8a, 0x6a, 0xb9, 0x6f, 0x06, 0x45, 0x59, 0x7e, 0x1c, 0x92, 0x73, 0x86, 0x6e, 0x63, 0xdd, 0x6e, + 0xd2, 0x39, 0xb8, 0x55, 0x37, 0x2a, 0xbb, 0x9c, 0x03, 0x2b, 0x10, 0x85, 0xab, 0xa6, 0x49, 0x29, + 0x63, 0x0a, 0xf9, 0xc9, 0x92, 0xc1, 0xe2, 0x7a, 0x47, 0x15, 0x3d, 0xbe, 0x7f, 0x15, 0xf1, 0x4e, + 0xba, 0x3a, 0xfa, 0xbf, 0x12, 0x1c, 0x6e, 0x9d, 0x50, 0xbb, 0x78, 0xcf, 0xde, 0xef, 0x7c, 0x7a, + 0x16, 0x92, 0x6b, 0xf4, 0xe1, 0xfe, 0x45, 0xbc, 0x87, 0x72, 0x30, 0x84, 0xab, 0x27, 0x4f, 0x9f, + 0x7e, 0xf8, 0x71, 0x66, 0xed, 0x17, 0x06, 0x14, 0x01, 0x40, 0x53, 0x90, 0xb4, 0x71, 0xc5, 0x3c, + 0x79, 0xfa, 0xcc, 0xee, 0xc3, 0xcc, 0xbc, 0x48, 0xf2, 0xe3, 0x82, 0xf2, 0x09, 0xd2, 0xeb, 0xd7, + 0x3e, 0x35, 0x2d, 0x15, 0xe3, 0x10, 0xb5, 0x9b, 0x8d, 0xdb, 0x6a, 0x23, 0x2f, 0xc7, 0x61, 0xc6, + 0x4f, 0x49, 0x3d, 0x95, 0x9b, 0x90, 0x70, 0x1d, 0x64, 0x7c, 0x3a, 0xa0, 0x18, 0x1d, 0x52, 0xd8, + 0xae, 0x9a, 0x94, 0x7f, 0x4b, 0x82, 0xb4, 0x9b, 0x25, 0xad, 0x63, 0x07, 0x9d, 0xf5, 0xa7, 0x3e, + 0x7c, 0xda, 0x1c, 0x9a, 0x0d, 0xb7, 0xe5, 0x65, 0x73, 0x8a, 0x0f, 0x1d, 0x3d, 0x4a, 0x0d, 0xd1, + 0x34, 0x6c, 0xfe, 0x8e, 0xac, 0x07, 0xa9, 0x8b, 0x8c, 0x1e, 0x04, 0x44, 0x3d, 0x5c, 0xf9, 0xb2, + 0xe1, 0x68, 0x7a, 0xad, 0x6c, 0x1a, 0x57, 0xf8, 0xeb, 0xdc, 0xa8, 0x92, 0xa1, 0x35, 0x97, 0x68, + 0xc5, 0x1a, 0x81, 0x13, 0xa1, 0x93, 0x2e, 0x97, 0x60, 0x66, 0x47, 0x9c, 0x80, 0x28, 0xa2, 0xb3, + 0x30, 0x64, 0x36, 0xb7, 0xca, 0xc2, 0x63, 0xa4, 0x4e, 0x1e, 0x6e, 0x37, 0xff, 0x85, 0x7d, 0x70, + 0x0f, 0x30, 0x68, 0x36, 0xb7, 0x88, 0xb5, 0xdc, 0x09, 0xe9, 0x36, 0xc2, 0xa4, 0x2e, 0x7b, 0x72, + 0xd0, 0xef, 0x45, 0xf0, 0x1e, 0x94, 0x4d, 0x4b, 0x33, 0x2c, 0xcd, 0xd9, 0xa3, 0xa9, 0x6b, 0x54, + 0xc9, 0x88, 0x8a, 0x35, 0x0e, 0x97, 0x77, 0x61, 0x74, 0x9d, 0x2e, 0x68, 0x3d, 0xc9, 0x4f, 0x7b, + 0xf2, 0x49, 0xbd, 0xe5, 0xeb, 0x28, 0x59, 0xa4, 0x45, 0xb2, 0xe2, 0xd3, 0x1d, 0xad, 0xf3, 0xd1, + 0xfd, 0x5b, 0x67, 0x30, 0x43, 0xfc, 0xe3, 0x83, 0x81, 0xc9, 0xc9, 0x8c, 0xd3, 0xef, 0xbe, 0xfa, + 0x35, 0xcc, 0x5e, 0xd9, 0x44, 0xae, 0x7b, 0x50, 0xcd, 0xf5, 0x70, 0xa3, 0xb9, 0x9e, 0x53, 0x48, + 0x7e, 0x1c, 0x86, 0xd7, 0x54, 0xcb, 0x59, 0xc7, 0xce, 0x05, 0xac, 0x56, 0xb1, 0x15, 0x8c, 0xba, + 0xc3, 0x22, 0xea, 0x22, 0x88, 0xd1, 0xd0, 0xca, 0xa2, 0x0e, 0xfd, 0x2d, 0xef, 0x40, 0x8c, 0x5e, + 0x05, 0x75, 0x23, 0x32, 0xa7, 0x60, 0x11, 0x99, 0xf8, 0xd2, 0x3d, 0x07, 0xdb, 0x22, 0xbd, 0xa5, + 0x05, 0x74, 0x4a, 0xc4, 0xd5, 0x68, 0xf7, 0xb8, 0xca, 0x0d, 0x91, 0x47, 0xd7, 0x3a, 0x0c, 0x15, + 0x89, 0x2b, 0x5e, 0x9c, 0x77, 0x05, 0x91, 0x3c, 0x41, 0xd0, 0x32, 0x8c, 0x9a, 0xaa, 0xe5, 0xd0, + 0x37, 0x30, 0x3b, 0xb4, 0x17, 0xdc, 0xd6, 0xa7, 0x5b, 0x67, 0x5e, 0xa0, 0xb3, 0xbc, 0x95, 0x61, + 0xd3, 0x0f, 0x94, 0xff, 0x4b, 0x0c, 0x06, 0xb9, 0x32, 0x9e, 0x80, 0x21, 0xae, 0x56, 0x6e, 0x9d, + 0x47, 0x66, 0x5b, 0x03, 0xd3, 0xac, 0x1b, 0x40, 0x38, 0x3f, 0x41, 0x83, 0xee, 0x85, 0x44, 0x65, + 0x47, 0xd5, 0xf4, 0xb2, 0x56, 0x15, 0x7b, 0x0b, 0xaf, 0x5e, 0x9f, 0x1e, 0x9a, 0x23, 0xb0, 0xc5, + 0x79, 0x65, 0x88, 0x56, 0x2e, 0x56, 0x49, 0x26, 0xb0, 0x83, 0xb5, 0xda, 0x8e, 0xc3, 0x67, 0x18, + 0x2f, 0xa1, 0xc7, 0x20, 0x46, 0x0c, 0x82, 0xbf, 0x90, 0xcc, 0xb5, 0xec, 0xf0, 0xb8, 0xc9, 0x5e, + 0x31, 0x41, 0x1a, 0xfe, 0xe0, 0x77, 0xa7, 0x25, 0x85, 0x52, 0xa0, 0x39, 0x18, 0xae, 0xab, 0xb6, + 0x53, 0xa6, 0x11, 0x8c, 0x34, 0x1f, 0xe7, 0xab, 0xec, 0x16, 0x85, 0x70, 0xc5, 0x72, 0xd1, 0x53, + 0x84, 0x8a, 0x81, 0xaa, 0xe8, 0x28, 0x64, 0x28, 0x93, 0x8a, 0xd1, 0x68, 0x68, 0x0e, 0xcb, 0xad, + 0x06, 0xa9, 0xde, 0x47, 0x08, 0x7c, 0x8e, 0x82, 0x69, 0x86, 0x75, 0x08, 0x92, 0xf4, 0x4d, 0x16, + 0x45, 0x61, 0xf7, 0x8f, 0x13, 0x04, 0x40, 0x2b, 0xef, 0x83, 0x51, 0xcf, 0x3f, 0x32, 0x94, 0x04, + 0xe3, 0xe2, 0x81, 0x29, 0xe2, 0x43, 0x30, 0xa1, 0xe3, 0xab, 0xf4, 0x46, 0x74, 0x00, 0x3b, 0x49, + 0xb1, 0x11, 0xa9, 0xbb, 0x14, 0xa4, 0xb8, 0x07, 0x46, 0x2a, 0x42, 0xf9, 0x0c, 0x17, 0x28, 0xee, + 0xb0, 0x0b, 0xa5, 0x68, 0x07, 0x21, 0xa1, 0x9a, 0x26, 0x43, 0x48, 0x71, 0xff, 0x68, 0x9a, 0xb4, + 0xea, 0x18, 0x8c, 0xd1, 0x3e, 0x5a, 0xd8, 0x6e, 0xd6, 0x1d, 0xce, 0x24, 0x4d, 0x71, 0x46, 0x49, + 0x85, 0xc2, 0xe0, 0x14, 0xf7, 0x2e, 0x18, 0xc6, 0x97, 0xb5, 0x2a, 0xd6, 0x2b, 0x98, 0xe1, 0x0d, + 0x53, 0xbc, 0xb4, 0x00, 0x52, 0xa4, 0xfb, 0xc1, 0xf5, 0x7b, 0x65, 0xe1, 0x93, 0x47, 0x18, 0x3f, + 0x01, 0x2f, 0x30, 0xb0, 0x9c, 0x85, 0xd8, 0xbc, 0xea, 0xa8, 0x24, 0xc1, 0x70, 0xae, 0xb2, 0x40, + 0x93, 0x56, 0xc8, 0x4f, 0xf9, 0xb5, 0x08, 0xc4, 0x2e, 0x19, 0x0e, 0x46, 0x8f, 0xf8, 0x12, 0xc0, + 0x91, 0x76, 0xf6, 0xbc, 0xae, 0xd5, 0x74, 0x5c, 0x5d, 0xb6, 0x6b, 0xbe, 0x0f, 0x28, 0x78, 0xe6, + 0x14, 0x09, 0x98, 0xd3, 0x04, 0xc4, 0x2d, 0xa3, 0xa9, 0x57, 0xc5, 0xd5, 0x5d, 0x5a, 0x40, 0x25, + 0x48, 0xb8, 0x56, 0x12, 0xeb, 0x65, 0x25, 0xa3, 0xc4, 0x4a, 0x88, 0x0d, 0x73, 0x80, 0x32, 0xb4, + 0xc5, 0x8d, 0xa5, 0x08, 0x49, 0xd7, 0x79, 0x71, 0x6b, 0xeb, 0xcf, 0x60, 0x3d, 0x32, 0x12, 0x4c, + 0xdc, 0xb1, 0x77, 0x95, 0xc7, 0x2c, 0x2e, 0xe3, 0x56, 0x70, 0xed, 0x05, 0xcc, 0x8a, 0x7f, 0xcc, + 0x61, 0x88, 0xf6, 0xcb, 0x33, 0x2b, 0xf6, 0x41, 0x87, 0xc3, 0x90, 0xb4, 0xb5, 0x9a, 0xae, 0x3a, + 0x4d, 0x0b, 0x73, 0xcb, 0xf3, 0x00, 0xf2, 0x57, 0x24, 0x18, 0x64, 0x96, 0xec, 0xd3, 0x9b, 0xd4, + 0x5e, 0x6f, 0x91, 0x4e, 0x7a, 0x8b, 0xde, 0xbc, 0xde, 0x0a, 0x00, 0xae, 0x30, 0x36, 0x7f, 0x63, + 0xdf, 0x26, 0x63, 0x60, 0x22, 0xae, 0x6b, 0x35, 0x3e, 0x51, 0x7d, 0x44, 0xf2, 0x7f, 0x92, 0x48, + 0x12, 0xcb, 0xeb, 0x51, 0x01, 0x86, 0x85, 0x5c, 0xe5, 0xed, 0xba, 0x5a, 0xe3, 0xb6, 0x73, 0xa4, + 0xa3, 0x70, 0xe7, 0xeb, 0x6a, 0x4d, 0x49, 0x71, 0x79, 0x48, 0xa1, 0xfd, 0x38, 0x44, 0x3a, 0x8c, + 0x43, 0x60, 0xe0, 0xa3, 0x37, 0x37, 0xf0, 0x81, 0x21, 0x8a, 0x85, 0x87, 0xe8, 0x8b, 0x11, 0xba, + 0x98, 0x31, 0x0d, 0x5b, 0xad, 0xff, 0x24, 0x66, 0xc4, 0x21, 0x48, 0x9a, 0x46, 0xbd, 0xcc, 0x6a, + 0xd8, 0x95, 0xf6, 0x84, 0x69, 0xd4, 0x95, 0x96, 0x61, 0x8f, 0xdf, 0xa2, 0xe9, 0x32, 0x78, 0x0b, + 0xb4, 0x36, 0x14, 0xd6, 0x9a, 0x05, 0x69, 0xa6, 0x0a, 0x1e, 0xcb, 0x1e, 0x22, 0x3a, 0xa0, 0xc1, + 0x51, 0x6a, 0x8d, 0xbd, 0x4c, 0x6c, 0x86, 0xa9, 0x70, 0x3c, 0x42, 0xc1, 0x5c, 0x7f, 0xbb, 0x55, + 0xb0, 0xdf, 0x2c, 0x15, 0x8e, 0x27, 0xff, 0x8a, 0x04, 0xb0, 0x44, 0x34, 0x4b, 0xfb, 0x4b, 0xa2, + 0x90, 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0x34, 0x68, 0xbc, 0xfd, 0xb4, 0xed, 0x97, 0x7b, + 0x0e, 0x86, 0x3d, 0x63, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x8e, 0x1d, 0x25, 0x7d, + 0xd9, 0x57, 0x92, 0xff, 0x85, 0x04, 0x49, 0x2a, 0xd3, 0x32, 0x76, 0xd4, 0xc0, 0x18, 0x4a, 0x37, + 0x3f, 0x86, 0x47, 0x00, 0x18, 0x1b, 0x5b, 0x7b, 0x01, 0x73, 0xcb, 0x4a, 0x52, 0xc8, 0xba, 0xf6, + 0x02, 0x46, 0x67, 0x5c, 0x85, 0x47, 0xbb, 0x2b, 0x5c, 0x64, 0xdd, 0x5c, 0xed, 0x77, 0xc0, 0x10, + 0xfd, 0x26, 0xd5, 0x55, 0x9b, 0x27, 0xd2, 0x83, 0x7a, 0xb3, 0xb1, 0x71, 0xd5, 0x96, 0x9f, 0x87, + 0xa1, 0x8d, 0xab, 0x6c, 0x6f, 0xe4, 0x10, 0x24, 0x2d, 0xc3, 0xe0, 0x31, 0x99, 0xe5, 0x42, 0x09, + 0x02, 0xa0, 0x21, 0x48, 0xec, 0x07, 0x44, 0xbc, 0xfd, 0x00, 0x6f, 0x43, 0x23, 0xda, 0xd7, 0x86, + 0xc6, 0xb1, 0xff, 0x20, 0x41, 0xca, 0xe7, 0x1f, 0xd0, 0xc3, 0x70, 0xa0, 0xb8, 0xb4, 0x3a, 0x77, + 0xb1, 0xbc, 0x38, 0x5f, 0x3e, 0xbf, 0x54, 0x58, 0xf0, 0x1e, 0x6d, 0xe5, 0x26, 0x5f, 0xba, 0x36, + 0x83, 0x7c, 0xb8, 0x9b, 0x3a, 0xdd, 0x51, 0x42, 0x27, 0x60, 0x22, 0x48, 0x52, 0x28, 0xae, 0x97, + 0x56, 0x36, 0x32, 0x52, 0xee, 0xc0, 0x4b, 0xd7, 0x66, 0xc6, 0x7c, 0x14, 0x85, 0x2d, 0x1b, 0xeb, + 0x4e, 0x2b, 0xc1, 0xdc, 0xea, 0xf2, 0xf2, 0xe2, 0x46, 0x26, 0xd2, 0x42, 0xc0, 0x1d, 0xf6, 0xfd, + 0x30, 0x16, 0x24, 0x58, 0x59, 0x5c, 0xca, 0x44, 0x73, 0xe8, 0xa5, 0x6b, 0x33, 0x23, 0x3e, 0xec, + 0x15, 0xad, 0x9e, 0x4b, 0xbc, 0xff, 0xd3, 0x53, 0x03, 0xbf, 0xfe, 0x99, 0x29, 0x89, 0xf4, 0x6c, + 0x38, 0xe0, 0x23, 0xd0, 0x83, 0x70, 0xc7, 0xfa, 0xe2, 0xc2, 0x4a, 0x69, 0xbe, 0xbc, 0xbc, 0xbe, + 0x20, 0xb6, 0x9f, 0x45, 0xef, 0x46, 0x5f, 0xba, 0x36, 0x93, 0xe2, 0x5d, 0xea, 0x84, 0xbd, 0xa6, + 0x94, 0x2e, 0xad, 0x6e, 0x94, 0x32, 0x12, 0xc3, 0x5e, 0xb3, 0xf0, 0x65, 0xc3, 0x61, 0x1f, 0xad, + 0x7b, 0x08, 0x0e, 0xb6, 0xc1, 0x76, 0x3b, 0x36, 0xf6, 0xd2, 0xb5, 0x99, 0xe1, 0x35, 0x0b, 0xb3, + 0xf9, 0x43, 0x29, 0x66, 0x21, 0xdb, 0x4a, 0xb1, 0xba, 0xb6, 0xba, 0x5e, 0x58, 0xca, 0xcc, 0xe4, + 0x32, 0x2f, 0x5d, 0x9b, 0x49, 0x0b, 0x67, 0x48, 0xf7, 0xf8, 0xdd, 0x9e, 0xdd, 0xce, 0x15, 0xcf, + 0xaf, 0xa4, 0x20, 0x67, 0xd8, 0x8e, 0xa5, 0x56, 0xc4, 0x0a, 0x23, 0xb0, 0xde, 0x19, 0x11, 0x75, + 0x6f, 0xea, 0x6a, 0xa7, 0xeb, 0x9a, 0xac, 0x8f, 0xb5, 0xd0, 0x47, 0xe2, 0x3f, 0x4b, 0xfc, 0x7f, + 0x96, 0xf8, 0xdf, 0xfe, 0xc4, 0x1f, 0x1d, 0x10, 0x69, 0xc7, 0x6b, 0x43, 0xfe, 0xbc, 0xe3, 0x80, + 0xf0, 0xd1, 0x7f, 0xc4, 0x34, 0xc9, 0x57, 0xbf, 0x66, 0x28, 0x90, 0xcf, 0x86, 0x02, 0xf9, 0xe4, + 0x6c, 0x70, 0xf6, 0xbd, 0xf1, 0x30, 0xfe, 0x91, 0x60, 0x18, 0x2f, 0xb4, 0x0f, 0xe3, 0x87, 0xc3, + 0xed, 0xde, 0xee, 0x20, 0xfe, 0x95, 0x37, 0x21, 0x88, 0x9f, 0x0a, 0x05, 0xf1, 0x0e, 0xca, 0xee, + 0x33, 0x84, 0x17, 0x17, 0x3a, 0xba, 0xe8, 0xe3, 0xe1, 0x63, 0x4a, 0xd7, 0xdd, 0x32, 0x3f, 0x1a, + 0xf4, 0xbe, 0xae, 0x63, 0xfe, 0xcc, 0x71, 0xb8, 0xbb, 0xc3, 0x91, 0xbf, 0x38, 0x31, 0xbe, 0xa9, + 0x43, 0xff, 0x8e, 0x07, 0xa0, 0xb9, 0x1e, 0xe7, 0x82, 0xbd, 0xbd, 0xfc, 0xcd, 0x5f, 0x28, 0xc8, + 0x75, 0x89, 0x41, 0xf2, 0x2f, 0x49, 0x30, 0x72, 0x41, 0xb3, 0x1d, 0xc3, 0xd2, 0x2a, 0x6a, 0x9d, + 0xbe, 0xa0, 0x3d, 0xd5, 0xdf, 0x4c, 0x09, 0x0d, 0xde, 0x39, 0x18, 0xbc, 0xac, 0xd6, 0x99, 0x91, + 0x46, 0xe9, 0xe7, 0xbe, 0x3a, 0x1c, 0xc1, 0xbb, 0xa6, 0x2a, 0x18, 0x30, 0x32, 0xf9, 0x95, 0x08, + 0x8c, 0xd2, 0x19, 0x65, 0xb3, 0x0f, 0x41, 0x3a, 0xd8, 0x46, 0x4f, 0x40, 0xcc, 0x52, 0x1d, 0x7e, + 0x92, 0x53, 0xbc, 0x9f, 0xdf, 0x01, 0xb9, 0xb3, 0xfb, 0xb5, 0x86, 0x79, 0x5c, 0x51, 0x28, 0x19, + 0x7a, 0x06, 0x12, 0x0d, 0xf5, 0x6a, 0x99, 0xb2, 0x60, 0x01, 0xe5, 0x2d, 0x7d, 0xb3, 0xb8, 0x71, + 0x7d, 0x7a, 0x74, 0x4f, 0x6d, 0xd4, 0xf3, 0xb2, 0x60, 0x21, 0x2b, 0x43, 0x0d, 0xf5, 0x2a, 0x11, + 0x0c, 0xed, 0xc2, 0x28, 0x81, 0x56, 0x76, 0x54, 0xbd, 0x86, 0x19, 0x7f, 0x7a, 0x1a, 0x55, 0x9c, + 0xdb, 0x0f, 0xff, 0x49, 0x8f, 0xbf, 0x8f, 0x93, 0xac, 0x0c, 0x37, 0xd4, 0xab, 0x73, 0x14, 0x40, + 0x1a, 0xcb, 0x27, 0x3e, 0xfa, 0xca, 0xf4, 0x00, 0xbd, 0x48, 0xf3, 0x6d, 0x09, 0xc0, 0x53, 0x11, + 0xfa, 0x39, 0xc8, 0x54, 0xdc, 0x12, 0xa5, 0x15, 0xf7, 0x42, 0xee, 0xeb, 0xa4, 0xfc, 0x90, 0x82, + 0x59, 0x20, 0xfc, 0xd6, 0xf5, 0x69, 0x49, 0x19, 0xad, 0x84, 0x74, 0xff, 0x76, 0x48, 0x35, 0xcd, + 0xaa, 0xea, 0xe0, 0x32, 0x0d, 0xaa, 0x91, 0x9e, 0x41, 0x75, 0x8a, 0xf0, 0xba, 0x71, 0x7d, 0x1a, + 0xb1, 0x6e, 0xf9, 0x88, 0x65, 0x1a, 0x6a, 0x81, 0x41, 0x08, 0x81, 0xaf, 0x4f, 0xdf, 0x90, 0x20, + 0x35, 0xef, 0xbb, 0xca, 0x9e, 0x85, 0xa1, 0x86, 0xa1, 0x6b, 0xbb, 0xdc, 0xfc, 0x92, 0x8a, 0x28, + 0xa2, 0x1c, 0x24, 0xd8, 0x37, 0x04, 0x9c, 0x3d, 0x71, 0x20, 0x25, 0xca, 0x84, 0xea, 0x0a, 0xde, + 0xb2, 0x35, 0x31, 0x10, 0x8a, 0x28, 0xa2, 0xf3, 0x90, 0xb1, 0x71, 0xa5, 0x69, 0x69, 0xce, 0x5e, + 0xb9, 0x62, 0xe8, 0x8e, 0x5a, 0x71, 0xd8, 0x6b, 0xf4, 0xe2, 0xa1, 0x1b, 0xd7, 0xa7, 0xef, 0x60, + 0xb2, 0x86, 0x31, 0x64, 0x65, 0x54, 0x80, 0xe6, 0x18, 0x84, 0xb4, 0x50, 0xc5, 0x8e, 0xaa, 0xd5, + 0xed, 0x2c, 0xbb, 0x13, 0x26, 0x8a, 0xbe, 0xbe, 0x5c, 0x1b, 0xf2, 0x1f, 0x2f, 0x9c, 0x87, 0x8c, + 0x61, 0x62, 0x2b, 0xb0, 0x1d, 0x20, 0x85, 0x5b, 0x0e, 0x63, 0xc8, 0xca, 0xa8, 0x00, 0x89, 0xb8, + 0xe7, 0x90, 0x61, 0x16, 0x51, 0xdb, 0x6c, 0x6e, 0x79, 0xa7, 0x12, 0x13, 0x2d, 0xa3, 0x51, 0xd0, + 0xf7, 0x8a, 0x8f, 0x78, 0xdc, 0xc3, 0x74, 0xf2, 0x37, 0xbf, 0x74, 0x7c, 0x82, 0x9b, 0x86, 0x77, + 0x4a, 0x70, 0x11, 0xef, 0x91, 0xe1, 0xe7, 0xa8, 0x6b, 0x14, 0x93, 0x24, 0x59, 0xcf, 0xab, 0x5a, + 0x5d, 0x7c, 0x55, 0x45, 0xe1, 0x25, 0x94, 0x87, 0x41, 0xdb, 0x51, 0x9d, 0xa6, 0xcd, 0xaf, 0xda, + 0xc8, 0x9d, 0x4c, 0xad, 0x68, 0xe8, 0xd5, 0x75, 0x8a, 0xa9, 0x70, 0x0a, 0x54, 0x80, 0x41, 0x7e, + 0x7d, 0x29, 0xbe, 0x9f, 0x09, 0x4d, 0x6f, 0xa7, 0x31, 0x42, 0x64, 0x40, 0xa6, 0x8a, 0xeb, 0xb8, + 0xc6, 0x42, 0xe2, 0x8e, 0x6a, 0x61, 0xb6, 0xd7, 0x95, 0x2c, 0xce, 0xef, 0x67, 0xea, 0x71, 0xfd, + 0x84, 0x59, 0xc9, 0xca, 0xa8, 0x0b, 0x5a, 0xa7, 0x10, 0x74, 0x31, 0xf0, 0xd2, 0x82, 0x7f, 0x0d, + 0xf8, 0xae, 0x4e, 0x9d, 0xf6, 0x59, 0xb2, 0x48, 0x11, 0xfd, 0xef, 0x34, 0xce, 0x43, 0xa6, 0xa9, + 0x6f, 0x19, 0x3a, 0xfd, 0xe0, 0x01, 0xcf, 0x61, 0x49, 0x72, 0x17, 0xf5, 0x9b, 0x44, 0x18, 0x43, + 0x56, 0x46, 0x5d, 0xd0, 0x05, 0x96, 0xe9, 0x56, 0x61, 0xc4, 0xc3, 0xa2, 0xd3, 0x33, 0xd9, 0x73, + 0x7a, 0xde, 0xc9, 0xa7, 0xe7, 0x81, 0x70, 0x2b, 0xde, 0x0c, 0x1d, 0x76, 0x81, 0x84, 0x0c, 0x5d, + 0x00, 0xf0, 0x9c, 0x02, 0x4d, 0x15, 0x53, 0x9d, 0x87, 0xdb, 0xf3, 0x2c, 0x62, 0xaf, 0xcd, 0xa3, + 0x45, 0x57, 0x60, 0xbc, 0xa1, 0xe9, 0x65, 0x1b, 0xd7, 0xb7, 0xcb, 0x5c, 0xc1, 0x84, 0x25, 0xfd, + 0x5e, 0x5d, 0x71, 0xa1, 0x6f, 0x2b, 0xb8, 0x71, 0x7d, 0x3a, 0xc7, 0x7d, 0x66, 0x2b, 0x37, 0x59, + 0x19, 0x6b, 0x68, 0xfa, 0x3a, 0xae, 0x6f, 0xcf, 0xbb, 0xb0, 0x7c, 0xfa, 0xfd, 0xaf, 0x4c, 0x0f, + 0xf0, 0xf9, 0x39, 0x20, 0x9f, 0xa1, 0x47, 0x96, 0x7c, 0x5e, 0x61, 0x1b, 0x1d, 0x86, 0xa4, 0x2a, + 0x0a, 0xfc, 0x72, 0x97, 0x07, 0x60, 0xf3, 0xfa, 0xc5, 0xdf, 0x9f, 0x91, 0xe4, 0xdf, 0x94, 0x60, + 0x70, 0xfe, 0xd2, 0x9a, 0xaa, 0x59, 0x68, 0x11, 0xc6, 0x3c, 0xa3, 0x09, 0xce, 0xea, 0xc3, 0x37, + 0xae, 0x4f, 0x67, 0xc3, 0x76, 0xe5, 0x4e, 0x6b, 0xcf, 0x6c, 0xc5, 0xbc, 0x5e, 0xec, 0xb4, 0x5f, + 0x18, 0x60, 0xd5, 0x82, 0x22, 0xb7, 0xee, 0x26, 0x86, 0xba, 0x59, 0x82, 0x21, 0x26, 0xad, 0x8d, + 0xf2, 0x10, 0x37, 0xc9, 0x0f, 0x7e, 0x1e, 0x3b, 0xd5, 0xd1, 0x6e, 0x29, 0xbe, 0x7b, 0x7e, 0x44, + 0x48, 0xe4, 0x0f, 0x45, 0x00, 0xe6, 0x2f, 0x5d, 0xda, 0xb0, 0x34, 0xb3, 0x8e, 0x9d, 0x5b, 0xd9, + 0xf3, 0x0d, 0x38, 0xe0, 0xcb, 0x6b, 0xad, 0x4a, 0xa8, 0xf7, 0x33, 0x37, 0xae, 0x4f, 0x1f, 0x0e, + 0xf7, 0xde, 0x87, 0x26, 0x2b, 0xe3, 0x5e, 0x86, 0x6b, 0x55, 0xda, 0x72, 0xad, 0xda, 0x8e, 0xcb, + 0x35, 0xda, 0x99, 0xab, 0x0f, 0xcd, 0xcf, 0x75, 0xde, 0x76, 0xda, 0xab, 0x76, 0x1d, 0x52, 0x9e, + 0x4a, 0x6c, 0x34, 0x0f, 0x09, 0x87, 0xff, 0xe6, 0x1a, 0x96, 0x3b, 0x6b, 0x58, 0x90, 0x71, 0x2d, + 0xbb, 0x94, 0xf2, 0x9f, 0x48, 0x00, 0x9e, 0xcd, 0xfe, 0x74, 0x9a, 0x18, 0xf1, 0xdd, 0xdc, 0xdd, + 0x46, 0xf7, 0x9b, 0x8c, 0x71, 0xc2, 0x90, 0x2a, 0x7f, 0x39, 0x02, 0xe3, 0x9b, 0xc2, 0xdf, 0xfc, + 0xd4, 0x77, 0x7f, 0x0d, 0x86, 0xb0, 0xee, 0x58, 0x1a, 0xed, 0x3f, 0x19, 0xe8, 0x87, 0x3a, 0x0d, + 0x74, 0x9b, 0x3e, 0xd1, 0xef, 0xf4, 0x89, 0xdd, 0x0e, 0xce, 0x26, 0xa4, 0x8d, 0x5f, 0x8c, 0x42, + 0xb6, 0x13, 0x25, 0x9a, 0x83, 0xd1, 0x8a, 0x85, 0xd9, 0x2d, 0x57, 0xff, 0x59, 0x4b, 0x31, 0xe7, + 0x65, 0x91, 0x21, 0x04, 0x59, 0x19, 0x11, 0x10, 0x1e, 0x33, 0x6a, 0x40, 0x52, 0x3c, 0x62, 0x71, + 0xf4, 0xb2, 0x6c, 0x7f, 0x39, 0x9d, 0xcc, 0x83, 0x86, 0x68, 0x24, 0xc8, 0x80, 0x45, 0x8d, 0x11, + 0x0f, 0x4a, 0xc3, 0x46, 0x1d, 0x46, 0x35, 0x5d, 0x73, 0x34, 0xb5, 0x5e, 0xde, 0x52, 0xeb, 0xaa, + 0x5e, 0xd9, 0x67, 0x72, 0xcc, 0x1c, 0x3d, 0x6f, 0x31, 0xc4, 0x49, 0x56, 0x46, 0x38, 0xa4, 0xc8, + 0x00, 0x68, 0x0e, 0x86, 0x44, 0x2b, 0xb1, 0xfd, 0x26, 0x15, 0x82, 0xd2, 0x97, 0xc2, 0xbd, 0x37, + 0x0a, 0x63, 0x0a, 0xae, 0xfe, 0x6c, 0x00, 0xfa, 0x1e, 0x80, 0x0b, 0x00, 0x6c, 0x7e, 0x13, 0x67, + 0xba, 0xbf, 0x31, 0x20, 0xce, 0x21, 0xc9, 0x88, 0xe7, 0x6d, 0xc7, 0x37, 0x0a, 0xd7, 0x23, 0x90, + 0xf6, 0x8f, 0xc2, 0x5f, 0xd0, 0xe0, 0x83, 0x16, 0x3d, 0xaf, 0x13, 0xe3, 0x5f, 0x32, 0xef, 0xe0, + 0x75, 0x5a, 0x6c, 0xb6, 0xbb, 0xbb, 0xf9, 0x9f, 0x11, 0x18, 0x5c, 0x53, 0x2d, 0xb5, 0x61, 0xa3, + 0x4a, 0x4b, 0x2e, 0x29, 0xf6, 0x85, 0x5a, 0xfe, 0x5f, 0x05, 0xdf, 0xb2, 0xe8, 0x91, 0x4a, 0x7e, + 0xb4, 0x4d, 0x2a, 0xf9, 0x56, 0x18, 0x21, 0xcb, 0x5c, 0xdf, 0x05, 0x31, 0xa2, 0xed, 0xe1, 0xe2, + 0x41, 0x8f, 0x4b, 0xb0, 0x9e, 0xad, 0x82, 0x2f, 0xf9, 0x6f, 0x88, 0xa5, 0x08, 0x86, 0xe7, 0x84, + 0x09, 0xf9, 0xa4, 0xb7, 0xdc, 0xf4, 0x55, 0xca, 0x0a, 0x34, 0xd4, 0xab, 0x25, 0x56, 0x40, 0x4b, + 0x80, 0x76, 0xdc, 0x0d, 0x8e, 0xb2, 0xa7, 0x4e, 0x42, 0x7f, 0xe4, 0xc6, 0xf5, 0xe9, 0x83, 0x8c, + 0xbe, 0x15, 0x47, 0x56, 0xc6, 0x3c, 0xa0, 0xe0, 0x76, 0x0a, 0x80, 0xf4, 0xab, 0xcc, 0x5e, 0xc4, + 0xb0, 0x65, 0xcc, 0x81, 0x1b, 0xd7, 0xa7, 0xc7, 0x18, 0x17, 0xaf, 0x4e, 0x56, 0x92, 0xa4, 0x30, + 0x4f, 0x7e, 0xfb, 0x2c, 0xfb, 0xd3, 0x12, 0x20, 0xcf, 0xbd, 0x2b, 0xd8, 0x36, 0xc9, 0xba, 0x8b, + 0x4c, 0x22, 0x5f, 0x5e, 0x2c, 0x75, 0x4f, 0xb5, 0x3d, 0x7a, 0x91, 0x6a, 0xfb, 0x66, 0xca, 0xe3, + 0x9e, 0x3f, 0x8c, 0xf4, 0x7a, 0x23, 0xc2, 0x4d, 0x24, 0xec, 0x05, 0x07, 0xe4, 0xdf, 0x95, 0xe0, + 0x60, 0x8b, 0x45, 0xb9, 0xc2, 0xfe, 0x25, 0x40, 0x96, 0xaf, 0x92, 0x7f, 0x96, 0x96, 0x09, 0xbd, + 0x6f, 0x03, 0x1d, 0xb3, 0xda, 0x78, 0xdb, 0x5b, 0xe0, 0xd2, 0xd9, 0xd3, 0xa3, 0x7f, 0x2e, 0xc1, + 0x84, 0xbf, 0x65, 0xb7, 0x0f, 0x2b, 0x90, 0xf6, 0x37, 0xcc, 0xa5, 0xbf, 0xbb, 0x1f, 0xe9, 0xb9, + 0xe0, 0x01, 0x7a, 0xf4, 0xb4, 0x37, 0x53, 0xd9, 0xfe, 0xd7, 0xc3, 0x7d, 0x2b, 0x42, 0xc8, 0x14, + 0x9e, 0xb1, 0x31, 0x3a, 0x14, 0x7f, 0x2a, 0x41, 0x6c, 0xcd, 0x30, 0xea, 0xe8, 0x79, 0x18, 0xd3, + 0x0d, 0xa7, 0x4c, 0x8c, 0x0a, 0x57, 0xfd, 0xcf, 0x80, 0x92, 0xc5, 0x27, 0xfb, 0xd6, 0xcf, 0x0f, + 0xae, 0x4f, 0xb7, 0x72, 0x51, 0x46, 0x75, 0xc3, 0x29, 0x52, 0x08, 0x7f, 0x09, 0x74, 0x05, 0x86, + 0x83, 0xed, 0x30, 0xdf, 0xa8, 0xec, 0xa7, 0x9d, 0x20, 0x87, 0x1b, 0xd7, 0xa7, 0x27, 0xbc, 0x29, + 0xe2, 0x82, 0x65, 0x25, 0xbd, 0xe5, 0x6b, 0x98, 0xdd, 0x96, 0xfd, 0xd1, 0x2b, 0xd3, 0xd2, 0xb1, + 0x2f, 0x4b, 0x00, 0xde, 0x16, 0x02, 0x7a, 0x10, 0xee, 0x28, 0xae, 0xae, 0xcc, 0x97, 0xd7, 0x37, + 0x0a, 0x1b, 0x9b, 0xeb, 0xc1, 0xd7, 0x32, 0xe2, 0xb4, 0xd1, 0x36, 0x71, 0x45, 0xdb, 0xd6, 0x70, + 0x15, 0xdd, 0x0b, 0x13, 0x41, 0x6c, 0x52, 0x2a, 0xcd, 0x67, 0xa4, 0x5c, 0xfa, 0xa5, 0x6b, 0x33, + 0x09, 0x96, 0x68, 0xe1, 0x2a, 0x3a, 0x0a, 0x07, 0x5a, 0xf1, 0x16, 0x57, 0x16, 0x32, 0x91, 0xdc, + 0xf0, 0x4b, 0xd7, 0x66, 0x92, 0x6e, 0x46, 0x86, 0x64, 0x40, 0x7e, 0x4c, 0xce, 0x2f, 0x9a, 0x83, + 0x97, 0xae, 0xcd, 0x0c, 0x32, 0xdd, 0xe5, 0x62, 0xef, 0xff, 0xf4, 0xd4, 0xc0, 0xad, 0x7c, 0x53, + 0xf3, 0x87, 0x43, 0x1d, 0xb7, 0xa9, 0x6b, 0x58, 0xc7, 0xb6, 0x66, 0xdf, 0xd4, 0x36, 0x75, 0x5f, + 0x5b, 0xdf, 0xf2, 0xbf, 0x8e, 0x43, 0x7a, 0x81, 0xb5, 0x42, 0xc6, 0x00, 0xa3, 0xb7, 0xc0, 0xa0, + 0x49, 0x43, 0x86, 0x7b, 0x21, 0xa1, 0x83, 0x85, 0xb3, 0xc0, 0xe2, 0xde, 0x8a, 0x65, 0x61, 0x46, + 0xe7, 0xa7, 0x63, 0xec, 0xb6, 0xae, 0x77, 0xff, 0x34, 0xdd, 0xef, 0xc6, 0x0d, 0xcb, 0x4a, 0xf8, + 0x1e, 0x49, 0x98, 0x95, 0xcc, 0xce, 0xd8, 0x36, 0x08, 0x84, 0x5d, 0xb1, 0xfd, 0x05, 0x09, 0x0e, + 0x50, 0x2c, 0x2f, 0xde, 0x52, 0x4c, 0x91, 0xbf, 0x1f, 0xeb, 0x24, 0xfd, 0x92, 0x6a, 0x7b, 0xe7, + 0x66, 0xec, 0x52, 0xec, 0xdd, 0x3c, 0xde, 0x1d, 0xf6, 0x35, 0x1e, 0x66, 0x2b, 0x2b, 0xe3, 0xf5, + 0x16, 0x4a, 0x1b, 0x2d, 0x04, 0x6e, 0x45, 0xc7, 0xf6, 0xb7, 0x35, 0xee, 0xbf, 0x21, 0xfd, 0x14, + 0xa4, 0x3c, 0xbf, 0x61, 0xf3, 0xff, 0x96, 0xd5, 0x7f, 0x88, 0xf0, 0x13, 0xa3, 0xf7, 0x49, 0x70, + 0xc0, 0x0b, 0xda, 0x7e, 0xb6, 0xec, 0xbf, 0x8a, 0x3d, 0xb0, 0x8f, 0xb5, 0x4d, 0x58, 0x39, 0x6d, + 0xf9, 0xca, 0xca, 0x44, 0xb3, 0x95, 0x94, 0xac, 0xaa, 0x86, 0xfd, 0x5e, 0xd4, 0xce, 0x8a, 0x0f, + 0xe7, 0xf6, 0xef, 0x86, 0x83, 0x0c, 0xd8, 0x7f, 0x3a, 0x32, 0x0d, 0xcb, 0xc1, 0x55, 0xba, 0xb3, + 0x96, 0x50, 0xdc, 0xb2, 0xbc, 0x02, 0xa8, 0x75, 0x70, 0xc3, 0xb7, 0xc0, 0xbd, 0xf7, 0x7d, 0x68, + 0x02, 0xe2, 0xfe, 0x7b, 0xd2, 0xac, 0x90, 0x4f, 0xbc, 0x9f, 0x47, 0xc9, 0x5b, 0x39, 0xd3, 0xbf, + 0x13, 0x81, 0x63, 0xfe, 0x53, 0x9c, 0x77, 0x34, 0xb1, 0xb5, 0xe7, 0x4e, 0x4c, 0x53, 0xad, 0x69, + 0xba, 0xff, 0x15, 0xd9, 0x41, 0x7f, 0x48, 0xa7, 0xb8, 0x42, 0x45, 0xf2, 0xfb, 0x25, 0x48, 0xad, + 0xa9, 0x35, 0xac, 0xe0, 0x77, 0x34, 0xb1, 0xed, 0xb4, 0x79, 0xa5, 0x33, 0x09, 0x83, 0xc6, 0xf6, + 0xb6, 0x38, 0x4e, 0x8c, 0x29, 0xbc, 0x44, 0xba, 0x5b, 0xd7, 0x1a, 0x1a, 0x3b, 0x55, 0x8f, 0x29, + 0xac, 0x80, 0xa6, 0x21, 0x55, 0x31, 0x9a, 0x3a, 0x9f, 0x6d, 0xd9, 0x98, 0xf8, 0x38, 0x55, 0x53, + 0x67, 0xb3, 0x8d, 0xe8, 0xcf, 0xc2, 0x97, 0xb1, 0x65, 0xb3, 0xcf, 0xf1, 0x26, 0x14, 0x51, 0x94, + 0xcf, 0x41, 0x9a, 0x49, 0xc2, 0x63, 0xee, 0x41, 0x48, 0xd0, 0x03, 0x6b, 0x4f, 0x9e, 0x21, 0x52, + 0xbe, 0xc8, 0xde, 0xfa, 0x30, 0xfe, 0x4c, 0x24, 0x56, 0x28, 0x3e, 0xd1, 0x51, 0xc1, 0x77, 0x75, + 0xf5, 0x15, 0x4c, 0x7d, 0xae, 0x72, 0x7f, 0x27, 0x0e, 0x07, 0xf8, 0xf1, 0x9a, 0x6a, 0x6a, 0x27, + 0x76, 0x1c, 0x47, 0x3c, 0x3b, 0x03, 0x9e, 0xe2, 0xaa, 0xa6, 0x26, 0xef, 0x41, 0xec, 0x82, 0xe3, + 0x98, 0xe8, 0x18, 0xc4, 0xad, 0x66, 0x1d, 0x8b, 0x0d, 0x1d, 0x77, 0x8f, 0x5d, 0x35, 0xb5, 0x59, + 0x82, 0xa0, 0x34, 0xeb, 0x58, 0x61, 0x28, 0xa8, 0x04, 0xd3, 0xdb, 0xcd, 0x7a, 0x7d, 0xaf, 0x5c, + 0xc5, 0xf4, 0x5f, 0x0b, 0xba, 0xff, 0x9c, 0x07, 0x5f, 0x35, 0x55, 0xf1, 0x89, 0x5f, 0xa2, 0x93, + 0xc3, 0x14, 0x6d, 0x9e, 0x62, 0x89, 0x7f, 0xcc, 0x53, 0x12, 0x38, 0xf2, 0x77, 0x22, 0x90, 0x10, + 0xac, 0xe9, 0xbb, 0x1b, 0x5c, 0xc7, 0x15, 0xc7, 0x10, 0x27, 0x20, 0x6e, 0x19, 0x21, 0x88, 0xd6, + 0xf8, 0xb8, 0x25, 0x2f, 0x0c, 0x28, 0xa4, 0x40, 0x60, 0xee, 0x6b, 0x28, 0x02, 0x33, 0x9b, 0x64, + 0x28, 0x63, 0xa6, 0x21, 0x56, 0x63, 0x17, 0x06, 0x14, 0x5a, 0x42, 0x59, 0x18, 0x24, 0x53, 0xc5, + 0x61, 0x03, 0x45, 0xe0, 0xbc, 0x8c, 0x26, 0x21, 0x6e, 0xaa, 0x4e, 0x85, 0xdd, 0x57, 0x20, 0x15, + 0xac, 0x88, 0x1e, 0x85, 0x41, 0xf6, 0x05, 0x8b, 0xf0, 0xff, 0xed, 0x22, 0xca, 0x60, 0x9f, 0x0a, + 0x25, 0x72, 0xaf, 0xa9, 0x8e, 0x83, 0x2d, 0x9d, 0x30, 0x64, 0xe8, 0x08, 0x41, 0x6c, 0xcb, 0xa8, + 0xee, 0xf1, 0xff, 0x25, 0x46, 0x7f, 0xf3, 0x7f, 0x5e, 0x44, 0x4d, 0xa1, 0x4c, 0x2b, 0xd9, 0xbf, + 0x50, 0x4c, 0x0b, 0x60, 0x91, 0x20, 0x95, 0x60, 0x5c, 0xad, 0x56, 0x35, 0xf6, 0x6f, 0xbd, 0xca, + 0x5b, 0x1a, 0x75, 0x19, 0x36, 0xfd, 0x07, 0x99, 0x9d, 0xc6, 0x02, 0x79, 0x04, 0x45, 0x8e, 0x5f, + 0x4c, 0xc2, 0x90, 0xc9, 0x84, 0x92, 0xcf, 0xc2, 0x58, 0x8b, 0xa4, 0x44, 0xbe, 0x5d, 0x4d, 0xaf, + 0x8a, 0x27, 0x62, 0xe4, 0x37, 0x81, 0xd1, 0x8f, 0xfb, 0xb2, 0xb3, 0x25, 0xfa, 0xbb, 0xf8, 0x9e, + 0xce, 0x2f, 0x09, 0x47, 0x7c, 0x2f, 0x09, 0x55, 0x53, 0x2b, 0x26, 0x29, 0x7f, 0xfe, 0x7e, 0xb0, + 0xd0, 0xfa, 0x7e, 0xb0, 0x86, 0x75, 0x11, 0x89, 0x49, 0x95, 0x6a, 0x6a, 0x36, 0x35, 0x47, 0xef, + 0x63, 0xc3, 0xf6, 0x59, 0xdf, 0x6f, 0xfa, 0x9c, 0x30, 0xb6, 0x50, 0x58, 0x5b, 0x74, 0xed, 0xf8, + 0xab, 0x11, 0x38, 0xec, 0xb3, 0x63, 0x1f, 0x72, 0xab, 0x39, 0xe7, 0xda, 0x5b, 0x7c, 0x1f, 0xdf, + 0x71, 0xb8, 0x08, 0x31, 0x82, 0x8f, 0x7a, 0xfc, 0x6b, 0xa1, 0xec, 0xe7, 0xbf, 0xf9, 0xcf, 0xe4, + 0xe0, 0x29, 0x54, 0x60, 0x54, 0x28, 0x93, 0xe2, 0xfb, 0xfa, 0xd7, 0x5f, 0xc6, 0xfb, 0xce, 0xb2, + 0x7d, 0xeb, 0xd4, 0x18, 0xd6, 0xe1, 0x77, 0x4f, 0x77, 0x7c, 0xec, 0xcf, 0xfc, 0x68, 0xf7, 0x84, + 0x6a, 0x1f, 0x4e, 0xba, 0xd3, 0xab, 0xaa, 0x6e, 0x23, 0xd8, 0x67, 0x6a, 0x76, 0x15, 0x26, 0x9f, + 0x26, 0x6d, 0x7b, 0xcb, 0x63, 0xe1, 0xed, 0x27, 0xdd, 0xd3, 0x39, 0x89, 0xff, 0x7f, 0x52, 0x96, + 0x3e, 0x9f, 0x07, 0xf0, 0xe4, 0xe3, 0x0b, 0xc3, 0x7b, 0x67, 0x3b, 0x46, 0x91, 0x59, 0x5f, 0x04, + 0x51, 0x7c, 0x94, 0xf2, 0x6f, 0x48, 0x70, 0x47, 0x4b, 0xd3, 0xdc, 0xbd, 0x2f, 0xb4, 0x79, 0x00, + 0x76, 0x53, 0xa9, 0xce, 0x42, 0x1b, 0x61, 0xef, 0xeb, 0x29, 0x2c, 0x93, 0x22, 0x20, 0xed, 0x93, + 0x70, 0x20, 0x28, 0xac, 0x50, 0xd3, 0x3d, 0x30, 0x12, 0xdc, 0xf5, 0xe5, 0xea, 0x1a, 0x0e, 0xec, + 0xfb, 0xca, 0xe5, 0xb0, 0x9e, 0xdd, 0xbe, 0x96, 0x20, 0xe9, 0xa2, 0xf2, 0x74, 0xb8, 0xef, 0xae, + 0x7a, 0x94, 0xf2, 0x87, 0x24, 0x98, 0x09, 0xb6, 0xe0, 0xcb, 0x8e, 0xf6, 0x27, 0xec, 0x2d, 0x1b, + 0xe2, 0xd7, 0x24, 0xb8, 0xb3, 0x8b, 0x4c, 0x5c, 0x01, 0x2f, 0xc0, 0x84, 0x6f, 0x07, 0x40, 0xb8, + 0x70, 0x31, 0xec, 0xc7, 0x7a, 0xe7, 0xa5, 0xee, 0xaa, 0xf7, 0x10, 0x51, 0xca, 0xe7, 0xbe, 0x3b, + 0x3d, 0xde, 0x5a, 0x67, 0x2b, 0xe3, 0xad, 0x4b, 0xf7, 0x5b, 0x68, 0x1f, 0x2f, 0x4b, 0x70, 0x7f, + 0xb0, 0xab, 0x6d, 0x12, 0xdc, 0x37, 0x6b, 0x1c, 0xfe, 0xa3, 0x04, 0xc7, 0xfa, 0x11, 0x8e, 0x0f, + 0xc8, 0x16, 0x8c, 0x7b, 0xa9, 0x77, 0x78, 0x3c, 0xf6, 0x95, 0xd0, 0x33, 0x2b, 0x45, 0x2e, 0xb7, + 0xdb, 0xa0, 0x78, 0x93, 0x4f, 0x2c, 0xff, 0x90, 0xbb, 0x4a, 0x0e, 0xee, 0xe2, 0x0a, 0x25, 0x07, + 0xf6, 0x71, 0xdb, 0x8c, 0x45, 0xa4, 0xcd, 0x58, 0x78, 0xb9, 0xba, 0x7c, 0x99, 0xfb, 0xad, 0x36, + 0x7b, 0x6f, 0x6f, 0x87, 0xf1, 0x36, 0xa6, 0xcc, 0x67, 0xf5, 0x3e, 0x2c, 0x59, 0x41, 0xad, 0xc6, + 0x2a, 0xef, 0xc1, 0x34, 0x6d, 0xb7, 0x8d, 0xa2, 0x6f, 0x77, 0x97, 0x1b, 0xdc, 0xb7, 0xb4, 0x6d, + 0x9a, 0xf7, 0x7d, 0x11, 0x06, 0xd9, 0x38, 0xf3, 0xee, 0xde, 0x84, 0xa1, 0x70, 0x06, 0xf2, 0xc7, + 0x85, 0x2f, 0x9b, 0x17, 0x62, 0xb7, 0x9f, 0x43, 0xfd, 0xf4, 0xf5, 0x16, 0xcd, 0x21, 0x9f, 0x32, + 0xbe, 0x2d, 0xbc, 0x5a, 0x7b, 0xe9, 0xb8, 0x3a, 0x2a, 0xb7, 0xcc, 0xab, 0x31, 0xdd, 0xdc, 0x5e, + 0xf7, 0xf5, 0x19, 0xe1, 0xbe, 0xdc, 0x3e, 0xf5, 0x70, 0x5f, 0x6f, 0x8e, 0xea, 0x5d, 0x47, 0xd6, + 0x43, 0xcc, 0x3f, 0x8b, 0x8e, 0xec, 0x47, 0x12, 0x1c, 0xa4, 0x7d, 0xf3, 0xef, 0x4c, 0xec, 0x57, + 0xe5, 0x0f, 0x02, 0xb2, 0xad, 0x4a, 0xb9, 0xed, 0xec, 0xce, 0xd8, 0x56, 0xe5, 0x52, 0x20, 0xbe, + 0x3c, 0x08, 0xa8, 0x1a, 0xd8, 0x7f, 0xa2, 0xd8, 0xec, 0xd6, 0x5b, 0xa6, 0xea, 0xdb, 0xde, 0x68, + 0x33, 0x9c, 0xb1, 0x5b, 0x30, 0x9c, 0xdf, 0x92, 0x20, 0xd7, 0xae, 0xcb, 0x7c, 0xf8, 0x34, 0x98, + 0x0c, 0x1c, 0x0e, 0x84, 0x47, 0xf0, 0xc1, 0x7e, 0xf6, 0x76, 0x42, 0xd3, 0xe8, 0x80, 0x85, 0x6f, + 0x77, 0x1e, 0x30, 0x1d, 0xb4, 0xd0, 0xd6, 0xcc, 0xfa, 0x4d, 0x9b, 0x3e, 0x5f, 0x6a, 0xf1, 0xab, + 0x7f, 0x26, 0x72, 0xef, 0xab, 0x30, 0xd5, 0x41, 0xea, 0xdb, 0x1d, 0xf7, 0x76, 0x3a, 0x0e, 0xe6, + 0xad, 0x4e, 0xdf, 0x4f, 0xf1, 0x99, 0x10, 0xbc, 0x40, 0xed, 0x5b, 0x8b, 0xb5, 0x7b, 0x18, 0x2b, + 0xbf, 0x0d, 0x0e, 0xb5, 0xa5, 0xe2, 0xb2, 0xe5, 0x21, 0xb6, 0xa3, 0xd9, 0x0e, 0x17, 0xeb, 0xde, + 0x4e, 0x62, 0x85, 0xa8, 0x29, 0x8d, 0x8c, 0x20, 0x43, 0x59, 0xaf, 0x19, 0x46, 0x9d, 0x8b, 0x21, + 0x5f, 0x84, 0x31, 0x1f, 0x8c, 0x37, 0x72, 0x06, 0x62, 0xa6, 0xc1, 0x3f, 0xfa, 0x92, 0x3a, 0x79, + 0xb8, 0xe3, 0x4e, 0xbe, 0x61, 0xd4, 0x79, 0xb7, 0x29, 0xbe, 0x3c, 0x01, 0x88, 0x31, 0xa3, 0x9b, + 0xfa, 0xa2, 0x89, 0x75, 0x18, 0x0f, 0x40, 0x79, 0x23, 0x6f, 0xe8, 0xc0, 0xe0, 0xe4, 0x0f, 0x0e, + 0x40, 0x9c, 0x72, 0x45, 0x1f, 0x93, 0x02, 0x1f, 0x64, 0x9b, 0xed, 0xc4, 0xa6, 0xfd, 0x9a, 0x38, + 0x77, 0xa2, 0x6f, 0x7c, 0x9e, 0xb3, 0x1d, 0x7b, 0xcf, 0xbf, 0xfd, 0xfe, 0x87, 0x23, 0x77, 0x23, + 0xf9, 0x44, 0x87, 0xd5, 0xb8, 0x6f, 0xbe, 0x7c, 0x36, 0xf0, 0x45, 0x91, 0xe3, 0xfd, 0x35, 0x25, + 0x24, 0x9b, 0xed, 0x17, 0x9d, 0x0b, 0x76, 0x96, 0x0a, 0x76, 0x1a, 0x3d, 0xd2, 0x5b, 0xb0, 0x13, + 0xef, 0x0c, 0x4e, 0x9a, 0x77, 0xa1, 0x7f, 0x27, 0xc1, 0x44, 0xbb, 0x25, 0x1d, 0x7a, 0xac, 0x3f, + 0x29, 0x5a, 0x53, 0x8a, 0xdc, 0xe3, 0x37, 0x41, 0xc9, 0xbb, 0xb2, 0x40, 0xbb, 0x52, 0x40, 0xe7, + 0x6e, 0xa2, 0x2b, 0x27, 0xfc, 0x1b, 0xfe, 0xff, 0x47, 0x82, 0x23, 0x5d, 0x57, 0x48, 0xa8, 0xd0, + 0x9f, 0x94, 0x5d, 0x72, 0xa7, 0x5c, 0xf1, 0x8d, 0xb0, 0xe0, 0x3d, 0x7e, 0x9a, 0xf6, 0xf8, 0x22, + 0x5a, 0xbc, 0x99, 0x1e, 0xb7, 0x3d, 0x55, 0x41, 0x5f, 0x0b, 0x5e, 0x1c, 0xec, 0x6e, 0x4e, 0x2d, + 0x0b, 0x8f, 0x1e, 0x13, 0xa3, 0x35, 0xa9, 0x95, 0x9f, 0xa5, 0x5d, 0x50, 0xd0, 0xda, 0x1b, 0x1c, + 0xb4, 0x13, 0xef, 0x0c, 0x3a, 0xfe, 0x77, 0xa1, 0xff, 0x25, 0xb5, 0xbf, 0x0c, 0xf8, 0x68, 0x57, + 0x11, 0x3b, 0x2f, 0xaa, 0x72, 0x8f, 0xed, 0x9f, 0x90, 0x77, 0xb2, 0x41, 0x3b, 0x59, 0x43, 0xf8, + 0x56, 0x77, 0xb2, 0xed, 0x20, 0xa2, 0x6f, 0x48, 0x30, 0xd1, 0x6e, 0x4d, 0xd2, 0x63, 0x5a, 0x76, + 0x59, 0x64, 0xf5, 0x98, 0x96, 0xdd, 0x16, 0x40, 0xf2, 0x5b, 0x68, 0xe7, 0xcf, 0xa0, 0x53, 0x9d, + 0x3a, 0xdf, 0x75, 0x14, 0xc9, 0x5c, 0xec, 0x9a, 0xe4, 0xf7, 0x98, 0x8b, 0xfd, 0xac, 0x63, 0x7a, + 0xcc, 0xc5, 0xbe, 0xd6, 0x18, 0xbd, 0xe7, 0xa2, 0xdb, 0xb3, 0x3e, 0x87, 0xd1, 0x46, 0x5f, 0x95, + 0x60, 0x38, 0x90, 0x11, 0xa3, 0x87, 0xbb, 0x0a, 0xda, 0x6e, 0xc1, 0x90, 0x3b, 0xb9, 0x1f, 0x12, + 0xde, 0x97, 0x45, 0xda, 0x97, 0x39, 0x54, 0xb8, 0x99, 0xbe, 0x04, 0x0f, 0x4f, 0xbf, 0x25, 0xc1, + 0x78, 0x9b, 0x2c, 0xb3, 0xc7, 0x2c, 0xec, 0x9c, 0x34, 0xe7, 0x1e, 0xdb, 0x3f, 0x21, 0xef, 0xd5, + 0x79, 0xda, 0xab, 0xb7, 0xa2, 0x27, 0x6f, 0xa6, 0x57, 0xbe, 0xf8, 0x7c, 0xdd, 0xbb, 0x6f, 0xe5, + 0x6b, 0x07, 0x9d, 0xd9, 0xa7, 0x60, 0xa2, 0x43, 0x8f, 0xee, 0x9b, 0x8e, 0xf7, 0xe7, 0x19, 0xda, + 0x9f, 0xa7, 0xd1, 0xea, 0x1b, 0xeb, 0x4f, 0x6b, 0x58, 0xff, 0x62, 0xeb, 0x03, 0xbe, 0xee, 0x56, + 0xd4, 0x36, 0x59, 0xcd, 0x3d, 0xb2, 0x2f, 0x1a, 0xde, 0xa9, 0xc7, 0x68, 0xa7, 0x4e, 0xa2, 0x87, + 0x3a, 0x75, 0xca, 0x77, 0xa9, 0x4e, 0xd3, 0xb7, 0x8d, 0x13, 0xef, 0x64, 0x29, 0xf0, 0xbb, 0xd0, + 0xbb, 0xc5, 0xad, 0xa6, 0xa3, 0x5d, 0xdb, 0xf5, 0xe5, 0xb1, 0xb9, 0xfb, 0xfb, 0xc0, 0xe4, 0x72, + 0xdd, 0x4d, 0xe5, 0x9a, 0x42, 0x87, 0x3b, 0xc9, 0x45, 0x72, 0x59, 0xf4, 0x01, 0xc9, 0xbd, 0x03, + 0x79, 0xac, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0x7b, 0xa0, 0x2f, 0x5c, 0x2e, 0xc9, 0xbd, 0x54, 0x92, + 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, 0xc2, 0xab, 0x04, 0x3f, 0x98, 0x84, 0xe9, 0x0e, + 0x8d, 0x39, 0x57, 0x7b, 0x1c, 0x6f, 0x75, 0x79, 0xc0, 0xda, 0xf3, 0x81, 0xea, 0xad, 0xfe, 0x0e, + 0x76, 0x9f, 0x67, 0x61, 0x5f, 0x8f, 0x01, 0x5a, 0xb6, 0x6b, 0x73, 0x16, 0x66, 0xff, 0x8e, 0x97, + 0x4f, 0xf0, 0xd0, 0xb3, 0x2d, 0xe9, 0x0d, 0x3d, 0xdb, 0x5a, 0x0e, 0x3c, 0x84, 0x8a, 0xec, 0xef, + 0x89, 0x65, 0xdf, 0xaf, 0xa1, 0xa2, 0xb7, 0xfb, 0x35, 0x54, 0xfb, 0x5b, 0xd4, 0xb1, 0x5b, 0xf7, + 0xb4, 0x22, 0x7e, 0x53, 0x4f, 0x2b, 0xce, 0xc3, 0x20, 0x7f, 0xd5, 0x38, 0xd8, 0xe5, 0x55, 0x63, + 0xb6, 0xe3, 0xd3, 0x45, 0x4e, 0x8d, 0x4e, 0x8b, 0x4f, 0x43, 0x0f, 0xf5, 0x77, 0xef, 0x95, 0x7f, + 0x3b, 0xda, 0xdb, 0x38, 0x38, 0x0c, 0xb9, 0x56, 0x4b, 0x72, 0xa7, 0xf2, 0x07, 0xa2, 0x90, 0x59, + 0xb6, 0x6b, 0xa5, 0xaa, 0xe6, 0xdc, 0x26, 0x33, 0x3b, 0xd7, 0xf9, 0xb9, 0x0a, 0xba, 0x71, 0x7d, + 0x7a, 0x84, 0xe9, 0xb4, 0x8b, 0x26, 0x77, 0x60, 0x34, 0xf4, 0x20, 0x98, 0x1b, 0xd5, 0xb9, 0x7d, + 0x3e, 0x49, 0x0e, 0x71, 0x91, 0xe9, 0x13, 0x03, 0x9f, 0x55, 0x23, 0xbb, 0xbd, 0x09, 0x33, 0x5b, + 0x9a, 0xbb, 0x4d, 0x8f, 0xf9, 0xbc, 0x91, 0xca, 0x41, 0x36, 0x3c, 0x14, 0xee, 0x38, 0xbd, 0x2a, + 0x41, 0x6a, 0xd9, 0x16, 0x69, 0x1f, 0xfe, 0x29, 0x7d, 0x4f, 0xf4, 0xa8, 0xfb, 0xef, 0x13, 0xa2, + 0xfd, 0x59, 0xab, 0xff, 0x5f, 0x2a, 0x0c, 0xc8, 0x07, 0x60, 0xdc, 0xd7, 0x47, 0xb7, 0xef, 0xdf, + 0x8c, 0x50, 0x67, 0x58, 0xc4, 0x35, 0x4d, 0x77, 0xb3, 0x45, 0xfc, 0x17, 0xf5, 0xf5, 0x84, 0xa7, + 0xe3, 0xd8, 0xcd, 0xe8, 0x78, 0x97, 0xba, 0x83, 0x90, 0x2e, 0xdd, 0xcd, 0xad, 0xe5, 0xd6, 0xd7, + 0x3c, 0xd2, 0x3e, 0xbe, 0x3b, 0x13, 0x7a, 0xb3, 0x23, 0x7f, 0x5f, 0x82, 0xe1, 0x65, 0xbb, 0xb6, + 0xa9, 0x57, 0xff, 0x5c, 0xdb, 0xed, 0x36, 0x1c, 0x08, 0xf4, 0xf2, 0x36, 0xa9, 0xf3, 0xe4, 0xcb, + 0x31, 0x88, 0x2e, 0xdb, 0x35, 0xf4, 0x0e, 0x18, 0x0d, 0x67, 0x06, 0x1d, 0x73, 0xbd, 0x56, 0xdf, + 0xdf, 0x79, 0x3d, 0xd6, 0x39, 0x4e, 0xa0, 0x5d, 0x18, 0x0e, 0xc6, 0x88, 0xa3, 0x5d, 0x98, 0x04, + 0x30, 0x73, 0x0f, 0xf5, 0x8b, 0xe9, 0x36, 0xf6, 0x73, 0x90, 0x70, 0x1d, 0xdd, 0x5d, 0x5d, 0xa8, + 0x05, 0x52, 0xe7, 0xec, 0xb5, 0x8d, 0x3b, 0x21, 0xda, 0x0b, 0xbb, 0x92, 0x6e, 0xda, 0x0b, 0xe1, + 0x76, 0xd5, 0x5e, 0xa7, 0x69, 0xb5, 0x05, 0xe0, 0x9b, 0x03, 0xf7, 0x74, 0xe1, 0xe0, 0xa1, 0xe5, + 0x8e, 0xf7, 0x85, 0xe6, 0x1e, 0x2a, 0xdd, 0xba, 0x64, 0xfb, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x1b, 0xd2, 0x96, 0xe4, 0x9c, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/x/staking/types/validator.go b/x/staking/types/validator.go index e71c1cd5d1..8ba6a02822 100644 --- a/x/staking/types/validator.go +++ b/x/staking/types/validator.go @@ -7,8 +7,9 @@ import ( "strings" "time" - abci "github.com/line/ostracon/abci/types" - ocprotocrypto "github.com/line/ostracon/proto/ostracon/crypto" + abci "github.com/tendermint/tendermint/abci/types" + tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" + "gopkg.in/yaml.v2" "github.com/line/lbm-sdk/codec" @@ -478,16 +479,16 @@ func (v Validator) ConsPubKey() (cryptotypes.PubKey, error) { return pk, nil } -// OcConsPublicKey casts Validator.ConsensusPubkey to ocprotocrypto.PubKey. -func (v Validator) OcConsPublicKey() (ocprotocrypto.PublicKey, error) { +// OcConsPublicKey casts Validator.ConsensusPubkey to tmprotocrypto.PubKey. +func (v Validator) OcConsPublicKey() (tmprotocrypto.PublicKey, error) { pk, err := v.ConsPubKey() if err != nil { - return ocprotocrypto.PublicKey{}, err + return tmprotocrypto.PublicKey{}, err } tmPk, err := cryptocodec.ToOcProtoPublicKey(pk) if err != nil { - return ocprotocrypto.PublicKey{}, err + return tmprotocrypto.PublicKey{}, err } return tmPk, nil diff --git a/x/stakingplus/module/module.go b/x/stakingplus/module/module.go index ce4ba0b280..3529b32241 100644 --- a/x/stakingplus/module/module.go +++ b/x/stakingplus/module/module.go @@ -3,7 +3,8 @@ package module import ( "encoding/json" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/types/module" @@ -117,7 +118,7 @@ func (am AppModule) ConsensusVersion() uint64 { } // BeginBlock returns the begin blocker for the stakingplus module. -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) { am.impl.BeginBlock(ctx, req) } diff --git a/x/token/client/testutil/suite.go b/x/token/client/testutil/suite.go index 0797cc24f5..8bad6457ee 100644 --- a/x/token/client/testutil/suite.go +++ b/x/token/client/testutil/suite.go @@ -6,7 +6,7 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" diff --git a/x/token/module/module.go b/x/token/module/module.go index 4fba9841c0..8740819d55 100644 --- a/x/token/module/module.go +++ b/x/token/module/module.go @@ -6,8 +6,8 @@ import ( "fmt" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" diff --git a/x/upgrade/abci.go b/x/upgrade/abci.go index 128cf21bc2..2359b07165 100644 --- a/x/upgrade/abci.go +++ b/x/upgrade/abci.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" @@ -20,7 +20,7 @@ import ( // The purpose is to ensure the binary is switched EXACTLY at the desired block, and to allow // a migration to be executed if needed upon this switch (migration defined in the new binary) // skipUpgradeHeightArray is a set of block heights for which the upgrade must be skipped -func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ abci.RequestBeginBlock) { +func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ ocabci.RequestBeginBlock) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) plan, found := k.GetUpgradePlan(ctx) diff --git a/x/upgrade/abci_test.go b/x/upgrade/abci_test.go index b7340992e3..3dbfd4c5ae 100644 --- a/x/upgrade/abci_test.go +++ b/x/upgrade/abci_test.go @@ -9,9 +9,10 @@ import ( "github.com/stretchr/testify/require" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" + abci "github.com/tendermint/tendermint/abci/types" dbm "github.com/tendermint/tm-db" "github.com/line/lbm-sdk/simapp" @@ -98,7 +99,7 @@ func VerifyDoUpgrade(t *testing.T) { t.Log("Verify that a panic happens at the upgrade time/height") newCtx := s.ctx.WithBlockHeight(s.ctx.BlockHeight() + 1).WithBlockTime(time.Now()) - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} require.Panics(t, func() { s.module.BeginBlock(newCtx, req) }) @@ -116,7 +117,7 @@ func VerifyDoUpgrade(t *testing.T) { func VerifyDoUpgradeWithCtx(t *testing.T, newCtx sdk.Context, proposalName string) { t.Log("Verify that a panic happens at the upgrade time/height") - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} require.Panics(t, func() { s.module.BeginBlock(newCtx, req) }) @@ -142,7 +143,7 @@ func TestHaltIfTooNew(t *testing.T) { }) newCtx := s.ctx.WithBlockHeight(s.ctx.BlockHeight() + 1).WithBlockTime(time.Now()) - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} require.NotPanics(t, func() { s.module.BeginBlock(newCtx, req) }) @@ -159,7 +160,7 @@ func TestHaltIfTooNew(t *testing.T) { t.Log("Verify we no longer panic if the plan is on time") futCtx := s.ctx.WithBlockHeight(s.ctx.BlockHeight() + 3).WithBlockTime(time.Now()) - req = abci.RequestBeginBlock{Header: futCtx.BlockHeader()} + req = ocabci.RequestBeginBlock{Header: futCtx.BlockHeader()} require.NotPanics(t, func() { s.module.BeginBlock(futCtx, req) }) @@ -202,7 +203,7 @@ func TestCantApplySameUpgradeTwice(t *testing.T) { func TestNoSpuriousUpgrades(t *testing.T) { s := setupTest(10, map[int64]bool{}) t.Log("Verify that no upgrade panic is triggered in the BeginBlocker when we haven't scheduled an upgrade") - req := abci.RequestBeginBlock{Header: s.ctx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: s.ctx.BlockHeader()} require.NotPanics(t, func() { s.module.BeginBlock(s.ctx, req) }) @@ -261,7 +262,7 @@ func TestSkipUpgradeSkippingAll(t *testing.T) { newCtx := s.ctx - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} err := s.handler(s.ctx, &types.SoftwareUpgradeProposal{Title: "prop", Plan: types.Plan{Name: "test", Height: skipOne}}) require.NoError(t, err) @@ -298,7 +299,7 @@ func TestUpgradeSkippingOne(t *testing.T) { newCtx := s.ctx - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} err := s.handler(s.ctx, &types.SoftwareUpgradeProposal{Title: "prop", Plan: types.Plan{Name: "test", Height: skipOne}}) require.NoError(t, err) @@ -333,7 +334,7 @@ func TestUpgradeSkippingOnlyTwo(t *testing.T) { newCtx := s.ctx - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} err := s.handler(s.ctx, &types.SoftwareUpgradeProposal{Title: "prop", Plan: types.Plan{Name: "test", Height: skipOne}}) require.NoError(t, err) @@ -370,7 +371,7 @@ func TestUpgradeSkippingOnlyTwo(t *testing.T) { func TestUpgradeWithoutSkip(t *testing.T) { s := setupTest(10, map[int64]bool{}) newCtx := s.ctx.WithBlockHeight(s.ctx.BlockHeight() + 1).WithBlockTime(time.Now()) - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} err := s.handler(s.ctx, &types.SoftwareUpgradeProposal{Title: "prop", Plan: types.Plan{Name: "test", Height: s.ctx.BlockHeight() + 1}}) require.NoError(t, err) t.Log("Verify if upgrade happens without skip upgrade") @@ -416,20 +417,20 @@ func TestBinaryVersion(t *testing.T) { testCases := []struct { name string - preRun func() (sdk.Context, abci.RequestBeginBlock) + preRun func() (sdk.Context, ocabci.RequestBeginBlock) expectPanic bool }{ { "test not panic: no scheduled upgrade or applied upgrade is present", - func() (sdk.Context, abci.RequestBeginBlock) { - req := abci.RequestBeginBlock{Header: s.ctx.BlockHeader()} + func() (sdk.Context, ocabci.RequestBeginBlock) { + req := ocabci.RequestBeginBlock{Header: s.ctx.BlockHeader()} return s.ctx, req }, false, }, { "test not panic: upgrade handler is present for last applied upgrade", - func() (sdk.Context, abci.RequestBeginBlock) { + func() (sdk.Context, ocabci.RequestBeginBlock) { s.keeper.SetUpgradeHandler("test0", func(_ sdk.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { return vm, nil }) @@ -443,19 +444,19 @@ func TestBinaryVersion(t *testing.T) { Height: 12, }) - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} return newCtx, req }, false, }, { "test panic: upgrade needed", - func() (sdk.Context, abci.RequestBeginBlock) { + func() (sdk.Context, ocabci.RequestBeginBlock) { err := s.handler(s.ctx, &types.SoftwareUpgradeProposal{Title: "Upgrade test", Plan: types.Plan{Name: "test2", Height: 13}}) require.NoError(t, err) newCtx := s.ctx.WithBlockHeight(13) - req := abci.RequestBeginBlock{Header: newCtx.BlockHeader()} + req := ocabci.RequestBeginBlock{Header: newCtx.BlockHeader()} return newCtx, req }, true, diff --git a/x/upgrade/keeper/querier.go b/x/upgrade/keeper/querier.go index a2e7f4aedf..888763191c 100644 --- a/x/upgrade/keeper/querier.go +++ b/x/upgrade/keeper/querier.go @@ -7,7 +7,7 @@ import ( "github.com/line/lbm-sdk/x/upgrade/types" - abci "github.com/line/ostracon/abci/types" + abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/upgrade/module.go b/x/upgrade/module.go index e4979d86fd..34bfcdb583 100644 --- a/x/upgrade/module.go +++ b/x/upgrade/module.go @@ -5,8 +5,9 @@ import ( "encoding/json" "github.com/grpc-ecosystem/grpc-gateway/runtime" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + abci "github.com/tendermint/tendermint/abci/types" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" @@ -127,6 +128,6 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock calls the upgrade module hooks // // CONTRACT: this is registered in BeginBlocker *before* all other modules' BeginBlock functions -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context, req ocabci.RequestBeginBlock) { BeginBlocker(am.keeper, ctx, req) } diff --git a/x/upgrade/types/storeloader_test.go b/x/upgrade/types/storeloader_test.go index 924203c9ec..e5e225ff85 100644 --- a/x/upgrade/types/storeloader_test.go +++ b/x/upgrade/types/storeloader_test.go @@ -6,7 +6,7 @@ import ( "path/filepath" "testing" - abci "github.com/line/ostracon/abci/types" + ocabci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" @@ -124,7 +124,7 @@ func TestSetLoader(t *testing.T) { require.Nil(t, err) for i := int64(2); i <= upgradeHeight-1; i++ { - origapp.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) + origapp.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: i}}) res := origapp.Commit() require.NotNil(t, res.Data) } @@ -140,7 +140,7 @@ func TestSetLoader(t *testing.T) { require.Nil(t, err) // "execute" one block - app.BeginBlock(abci.RequestBeginBlock{Header: ocproto.Header{Height: upgradeHeight}}) + app.BeginBlock(ocabci.RequestBeginBlock{Header: ocproto.Header{Height: upgradeHeight}}) res := app.Commit() require.NotNil(t, res.Data)