diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 435033445a..b7df616b36 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -17,10 +17,10 @@ jobs:
steps:
- uses: actions/setup-go@v3
with:
- go-version: 1.19
+ go-version: 1.18.10
- uses: actions/checkout@v3
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
- version: latest
\ No newline at end of file
+ version: v1.53.3
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a3075a6d47..bcad15a21a 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,7 +12,7 @@ jobs:
steps:
- uses: actions/setup-go@v2.1.3
with:
- go-version: 1.18
+ go-version: 1.18.10
- name: Display go version
run: go version
- name: install tparse
@@ -33,7 +33,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2.1.3
with:
- go-version: 1.18
+ go-version: 1.18.10
- uses: technote-space/get-diff-action@v4
id: git_diff
with:
@@ -52,7 +52,7 @@ jobs:
# - uses: actions/checkout@v2
# - uses: actions/setup-go@v2.1.3
# with:
- # go-version: 1.18
+ # go-version: 1.18.10
# - name: Display go version
# run: go version
# - uses: technote-space/get-diff-action@v4
@@ -105,7 +105,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2.1.3
with:
- go-version: 1.18
+ go-version: 1.18.10
- uses: technote-space/get-diff-action@v4
with:
PATTERNS: |
@@ -183,7 +183,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2.1.3
with:
- go-version: 1.18
+ go-version: 1.18.10
- uses: technote-space/get-diff-action@v4
with:
PATTERNS: |
@@ -232,7 +232,7 @@ jobs:
# - uses: actions/checkout@v2
# - uses: actions/setup-go@v2.1.3
# with:
- # go-version: 1.18
+ # go-version: 1.18.10
# - uses: technote-space/get-diff-action@v4
# id: git_diff
# with:
diff --git a/Makefile b/Makefile
index 62cd744cd4..26a572d54d 100644
--- a/Makefile
+++ b/Makefile
@@ -20,11 +20,10 @@ GO_MINOR_VERSION := $(shell echo $(GO_VERSION) | cut -d. -f2)
GO_MICRO_VERSION := $(shell echo $(GO_VERSION) | cut -d. -f3)
SUPPORTED_GO_VERSION = 1.18.10
-IS_SUPPORTED_VERSION := $(shell expr "$(GO_VERSION)" "==" "$(SUPPORTED_GO_VERSION)")
-ifeq "$(IS_SUPPORTED_VERSION)" "1"
- $(info Go version is supported: $(GO_VERSION))
+ifeq ($(GO_VERSION), $(SUPPORTED_GO_VERSION))
+ $(info Go version $(GO_VERSION) is supported)
else
- $(info WARN: Go version not supported, some tests might fail without version $(SUPPORTED_GO_VERSION))
+ $(info WARN: Go version $(GO_VERSION) is not supported, some tests might fail on different version than supported $(SUPPORTED_GO_VERSION))
endif
export GO111MODULE = on
@@ -167,7 +166,7 @@ clean:
###############################################################################
go.sum: go.mod
- echo "Ensure dependencies have not been modified ..." >&2
+ @echo "Ensure dependencies have not been modified ..." >&2
go mod verify
go mod tidy
@@ -321,13 +320,17 @@ benchmark:
### Linting ###
###############################################################################
+golangCliLintVersion=v1.53.3
+
containerMarkdownLintImage=tmknom/markdownlint
containerMarkdownLint=cosmos-sdk-markdownlint
containerMarkdownLintFix=cosmos-sdk-markdownlint-fix
+containerGolangCliLint=golangci/golangci-lint:$(golangCliLintVersion)
-golangci_lint_cmd=go run github.com/golangci/golangci-lint/cmd/golangci-lint
+#golangci_lint_cmd_shared_cache=$(DOCKER) run --rm -v $(CURDIR):/work -v ./.cache/golangci-lint/$(golangCliLintVersion):/root/.cache -w /work $(containerGolangCliLint) golangci-lint
+golangci_lint_cmd=$(DOCKER) run --rm -v $(CURDIR):/work -w /work $(containerGolangCliLint) golangci-lint
-lint: lint-go
+lint: lint-go-diff
@#if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerMarkdownLint}$$"; then docker start -a $(containerMarkdownLint); else docker run --name $(containerMarkdownLint) -i -v "$(CURDIR):/work" $(markdownLintImage); fi
docker run -i --rm -v "$(CURDIR):/work" $(containerMarkdownLintImage) .
@@ -335,9 +338,26 @@ lint-fix:
@#if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerMarkdownLintFix}$$"; then docker start -a $(containerMarkdownLintFix); else docker run --name $(containerMarkdownLintFix) -i -v "$(CURDIR):/work" $(markdownLintImage) . --fix; fi
docker run -i --rm -v "$(CURDIR):/work" $(containerMarkdownLintImage) --fix .
-lint-go:
+lint-go-diff:
echo $(GIT_DIFF)
- $(golangci_lint_cmd) run --out-format=tab $(GIT_DIFF)
+ #$(golangci_lint_cmd) run --out-format=tab $(GIT_DIFF)
+ #
+ #mkdir -p ./.cache/golangci-lint/$(golangCliLintVersion)
+ #$(golangci_lint_cmd_shared_cache) run -v --out-format=tab $(GIT_DIFF)
+ #
+ $(golangci_lint_cmd) run -v --out-format=tab $(GIT_DIFF)
+
+lint-go:
+ #mkdir -p ./.cache/golangci-lint/$(golangCliLintVersion)
+ #$(golangci_lint_cmd_shared_cache) run -v --out-format=tab
+ #
+ $(golangci_lint_cmd) run -v --out-format=tab
+
+lint-go-fix:
+ #mkdir -p ./.cache/golangci-lint/$(golangCliLintVersion)
+ #$(golangci_lint_cmd_shared_cache) run -v --fix --out-format=tab
+ #
+ $(golangci_lint_cmd) run -v --fix --out-format=tab
.PHONY: lint lint-fix
diff --git a/baseapp/testutil/buf.lock b/baseapp/testutil/buf.lock
deleted file mode 100644
index c6f890bd4b..0000000000
--- a/baseapp/testutil/buf.lock
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated by buf. DO NOT EDIT.
-version: v1
-deps:
- - remote: buf.build
- owner: cosmos
- repository: cosmos-proto
- branch: main
- commit: 9e9a53f8db0d493f8b8c66d458c767c1
- digest: b1-6w7Hozd_Oo_yZ1Sku8Nhz9qou-4licLr6VmEyeI9jO4=
- create_time: 2021-12-02T20:41:47.795828Z
- - remote: buf.build
- owner: cosmos
- repository: gogo-proto
- branch: main
- commit: bee5511075b7499da6178d9e4aaa628b
- digest: b1-rrBIustouD-S80cVoZ_rM0qJsmei9AgbXy9GPQu6vxg=
- create_time: 2021-12-02T20:01:17.069307Z
diff --git a/docs/architecture/adr-023-protobuf-naming.md b/docs/architecture/adr-023-protobuf-naming.md
index cf9bff9bf0..f6cc02fa86 100644
--- a/docs/architecture/adr-023-protobuf-naming.md
+++ b/docs/architecture/adr-023-protobuf-naming.md
@@ -138,7 +138,7 @@ or significantly alter the package in the near future
significantly refactor/rework the functionality in the near future but not remove it
* modules _can and should_ have types in both stable (i.e. `v1` or `v2`) and unstable (`alpha` or `beta`) packages.
-*`alpha` and `beta` should not be used to avoid responsibility for maintaining compatibility.*
+_`alpha` and `beta` should not be used to avoid responsibility for maintaining compatibility._
Whenever code is released into the wild, especially on a blockchain, there is a high cost to changing things. In some
cases, for instance with immutable smart contracts, a breaking change may be impossible to fix.
diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md
index ea35854d1e..f2499aeab3 100644
--- a/docs/core/proto-docs.md
+++ b/docs/core/proto-docs.md
@@ -394,6 +394,8 @@
- [cosmos/mint/v1beta1/mint.proto](#cosmos/mint/v1beta1/mint.proto)
- [Minter](#cosmos.mint.v1beta1.Minter)
+ - [MunicipalInflation](#cosmos.mint.v1beta1.MunicipalInflation)
+ - [MunicipalInflationPair](#cosmos.mint.v1beta1.MunicipalInflationPair)
- [Params](#cosmos.mint.v1beta1.Params)
- [cosmos/mint/v1beta1/genesis.proto](#cosmos/mint/v1beta1/genesis.proto)
@@ -404,6 +406,8 @@
- [QueryAnnualProvisionsResponse](#cosmos.mint.v1beta1.QueryAnnualProvisionsResponse)
- [QueryInflationRequest](#cosmos.mint.v1beta1.QueryInflationRequest)
- [QueryInflationResponse](#cosmos.mint.v1beta1.QueryInflationResponse)
+ - [QueryMunicipalInflationRequest](#cosmos.mint.v1beta1.QueryMunicipalInflationRequest)
+ - [QueryMunicipalInflationResponse](#cosmos.mint.v1beta1.QueryMunicipalInflationResponse)
- [QueryParamsRequest](#cosmos.mint.v1beta1.QueryParamsRequest)
- [QueryParamsResponse](#cosmos.mint.v1beta1.QueryParamsResponse)
@@ -5748,6 +5752,45 @@ Minter represents the minting state.
| ----- | ---- | ----- | ----------- |
| `inflation` | [string](#string) | | current annual inflation rate |
| `annual_provisions` | [string](#string) | | current annual expected provisions |
+| `municipal_inflation` | [MunicipalInflationPair](#cosmos.mint.v1beta1.MunicipalInflationPair) | repeated | |
+
+
+
+
+
+
+
+
+### MunicipalInflation
+Inflation holds parameters for individual native token inflation
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| `target_address` | [string](#string) | | address where inflation induced new tokens will be minted |
+| `value` | [string](#string) | | current ANNUAL inflation rate |
+
+
+
+
+
+
+
+
+### MunicipalInflationPair
+Pair representing denom -> inflation mapping.
+This pair-like structure will be used in `repeating MunicipalInflationPair`
+type, what will have the same Protobuf binary representation on wire as the
+`map` type.
+This means that what is serialised as `repeating MunicipalInflationPair` on
+one end can be deserialised as `map` on the other
+end, and other vice versa.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| `denom` | [string](#string) | | token denomination |
+| `inflation` | [MunicipalInflation](#cosmos.mint.v1beta1.MunicipalInflation) | | Structure representing municipal inflation for the the given `denom` |
@@ -5872,6 +5915,37 @@ method.
+
+
+### QueryMunicipalInflationRequest
+QueryMunicipalInflationRequest is the request type for the Query/MunicipalInflation RPC method.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| `denom` | [string](#string) | optional | |
+
+
+
+
+
+
+
+
+### QueryMunicipalInflationResponse
+QueryInflationResponse is the response type for the Query/Inflation RPC
+method.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| `inflations` | [MunicipalInflationPair](#cosmos.mint.v1beta1.MunicipalInflationPair) | repeated | inflation is the current minting inflation value. |
+
+
+
+
+
+
### QueryParamsRequest
@@ -5912,6 +5986,7 @@ Query provides defines the gRPC querier service.
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
| `Params` | [QueryParamsRequest](#cosmos.mint.v1beta1.QueryParamsRequest) | [QueryParamsResponse](#cosmos.mint.v1beta1.QueryParamsResponse) | Params returns the total set of minting parameters. | GET|/cosmos/mint/v1beta1/params|
| `Inflation` | [QueryInflationRequest](#cosmos.mint.v1beta1.QueryInflationRequest) | [QueryInflationResponse](#cosmos.mint.v1beta1.QueryInflationResponse) | Inflation returns the current minting inflation value. | GET|/cosmos/mint/v1beta1/inflation|
+| `MunicipalInflation` | [QueryMunicipalInflationRequest](#cosmos.mint.v1beta1.QueryMunicipalInflationRequest) | [QueryMunicipalInflationResponse](#cosmos.mint.v1beta1.QueryMunicipalInflationResponse) | Inflation returns the current minting inflation value. | GET|/cosmos/mint/v1beta1/municipal_inflation|
| `AnnualProvisions` | [QueryAnnualProvisionsRequest](#cosmos.mint.v1beta1.QueryAnnualProvisionsRequest) | [QueryAnnualProvisionsResponse](#cosmos.mint.v1beta1.QueryAnnualProvisionsResponse) | AnnualProvisions current minting annual provisions value. | GET|/cosmos/mint/v1beta1/annual_provisions|
diff --git a/go.mod b/go.mod
index f4f58a91dd..948fc8864d 100644
--- a/go.mod
+++ b/go.mod
@@ -17,6 +17,7 @@ require (
github.com/gogo/protobuf v1.3.3
github.com/golang/mock v1.6.0
github.com/golang/protobuf v1.5.2
+ github.com/golangci/golangci-lint v1.48.0
github.com/gorilla/handlers v1.5.1
github.com/gorilla/mux v1.8.0
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
@@ -52,8 +53,6 @@ require (
gopkg.in/yaml.v2 v2.4.0
)
-require github.com/golangci/golangci-lint v1.48.0
-
require (
4d63.com/gochecknoglobals v0.1.0 // indirect
filippo.io/edwards25519 v1.0.0-beta.2 // indirect
diff --git a/proto/cosmos/mint/v1beta1/mint.proto b/proto/cosmos/mint/v1beta1/mint.proto
index a119b5f516..8287ef1ad6 100644
--- a/proto/cosmos/mint/v1beta1/mint.proto
+++ b/proto/cosmos/mint/v1beta1/mint.proto
@@ -16,6 +16,30 @@ message Minter {
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
(gogoproto.nullable) = false
];
+
+ repeated MunicipalInflationPair municipal_inflation = 3;
+}
+
+// Inflation holds parameters for individual native token inflation
+message MunicipalInflation {
+ // address where inflation induced new tokens will be minted
+ string target_address = 2 [(gogoproto.moretags) = "yaml:\"target_address\""];
+ // current ANNUAL inflation rate
+ string value = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
+}
+
+// Pair representing denom -> inflation mapping.
+// This pair-like structure will be used in `repeating MunicipalInflationPair`
+// type, what will have the same Protobuf binary representation on wire as the
+// `map` type.
+// This means that what is serialised as `repeating MunicipalInflationPair` on
+// one end can be deserialised as `map` on the other
+// end, and other vice versa.
+message MunicipalInflationPair {
+ // token denomination
+ string denom = 1;
+ // Structure representing municipal inflation for the the given `denom`
+ MunicipalInflation inflation = 2;
}
// Params holds parameters for the mint module.
diff --git a/proto/cosmos/mint/v1beta1/query.proto b/proto/cosmos/mint/v1beta1/query.proto
index acd341d777..80688292d7 100644
--- a/proto/cosmos/mint/v1beta1/query.proto
+++ b/proto/cosmos/mint/v1beta1/query.proto
@@ -19,6 +19,11 @@ service Query {
option (google.api.http).get = "/cosmos/mint/v1beta1/inflation";
}
+ // Inflation returns the current minting inflation value.
+ rpc MunicipalInflation(QueryMunicipalInflationRequest) returns (QueryMunicipalInflationResponse) {
+ option (google.api.http).get = "/cosmos/mint/v1beta1/municipal_inflation";
+ }
+
// AnnualProvisions current minting annual provisions value.
rpc AnnualProvisions(QueryAnnualProvisionsRequest) returns (QueryAnnualProvisionsResponse) {
option (google.api.http).get = "/cosmos/mint/v1beta1/annual_provisions";
@@ -37,6 +42,11 @@ message QueryParamsResponse {
// QueryInflationRequest is the request type for the Query/Inflation RPC method.
message QueryInflationRequest {}
+// QueryMunicipalInflationRequest is the request type for the Query/MunicipalInflation RPC method.
+message QueryMunicipalInflationRequest {
+ optional string denom = 1;
+}
+
// QueryInflationResponse is the response type for the Query/Inflation RPC
// method.
message QueryInflationResponse {
@@ -44,6 +54,13 @@ message QueryInflationResponse {
bytes inflation = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
}
+// QueryInflationResponse is the response type for the Query/Inflation RPC
+// method.
+message QueryMunicipalInflationResponse {
+ // inflation is the current minting inflation value.
+ repeated MunicipalInflationPair inflations = 1;
+}
+
// QueryAnnualProvisionsRequest is the request type for the
// Query/AnnualProvisions RPC method.
message QueryAnnualProvisionsRequest {}
diff --git a/x/bank/simulation/genesis.go b/x/bank/simulation/genesis.go
index 9031d03364..c1209ed4df 100644
--- a/x/bank/simulation/genesis.go
+++ b/x/bank/simulation/genesis.go
@@ -12,6 +12,16 @@ import (
"github.com/cosmos/cosmos-sdk/x/bank/types"
)
+var (
+ testSupplyVal, _ = sdk.NewIntFromString("1000000000000000000")
+ AdditionalTestBalancePerAccount = sdk.NewCoins(
+ sdk.NewCoin("denom0", testSupplyVal),
+ sdk.NewCoin("denom1", testSupplyVal),
+ sdk.NewCoin("denom2", testSupplyVal),
+ sdk.NewCoin("denom3", testSupplyVal),
+ )
+)
+
// RandomGenesisDefaultSendParam computes randomized allow all send transfers param for the bank module
func RandomGenesisDefaultSendParam(r *rand.Rand) bool {
// 90% chance of transfers being enable or P(a) = 0.9 for success
@@ -41,9 +51,11 @@ func RandomGenesisBalances(simState *module.SimulationState) []types.Balance {
genesisBalances := []types.Balance{}
for _, acc := range simState.Accounts {
+ coins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(simState.InitialStake)))
+ coins.Add(AdditionalTestBalancePerAccount...)
genesisBalances = append(genesisBalances, types.Balance{
Address: acc.Address.String(),
- Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(simState.InitialStake))),
+ Coins: coins,
})
}
@@ -66,7 +78,11 @@ func RandomizedGenState(simState *module.SimulationState) {
numAccs := int64(len(simState.Accounts))
totalSupply := sdk.NewInt(simState.InitialStake * (numAccs + simState.NumBonded))
+
supply := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, totalSupply))
+ for _, b := range AdditionalTestBalancePerAccount {
+ supply.Add(sdk.NewCoin(b.Denom, b.Amount.MulRaw(numAccs)))
+ }
bankGenesis := types.GenesisState{
Params: types.Params{
diff --git a/x/bank/simulation/genesis_test.go b/x/bank/simulation/genesis_test.go
index fc31ca38e9..2632450c62 100644
--- a/x/bank/simulation/genesis_test.go
+++ b/x/bank/simulation/genesis_test.go
@@ -2,6 +2,7 @@ package simulation_test
import (
"encoding/json"
+ sdk "github.com/cosmos/cosmos-sdk/types"
"math/rand"
"testing"
@@ -43,7 +44,13 @@ func TestRandomizedGenState(t *testing.T) {
require.Len(t, bankGenesis.Balances, 3)
require.Equal(t, "cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r", bankGenesis.Balances[2].GetAddress().String())
require.Equal(t, "1000stake", bankGenesis.Balances[2].GetCoins().String())
- require.Equal(t, "6000stake", bankGenesis.Supply.String())
+
+ numAccs := int64(len(simState.Accounts))
+ expectedSupply := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(6000)))
+ for _, b := range simulation.AdditionalTestBalancePerAccount {
+ expectedSupply.Add(sdk.NewCoin(b.Denom, b.Amount.MulRaw(numAccs)))
+ }
+ require.Equal(t, expectedSupply.String(), bankGenesis.Supply.String())
}
// TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState.
diff --git a/x/mint/abci.go b/x/mint/abci.go
index aa0f4e1062..283cb57bdc 100644
--- a/x/mint/abci.go
+++ b/x/mint/abci.go
@@ -1,14 +1,66 @@
package mint
import (
+ "fmt"
"time"
"github.com/cosmos/cosmos-sdk/telemetry"
sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/x/mint/cache"
"github.com/cosmos/cosmos-sdk/x/mint/keeper"
"github.com/cosmos/cosmos-sdk/x/mint/types"
)
+// HandleMunicipalInflation iterates through all other native tokens specified in the minter.MunicipalInflation structure, and processes
+// the minting of new coins in line with the respective inflation rate of each denomination
+func HandleMunicipalInflation(minter *types.Minter, params *types.Params, ctx *sdk.Context, k *keeper.Keeper) {
+ cache.GMunicipalInflationCache.RefreshIfNecessary(&minter.MunicipalInflation, params.BlocksPerYear)
+
+ // iterate through native denominations
+ for _, pair := range minter.MunicipalInflation {
+ targetAddress := pair.Inflation.TargetAddress
+
+ // gather supply value & calculate number of new tokens created from relevant inflation
+ totalDenomSupply := k.BankKeeper.GetSupply(*ctx, pair.Denom)
+
+ cacheItem, exists := cache.GMunicipalInflationCache.GetInflation(pair.Denom)
+
+ if !exists {
+ panic(fmt.Errorf("numicipal inflation: missing cache item for the \"%s\" denomination", pair.Denom))
+ }
+
+ coinsToMint := types.CalculateInflationIssuance(cacheItem.PerBlockInflation, totalDenomSupply)
+
+ err := k.MintCoins(*ctx, coinsToMint)
+ if err != nil {
+ panic(err)
+ }
+
+ // send these new tokens to respective target address
+ // TODO(JS): investigate whether this should be carried out in distribution module or not
+
+ // Convert targetAddress to sdk.AccAddress
+ acc, err := sdk.AccAddressFromBech32(targetAddress)
+ if err != nil {
+ panic(err)
+ }
+
+ err = k.BankKeeper.SendCoinsFromModuleToAccount(*ctx, types.ModuleName, acc, coinsToMint)
+ if err != nil {
+ panic(err)
+ }
+ ctx.EventManager().EmitEvent(
+ sdk.NewEvent(
+ types.EventTypeMunicipalMint,
+ sdk.NewAttribute(types.AttributeKeyDenom, pair.Denom),
+ sdk.NewAttribute(types.AttributeKeyInflation, pair.Inflation.Value.String()),
+ sdk.NewAttribute(types.AttributeKeyTargetAddr, pair.Inflation.TargetAddress),
+ sdk.NewAttribute(sdk.AttributeKeyAmount, coinsToMint.String()),
+ ),
+ )
+ }
+}
+
// BeginBlocker mints new tokens for the previous block.
func BeginBlocker(ctx sdk.Context, k keeper.Keeper) {
defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker)
@@ -17,6 +69,8 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper) {
minter := k.GetMinter(ctx)
params := k.GetParams(ctx)
+ HandleMunicipalInflation(&minter, ¶ms, &ctx, &k)
+
// recalculate inflation rate
totalStakingSupply := k.StakingTokenSupply(ctx)
minter.Inflation = minter.NextInflationRate(params)
diff --git a/x/mint/cache/municipal_inflation_cahe.go b/x/mint/cache/municipal_inflation_cahe.go
new file mode 100644
index 0000000000..5b2695b7bc
--- /dev/null
+++ b/x/mint/cache/municipal_inflation_cahe.go
@@ -0,0 +1,106 @@
+package cache
+
+import (
+ "sync/atomic"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/x/mint/types"
+)
+
+type MunicipalInflationCacheItem struct {
+ PerBlockInflation sdk.Dec
+ AnnualInflation *types.MunicipalInflation
+}
+
+type MunicipalInflationCacheInternal struct {
+ blocksPerYear uint64
+ original *[]*types.MunicipalInflationPair
+ inflations map[string]*MunicipalInflationCacheItem // {denom: inflationPerBlock}
+}
+
+// MunicipalInflationCache Cache optimised for concurrent reading performance.
+// *NO* support for concurrent writing operations.
+type MunicipalInflationCache struct {
+ internal atomic.Value
+}
+
+// GMunicipalInflationCache Thread safety:
+// As the things stand now from design & impl. perspective:
+// 1. This global variable is supposed to be initialised(= its value set)
+// just *ONCE* here, at this place,
+// 2. This global variable shall *NOT* be used anywhere else in the initialisation
+// context of the *global scope* - e.g. as input for initialisation of
+// another global variable, etc. ...
+// 3. All *exported* methods of `MunicipalInflationCache` type *ARE* thread safe,
+// and so can be called from anywhere, *EXCEPT* from the initialisation context
+// of the global scope(implication of the point 2 above)!
+var GMunicipalInflationCache = MunicipalInflationCache{}
+
+func (cache *MunicipalInflationCache) Refresh(inflations *[]*types.MunicipalInflationPair, blocksPerYear uint64) {
+ newCache := MunicipalInflationCacheInternal{}
+ newCache.refresh(inflations, blocksPerYear)
+ cache.internal.Store(&newCache)
+}
+
+// RefreshIfNecessary
+// IMPORTANT: Assuming *NO* concurrent writes. This requirement is guaranteed given the *current*
+// usage of this component = this method is called exclusively from non-concurrent call contexts.
+// This approach will guarantee the most possible effective cache operation in heavily concurrent
+// read environment = with minimum possible blocking for concurrent read operations, but with slight
+// limitation for write operations (= no concurrent write operations).
+// Most of the read operations are assumed to be done from RPC (querying municipal inflation),
+// and since threading models of the RPC implementation is not know, the worst scenario(= heavily
+// concurrent threading model) for read operation is assumed.
+func (cache *MunicipalInflationCache) RefreshIfNecessary(inflations *[]*types.MunicipalInflationPair, blocksPerYear uint64) {
+ if val := cache.internal.Load(); val == nil || val.(*MunicipalInflationCacheInternal).isRefreshRequired(blocksPerYear) {
+ cache.Refresh(inflations, blocksPerYear)
+ }
+}
+
+func (cache *MunicipalInflationCache) GetInflation(denom string) (MunicipalInflationCacheItem, bool) {
+ val := cache.internal.Load()
+ if val == nil {
+ return MunicipalInflationCacheItem{}, false
+ }
+
+ infl, exists := val.(*MunicipalInflationCacheInternal).inflations[denom]
+ return *infl, exists
+}
+
+func (cache *MunicipalInflationCache) GetOriginal() *[]*types.MunicipalInflationPair {
+ val := cache.internal.Load()
+ if val == nil {
+ return &[]*types.MunicipalInflationPair{}
+ }
+
+ current := val.(*MunicipalInflationCacheInternal)
+ return current.original
+}
+
+// NOTE(pb): *NOT* thread safe
+func (cache *MunicipalInflationCacheInternal) refresh(inflations *[]*types.MunicipalInflationPair, blocksPerYear uint64) {
+ if err := types.ValidateMunicipalInflations(inflations); err != nil {
+ panic(err)
+ }
+
+ cache.blocksPerYear = blocksPerYear
+ cache.original = inflations
+ cache.inflations = map[string]*MunicipalInflationCacheItem{}
+
+ for _, pair := range *inflations {
+ inflationPerBlock, err := types.CalculateInflationPerBlock(pair.Inflation.Value, blocksPerYear)
+ if err != nil {
+ panic(err)
+ }
+
+ cache.inflations[pair.Denom] = &MunicipalInflationCacheItem{
+ inflationPerBlock,
+ pair.Inflation,
+ }
+ }
+}
+
+// NOTE(pb): *NOT* thread safe
+func (cache *MunicipalInflationCacheInternal) isRefreshRequired(blocksPerYear uint64) bool {
+ return cache.blocksPerYear != blocksPerYear
+}
diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go
index 6bf31ba5a1..91e4d3965d 100644
--- a/x/mint/client/cli/query.go
+++ b/x/mint/client/cli/query.go
@@ -3,11 +3,10 @@ package cli
import (
"fmt"
- "github.com/spf13/cobra"
-
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/x/mint/types"
+ "github.com/spf13/cobra"
)
// GetQueryCmd returns the cli query commands for the minting module.
@@ -23,6 +22,7 @@ func GetQueryCmd() *cobra.Command {
mintingQueryCmd.AddCommand(
GetCmdQueryParams(),
GetCmdQueryInflation(),
+ GetCmdQueryMunicipalInflation(),
GetCmdQueryAnnualProvisions(),
)
@@ -87,6 +87,44 @@ func GetCmdQueryInflation() *cobra.Command {
return cmd
}
+// GetCmdQueryMunicipalInflation implements a command to return all token
+// inflation values.
+func GetCmdQueryMunicipalInflation() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "municipal-inflation [denomination]",
+ Short: "Query municipal inflation configuration",
+ Long: `If there is NO 'denomination' value is provided, then query returns full
+configuration of the municipal inflation (for all registered denominations).
+Otherwise it returns only the configuration for the provided 'denomination' value.`,
+ Args: cobra.MaximumNArgs(1),
+ RunE: func(cmd *cobra.Command, args []string) error {
+ clientCtx, err := client.GetClientQueryContext(cmd)
+ if err != nil {
+ return err
+ }
+
+ queryClient := types.NewQueryClient(clientCtx)
+
+ var req types.QueryMunicipalInflationRequest
+ if len(args) > 0 {
+ req = types.QueryMunicipalInflationRequest{XDenom: &types.QueryMunicipalInflationRequest_Denom{Denom: args[0]}}
+ } else {
+ req = types.QueryMunicipalInflationRequest{}
+ }
+
+ res, err := queryClient.MunicipalInflation(cmd.Context(), &req)
+ if err != nil {
+ return err
+ }
+ return clientCtx.PrintProto(res)
+ },
+ }
+
+ flags.AddQueryFlagsToCmd(cmd)
+
+ return cmd
+}
+
// GetCmdQueryAnnualProvisions implements a command to return the current minting
// annual provisions value.
func GetCmdQueryAnnualProvisions() *cobra.Command {
diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go
index 4f13b53d72..0ec5b4521a 100644
--- a/x/mint/client/rest/grpc_query_test.go
+++ b/x/mint/client/rest/grpc_query_test.go
@@ -83,6 +83,15 @@ func (s *IntegrationTestSuite) TestQueryGRPC() {
Inflation: sdk.NewDecWithPrec(3, 2),
},
},
+ {
+ "gRPC request inflations",
+ fmt.Sprintf("%s/cosmos/mint/v1beta1/municipal_inflation", baseURL),
+ map[string]string{},
+ &minttypes.QueryMunicipalInflationResponse{},
+ &minttypes.QueryMunicipalInflationResponse{
+ Inflations: nil,
+ },
+ },
{
"gRPC request annual provisions",
fmt.Sprintf("%s/cosmos/mint/v1beta1/annual_provisions", baseURL),
diff --git a/x/mint/client/testutil/suite.go b/x/mint/client/testutil/suite.go
index 591959b3a9..0859f83ffe 100644
--- a/x/mint/client/testutil/suite.go
+++ b/x/mint/client/testutil/suite.go
@@ -37,6 +37,13 @@ func (s *IntegrationTestSuite) SetupSuite() {
inflation := sdk.MustNewDecFromStr("1.0")
mintData.Minter.Inflation = inflation
+ mintData.Minter.MunicipalInflation = []*minttypes.MunicipalInflationPair{
+ {Denom: "denom1", Inflation: minttypes.NewMunicipalInflation("cosmos12kdu2sy0zcmz84qymyj6zcfvwss3a703xgpczm", sdk.NewDecWithPrec(234, 4))},
+ {Denom: "denom0", Inflation: minttypes.NewMunicipalInflation("cosmos1d9pzg5542spe4anjgu2zmk7wxhgh04ysn2phpq", sdk.NewDecWithPrec(123, 2))},
+ {Denom: "denom3", Inflation: minttypes.NewMunicipalInflation("cosmos1ck73rpk6eqxtla4rv7rspsq7apl3740rgjfte4", sdk.NewDecWithPrec(456, 3))},
+ {Denom: "denom2", Inflation: minttypes.NewMunicipalInflation("cosmos1ury8qn5w7m3xkl9pdd9ehazd2c9urx7qht2jly", sdk.NewDecWithPrec(345, 3))},
+ }
+
mintDataBz, err := s.cfg.Codec.MarshalJSON(&mintData)
s.Require().NoError(err)
genesisState[minttypes.ModuleName] = mintDataBz
@@ -89,6 +96,70 @@ mint_denom: stake`,
}
}
+func (s *IntegrationTestSuite) TestGetCmdQueryMunicipalInflation() {
+ val := s.network.Validators[0]
+
+ testCases := []struct {
+ name string
+ args []string
+ expectedOutput string
+ }{
+ {
+ "full - json output",
+ []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
+ `{"inflations":[{"denom":"denom1","inflation":{"target_address":"cosmos12kdu2sy0zcmz84qymyj6zcfvwss3a703xgpczm","value":"0.023400000000000000"}},{"denom":"denom0","inflation":{"target_address":"cosmos1d9pzg5542spe4anjgu2zmk7wxhgh04ysn2phpq","value":"1.230000000000000000"}},{"denom":"denom3","inflation":{"target_address":"cosmos1ck73rpk6eqxtla4rv7rspsq7apl3740rgjfte4","value":"0.456000000000000000"}},{"denom":"denom2","inflation":{"target_address":"cosmos1ury8qn5w7m3xkl9pdd9ehazd2c9urx7qht2jly","value":"0.345000000000000000"}}]}`,
+ },
+ {
+ "full - text output",
+ []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", tmcli.OutputFlag)},
+ `inflations:
+- denom: denom1
+ inflation:
+ target_address: cosmos12kdu2sy0zcmz84qymyj6zcfvwss3a703xgpczm
+ value: "0.023400000000000000"
+- denom: denom0
+ inflation:
+ target_address: cosmos1d9pzg5542spe4anjgu2zmk7wxhgh04ysn2phpq
+ value: "1.230000000000000000"
+- denom: denom3
+ inflation:
+ target_address: cosmos1ck73rpk6eqxtla4rv7rspsq7apl3740rgjfte4
+ value: "0.456000000000000000"
+- denom: denom2
+ inflation:
+ target_address: cosmos1ury8qn5w7m3xkl9pdd9ehazd2c9urx7qht2jly
+ value: "0.345000000000000000"`,
+ },
+ {
+ "selected denom - json output",
+ []string{"denom3", fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
+ `{"inflations":[{"denom":"denom3","inflation":{"target_address":"cosmos1ck73rpk6eqxtla4rv7rspsq7apl3740rgjfte4","value":"0.456000000000000000"}}]}`,
+ },
+ {
+ "selected denom - text output",
+ []string{"denom3", fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", tmcli.OutputFlag)},
+ `inflations:
+- denom: denom3
+ inflation:
+ target_address: cosmos1ck73rpk6eqxtla4rv7rspsq7apl3740rgjfte4
+ value: "0.456000000000000000"`,
+ },
+ }
+
+ for _, tc := range testCases {
+ tc := tc
+
+ s.Run(tc.name, func() {
+ cmd := cli.GetCmdQueryMunicipalInflation()
+ clientCtx := val.ClientCtx
+
+ out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
+ s.Require().NoError(err)
+ s.Require().Equal(tc.expectedOutput, strings.TrimSpace(out.String()))
+ })
+ }
+}
+
func (s *IntegrationTestSuite) TestGetCmdQueryInflation() {
val := s.network.Validators[0]
diff --git a/x/mint/genesis.go b/x/mint/genesis.go
index be7ac61d50..6a1eb3050d 100644
--- a/x/mint/genesis.go
+++ b/x/mint/genesis.go
@@ -2,12 +2,14 @@ package mint
import (
sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/x/mint/cache"
"github.com/cosmos/cosmos-sdk/x/mint/keeper"
"github.com/cosmos/cosmos-sdk/x/mint/types"
)
// InitGenesis new mint genesis
func InitGenesis(ctx sdk.Context, keeper keeper.Keeper, ak types.AccountKeeper, data *types.GenesisState) {
+ cache.GMunicipalInflationCache.Refresh(&data.Minter.MunicipalInflation, data.Params.BlocksPerYear)
keeper.SetMinter(ctx, data.Minter)
keeper.SetParams(ctx, data.Params)
ak.GetModuleAccount(ctx, types.ModuleName)
diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go
index 6ad3bf309c..8763214746 100644
--- a/x/mint/keeper/grpc_query.go
+++ b/x/mint/keeper/grpc_query.go
@@ -2,8 +2,10 @@ package keeper
import (
"context"
+ "fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/x/mint/cache"
"github.com/cosmos/cosmos-sdk/x/mint/types"
)
@@ -17,7 +19,7 @@ func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.Q
return &types.QueryParamsResponse{Params: params}, nil
}
-// Inflation returns minter.Inflation of the mint module.
+// Inflation returns minter.AnnualInflation of the mint module.
func (k Keeper) Inflation(c context.Context, _ *types.QueryInflationRequest) (*types.QueryInflationResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
minter := k.GetMinter(ctx)
@@ -25,6 +27,22 @@ func (k Keeper) Inflation(c context.Context, _ *types.QueryInflationRequest) (*t
return &types.QueryInflationResponse{Inflation: minter.Inflation}, nil
}
+// MunicipalInflation returns minter.MunicipalInflation of the mint module.
+func (k Keeper) MunicipalInflation(c context.Context, req *types.QueryMunicipalInflationRequest) (*types.QueryMunicipalInflationResponse, error) {
+ denom := req.GetDenom()
+
+ if len(denom) == 0 {
+ return &types.QueryMunicipalInflationResponse{Inflations: *cache.GMunicipalInflationCache.GetOriginal()}, nil
+ }
+
+ infl, exists := cache.GMunicipalInflationCache.GetInflation(denom)
+ if !exists {
+ return nil, fmt.Errorf("there is no municipal inflation defined for requested \"%s\" denomination", denom)
+ }
+
+ return &types.QueryMunicipalInflationResponse{Inflations: []*types.MunicipalInflationPair{{Denom: denom, Inflation: infl.AnnualInflation}}}, nil
+}
+
// AnnualProvisions returns minter.AnnualProvisions of the mint module.
func (k Keeper) AnnualProvisions(c context.Context, _ *types.QueryAnnualProvisionsRequest) (*types.QueryAnnualProvisionsResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go
index b010204e8a..600850bb76 100644
--- a/x/mint/keeper/keeper.go
+++ b/x/mint/keeper/keeper.go
@@ -15,7 +15,7 @@ type Keeper struct {
storeKey sdk.StoreKey
paramSpace paramtypes.Subspace
stakingKeeper types.StakingKeeper
- bankKeeper types.BankKeeper
+ BankKeeper types.BankKeeper
feeCollectorName string
}
@@ -40,7 +40,7 @@ func NewKeeper(
storeKey: key,
paramSpace: paramSpace,
stakingKeeper: sk,
- bankKeeper: bk,
+ BankKeeper: bk,
feeCollectorName: feeCollectorName,
}
}
@@ -100,11 +100,11 @@ func (k Keeper) MintCoins(ctx sdk.Context, newCoins sdk.Coins) error {
return nil
}
- return k.bankKeeper.MintCoins(ctx, types.ModuleName, newCoins)
+ return k.BankKeeper.MintCoins(ctx, types.ModuleName, newCoins)
}
// AddCollectedFees implements an alias call to the underlying supply keeper's
// AddCollectedFees to be used in BeginBlocker.
func (k Keeper) AddCollectedFees(ctx sdk.Context, fees sdk.Coins) error {
- return k.bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.feeCollectorName, fees)
+ return k.BankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.feeCollectorName, fees)
}
diff --git a/x/mint/keeper/querier.go b/x/mint/keeper/querier.go
index 294445614a..b4e673c825 100644
--- a/x/mint/keeper/querier.go
+++ b/x/mint/keeper/querier.go
@@ -19,6 +19,9 @@ func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier {
case types.QueryInflation:
return queryInflation(ctx, k, legacyQuerierCdc)
+ case types.QueryInflations:
+ return queryMunicipalInflation(ctx, k, legacyQuerierCdc)
+
case types.QueryAnnualProvisions:
return queryAnnualProvisions(ctx, k, legacyQuerierCdc)
@@ -50,6 +53,17 @@ func queryInflation(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmi
return res, nil
}
+func queryMunicipalInflation(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
+ minter := k.GetMinter(ctx)
+
+ res, err := codec.MarshalJSONIndent(legacyQuerierCdc, minter.MunicipalInflation)
+ if err != nil {
+ return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
+ }
+
+ return res, nil
+}
+
func queryAnnualProvisions(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
minter := k.GetMinter(ctx)
diff --git a/x/mint/module.go b/x/mint/module.go
index 30575c9780..e397e3cbc1 100644
--- a/x/mint/module.go
+++ b/x/mint/module.go
@@ -146,7 +146,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 1 }
-// BeginBlock returns the begin blocker for the mint module.
+// BeginBlock implements begin block handler for the mint module.
func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
BeginBlocker(ctx, am.keeper)
}
diff --git a/x/mint/simulation/decoder_test.go b/x/mint/simulation/decoder_test.go
index 43a8cfbd42..7912e52b24 100644
--- a/x/mint/simulation/decoder_test.go
+++ b/x/mint/simulation/decoder_test.go
@@ -17,7 +17,7 @@ func TestDecodeStore(t *testing.T) {
cdc := simapp.MakeTestEncodingConfig().Marshaler
dec := simulation.NewDecodeStore(cdc)
- minter := types.NewMinter(sdk.OneDec(), sdk.NewDec(15))
+ minter := types.NewMinter(sdk.OneDec(), sdk.NewDec(15), nil)
kvPairs := kv.Pairs{
Pairs: []kv.Pair{
diff --git a/x/mint/simulation/genesis.go b/x/mint/simulation/genesis.go
index ce1fa89d96..b0692f6122 100644
--- a/x/mint/simulation/genesis.go
+++ b/x/mint/simulation/genesis.go
@@ -7,6 +7,8 @@ import (
"fmt"
"math/rand"
+ "github.com/cosmos/cosmos-sdk/x/bank/simulation"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/x/mint/types"
@@ -28,6 +30,35 @@ func GenInflationRate(r *rand.Rand) sdk.Dec {
return sdk.NewDecWithPrec(int64(r.Intn(99)), 2)
}
+// GenMunicipalInflation randomized Municipal Inflation configuration
+func GenMunicipalInflation(simState *module.SimulationState) []*types.MunicipalInflationPair {
+ r := simState.Rand
+
+ coins := make([]*sdk.Coin, len(simulation.AdditionalTestBalancePerAccount))
+ for i := 0; i < len(simulation.AdditionalTestBalancePerAccount); i++ {
+ coins[i] = &simulation.AdditionalTestBalancePerAccount[i]
+ }
+
+ len_ := r.Intn(len(coins) + 1)
+ municipalInflation := make([]*types.MunicipalInflationPair, len_)
+ for i := 0; i < len_; i++ {
+ lenCoins := len(coins)
+ lastIdx := lenCoins - 1
+ rndIdx := r.Intn(lenCoins)
+
+ // Swapping rndIdx element with the last element in the slice and cuttig slice without last element
+ c := coins[rndIdx]
+ coins[rndIdx] = coins[lastIdx]
+ coins = coins[:lastIdx]
+
+ acc := &simState.Accounts[r.Intn(len(simState.Accounts))]
+ infl := sdk.NewDecWithPrec(r.Int63n(201), 2)
+ municipalInflation[i] = &types.MunicipalInflationPair{Denom: c.Denom, Inflation: types.NewMunicipalInflation(acc.Address.String(), infl)}
+ }
+
+ return municipalInflation
+}
+
// RandomizedGenState generates a random GenesisState for mint
func RandomizedGenState(simState *module.SimulationState) {
// minter
@@ -48,7 +79,9 @@ func RandomizedGenState(simState *module.SimulationState) {
blocksPerYear := uint64(60 * 60 * 8766 / 5)
params := types.NewParams(mintDenom, inflationRateChange, blocksPerYear)
- mintGenesis := types.NewGenesisState(types.InitialMinter(inflation), params)
+ minter := types.InitialMinter(inflation)
+ minter.MunicipalInflation = GenMunicipalInflation(simState)
+ mintGenesis := types.NewGenesisState(minter, params)
bz, err := json.MarshalIndent(&mintGenesis, "", " ")
if err != nil {
diff --git a/x/mint/simulation/genesis_test.go b/x/mint/simulation/genesis_test.go
index 79ddfd4b99..55d0a83a13 100644
--- a/x/mint/simulation/genesis_test.go
+++ b/x/mint/simulation/genesis_test.go
@@ -46,6 +46,7 @@ func TestRandomizedGenState(t *testing.T) {
require.Equal(t, "0.170000000000000000", mintGenesis.Minter.NextAnnualProvisions(mintGenesis.Params, sdk.OneInt()).String())
require.Equal(t, "0.170000000000000000", mintGenesis.Minter.Inflation.String())
require.Equal(t, "0.000000000000000000", mintGenesis.Minter.AnnualProvisions.String())
+ require.Equal(t, 0, len(mintGenesis.Minter.MunicipalInflation))
}
// TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState.
diff --git a/x/mint/types/events.go b/x/mint/types/events.go
index 3bac736258..f0ac71fa12 100644
--- a/x/mint/types/events.go
+++ b/x/mint/types/events.go
@@ -2,8 +2,11 @@ package types
// Minting module event types
const (
- EventTypeMint = ModuleName
+ EventTypeMint = ModuleName
+ EventTypeMunicipalMint = "municipal_mint"
AttributeKeyInflation = "inflation"
AttributeKeyAnnualProvisions = "annual_provisions"
+ AttributeKeyDenom = "denom"
+ AttributeKeyTargetAddr = "target_address"
)
diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go
index 85b6d776c5..33f79e03aa 100644
--- a/x/mint/types/expected_keepers.go
+++ b/x/mint/types/expected_keepers.go
@@ -14,7 +14,7 @@ type StakingKeeper interface {
// AccountKeeper defines the contract required for account APIs.
type AccountKeeper interface {
GetModuleAddress(name string) sdk.AccAddress
-
+ NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
SetModuleAccount(sdk.Context, types.ModuleAccountI)
GetModuleAccount(ctx sdk.Context, moduleName string) types.ModuleAccountI
@@ -26,4 +26,5 @@ type BankKeeper interface {
SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error
MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error
+ GetSupply(ctx sdk.Context, denom string) sdk.Coin
}
diff --git a/x/mint/types/inflations.go b/x/mint/types/inflations.go
new file mode 100644
index 0000000000..8198448b1e
--- /dev/null
+++ b/x/mint/types/inflations.go
@@ -0,0 +1,77 @@
+package types
+
+import (
+ "fmt"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+)
+
+// NewMunicipalInflation returns a new AnnualInflation object with the given denom, target_address
+// and inflation_rate
+func NewMunicipalInflation(targetAddress string, inflation sdk.Dec) *MunicipalInflation {
+ return &MunicipalInflation{
+ TargetAddress: targetAddress,
+ Value: inflation,
+ }
+}
+
+func CalculateInflationPerBlock(inflation sdk.Dec, blocksPerYear uint64) (result sdk.Dec, err error) {
+ inflationPerBlockPlusOne, err := inflation.Add(sdk.OneDec()).ApproxRoot(blocksPerYear)
+ if err != nil {
+ return
+ }
+ result = inflationPerBlockPlusOne.Sub(sdk.OneDec())
+ return
+}
+
+func CalculateInflationIssuance(inflation sdk.Dec, supply sdk.Coin) (result sdk.Coins) {
+ issuedAmount := (inflation.MulInt(supply.Amount)).TruncateInt()
+ return sdk.NewCoins(sdk.NewCoin(supply.Denom, issuedAmount))
+}
+
+// Validate ensures validity of AnnualInflation object fields
+
+func (inflation *MunicipalInflation) Validate() error {
+ // NOTE(pb): Algebraically speaking, negative inflation >= -1 is logically
+ // valid, however it would cause issues once balance on
+ // target_address runs out (we would need to burn tokens from all
+ // addresses with non-zero token balance of given denomination,
+ // what is politically & performance wise unfeasible.
+ // To avoid issues for now, negative inflation is not allowed.
+ if inflation.Value.IsNegative() {
+ return fmt.Errorf("inflation object param, inflation_rate, cannot be negative, value: %s",
+ inflation.Value.String())
+ }
+
+ _, err := sdk.AccAddressFromBech32(inflation.TargetAddress)
+ if err != nil {
+ return fmt.Errorf("inflation object param, target_address, is invalid: %s",
+ inflation.TargetAddress)
+ }
+
+ return nil
+}
+
+func ValidateMunicipalInflations(inflations *[]*MunicipalInflationPair) (err error) {
+ denoms := map[string]struct{}{}
+ for _, pair := range *inflations {
+ _, exists := denoms[pair.Denom]
+ if exists {
+ return fmt.Errorf("municipal inflation: denomination \"%s\" defined more than once", pair.Denom)
+ }
+
+ denoms[pair.Denom] = struct{}{}
+
+ err = sdk.ValidateDenom(pair.Denom)
+ if err != nil {
+ return fmt.Errorf("inflation object param, denom: %s", err)
+ }
+
+ err = pair.Inflation.Validate()
+ if err != nil {
+ return
+ }
+ }
+
+ return
+}
diff --git a/x/mint/types/inflations_test.go b/x/mint/types/inflations_test.go
new file mode 100644
index 0000000000..1375f7b79a
--- /dev/null
+++ b/x/mint/types/inflations_test.go
@@ -0,0 +1,259 @@
+package types_test
+
+import (
+ "github.com/cosmos/cosmos-sdk/simapp"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
+ auth "github.com/cosmos/cosmos-sdk/x/auth/types"
+ "github.com/cosmos/cosmos-sdk/x/mint"
+ "github.com/cosmos/cosmos-sdk/x/mint/types"
+ "github.com/stretchr/testify/require"
+ tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
+ "math/rand"
+ "testing"
+)
+
+var (
+ onePercent = sdk.NewDecWithPrec(1, 2)
+ almostOne = sdk.OneDec().Sub(sdk.NewDecWithPrec(1, sdk.Precision))
+ allowedRelativeMulError = sdk.NewDecWithPrec(1, 9)
+)
+
+func resetSupply(app *simapp.SimApp, ctx sdk.Context, initSupply sdk.Coins, curSupply sdk.Coins) {
+ err := app.BankKeeper.MintCoins(ctx, types.ModuleName, initSupply)
+ if err != nil {
+ panic(err)
+ }
+ err = app.BankKeeper.BurnCoins(ctx, types.ModuleName, curSupply)
+ if err != nil {
+ panic(err)
+ }
+}
+
+func getTestingAccounts(r *rand.Rand, n int, ctx sdk.Context, app *simapp.SimApp) []simtypes.Account {
+ accounts := simtypes.RandomAccounts(r, n)
+
+ for _, account := range accounts {
+ acc := app.AccountKeeper.NewAccountWithAddress(ctx, account.Address)
+ app.AccountKeeper.SetAccount(ctx, acc)
+ }
+
+ return accounts
+}
+
+func TestCalculateInflationPerBlockAndIssuance(t *testing.T) {
+ app := simapp.Setup(false)
+ ctx := app.BaseApp.NewContext(false, tmproto.Header{})
+
+ s := rand.NewSource(1)
+ r := rand.New(s)
+ targetAccounts := getTestingAccounts(r, 3, ctx, app)
+
+ params := types.DefaultParams()
+
+ supply, _ := sdk.NewIntFromString("1000000000000000000000000000")
+ testDenom := "testDenom"
+
+ tests := []struct {
+ inflation *types.MunicipalInflation
+ expectedAnnualIssuance sdk.Int
+ }{
+ // Pass: 2 = 200% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDec(2)), supply.MulRaw(2)},
+ // Pass: 1 = 100% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec()), supply},
+ // Pass: 0.5 = 50% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1)), supply.QuoRaw(2)},
+ // Pass: 0.01 = 1% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent), supply.QuoRaw(100)},
+ //// Pass: -0.01 = -1% inflation
+ //{types.NewMunicipalInflation(testDenom, targetAccounts[0].Address.String(), onePercent.Neg()), supply.QuoRaw(100).Neg()},
+ //// Pass: -0.011 = -1.1% inflation
+ //{types.NewMunicipalInflation(testDenom, targetAccounts[0].Address.String(), sdk.NewDecWithPrec(11, 3).Neg()), supply.MulRaw(11).QuoRaw(1000).Neg()},
+ //// Pass: -0.5 = -50% inflation
+ //{types.NewMunicipalInflation(testDenom, targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1).Neg()), supply.QuoRaw(2)},
+ //// Pass: -0.999...9 = -99.999...9% inflation
+ //{types.NewMunicipalInflation(testDenom, targetAccounts[0].Address.String(), almostOne.Neg()), sdk.NewDecFromInt(supply).Mul(almostOne).TruncateInt().Neg()},
+ }
+
+ for _, tc := range tests {
+
+ // Calculate inflation
+ inflationRatePerBlock, err := types.CalculateInflationPerBlock(tc.inflation.Value, params.BlocksPerYear)
+ require.NoError(t, err)
+
+ reconstitutedInflationPerAnnum := inflationRatePerBlock.Add(sdk.OneDec()).Power(params.BlocksPerYear).Sub(sdk.OneDec())
+
+ mulErrorAfterReconstitution := reconstitutedInflationPerAnnum.Quo(tc.inflation.Value).Sub(sdk.OneDec()).Abs()
+ require.True(t, mulErrorAfterReconstitution.LT(allowedRelativeMulError))
+
+ issuedTokensAnnually := types.CalculateInflationIssuance(reconstitutedInflationPerAnnum, sdk.Coin{Denom: testDenom, Amount: supply})
+ issuanceRelativeMulError := sdk.NewDecFromInt(issuedTokensAnnually.AmountOf(testDenom)).Quo(sdk.NewDecFromInt(tc.expectedAnnualIssuance)).Sub(sdk.OneDec()).Abs()
+
+ require.True(t, issuanceRelativeMulError.LT(allowedRelativeMulError))
+ }
+}
+
+func TestValidationOfMunicipalInflation(t *testing.T) {
+ s := rand.NewSource(1)
+ r := rand.New(s)
+
+ targetAccounts := simtypes.RandomAccounts(r, 1)
+
+ tests := []struct {
+ inflation *types.MunicipalInflation
+ expectedToPass bool
+ }{
+ // Pass: 2 = 200% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDec(2)), true},
+ // Pass: 1 = 100% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec()), true},
+ // Pass: 0.5 = 50% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1)), true},
+ // Pass: 0.01 = 1% inflation
+ {types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent), true},
+ //// Pass: -0.01 = -1% inflation
+ //{types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent.Neg()), true},
+ //// Pass: -0.011 = -1.1% inflation
+ //{types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(11, 3).Neg()), true},
+ //// Pass: -0.5 = -50% inflation
+ //{types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1).Neg()), true},
+ //// Pass: -0.999...9 = -99.999...9% inflation
+ //{types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec().Sub(sdk.NewDecWithPrec(1, sdk.Precision)).Neg()), true},
+ //// Fail: -1 = -100% inflation
+ //{types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec().Neg()), false},
+ // Fail: invalid targetAddress
+ {types.NewMunicipalInflation("fetch123abc", onePercent), false},
+ {types.NewMunicipalInflation("", onePercent), false},
+ }
+ for _, tc := range tests {
+ err := tc.inflation.Validate()
+ if tc.expectedToPass {
+ require.NoError(t, err)
+ } else {
+ require.Error(t, err)
+ }
+ }
+}
+
+func TestBulkValidationOfMunicipalInflations(t *testing.T) {
+ s := rand.NewSource(1)
+ r := rand.New(s)
+
+ targetAccounts := simtypes.RandomAccounts(r, 1)
+
+ expectedToPass := []*types.MunicipalInflationPair{
+ // Pass: 2 = 200% inflation
+ {"stake0", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDec(2))},
+ // Pass: 1 = 100% inflation
+ {"stake1", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec())},
+ // Pass: 0.5 = 50% inflation
+ {"stake2", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1))},
+ // Pass: 0.01 = 1% inflation
+ {"stake3", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent)},
+ //// Pass: -0.01 = -1% inflation
+ //{"stake4", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent.Neg())},
+ //// Pass: -0.011 = -1.1% inflation
+ //{"stake5", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(11, 3).Neg())},
+ //// Pass: -0.5 = -50% inflation
+ //{"stake6", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.NewDecWithPrec(5, 1).Neg())},
+ //// Pass: -0.999...9 = -99.999...9% inflation
+ //{"stake7", types.NewMunicipalInflation(targetAccounts[0].Address.String(), sdk.OneDec().Sub(sdk.NewDecWithPrec(1, sdk.Precision)).Neg())},
+ }
+
+ // Expected Success:
+ err := types.ValidateMunicipalInflations(&expectedToPass)
+ require.NoError(t, err)
+
+ expectedToPass2 := append(expectedToPass, &types.MunicipalInflationPair{"stake8", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent)})
+ err = types.ValidateMunicipalInflations(&expectedToPass2)
+ require.NoError(t, err)
+
+ expectedToPass3 := []*types.MunicipalInflationPair{{"stake0", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent)}}
+ err = types.ValidateMunicipalInflations(&expectedToPass3)
+ require.NoError(t, err)
+
+ // Expected Failures:
+ expectedToFail_NegativeInfl := append(expectedToPass, &types.MunicipalInflationPair{"stake8", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent.Neg())})
+ err = types.ValidateMunicipalInflations(&expectedToFail_NegativeInfl)
+ require.Error(t, err)
+
+ expectedToFail2_NegativeInfl := []*types.MunicipalInflationPair{{"stake0", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent.Neg())}}
+ err = types.ValidateMunicipalInflations(&expectedToFail2_NegativeInfl)
+ require.Error(t, err)
+
+ expectedToFail2_DuplicatedDenom := append(expectedToPass, &types.MunicipalInflationPair{"stake0", types.NewMunicipalInflation(targetAccounts[0].Address.String(), onePercent)})
+ err = types.ValidateMunicipalInflations(&expectedToFail2_DuplicatedDenom)
+ require.Error(t, err)
+}
+
+func TestHandleMunicipalInflation(t *testing.T) {
+ app := simapp.Setup(false)
+ ctx := app.BaseApp.NewContext(false, tmproto.Header{})
+ acc := auth.NewEmptyModuleAccount(types.ModuleName, auth.Minter, auth.Burner)
+ app.AccountKeeper.SetModuleAccount(ctx, acc)
+ keeper := app.MintKeeper
+
+ s := rand.NewSource(1)
+ r := rand.New(s)
+ targetAccounts := getTestingAccounts(r, 6, ctx, app)
+
+ minter := types.DefaultInitialMinter()
+ params := types.DefaultParams()
+
+ initSupplyAmount, _ := sdk.NewIntFromString("1000000000000000000000000000")
+ params.BlocksPerYear = 10000
+ keeper.SetParams(ctx, params)
+
+ definedInfations := []struct {
+ denom string
+ annualInflation sdk.Dec
+ expectedAnnualIssuance sdk.Int
+ }{
+ {"denom0", sdk.NewDecWithPrec(1, 2), initSupplyAmount.QuoRaw(100)},
+ {"denom1", sdk.NewDecWithPrec(5, 2), initSupplyAmount.MulRaw(5).QuoRaw(100)},
+ {"denom2", sdk.NewDecWithPrec(25, 2), initSupplyAmount.QuoRaw(4)},
+ {"denom3", sdk.NewDecWithPrec(50, 2), initSupplyAmount.QuoRaw(2)},
+ {"denom4", sdk.NewDecWithPrec(75, 2), initSupplyAmount.MulRaw(3).QuoRaw(4)},
+ {"denom5", sdk.NewDecWithPrec(100, 2), initSupplyAmount},
+ }
+
+ var testMunicipalInflations = make([]*types.MunicipalInflationPair, len(definedInfations))
+ for i, infl := range definedInfations {
+ testMunicipalInflations[i] = &types.MunicipalInflationPair{infl.denom, &types.MunicipalInflation{targetAccounts[i].Address.String(), infl.annualInflation}}
+ }
+
+ // Configure/initialise Minter with MunicipalInflation:
+ minter.MunicipalInflation = testMunicipalInflations
+ keeper.SetMinter(ctx, minter)
+
+ // Reset supplies for each denomination to the same `initSupplyAmount` amount:
+ for _, infl := range definedInfations {
+ resetSupply(app, ctx, sdk.NewCoins(sdk.NewCoin(infl.denom, initSupplyAmount)), sdk.NewCoins(keeper.BankKeeper.GetSupply(ctx, infl.denom)))
+ }
+
+ // Recording starting balances for all test accounts:
+ startingTestAccountBalances := map[string]sdk.Int{}
+ for _, tc := range testMunicipalInflations {
+ account, _ := sdk.AccAddressFromBech32(tc.Inflation.TargetAddress)
+ startingTestAccountBalances[tc.Denom] = app.BankKeeper.GetBalance(ctx, account, tc.Denom).Amount
+ }
+
+ // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+ // TEST SUBJECT: Calling production code for as many times as there is number of blocks in a year
+
+ for i := 0; i < int(params.BlocksPerYear); i++ {
+ mint.HandleMunicipalInflation(&minter, ¶ms, &ctx, &keeper)
+ }
+ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ for i, tc := range testMunicipalInflations {
+ issuedAmount := (keeper.BankKeeper.GetSupply(ctx, tc.Denom).Amount).Sub(initSupplyAmount)
+ account, _ := sdk.AccAddressFromBech32(tc.Inflation.TargetAddress)
+ currentTestAccountBalance := app.BankKeeper.GetBalance(ctx, account, tc.Denom).Amount
+ require.True(t, issuedAmount.Equal(currentTestAccountBalance.Sub(startingTestAccountBalances[tc.Denom])))
+
+ issuanceRelativeMulError := sdk.NewDecFromInt(issuedAmount).QuoInt(definedInfations[i].expectedAnnualIssuance).Sub(sdk.OneDec())
+ require.True(t, issuanceRelativeMulError.LT(allowedRelativeMulError))
+ }
+}
diff --git a/x/mint/types/keys.go b/x/mint/types/keys.go
index e1c778744f..e0bc9f3992 100644
--- a/x/mint/types/keys.go
+++ b/x/mint/types/keys.go
@@ -16,5 +16,6 @@ const (
// Query endpoints supported by the minting querier
QueryParameters = "parameters"
QueryInflation = "inflation"
+ QueryInflations = "inflations"
QueryAnnualProvisions = "annual_provisions"
)
diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go
index 0904b57a6d..1ecd6ba7b0 100644
--- a/x/mint/types/mint.pb.go
+++ b/x/mint/types/mint.pb.go
@@ -29,7 +29,8 @@ type Minter struct {
// current annual inflation rate
Inflation github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=inflation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"inflation"`
// current annual expected provisions
- AnnualProvisions github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"annual_provisions" yaml:"annual_provisions"`
+ AnnualProvisions github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"annual_provisions" yaml:"annual_provisions"`
+ MunicipalInflation []*MunicipalInflationPair `protobuf:"bytes,3,rep,name=municipal_inflation,json=municipalInflation,proto3" json:"municipal_inflation,omitempty"`
}
func (m *Minter) Reset() { *m = Minter{} }
@@ -65,6 +66,122 @@ func (m *Minter) XXX_DiscardUnknown() {
var xxx_messageInfo_Minter proto.InternalMessageInfo
+func (m *Minter) GetMunicipalInflation() []*MunicipalInflationPair {
+ if m != nil {
+ return m.MunicipalInflation
+ }
+ return nil
+}
+
+// Inflation holds parameters for individual native token inflation
+type MunicipalInflation struct {
+ // address where inflation induced new tokens will be minted
+ TargetAddress string `protobuf:"bytes,2,opt,name=target_address,json=targetAddress,proto3" json:"target_address,omitempty" yaml:"target_address"`
+ // current ANNUAL inflation rate
+ Value github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=value,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"value"`
+}
+
+func (m *MunicipalInflation) Reset() { *m = MunicipalInflation{} }
+func (m *MunicipalInflation) String() string { return proto.CompactTextString(m) }
+func (*MunicipalInflation) ProtoMessage() {}
+func (*MunicipalInflation) Descriptor() ([]byte, []int) {
+ return fileDescriptor_2df116d183c1e223, []int{1}
+}
+func (m *MunicipalInflation) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *MunicipalInflation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_MunicipalInflation.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *MunicipalInflation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MunicipalInflation.Merge(m, src)
+}
+func (m *MunicipalInflation) XXX_Size() int {
+ return m.Size()
+}
+func (m *MunicipalInflation) XXX_DiscardUnknown() {
+ xxx_messageInfo_MunicipalInflation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MunicipalInflation proto.InternalMessageInfo
+
+func (m *MunicipalInflation) GetTargetAddress() string {
+ if m != nil {
+ return m.TargetAddress
+ }
+ return ""
+}
+
+// Pair representing denom -> inflation mapping.
+// This pair-like structure will be used in `repeating MunicipalInflationPair`
+// type, what will have the same Protobuf binary representation on wire as the
+// `map` type.
+// This means that what is serialised as `repeating MunicipalInflationPair` on
+// one end can be deserialised as `map` on the other
+// end, and other vice versa.
+type MunicipalInflationPair struct {
+ // token denomination
+ Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"`
+ // Structure representing municipal inflation for the the given `denom`
+ Inflation *MunicipalInflation `protobuf:"bytes,2,opt,name=inflation,proto3" json:"inflation,omitempty"`
+}
+
+func (m *MunicipalInflationPair) Reset() { *m = MunicipalInflationPair{} }
+func (m *MunicipalInflationPair) String() string { return proto.CompactTextString(m) }
+func (*MunicipalInflationPair) ProtoMessage() {}
+func (*MunicipalInflationPair) Descriptor() ([]byte, []int) {
+ return fileDescriptor_2df116d183c1e223, []int{2}
+}
+func (m *MunicipalInflationPair) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *MunicipalInflationPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_MunicipalInflationPair.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *MunicipalInflationPair) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MunicipalInflationPair.Merge(m, src)
+}
+func (m *MunicipalInflationPair) XXX_Size() int {
+ return m.Size()
+}
+func (m *MunicipalInflationPair) XXX_DiscardUnknown() {
+ xxx_messageInfo_MunicipalInflationPair.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MunicipalInflationPair proto.InternalMessageInfo
+
+func (m *MunicipalInflationPair) GetDenom() string {
+ if m != nil {
+ return m.Denom
+ }
+ return ""
+}
+
+func (m *MunicipalInflationPair) GetInflation() *MunicipalInflation {
+ if m != nil {
+ return m.Inflation
+ }
+ return nil
+}
+
// Params holds parameters for the mint module.
type Params struct {
// type of coin to mint
@@ -78,7 +195,7 @@ type Params struct {
func (m *Params) Reset() { *m = Params{} }
func (*Params) ProtoMessage() {}
func (*Params) Descriptor() ([]byte, []int) {
- return fileDescriptor_2df116d183c1e223, []int{1}
+ return fileDescriptor_2df116d183c1e223, []int{3}
}
func (m *Params) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -123,35 +240,45 @@ func (m *Params) GetBlocksPerYear() uint64 {
func init() {
proto.RegisterType((*Minter)(nil), "cosmos.mint.v1beta1.Minter")
+ proto.RegisterType((*MunicipalInflation)(nil), "cosmos.mint.v1beta1.MunicipalInflation")
+ proto.RegisterType((*MunicipalInflationPair)(nil), "cosmos.mint.v1beta1.MunicipalInflationPair")
proto.RegisterType((*Params)(nil), "cosmos.mint.v1beta1.Params")
}
func init() { proto.RegisterFile("cosmos/mint/v1beta1/mint.proto", fileDescriptor_2df116d183c1e223) }
var fileDescriptor_2df116d183c1e223 = []byte{
- // 351 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x4d, 0x4b, 0xc3, 0x30,
- 0x18, 0xc7, 0x1b, 0x19, 0x85, 0x05, 0xe6, 0x4b, 0x7d, 0xa1, 0x0c, 0x6c, 0x47, 0x0f, 0x32, 0x0f,
- 0xb6, 0x0c, 0x6f, 0x3b, 0xd6, 0x81, 0x20, 0x0a, 0xa3, 0x37, 0xbd, 0x94, 0xb4, 0x8b, 0x33, 0xac,
- 0x4d, 0x4a, 0x92, 0x4d, 0xf7, 0x2d, 0x3c, 0x7a, 0xf4, 0xe3, 0xec, 0xe6, 0x8e, 0xe2, 0xa1, 0xe8,
- 0xf6, 0x0d, 0xf6, 0x09, 0xa4, 0xcd, 0xd8, 0x50, 0x41, 0xd8, 0x29, 0xc9, 0xef, 0x79, 0xf8, 0xe7,
- 0x97, 0xf0, 0x40, 0x2b, 0x66, 0x22, 0x65, 0xc2, 0x4b, 0x09, 0x95, 0xde, 0xa8, 0x15, 0x61, 0x89,
- 0x5a, 0xe5, 0xc1, 0xcd, 0x38, 0x93, 0xcc, 0xd8, 0x57, 0x75, 0xb7, 0x44, 0xcb, 0x7a, 0xfd, 0xa0,
- 0xcf, 0xfa, 0xac, 0xac, 0x7b, 0xc5, 0x4e, 0xb5, 0x3a, 0x6f, 0x00, 0xea, 0x37, 0x84, 0x4a, 0xcc,
- 0x8d, 0x6b, 0x58, 0x25, 0xf4, 0x3e, 0x41, 0x92, 0x30, 0x6a, 0x82, 0x06, 0x68, 0x56, 0x7d, 0x77,
- 0x92, 0xdb, 0xda, 0x47, 0x6e, 0x9f, 0xf4, 0x89, 0x7c, 0x18, 0x46, 0x6e, 0xcc, 0x52, 0x6f, 0x79,
- 0xb7, 0x5a, 0xce, 0x44, 0x6f, 0xe0, 0xc9, 0x71, 0x86, 0x85, 0xdb, 0xc1, 0x71, 0xb0, 0x0e, 0x30,
- 0x1e, 0xe1, 0x1e, 0xa2, 0x74, 0x88, 0x92, 0x30, 0xe3, 0x6c, 0x44, 0x04, 0x61, 0x54, 0x98, 0x5b,
- 0x65, 0xea, 0xd5, 0x66, 0xa9, 0x8b, 0xdc, 0x36, 0xc7, 0x28, 0x4d, 0xda, 0xce, 0x9f, 0x40, 0x27,
- 0xd8, 0x55, 0xac, 0xbb, 0x46, 0x5f, 0x00, 0xea, 0x5d, 0xc4, 0x51, 0x2a, 0x8c, 0x63, 0x08, 0x8b,
- 0x2f, 0x08, 0x7b, 0x98, 0xb2, 0x54, 0x3d, 0x29, 0xa8, 0x16, 0xa4, 0x53, 0x00, 0x83, 0xc2, 0xed,
- 0x95, 0x6f, 0xc8, 0x91, 0xc4, 0x4b, 0xbf, 0xcb, 0x8d, 0xfd, 0x0e, 0x95, 0xdf, 0xcf, 0x34, 0x27,
- 0xa8, 0xad, 0x40, 0x80, 0x24, 0x36, 0x7c, 0xb8, 0x13, 0x25, 0x2c, 0x1e, 0x88, 0x30, 0xc3, 0x3c,
- 0x1c, 0x63, 0xc4, 0x4d, 0xbd, 0x01, 0x9a, 0x15, 0xbf, 0xbe, 0xc8, 0xed, 0x23, 0x15, 0xf1, 0xab,
- 0xc1, 0x09, 0x6a, 0x8a, 0x74, 0x31, 0xbf, 0xc5, 0x88, 0xb7, 0x2b, 0x2f, 0xaf, 0xb6, 0xe6, 0x5f,
- 0x4c, 0x66, 0x16, 0x98, 0xce, 0x2c, 0xf0, 0x39, 0xb3, 0xc0, 0xf3, 0xdc, 0xd2, 0xa6, 0x73, 0x4b,
- 0x7b, 0x9f, 0x5b, 0xda, 0xdd, 0xe9, 0xbf, 0xce, 0x4f, 0x6a, 0x64, 0x4a, 0xf5, 0x48, 0x2f, 0x27,
- 0xe0, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x04, 0x68, 0xe1, 0x61, 0x4e, 0x02, 0x00, 0x00,
+ // 476 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xc1, 0x6e, 0xd3, 0x40,
+ 0x10, 0xb5, 0x9b, 0x36, 0x52, 0xb6, 0x4a, 0x81, 0x6d, 0xa9, 0x4c, 0x25, 0xec, 0x68, 0x0f, 0x10,
+ 0x84, 0xb0, 0xd5, 0x72, 0xeb, 0x09, 0x42, 0x10, 0x02, 0x51, 0x29, 0xf2, 0x0d, 0x84, 0x64, 0x4d,
+ 0x9c, 0x25, 0xac, 0x6a, 0xef, 0x5a, 0xbb, 0xeb, 0x40, 0xfe, 0x82, 0x23, 0x07, 0x0e, 0xfc, 0x00,
+ 0xff, 0xd1, 0x63, 0x8f, 0x88, 0x83, 0x05, 0xc9, 0x1f, 0xe4, 0x0b, 0x50, 0xbc, 0x49, 0x9a, 0x92,
+ 0x0a, 0x91, 0x9e, 0x92, 0x79, 0xf3, 0xe6, 0xcd, 0xcc, 0x1b, 0x2f, 0x72, 0x63, 0xa1, 0x52, 0xa1,
+ 0x82, 0x94, 0x71, 0x1d, 0x0c, 0x0e, 0xbb, 0x54, 0xc3, 0x61, 0x19, 0xf8, 0x99, 0x14, 0x5a, 0xe0,
+ 0x5d, 0x93, 0xf7, 0x4b, 0x68, 0x96, 0x3f, 0xd8, 0xeb, 0x8b, 0xbe, 0x28, 0xf3, 0xc1, 0xf4, 0x9f,
+ 0xa1, 0x92, 0xef, 0x1b, 0xa8, 0x7a, 0xc2, 0xb8, 0xa6, 0x12, 0xbf, 0x46, 0x35, 0xc6, 0xdf, 0x27,
+ 0xa0, 0x99, 0xe0, 0x8e, 0xdd, 0xb0, 0x9b, 0xb5, 0x96, 0x7f, 0x56, 0x78, 0xd6, 0xcf, 0xc2, 0xbb,
+ 0xd7, 0x67, 0xfa, 0x43, 0xde, 0xf5, 0x63, 0x91, 0x06, 0xb3, 0xde, 0xe6, 0xe7, 0x91, 0xea, 0x9d,
+ 0x06, 0x7a, 0x98, 0x51, 0xe5, 0xb7, 0x69, 0x1c, 0x5e, 0x08, 0xe0, 0x8f, 0xe8, 0x16, 0x70, 0x9e,
+ 0x43, 0x12, 0x65, 0x52, 0x0c, 0x98, 0x62, 0x82, 0x2b, 0x67, 0xa3, 0x54, 0x7d, 0xb5, 0x9e, 0xea,
+ 0xa4, 0xf0, 0x9c, 0x21, 0xa4, 0xc9, 0x31, 0x59, 0x11, 0x24, 0xe1, 0x4d, 0x83, 0x75, 0x16, 0x10,
+ 0x7e, 0x87, 0x76, 0xd3, 0x9c, 0xb3, 0x98, 0x65, 0x90, 0x44, 0x17, 0x0b, 0x55, 0x1a, 0x95, 0xe6,
+ 0xf6, 0xd1, 0x43, 0xff, 0x0a, 0x6b, 0xfc, 0x93, 0x39, 0xff, 0xe5, 0x9c, 0xde, 0x01, 0x26, 0x43,
+ 0x9c, 0xae, 0xe0, 0xe4, 0xab, 0x8d, 0xf0, 0x2a, 0x1d, 0x3f, 0x41, 0x3b, 0x1a, 0x64, 0x9f, 0xea,
+ 0x08, 0x7a, 0x3d, 0x49, 0xd5, 0x7c, 0xd5, 0x3b, 0x93, 0xc2, 0xbb, 0x6d, 0x86, 0xbf, 0x9c, 0x27,
+ 0x61, 0xdd, 0x00, 0x4f, 0x4d, 0x8c, 0xdb, 0x68, 0x6b, 0x00, 0x49, 0x4e, 0x9d, 0xca, 0xb5, 0x9c,
+ 0x37, 0xc5, 0x24, 0x47, 0xfb, 0x57, 0x2f, 0x83, 0xf7, 0xd0, 0x56, 0x8f, 0x72, 0x91, 0x9a, 0xcb,
+ 0x86, 0x26, 0xc0, 0xcf, 0x97, 0x6f, 0x3e, 0x1d, 0x79, 0xfb, 0xe8, 0xfe, 0x7f, 0x5a, 0xb4, 0x74,
+ 0x6c, 0xf2, 0xdb, 0x46, 0xd5, 0x0e, 0x48, 0x48, 0x15, 0xbe, 0x8b, 0xd0, 0xb4, 0x30, 0x5a, 0x6e,
+ 0x56, 0x9b, 0x22, 0xed, 0xb2, 0x21, 0x47, 0x3b, 0x8b, 0xb2, 0x48, 0x82, 0xa6, 0x33, 0xa3, 0x5e,
+ 0xac, 0xfd, 0x4d, 0xcc, 0x6c, 0xbd, 0xac, 0x46, 0xc2, 0xfa, 0x02, 0x08, 0x41, 0x53, 0xdc, 0x42,
+ 0x37, 0xba, 0x89, 0x88, 0x4f, 0x55, 0x94, 0x51, 0x19, 0x0d, 0x29, 0x48, 0xa7, 0xda, 0xb0, 0x9b,
+ 0x9b, 0xad, 0x83, 0x49, 0xe1, 0xed, 0x1b, 0x89, 0xbf, 0x08, 0x24, 0xac, 0x1b, 0xa4, 0x43, 0xe5,
+ 0x1b, 0x0a, 0xf2, 0x78, 0xf3, 0xcb, 0x37, 0xcf, 0x6a, 0x3d, 0x3b, 0x1b, 0xb9, 0xf6, 0xf9, 0xc8,
+ 0xb5, 0x7f, 0x8d, 0x5c, 0xfb, 0xf3, 0xd8, 0xb5, 0xce, 0xc7, 0xae, 0xf5, 0x63, 0xec, 0x5a, 0x6f,
+ 0x1f, 0xfc, 0x73, 0xe6, 0x4f, 0xe6, 0x99, 0x96, 0xa3, 0x77, 0xab, 0xe5, 0xab, 0x7b, 0xfc, 0x27,
+ 0x00, 0x00, 0xff, 0xff, 0x65, 0xf2, 0xc8, 0x9b, 0xc2, 0x03, 0x00, 0x00,
}
func (m *Minter) Marshal() (dAtA []byte, err error) {
@@ -174,6 +301,20 @@ func (m *Minter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ if len(m.MunicipalInflation) > 0 {
+ for iNdEx := len(m.MunicipalInflation) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.MunicipalInflation[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintMint(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
{
size := m.AnnualProvisions.Size()
i -= size
@@ -197,6 +338,88 @@ func (m *Minter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *MunicipalInflation) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MunicipalInflation) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MunicipalInflation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ {
+ size := m.Value.Size()
+ i -= size
+ if _, err := m.Value.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintMint(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ if len(m.TargetAddress) > 0 {
+ i -= len(m.TargetAddress)
+ copy(dAtA[i:], m.TargetAddress)
+ i = encodeVarintMint(dAtA, i, uint64(len(m.TargetAddress)))
+ i--
+ dAtA[i] = 0x12
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MunicipalInflationPair) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MunicipalInflationPair) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MunicipalInflationPair) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.Inflation != nil {
+ {
+ size, err := m.Inflation.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintMint(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Denom) > 0 {
+ i -= len(m.Denom)
+ copy(dAtA[i:], m.Denom)
+ i = encodeVarintMint(dAtA, i, uint64(len(m.Denom)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *Params) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -263,6 +486,44 @@ func (m *Minter) Size() (n int) {
n += 1 + l + sovMint(uint64(l))
l = m.AnnualProvisions.Size()
n += 1 + l + sovMint(uint64(l))
+ if len(m.MunicipalInflation) > 0 {
+ for _, e := range m.MunicipalInflation {
+ l = e.Size()
+ n += 1 + l + sovMint(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *MunicipalInflation) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TargetAddress)
+ if l > 0 {
+ n += 1 + l + sovMint(uint64(l))
+ }
+ l = m.Value.Size()
+ n += 1 + l + sovMint(uint64(l))
+ return n
+}
+
+func (m *MunicipalInflationPair) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Denom)
+ if l > 0 {
+ n += 1 + l + sovMint(uint64(l))
+ }
+ if m.Inflation != nil {
+ l = m.Inflation.Size()
+ n += 1 + l + sovMint(uint64(l))
+ }
return n
}
@@ -387,6 +648,274 @@ func (m *Minter) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MunicipalInflation", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthMint
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthMint
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MunicipalInflation = append(m.MunicipalInflation, &MunicipalInflationPair{})
+ if err := m.MunicipalInflation[len(m.MunicipalInflation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMint(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthMint
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MunicipalInflation) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MunicipalInflation: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MunicipalInflation: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TargetAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMint
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMint
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TargetAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMint
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMint
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMint(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthMint
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MunicipalInflationPair) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MunicipalInflationPair: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MunicipalInflationPair: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMint
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMint
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Denom = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Inflation", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMint
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthMint
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthMint
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Inflation == nil {
+ m.Inflation = &MunicipalInflation{}
+ }
+ if err := m.Inflation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipMint(dAtA[iNdEx:])
diff --git a/x/mint/types/minter.go b/x/mint/types/minter.go
index 5c49e7750e..2fdc1ff6fc 100644
--- a/x/mint/types/minter.go
+++ b/x/mint/types/minter.go
@@ -8,10 +8,11 @@ import (
// NewMinter returns a new Minter object with the given inflation and annual
// provisions values.
-func NewMinter(inflation, annualProvisions sdk.Dec) Minter {
+func NewMinter(inflation, annualProvisions sdk.Dec, inflations []*MunicipalInflationPair) Minter {
return Minter{
- Inflation: inflation,
- AnnualProvisions: annualProvisions,
+ Inflation: inflation,
+ AnnualProvisions: annualProvisions,
+ MunicipalInflation: inflations,
}
}
@@ -20,6 +21,7 @@ func InitialMinter(inflation sdk.Dec) Minter {
return NewMinter(
inflation,
sdk.NewDec(0),
+ nil,
)
}
@@ -31,13 +33,15 @@ func DefaultInitialMinter() Minter {
)
}
-// validate minter
+// ValidateMinter validate minter
func ValidateMinter(minter Minter) error {
if minter.Inflation.IsNegative() {
- return fmt.Errorf("mint parameter Inflation should be positive, is %s",
+ return fmt.Errorf("mint parameter AnnualInflation should be positive, is %s",
minter.Inflation.String())
}
- return nil
+
+ err := ValidateMunicipalInflations(&minter.MunicipalInflation)
+ return err
}
// NextInflationRate returns the new inflation rate for the next hour.
diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go
index f707eb810d..cc6af2f7b0 100644
--- a/x/mint/types/query.pb.go
+++ b/x/mint/types/query.pb.go
@@ -150,6 +150,79 @@ func (m *QueryInflationRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryInflationRequest proto.InternalMessageInfo
+// QueryMunicipalInflationRequest is the request type for the Query/MunicipalInflation RPC method.
+type QueryMunicipalInflationRequest struct {
+ // Types that are valid to be assigned to XDenom:
+ // *QueryMunicipalInflationRequest_Denom
+ XDenom isQueryMunicipalInflationRequest_XDenom `protobuf_oneof:"_denom"`
+}
+
+func (m *QueryMunicipalInflationRequest) Reset() { *m = QueryMunicipalInflationRequest{} }
+func (m *QueryMunicipalInflationRequest) String() string { return proto.CompactTextString(m) }
+func (*QueryMunicipalInflationRequest) ProtoMessage() {}
+func (*QueryMunicipalInflationRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d0a1e393be338aea, []int{3}
+}
+func (m *QueryMunicipalInflationRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *QueryMunicipalInflationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_QueryMunicipalInflationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *QueryMunicipalInflationRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_QueryMunicipalInflationRequest.Merge(m, src)
+}
+func (m *QueryMunicipalInflationRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *QueryMunicipalInflationRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_QueryMunicipalInflationRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_QueryMunicipalInflationRequest proto.InternalMessageInfo
+
+type isQueryMunicipalInflationRequest_XDenom interface {
+ isQueryMunicipalInflationRequest_XDenom()
+ MarshalTo([]byte) (int, error)
+ Size() int
+}
+
+type QueryMunicipalInflationRequest_Denom struct {
+ Denom string `protobuf:"bytes,1,opt,name=denom,proto3,oneof" json:"denom,omitempty"`
+}
+
+func (*QueryMunicipalInflationRequest_Denom) isQueryMunicipalInflationRequest_XDenom() {}
+
+func (m *QueryMunicipalInflationRequest) GetXDenom() isQueryMunicipalInflationRequest_XDenom {
+ if m != nil {
+ return m.XDenom
+ }
+ return nil
+}
+
+func (m *QueryMunicipalInflationRequest) GetDenom() string {
+ if x, ok := m.GetXDenom().(*QueryMunicipalInflationRequest_Denom); ok {
+ return x.Denom
+ }
+ return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*QueryMunicipalInflationRequest) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*QueryMunicipalInflationRequest_Denom)(nil),
+ }
+}
+
// QueryInflationResponse is the response type for the Query/Inflation RPC
// method.
type QueryInflationResponse struct {
@@ -161,7 +234,7 @@ func (m *QueryInflationResponse) Reset() { *m = QueryInflationResponse{}
func (m *QueryInflationResponse) String() string { return proto.CompactTextString(m) }
func (*QueryInflationResponse) ProtoMessage() {}
func (*QueryInflationResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_d0a1e393be338aea, []int{3}
+ return fileDescriptor_d0a1e393be338aea, []int{4}
}
func (m *QueryInflationResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -190,6 +263,53 @@ func (m *QueryInflationResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryInflationResponse proto.InternalMessageInfo
+// QueryInflationResponse is the response type for the Query/Inflation RPC
+// method.
+type QueryMunicipalInflationResponse struct {
+ // inflation is the current minting inflation value.
+ Inflations []*MunicipalInflationPair `protobuf:"bytes,1,rep,name=inflations,proto3" json:"inflations,omitempty"`
+}
+
+func (m *QueryMunicipalInflationResponse) Reset() { *m = QueryMunicipalInflationResponse{} }
+func (m *QueryMunicipalInflationResponse) String() string { return proto.CompactTextString(m) }
+func (*QueryMunicipalInflationResponse) ProtoMessage() {}
+func (*QueryMunicipalInflationResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_d0a1e393be338aea, []int{5}
+}
+func (m *QueryMunicipalInflationResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *QueryMunicipalInflationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_QueryMunicipalInflationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *QueryMunicipalInflationResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_QueryMunicipalInflationResponse.Merge(m, src)
+}
+func (m *QueryMunicipalInflationResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *QueryMunicipalInflationResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_QueryMunicipalInflationResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_QueryMunicipalInflationResponse proto.InternalMessageInfo
+
+func (m *QueryMunicipalInflationResponse) GetInflations() []*MunicipalInflationPair {
+ if m != nil {
+ return m.Inflations
+ }
+ return nil
+}
+
// QueryAnnualProvisionsRequest is the request type for the
// Query/AnnualProvisions RPC method.
type QueryAnnualProvisionsRequest struct {
@@ -199,7 +319,7 @@ func (m *QueryAnnualProvisionsRequest) Reset() { *m = QueryAnnualProvisi
func (m *QueryAnnualProvisionsRequest) String() string { return proto.CompactTextString(m) }
func (*QueryAnnualProvisionsRequest) ProtoMessage() {}
func (*QueryAnnualProvisionsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_d0a1e393be338aea, []int{4}
+ return fileDescriptor_d0a1e393be338aea, []int{6}
}
func (m *QueryAnnualProvisionsRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -239,7 +359,7 @@ func (m *QueryAnnualProvisionsResponse) Reset() { *m = QueryAnnualProvis
func (m *QueryAnnualProvisionsResponse) String() string { return proto.CompactTextString(m) }
func (*QueryAnnualProvisionsResponse) ProtoMessage() {}
func (*QueryAnnualProvisionsResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_d0a1e393be338aea, []int{5}
+ return fileDescriptor_d0a1e393be338aea, []int{7}
}
func (m *QueryAnnualProvisionsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -272,7 +392,9 @@ func init() {
proto.RegisterType((*QueryParamsRequest)(nil), "cosmos.mint.v1beta1.QueryParamsRequest")
proto.RegisterType((*QueryParamsResponse)(nil), "cosmos.mint.v1beta1.QueryParamsResponse")
proto.RegisterType((*QueryInflationRequest)(nil), "cosmos.mint.v1beta1.QueryInflationRequest")
+ proto.RegisterType((*QueryMunicipalInflationRequest)(nil), "cosmos.mint.v1beta1.QueryMunicipalInflationRequest")
proto.RegisterType((*QueryInflationResponse)(nil), "cosmos.mint.v1beta1.QueryInflationResponse")
+ proto.RegisterType((*QueryMunicipalInflationResponse)(nil), "cosmos.mint.v1beta1.QueryMunicipalInflationResponse")
proto.RegisterType((*QueryAnnualProvisionsRequest)(nil), "cosmos.mint.v1beta1.QueryAnnualProvisionsRequest")
proto.RegisterType((*QueryAnnualProvisionsResponse)(nil), "cosmos.mint.v1beta1.QueryAnnualProvisionsResponse")
}
@@ -280,35 +402,42 @@ func init() {
func init() { proto.RegisterFile("cosmos/mint/v1beta1/query.proto", fileDescriptor_d0a1e393be338aea) }
var fileDescriptor_d0a1e393be338aea = []byte{
- // 446 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0x2f, 0xce,
- 0xcd, 0x2f, 0xd6, 0xcf, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4,
- 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, 0x28, 0xd0,
- 0x03, 0x29, 0xd0, 0x83, 0x2a, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xcb, 0xeb, 0x83, 0x58,
- 0x10, 0xa5, 0x52, 0x32, 0xe9, 0xf9, 0xf9, 0xe9, 0x39, 0xa9, 0xfa, 0x89, 0x05, 0x99, 0xfa, 0x89,
- 0x79, 0x79, 0xf9, 0x25, 0x89, 0x25, 0x99, 0xf9, 0x79, 0xc5, 0x50, 0x59, 0x39, 0x6c, 0x36, 0x81,
- 0x4d, 0x05, 0xcb, 0x2b, 0x89, 0x70, 0x09, 0x05, 0x82, 0xec, 0x0d, 0x48, 0x2c, 0x4a, 0xcc, 0x2d,
- 0x0e, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x51, 0x0a, 0xe0, 0x12, 0x46, 0x11, 0x2d, 0x2e, 0xc8,
- 0xcf, 0x2b, 0x4e, 0x15, 0xb2, 0xe4, 0x62, 0x2b, 0x00, 0x8b, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70,
- 0x1b, 0x49, 0xeb, 0x61, 0x71, 0xa6, 0x1e, 0x44, 0x93, 0x13, 0xcb, 0x89, 0x7b, 0xf2, 0x0c, 0x41,
- 0x50, 0x0d, 0x4a, 0xe2, 0x5c, 0xa2, 0x60, 0x13, 0x3d, 0xf3, 0xd2, 0x72, 0xc0, 0x0e, 0x84, 0x59,
- 0x95, 0xc6, 0x25, 0x86, 0x2e, 0x01, 0xb5, 0xcd, 0x87, 0x8b, 0x33, 0x13, 0x26, 0x08, 0xb6, 0x90,
- 0xc7, 0x49, 0x0f, 0x64, 0xe6, 0xad, 0x7b, 0xf2, 0x6a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a,
- 0xc9, 0xf9, 0xb9, 0xfa, 0x50, 0x0f, 0x42, 0x28, 0xdd, 0xe2, 0x94, 0x6c, 0xfd, 0x92, 0xca, 0x82,
- 0xd4, 0x62, 0x3d, 0x97, 0xd4, 0xe4, 0x20, 0x84, 0x01, 0x4a, 0x72, 0x5c, 0x32, 0x60, 0x7b, 0x1c,
- 0xf3, 0xf2, 0x4a, 0x13, 0x73, 0x02, 0x8a, 0xf2, 0xcb, 0x32, 0x8b, 0x41, 0xe1, 0x04, 0x73, 0x47,
- 0x0d, 0x97, 0x2c, 0x0e, 0x79, 0xa8, 0x73, 0xa2, 0xb9, 0x04, 0x13, 0xc1, 0x72, 0xf1, 0x05, 0x70,
- 0x49, 0x32, 0x9d, 0x25, 0x90, 0x88, 0x66, 0x89, 0xd1, 0x51, 0x66, 0x2e, 0x56, 0xb0, 0xf5, 0x42,
- 0x0d, 0x8c, 0x5c, 0x6c, 0x90, 0x10, 0x14, 0x52, 0xc7, 0x1a, 0xbc, 0x98, 0xd1, 0x25, 0xa5, 0x41,
- 0x58, 0x21, 0xc4, 0x13, 0x4a, 0xca, 0x4d, 0x97, 0x9f, 0x4c, 0x66, 0x92, 0x15, 0x92, 0xd6, 0xc7,
- 0x96, 0x2e, 0x20, 0x71, 0x25, 0xd4, 0xc3, 0xc8, 0xc5, 0x09, 0x8f, 0x0e, 0x21, 0x2d, 0xdc, 0x86,
- 0xa3, 0x47, 0xa6, 0x94, 0x36, 0x51, 0x6a, 0xa1, 0x6e, 0x51, 0x03, 0xbb, 0x45, 0x41, 0x48, 0x0e,
- 0xab, 0x5b, 0xe0, 0x31, 0x27, 0xb4, 0x92, 0x91, 0x4b, 0x00, 0x3d, 0x56, 0x84, 0x0c, 0x71, 0xdb,
- 0x84, 0x23, 0x86, 0xa5, 0x8c, 0x48, 0xd1, 0x02, 0x75, 0xa3, 0x1e, 0xd8, 0x8d, 0x1a, 0x42, 0x6a,
- 0x58, 0xdd, 0x88, 0x91, 0x1e, 0x9c, 0x9c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1,
- 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e,
- 0x21, 0x4a, 0x13, 0x6f, 0xda, 0xa8, 0x80, 0x18, 0x0c, 0x4e, 0x22, 0x49, 0x6c, 0xe0, 0xac, 0x69,
- 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xed, 0x9c, 0x7b, 0x26, 0x04, 0x00, 0x00,
+ // 548 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0xd3, 0x40,
+ 0x18, 0xc6, 0x7d, 0xd0, 0x46, 0xe4, 0x2d, 0x43, 0xb9, 0x96, 0x7f, 0x6e, 0x7b, 0xa9, 0x8c, 0x14,
+ 0x4c, 0x2b, 0x6c, 0x92, 0xb2, 0x30, 0x12, 0x40, 0x02, 0x01, 0x52, 0xf0, 0x08, 0x43, 0x74, 0x49,
+ 0x5d, 0x63, 0x11, 0xdf, 0xb9, 0x3e, 0xbb, 0xa2, 0x12, 0x03, 0x62, 0x62, 0x60, 0x40, 0xe2, 0x53,
+ 0x30, 0xf2, 0x2d, 0x3a, 0x56, 0x62, 0x41, 0x0c, 0x15, 0x4a, 0xf8, 0x12, 0x6c, 0xc8, 0x77, 0x97,
+ 0x14, 0x1c, 0x1b, 0x28, 0x53, 0xe2, 0x7b, 0xdf, 0xf7, 0x79, 0x7e, 0x7e, 0xef, 0x49, 0xa0, 0x31,
+ 0xe0, 0x22, 0xe2, 0xc2, 0x8d, 0x42, 0x96, 0xba, 0x7b, 0xad, 0xbe, 0x9f, 0xd2, 0x96, 0xbb, 0x9b,
+ 0xf9, 0xc9, 0xbe, 0x13, 0x27, 0x3c, 0xe5, 0x78, 0x49, 0x35, 0x38, 0x79, 0x83, 0xa3, 0x1b, 0xcc,
+ 0xe5, 0x80, 0x07, 0x5c, 0xd6, 0xdd, 0xfc, 0x9b, 0x6a, 0x35, 0x57, 0x03, 0xce, 0x83, 0xa1, 0xef,
+ 0xd2, 0x38, 0x74, 0x29, 0x63, 0x3c, 0xa5, 0x69, 0xc8, 0x99, 0xd0, 0x55, 0x52, 0xe6, 0x24, 0x55,
+ 0x65, 0xdd, 0x5a, 0x06, 0xfc, 0x24, 0xf7, 0xed, 0xd2, 0x84, 0x46, 0xc2, 0xf3, 0x77, 0x33, 0x5f,
+ 0xa4, 0x56, 0x17, 0x96, 0x7e, 0x3b, 0x15, 0x31, 0x67, 0xc2, 0xc7, 0xb7, 0xa0, 0x16, 0xcb, 0x93,
+ 0x4b, 0x68, 0x1d, 0xd9, 0x0b, 0xed, 0x15, 0xa7, 0x04, 0xd3, 0x51, 0x43, 0x9d, 0xb9, 0x83, 0xa3,
+ 0x86, 0xe1, 0xe9, 0x01, 0xeb, 0x22, 0x9c, 0x97, 0x8a, 0x0f, 0xd8, 0xce, 0x50, 0x02, 0x4e, 0xac,
+ 0xee, 0x01, 0x91, 0x85, 0xc7, 0x19, 0x0b, 0x07, 0x61, 0x4c, 0x87, 0xc5, 0x0e, 0x7c, 0x19, 0xe6,
+ 0xb7, 0x7d, 0xc6, 0x23, 0x69, 0x5a, 0xbf, 0x6f, 0x78, 0xea, 0xf1, 0x2d, 0x42, 0x9d, 0x33, 0x50,
+ 0xeb, 0xc9, 0x07, 0x6b, 0x07, 0x2e, 0x14, 0xf5, 0x35, 0xf4, 0x23, 0xa8, 0x87, 0x93, 0x43, 0x29,
+ 0x71, 0xb6, 0xe3, 0xe4, 0x68, 0x5f, 0x8f, 0x1a, 0xcd, 0x20, 0x4c, 0x9f, 0x67, 0x7d, 0x67, 0xc0,
+ 0x23, 0x57, 0xef, 0x49, 0x7d, 0x5c, 0x17, 0xdb, 0x2f, 0xdc, 0x74, 0x3f, 0xf6, 0x85, 0x73, 0xd7,
+ 0x1f, 0x78, 0xc7, 0x02, 0x16, 0x83, 0x46, 0x25, 0xae, 0x36, 0x7c, 0x08, 0x30, 0xed, 0xcf, 0x37,
+ 0x75, 0xda, 0x5e, 0x68, 0x6f, 0x96, 0x6e, 0x6a, 0x56, 0xa4, 0x4b, 0xc3, 0xc4, 0xfb, 0x65, 0xdc,
+ 0x22, 0xb0, 0x2a, 0xfd, 0x6e, 0x33, 0x96, 0xd1, 0x61, 0x37, 0xe1, 0x7b, 0xa1, 0xc8, 0x0b, 0x93,
+ 0xf5, 0xbd, 0x82, 0xb5, 0x8a, 0xba, 0xa6, 0x79, 0x06, 0xe7, 0xa8, 0xac, 0xf5, 0xe2, 0x69, 0xf1,
+ 0x3f, 0xd7, 0xb0, 0x48, 0x0b, 0x26, 0xed, 0x1f, 0x73, 0x30, 0x2f, 0xed, 0xf1, 0x6b, 0x04, 0x35,
+ 0x75, 0xf1, 0xf8, 0x6a, 0xe9, 0xbb, 0xce, 0xa6, 0xcc, 0xb4, 0xff, 0xde, 0xa8, 0x5e, 0xc2, 0xba,
+ 0xf2, 0xe6, 0xf3, 0xf7, 0x0f, 0xa7, 0xd6, 0xf0, 0x8a, 0x5b, 0x16, 0x67, 0x15, 0x31, 0xfc, 0x0e,
+ 0x41, 0x7d, 0xba, 0x48, 0xbc, 0x51, 0x2d, 0x5e, 0x4c, 0x98, 0xb9, 0xf9, 0x4f, 0xbd, 0x9a, 0xa5,
+ 0x29, 0x59, 0xd6, 0x31, 0x29, 0x65, 0x99, 0x5e, 0x1d, 0xfe, 0x84, 0x00, 0xcf, 0x5e, 0x30, 0xde,
+ 0xaa, 0xf6, 0xaa, 0xfc, 0x09, 0x98, 0x37, 0x4f, 0x36, 0xa4, 0x49, 0x6f, 0x48, 0xd2, 0x0d, 0x6c,
+ 0x97, 0x92, 0x46, 0x93, 0xc1, 0xde, 0x31, 0xf3, 0x47, 0x04, 0x8b, 0xc5, 0x24, 0xe1, 0x56, 0xb5,
+ 0x79, 0x45, 0x2a, 0xcd, 0xf6, 0x49, 0x46, 0x34, 0xad, 0x23, 0x69, 0x6d, 0xdc, 0x2c, 0xa5, 0x9d,
+ 0xc9, 0x70, 0xe7, 0xce, 0xc1, 0x88, 0xa0, 0xc3, 0x11, 0x41, 0xdf, 0x46, 0x04, 0xbd, 0x1f, 0x13,
+ 0xe3, 0x70, 0x4c, 0x8c, 0x2f, 0x63, 0x62, 0x3c, 0xbd, 0xf6, 0xc7, 0x3c, 0xbf, 0x54, 0xc2, 0x32,
+ 0xd6, 0xfd, 0x9a, 0xfc, 0x17, 0xdc, 0xfa, 0x19, 0x00, 0x00, 0xff, 0xff, 0x60, 0x1d, 0xe7, 0x7b,
+ 0x91, 0x05, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -327,6 +456,8 @@ type QueryClient interface {
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
// Inflation returns the current minting inflation value.
Inflation(ctx context.Context, in *QueryInflationRequest, opts ...grpc.CallOption) (*QueryInflationResponse, error)
+ // Inflation returns the current minting inflation value.
+ MunicipalInflation(ctx context.Context, in *QueryMunicipalInflationRequest, opts ...grpc.CallOption) (*QueryMunicipalInflationResponse, error)
// AnnualProvisions current minting annual provisions value.
AnnualProvisions(ctx context.Context, in *QueryAnnualProvisionsRequest, opts ...grpc.CallOption) (*QueryAnnualProvisionsResponse, error)
}
@@ -357,6 +488,15 @@ func (c *queryClient) Inflation(ctx context.Context, in *QueryInflationRequest,
return out, nil
}
+func (c *queryClient) MunicipalInflation(ctx context.Context, in *QueryMunicipalInflationRequest, opts ...grpc.CallOption) (*QueryMunicipalInflationResponse, error) {
+ out := new(QueryMunicipalInflationResponse)
+ err := c.cc.Invoke(ctx, "/cosmos.mint.v1beta1.Query/MunicipalInflation", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *queryClient) AnnualProvisions(ctx context.Context, in *QueryAnnualProvisionsRequest, opts ...grpc.CallOption) (*QueryAnnualProvisionsResponse, error) {
out := new(QueryAnnualProvisionsResponse)
err := c.cc.Invoke(ctx, "/cosmos.mint.v1beta1.Query/AnnualProvisions", in, out, opts...)
@@ -372,6 +512,8 @@ type QueryServer interface {
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
// Inflation returns the current minting inflation value.
Inflation(context.Context, *QueryInflationRequest) (*QueryInflationResponse, error)
+ // Inflation returns the current minting inflation value.
+ MunicipalInflation(context.Context, *QueryMunicipalInflationRequest) (*QueryMunicipalInflationResponse, error)
// AnnualProvisions current minting annual provisions value.
AnnualProvisions(context.Context, *QueryAnnualProvisionsRequest) (*QueryAnnualProvisionsResponse, error)
}
@@ -386,6 +528,9 @@ func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsReq
func (*UnimplementedQueryServer) Inflation(ctx context.Context, req *QueryInflationRequest) (*QueryInflationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Inflation not implemented")
}
+func (*UnimplementedQueryServer) MunicipalInflation(ctx context.Context, req *QueryMunicipalInflationRequest) (*QueryMunicipalInflationResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method MunicipalInflation not implemented")
+}
func (*UnimplementedQueryServer) AnnualProvisions(ctx context.Context, req *QueryAnnualProvisionsRequest) (*QueryAnnualProvisionsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AnnualProvisions not implemented")
}
@@ -430,6 +575,24 @@ func _Query_Inflation_Handler(srv interface{}, ctx context.Context, dec func(int
return interceptor(ctx, in, info, handler)
}
+func _Query_MunicipalInflation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(QueryMunicipalInflationRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(QueryServer).MunicipalInflation(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/cosmos.mint.v1beta1.Query/MunicipalInflation",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(QueryServer).MunicipalInflation(ctx, req.(*QueryMunicipalInflationRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _Query_AnnualProvisions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryAnnualProvisionsRequest)
if err := dec(in); err != nil {
@@ -460,6 +623,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "Inflation",
Handler: _Query_Inflation_Handler,
},
+ {
+ MethodName: "MunicipalInflation",
+ Handler: _Query_MunicipalInflation_Handler,
+ },
{
MethodName: "AnnualProvisions",
Handler: _Query_AnnualProvisions_Handler,
@@ -548,6 +715,52 @@ func (m *QueryInflationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *QueryMunicipalInflationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *QueryMunicipalInflationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *QueryMunicipalInflationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XDenom != nil {
+ {
+ size := m.XDenom.Size()
+ i -= size
+ if _, err := m.XDenom.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *QueryMunicipalInflationRequest_Denom) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *QueryMunicipalInflationRequest_Denom) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Denom)
+ copy(dAtA[i:], m.Denom)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom)))
+ i--
+ dAtA[i] = 0xa
+ return len(dAtA) - i, nil
+}
func (m *QueryInflationResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -581,6 +794,43 @@ func (m *QueryInflationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)
return len(dAtA) - i, nil
}
+func (m *QueryMunicipalInflationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *QueryMunicipalInflationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *QueryMunicipalInflationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if len(m.Inflations) > 0 {
+ for iNdEx := len(m.Inflations) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Inflations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *QueryAnnualProvisionsRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -677,6 +927,28 @@ func (m *QueryInflationRequest) Size() (n int) {
return n
}
+func (m *QueryMunicipalInflationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XDenom != nil {
+ n += m.XDenom.Size()
+ }
+ return n
+}
+
+func (m *QueryMunicipalInflationRequest_Denom) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Denom)
+ n += 1 + l + sovQuery(uint64(l))
+ return n
+}
func (m *QueryInflationResponse) Size() (n int) {
if m == nil {
return 0
@@ -688,6 +960,21 @@ func (m *QueryInflationResponse) Size() (n int) {
return n
}
+func (m *QueryMunicipalInflationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Inflations) > 0 {
+ for _, e := range m.Inflations {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ return n
+}
+
func (m *QueryAnnualProvisionsRequest) Size() (n int) {
if m == nil {
return 0
@@ -897,6 +1184,88 @@ func (m *QueryInflationRequest) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *QueryMunicipalInflationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: QueryMunicipalInflationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: QueryMunicipalInflationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XDenom = &QueryMunicipalInflationRequest_Denom{string(dAtA[iNdEx:postIndex])}
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *QueryInflationResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -980,6 +1349,90 @@ func (m *QueryInflationResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *QueryMunicipalInflationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: QueryMunicipalInflationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: QueryMunicipalInflationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Inflations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Inflations = append(m.Inflations, &MunicipalInflationPair{})
+ if err := m.Inflations[len(m.Inflations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *QueryAnnualProvisionsRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/x/mint/types/query.pb.gw.go b/x/mint/types/query.pb.gw.go
index 576b206d4a..22a1e943c1 100644
--- a/x/mint/types/query.pb.gw.go
+++ b/x/mint/types/query.pb.gw.go
@@ -67,6 +67,42 @@ func local_request_Query_Inflation_0(ctx context.Context, marshaler runtime.Mars
}
+var (
+ filter_Query_MunicipalInflation_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Query_MunicipalInflation_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq QueryMunicipalInflationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MunicipalInflation_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.MunicipalInflation(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Query_MunicipalInflation_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq QueryMunicipalInflationRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MunicipalInflation_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.MunicipalInflation(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
func request_Query_AnnualProvisions_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryAnnualProvisionsRequest
var metadata runtime.ServerMetadata
@@ -131,6 +167,26 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
+ mux.Handle("GET", pattern_Query_MunicipalInflation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Query_MunicipalInflation_0(rctx, inboundMarshaler, server, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Query_MunicipalInflation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
mux.Handle("GET", pattern_Query_AnnualProvisions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -232,6 +288,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
+ mux.Handle("GET", pattern_Query_MunicipalInflation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Query_MunicipalInflation_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Query_MunicipalInflation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
mux.Handle("GET", pattern_Query_AnnualProvisions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -260,6 +336,8 @@ var (
pattern_Query_Inflation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "mint", "v1beta1", "inflation"}, "", runtime.AssumeColonVerbOpt(false)))
+ pattern_Query_MunicipalInflation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "mint", "v1beta1", "municipal_inflation"}, "", runtime.AssumeColonVerbOpt(false)))
+
pattern_Query_AnnualProvisions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "mint", "v1beta1", "annual_provisions"}, "", runtime.AssumeColonVerbOpt(false)))
)
@@ -268,5 +346,7 @@ var (
forward_Query_Inflation_0 = runtime.ForwardResponseMessage
+ forward_Query_MunicipalInflation_0 = runtime.ForwardResponseMessage
+
forward_Query_AnnualProvisions_0 = runtime.ForwardResponseMessage
)
diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go
index db19e5d83e..a0bf1b27df 100644
--- a/x/staking/types/staking.pb.go
+++ b/x/staking/types/staking.pb.go
@@ -20,6 +20,7 @@ import (
_ "google.golang.org/protobuf/types/known/durationpb"
_ "google.golang.org/protobuf/types/known/timestamppb"
io "io"
+ io_ioutil "io/ioutil"
math "math"
math_bits "math/bits"
reflect "reflect"
@@ -1259,629 +1260,629 @@ 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{
- // 9834 bytes of a gzipped FileDescriptorSet
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x5c, 0xd7,
- 0x75, 0x18, 0xde, 0x7e, 0x00, 0xbb, 0x07, 0x0b, 0x60, 0x71, 0x01, 0x92, 0xcb, 0x25, 0x09, 0x40,
- 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0x32, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10,
- 0xf1, 0xa5, 0x07, 0x80, 0x92, 0x65, 0xa7, 0x3b, 0x0f, 0xbb, 0x17, 0x8b, 0x27, 0xec, 0xbe, 0xf7,
- 0xf4, 0xde, 0x5b, 0x12, 0xa0, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a,
- 0x5b, 0x36, 0x5d, 0x39, 0x4e, 0xeb, 0xd4, 0x71, 0x1b, 0x3b, 0x76, 0xdd, 0xa6, 0xed, 0x4c, 0xed,
- 0xce, 0xa4, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xa4, 0x74, 0x2a, 0x7b, 0x52, 0xd5,
- 0x75, 0x1b, 0x87, 0x71, 0xdb, 0x74, 0x3c, 0x9d, 0x76, 0xee, 0xd7, 0xfb, 0xda, 0x4f, 0x40, 0xa4,
- 0xed, 0x34, 0xfd, 0x85, 0xbd, 0xe7, 0x9e, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0x5f,
- 0x0f, 0xf0, 0x85, 0xf3, 0x30, 0x53, 0x33, 0x8c, 0x5a, 0x1d, 0x9f, 0x36, 0x2d, 0xc3, 0x31, 0x36,
- 0x9b, 0x5b, 0xa7, 0xab, 0xd8, 0xae, 0x58, 0x9a, 0xe9, 0x18, 0xd6, 0x2c, 0x85, 0xa1, 0x31, 0x86,
- 0x31, 0x2b, 0x30, 0xe4, 0x25, 0x18, 0xbf, 0xa0, 0xd5, 0x71, 0xd1, 0x45, 0x5c, 0xc3, 0x0e, 0x7a,
- 0x12, 0x62, 0x5b, 0x5a, 0x1d, 0x67, 0xa4, 0x99, 0xe8, 0xc9, 0xe1, 0x33, 0xf7, 0xcc, 0x86, 0x88,
- 0x66, 0x83, 0x14, 0xab, 0x04, 0xac, 0x50, 0x0a, 0xf9, 0xbb, 0x31, 0x98, 0x68, 0x53, 0x8b, 0x10,
- 0xc4, 0x74, 0xb5, 0x41, 0x38, 0x4a, 0x27, 0x93, 0x0a, 0xfd, 0x8d, 0x32, 0x30, 0x64, 0xaa, 0x95,
- 0x1d, 0xb5, 0x86, 0x33, 0x11, 0x0a, 0x16, 0x45, 0x34, 0x05, 0x50, 0xc5, 0x26, 0xd6, 0xab, 0x58,
- 0xaf, 0xec, 0x65, 0xa2, 0x33, 0xd1, 0x93, 0x49, 0xc5, 0x07, 0x41, 0x0f, 0xc2, 0xb8, 0xd9, 0xdc,
- 0xac, 0x6b, 0x95, 0xb2, 0x0f, 0x0d, 0x66, 0xa2, 0x27, 0xe3, 0x4a, 0x9a, 0x55, 0x14, 0x3d, 0xe4,
- 0xfb, 0x61, 0xec, 0x2a, 0x56, 0x77, 0xfc, 0xa8, 0xc3, 0x14, 0x75, 0x94, 0x80, 0x7d, 0x88, 0x73,
- 0x90, 0x6a, 0x60, 0xdb, 0x56, 0x6b, 0xb8, 0xec, 0xec, 0x99, 0x38, 0x13, 0xa3, 0xda, 0xcf, 0xb4,
- 0x68, 0x1f, 0xd6, 0x7c, 0x98, 0x53, 0xad, 0xef, 0x99, 0x18, 0xe5, 0x21, 0x89, 0xf5, 0x66, 0x83,
- 0x71, 0x88, 0x77, 0xb0, 0x5f, 0x49, 0x6f, 0x36, 0xc2, 0x5c, 0x12, 0x84, 0x8c, 0xb3, 0x18, 0xb2,
- 0xb1, 0x75, 0x45, 0xab, 0xe0, 0xcc, 0x20, 0x65, 0x70, 0x7f, 0x0b, 0x83, 0x35, 0x56, 0x1f, 0xe6,
- 0x21, 0xe8, 0xd0, 0x1c, 0x24, 0xf1, 0xae, 0x83, 0x75, 0x5b, 0x33, 0xf4, 0xcc, 0x10, 0x65, 0x72,
- 0x6f, 0x9b, 0x5e, 0xc4, 0xf5, 0x6a, 0x98, 0x85, 0x47, 0x87, 0xce, 0xc1, 0x90, 0x61, 0x3a, 0x9a,
- 0xa1, 0xdb, 0x99, 0xc4, 0x8c, 0x74, 0x72, 0xf8, 0xcc, 0xf1, 0xb6, 0x8e, 0xb0, 0xc2, 0x70, 0x14,
- 0x81, 0x8c, 0x16, 0x20, 0x6d, 0x1b, 0x4d, 0xab, 0x82, 0xcb, 0x15, 0xa3, 0x8a, 0xcb, 0x9a, 0xbe,
- 0x65, 0x64, 0x92, 0x94, 0xc1, 0x74, 0xab, 0x22, 0x14, 0x71, 0xce, 0xa8, 0xe2, 0x05, 0x7d, 0xcb,
- 0x50, 0x46, 0xed, 0x40, 0x19, 0x1d, 0x86, 0x41, 0x7b, 0x4f, 0x77, 0xd4, 0xdd, 0x4c, 0x8a, 0x7a,
- 0x08, 0x2f, 0xc9, 0xbf, 0x31, 0x08, 0x63, 0xfd, 0xb8, 0xd8, 0x79, 0x88, 0x6f, 0x11, 0x2d, 0x33,
- 0x91, 0xfd, 0xd8, 0x80, 0xd1, 0x04, 0x8d, 0x38, 0x78, 0x40, 0x23, 0xe6, 0x61, 0x58, 0xc7, 0xb6,
- 0x83, 0xab, 0xcc, 0x23, 0xa2, 0x7d, 0xfa, 0x14, 0x30, 0xa2, 0x56, 0x97, 0x8a, 0x1d, 0xc8, 0xa5,
- 0x9e, 0x87, 0x31, 0x57, 0xa4, 0xb2, 0xa5, 0xea, 0x35, 0xe1, 0x9b, 0xa7, 0x7b, 0x49, 0x32, 0x5b,
- 0x12, 0x74, 0x0a, 0x21, 0x53, 0x46, 0x71, 0xa0, 0x8c, 0x8a, 0x00, 0x86, 0x8e, 0x8d, 0xad, 0x72,
- 0x15, 0x57, 0xea, 0x99, 0x44, 0x07, 0x2b, 0xad, 0x10, 0x94, 0x16, 0x2b, 0x19, 0x0c, 0x5a, 0xa9,
- 0xa3, 0xa7, 0x3c, 0x57, 0x1b, 0xea, 0xe0, 0x29, 0x4b, 0x6c, 0x90, 0xb5, 0x78, 0xdb, 0x06, 0x8c,
- 0x5a, 0x98, 0xf8, 0x3d, 0xae, 0x72, 0xcd, 0x92, 0x54, 0x88, 0xd9, 0x9e, 0x9a, 0x29, 0x9c, 0x8c,
- 0x29, 0x36, 0x62, 0xf9, 0x8b, 0xe8, 0x6e, 0x70, 0x01, 0x65, 0xea, 0x56, 0x40, 0xa3, 0x50, 0x4a,
- 0x00, 0x97, 0xd5, 0x06, 0xce, 0x5e, 0x83, 0xd1, 0xa0, 0x79, 0xd0, 0x24, 0xc4, 0x6d, 0x47, 0xb5,
- 0x1c, 0xea, 0x85, 0x71, 0x85, 0x15, 0x50, 0x1a, 0xa2, 0x58, 0xaf, 0xd2, 0x28, 0x17, 0x57, 0xc8,
- 0x4f, 0xf4, 0x16, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0xbe, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d,
- 0x7d, 0x02, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x4e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x1e,
- 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0x4f, 0x43,
- 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xf5,
- 0xa1, 0xf4, 0xcb, 0x2f, 0xbf, 0xfc, 0x72, 0x44, 0xfe, 0xea, 0x20, 0x4c, 0xb6, 0x1b, 0x33, 0x6d,
- 0x87, 0xef, 0x61, 0x18, 0xd4, 0x9b, 0x8d, 0x4d, 0x6c, 0x51, 0x23, 0xc5, 0x15, 0x5e, 0x42, 0x79,
- 0x88, 0xd7, 0xd5, 0x4d, 0x5c, 0xcf, 0xc4, 0x66, 0xa4, 0x93, 0xa3, 0x67, 0x1e, 0xec, 0x6b, 0x54,
- 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0x37, 0x43, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f,
- 0x1c, 0xc8, 0x58, 0x52, 0x28, 0x1d, 0x3a, 0x06, 0x49, 0xf2, 0x97, 0xf9, 0xc6, 0x20, 0x95, 0x39,
- 0x41, 0x00, 0xc4, 0x2f, 0x50, 0x16, 0x12, 0x74, 0x98, 0x54, 0xb1, 0x98, 0xda, 0xdc, 0x32, 0x71,
- 0xac, 0x2a, 0xde, 0x52, 0x9b, 0x75, 0xa7, 0x7c, 0x45, 0xad, 0x37, 0x31, 0x75, 0xf8, 0xa4, 0x92,
- 0xe2, 0xc0, 0xcb, 0x04, 0x86, 0xa6, 0x61, 0x98, 0x8d, 0x2a, 0x4d, 0xaf, 0xe2, 0x5d, 0x1a, 0x3d,
- 0xe3, 0x0a, 0x1b, 0x68, 0x0b, 0x04, 0x42, 0x9a, 0x7f, 0xd1, 0x36, 0x74, 0xe1, 0x9a, 0xb4, 0x09,
- 0x02, 0xa0, 0xcd, 0x3f, 0x11, 0x0e, 0xdc, 0x27, 0xda, 0xab, 0xd7, 0x32, 0x96, 0xee, 0x87, 0x31,
- 0x8a, 0xf1, 0x18, 0xef, 0x7a, 0xb5, 0x9e, 0x19, 0x9f, 0x91, 0x4e, 0x26, 0x94, 0x51, 0x06, 0x5e,
- 0xe1, 0x50, 0xf9, 0xcb, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5d, 0x2d, 0x95,
- 0x8b, 0x2b, 0x1b, 0x85, 0xc5, 0x52, 0x5a, 0x42, 0xa3, 0x00, 0x14, 0x70, 0x61, 0x71, 0x25, 0xbf,
- 0x9e, 0x8e, 0xb8, 0xe5, 0x85, 0xe5, 0xf5, 0x73, 0x8f, 0xa7, 0xa3, 0x2e, 0xc1, 0x06, 0x03, 0xc4,
- 0xfc, 0x08, 0x8f, 0x9d, 0x49, 0xc7, 0x51, 0x1a, 0x52, 0x8c, 0xc1, 0xc2, 0xf3, 0xa5, 0xe2, 0xb9,
- 0xc7, 0xd3, 0x83, 0x41, 0xc8, 0x63, 0x67, 0xd2, 0x43, 0x68, 0x04, 0x92, 0x14, 0x52, 0x58, 0x59,
- 0x59, 0x4c, 0x27, 0x5c, 0x9e, 0x6b, 0xeb, 0xca, 0xc2, 0xf2, 0x7c, 0x3a, 0xe9, 0xf2, 0x9c, 0x57,
- 0x56, 0x36, 0x56, 0xd3, 0xe0, 0x72, 0x58, 0x2a, 0xad, 0xad, 0xe5, 0xe7, 0x4b, 0xe9, 0x61, 0x17,
- 0xa3, 0xf0, 0xd6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0xb1, 0x33, 0xe9, 0x11, 0xb7, 0x89,
- 0xd2, 0xf2, 0xc6, 0x52, 0x7a, 0x14, 0x8d, 0xc3, 0x08, 0x6b, 0x42, 0x08, 0x31, 0x16, 0x02, 0x9d,
- 0x7b, 0x3c, 0x9d, 0xf6, 0x04, 0x61, 0x5c, 0xc6, 0x03, 0x80, 0x73, 0x8f, 0xa7, 0x91, 0x3c, 0x07,
- 0x71, 0xea, 0x86, 0x08, 0xc1, 0xe8, 0x62, 0xbe, 0x50, 0x5a, 0x2c, 0xaf, 0xac, 0xae, 0x2f, 0xac,
- 0x2c, 0xe7, 0x17, 0xd3, 0x92, 0x07, 0x53, 0x4a, 0xcf, 0x6e, 0x2c, 0x28, 0xa5, 0x62, 0x3a, 0xe2,
- 0x87, 0xad, 0x96, 0xf2, 0xeb, 0xa5, 0x62, 0x3a, 0x2a, 0x57, 0x60, 0xb2, 0x5d, 0x40, 0x6d, 0x3b,
- 0x84, 0x7c, 0xbe, 0x10, 0xe9, 0xe0, 0x0b, 0x94, 0x57, 0xd8, 0x17, 0xe4, 0xef, 0x44, 0x60, 0xa2,
- 0xcd, 0xa4, 0xd2, 0xb6, 0x91, 0xa7, 0x21, 0xce, 0x7c, 0x99, 0x4d, 0xb3, 0x0f, 0xb4, 0x9d, 0x9d,
- 0xa8, 0x67, 0xb7, 0x4c, 0xb5, 0x94, 0xce, 0x9f, 0x6a, 0x44, 0x3b, 0xa4, 0x1a, 0x84, 0x45, 0x8b,
- 0xc3, 0xfe, 0x6c, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24,
- 0x10, 0x6f, 0x33, 0x09, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x7d, 0x07, 0xe3, 0xf7, 0x4a, 0x90, 0xe9,
- 0x64, 0x9c, 0x1e, 0x21, 0x31, 0x12, 0x08, 0x89, 0xe7, 0xc3, 0x16, 0xbc, 0xab, 0x73, 0x27, 0xb4,
- 0xf4, 0xf5, 0x67, 0x24, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x9b, 0x61, 0xb0, 0x81, 0x9d,
- 0x6d, 0x43, 0xa4, 0x55, 0xf7, 0xb5, 0x99, 0xac, 0x49, 0x75, 0xb8, 0xb3, 0x39, 0x95, 0x7f, 0xb6,
- 0x8f, 0x76, 0xca, 0x0b, 0x99, 0x34, 0x2d, 0x92, 0x7e, 0x30, 0x02, 0x87, 0xda, 0x32, 0x6f, 0x2b,
- 0xe8, 0x09, 0x00, 0x4d, 0x37, 0x9b, 0x0e, 0x4b, 0x9d, 0x58, 0x24, 0x4e, 0x52, 0x08, 0x0d, 0x5e,
- 0x24, 0xca, 0x36, 0x1d, 0xb7, 0x3e, 0x4a, 0xeb, 0x81, 0x81, 0x28, 0xc2, 0x93, 0x9e, 0xa0, 0x31,
- 0x2a, 0xe8, 0x54, 0x07, 0x4d, 0x5b, 0x1c, 0xf3, 0x11, 0x48, 0x57, 0xea, 0x1a, 0xd6, 0x9d, 0xb2,
- 0xed, 0x58, 0x58, 0x6d, 0x68, 0x7a, 0x8d, 0x4e, 0x35, 0x89, 0x5c, 0x7c, 0x4b, 0xad, 0xdb, 0x58,
- 0x19, 0x63, 0xd5, 0x6b, 0xa2, 0x96, 0x50, 0x50, 0x07, 0xb2, 0x7c, 0x14, 0x83, 0x01, 0x0a, 0x56,
- 0xed, 0x52, 0xc8, 0x1f, 0x4e, 0xc2, 0xb0, 0x2f, 0x01, 0x47, 0x77, 0x41, 0xea, 0x45, 0xf5, 0x8a,
- 0x5a, 0x16, 0x8b, 0x2a, 0x66, 0x89, 0x61, 0x02, 0x5b, 0xe5, 0x0b, 0xab, 0x47, 0x60, 0x92, 0xa2,
- 0x18, 0x4d, 0x07, 0x5b, 0xe5, 0x4a, 0x5d, 0xb5, 0x6d, 0x6a, 0xb4, 0x04, 0x45, 0x45, 0xa4, 0x6e,
- 0x85, 0x54, 0xcd, 0x89, 0x1a, 0x74, 0x16, 0x26, 0x28, 0x45, 0xa3, 0x59, 0x77, 0x34, 0xb3, 0x8e,
- 0xcb, 0x64, 0x99, 0x67, 0xd3, 0x29, 0xc7, 0x95, 0x6c, 0x9c, 0x60, 0x2c, 0x71, 0x04, 0x22, 0x91,
- 0x8d, 0x8a, 0x70, 0x82, 0x92, 0xd5, 0xb0, 0x8e, 0x2d, 0xd5, 0xc1, 0x65, 0xfc, 0x52, 0x53, 0xad,
- 0xdb, 0x65, 0x55, 0xaf, 0x96, 0xb7, 0x55, 0x7b, 0x3b, 0x33, 0x49, 0x18, 0x14, 0x22, 0x19, 0x49,
- 0x39, 0x4a, 0x10, 0xe7, 0x39, 0x5e, 0x89, 0xa2, 0xe5, 0xf5, 0xea, 0x45, 0xd5, 0xde, 0x46, 0x39,
- 0x38, 0x4c, 0xb9, 0xd8, 0x8e, 0xa5, 0xe9, 0xb5, 0x72, 0x65, 0x1b, 0x57, 0x76, 0xca, 0x4d, 0x67,
- 0xeb, 0xc9, 0xcc, 0x31, 0x7f, 0xfb, 0x54, 0xc2, 0x35, 0x8a, 0x33, 0x47, 0x50, 0x36, 0x9c, 0xad,
- 0x27, 0xd1, 0x1a, 0xa4, 0x48, 0x67, 0x34, 0xb4, 0x6b, 0xb8, 0xbc, 0x65, 0x58, 0x74, 0x0e, 0x1d,
- 0x6d, 0x13, 0x9a, 0x7c, 0x16, 0x9c, 0x5d, 0xe1, 0x04, 0x4b, 0x46, 0x15, 0xe7, 0xe2, 0x6b, 0xab,
- 0xa5, 0x52, 0x51, 0x19, 0x16, 0x5c, 0x2e, 0x18, 0x16, 0x71, 0xa8, 0x9a, 0xe1, 0x1a, 0x78, 0x98,
- 0x39, 0x54, 0xcd, 0x10, 0xe6, 0x3d, 0x0b, 0x13, 0x95, 0x0a, 0xd3, 0x59, 0xab, 0x94, 0xf9, 0x62,
- 0xcc, 0xce, 0xa4, 0x03, 0xc6, 0xaa, 0x54, 0xe6, 0x19, 0x02, 0xf7, 0x71, 0x1b, 0x3d, 0x05, 0x87,
- 0x3c, 0x63, 0xf9, 0x09, 0xc7, 0x5b, 0xb4, 0x0c, 0x93, 0x9e, 0x85, 0x09, 0x73, 0xaf, 0x95, 0x10,
- 0x05, 0x5a, 0x34, 0xf7, 0xc2, 0x64, 0x4f, 0xc0, 0xa4, 0xb9, 0x6d, 0xb6, 0xd2, 0x9d, 0xf2, 0xd3,
- 0x21, 0x73, 0xdb, 0x0c, 0x13, 0xde, 0x4b, 0x57, 0xe6, 0x16, 0xae, 0xa8, 0x0e, 0xae, 0x66, 0x8e,
- 0xf8, 0xd1, 0x7d, 0x15, 0x68, 0x16, 0xd2, 0x95, 0x4a, 0x19, 0xeb, 0xea, 0x66, 0x1d, 0x97, 0x55,
- 0x0b, 0xeb, 0xaa, 0x9d, 0x99, 0xa6, 0xc8, 0x31, 0xc7, 0x6a, 0x62, 0x65, 0xb4, 0x52, 0x29, 0xd1,
- 0xca, 0x3c, 0xad, 0x43, 0xa7, 0x60, 0xdc, 0xd8, 0x7c, 0xb1, 0xc2, 0x3c, 0xb2, 0x6c, 0x5a, 0x78,
- 0x4b, 0xdb, 0xcd, 0xdc, 0x43, 0xcd, 0x3b, 0x46, 0x2a, 0xa8, 0x3f, 0xae, 0x52, 0x30, 0x7a, 0x00,
- 0xd2, 0x15, 0x7b, 0x5b, 0xb5, 0x4c, 0x1a, 0x92, 0x6d, 0x53, 0xad, 0xe0, 0xcc, 0xbd, 0x0c, 0x95,
- 0xc1, 0x97, 0x05, 0x98, 0x8c, 0x08, 0xfb, 0xaa, 0xb6, 0xe5, 0x08, 0x8e, 0xf7, 0xb3, 0x11, 0x41,
- 0x61, 0x9c, 0xdb, 0x49, 0x48, 0x13, 0x4b, 0x04, 0x1a, 0x3e, 0x49, 0xd1, 0x46, 0xcd, 0x6d, 0xd3,
- 0xdf, 0xee, 0xdd, 0x30, 0x42, 0x30, 0xbd, 0x46, 0x1f, 0x60, 0x89, 0x9b, 0xb9, 0xed, 0x6b, 0xf1,
- 0x71, 0x38, 0x4c, 0x90, 0x1a, 0xd8, 0x51, 0xab, 0xaa, 0xa3, 0xfa, 0xb0, 0x1f, 0xa2, 0xd8, 0xc4,
- 0xec, 0x4b, 0xbc, 0x32, 0x20, 0xa7, 0xd5, 0xdc, 0xdc, 0x73, 0x1d, 0xeb, 0x61, 0x26, 0x27, 0x81,
- 0x09, 0xd7, 0xba, 0x63, 0xc9, 0xb9, 0x9c, 0x83, 0x94, 0xdf, 0xef, 0x51, 0x12, 0x98, 0xe7, 0xa7,
- 0x25, 0x92, 0x04, 0xcd, 0xad, 0x14, 0x49, 0xfa, 0xf2, 0x42, 0x29, 0x1d, 0x21, 0x69, 0xd4, 0xe2,
- 0xc2, 0x7a, 0xa9, 0xac, 0x6c, 0x2c, 0xaf, 0x2f, 0x2c, 0x95, 0xd2, 0x51, 0x5f, 0x62, 0xff, 0x4c,
- 0x2c, 0x71, 0x5f, 0xfa, 0x7e, 0xf9, 0x5b, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0xcf, 0xc0, 0x11,
- 0xb1, 0xad, 0x62, 0x63, 0xa7, 0x7c, 0x55, 0xb3, 0xe8, 0x80, 0x6c, 0xa8, 0x6c, 0x72, 0x74, 0xfd,
- 0x67, 0x92, 0x63, 0xad, 0x61, 0xe7, 0x39, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x11, 0xa6,
- 0x75, 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95, 0x0a,
- 0xb6, 0x6d, 0x83, 0x4d, 0x84, 0x2e, 0x97, 0xe3, 0xba, 0xb1, 0xc6, 0x91, 0xbd, 0x19, 0x22, 0xcf,
- 0x51, 0x43, 0xee, 0x1b, 0xed, 0xe4, 0xbe, 0xc7, 0x20, 0xd9, 0x50, 0xcd, 0x32, 0xd6, 0x1d, 0x6b,
- 0x8f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x58, 0x96, 0x49, 0xcf, 0xc4,
- 0x12, 0x89, 0x74, 0xf2, 0x99, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xb5, 0x28, 0xa4, 0xfc, 0xf9, 0x3a,
- 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x77, 0xd7, 0xec, 0x7e, 0x76, 0x8e, 0x4c,
- 0x65, 0xb9, 0x41, 0x96, 0x1c, 0x2b, 0x8c, 0x92, 0xa4, 0x11, 0xc4, 0xd9, 0x30, 0x4b, 0x46, 0x12,
- 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0x7c, 0xd1, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0x7b, 0xba, 0xf3, 0x7e,
- 0x66, 0x8d, 0x32, 0x4f, 0x3e, 0xb3, 0x56, 0x5e, 0x5e, 0x51, 0x96, 0xf2, 0x8b, 0x0a, 0x27, 0x47,
- 0x47, 0x21, 0x56, 0x57, 0xaf, 0xed, 0x05, 0x27, 0x3d, 0x0a, 0xea, 0xb7, 0x13, 0x8e, 0x42, 0xec,
- 0x2a, 0x56, 0x77, 0x82, 0x53, 0x0d, 0x05, 0xdd, 0xc1, 0xc1, 0x70, 0x1a, 0xe2, 0xd4, 0x5e, 0x08,
- 0x80, 0x5b, 0x2c, 0x3d, 0x80, 0x12, 0x10, 0x9b, 0x5b, 0x51, 0xc8, 0x80, 0x48, 0x43, 0x8a, 0x41,
- 0xcb, 0xab, 0x0b, 0xa5, 0xb9, 0x52, 0x3a, 0x22, 0x9f, 0x85, 0x41, 0x66, 0x04, 0x32, 0x58, 0x5c,
- 0x33, 0xa4, 0x07, 0x78, 0x91, 0xf3, 0x90, 0x44, 0xed, 0xc6, 0x52, 0xa1, 0xa4, 0xa4, 0x23, 0xc1,
- 0xae, 0x8e, 0xa5, 0xe3, 0xb2, 0x0d, 0x29, 0x7f, 0x1e, 0xfe, 0xe3, 0x59, 0x8c, 0x7f, 0x45, 0x82,
- 0x61, 0x5f, 0x5e, 0x4d, 0x12, 0x22, 0xb5, 0x5e, 0x37, 0xae, 0x96, 0xd5, 0xba, 0xa6, 0xda, 0xdc,
- 0x35, 0x80, 0x82, 0xf2, 0x04, 0xd2, 0x6f, 0xd7, 0xfd, 0x98, 0x86, 0x48, 0x3c, 0x3d, 0x28, 0x7f,
- 0x52, 0x82, 0x74, 0x38, 0xb1, 0x0d, 0x89, 0x29, 0xfd, 0x24, 0xc5, 0x94, 0x3f, 0x21, 0xc1, 0x68,
- 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xd7, 0x4f, 0x54, 0xbc, 0x3f, 0x8c, 0xc0, 0x48, 0x20, 0x87, 0xed,
- 0x57, 0xba, 0x97, 0x60, 0x5c, 0xab, 0xe2, 0x86, 0x69, 0x38, 0x58, 0xaf, 0xec, 0x95, 0xeb, 0xf8,
- 0x0a, 0xae, 0x67, 0x64, 0x1a, 0x34, 0x4e, 0x77, 0xcf, 0x92, 0x67, 0x17, 0x3c, 0xba, 0x45, 0x42,
- 0x96, 0x9b, 0x58, 0x28, 0x96, 0x96, 0x56, 0x57, 0xd6, 0x4b, 0xcb, 0x73, 0x6f, 0x2d, 0x6f, 0x2c,
- 0x5f, 0x5a, 0x5e, 0x79, 0x6e, 0x59, 0x49, 0x6b, 0x21, 0xb4, 0x3b, 0x38, 0xec, 0x57, 0x21, 0x1d,
- 0x16, 0x0a, 0x1d, 0x81, 0x76, 0x62, 0xa5, 0x07, 0xd0, 0x04, 0x8c, 0x2d, 0xaf, 0x94, 0xd7, 0x16,
- 0x8a, 0xa5, 0x72, 0xe9, 0xc2, 0x85, 0xd2, 0xdc, 0xfa, 0x1a, 0xdb, 0xf7, 0x70, 0xb1, 0xd7, 0x03,
- 0x03, 0x5c, 0x7e, 0x25, 0x0a, 0x13, 0x6d, 0x24, 0x41, 0x79, 0xbe, 0x62, 0x61, 0x8b, 0xa8, 0x87,
- 0xfb, 0x91, 0x7e, 0x96, 0xe4, 0x0c, 0xab, 0xaa, 0xe5, 0xf0, 0x05, 0xce, 0x03, 0x40, 0xac, 0xa4,
- 0x3b, 0xda, 0x96, 0x86, 0x2d, 0xbe, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x1e, 0x9c, 0x6d, 0x29, 0x3d,
- 0x04, 0xc8, 0x34, 0x6c, 0xcd, 0xd1, 0xae, 0xe0, 0xb2, 0xa6, 0x8b, 0xcd, 0x27, 0xb2, 0xac, 0x89,
- 0x29, 0x69, 0x51, 0xb3, 0xa0, 0x3b, 0x2e, 0xb6, 0x8e, 0x6b, 0x6a, 0x08, 0x9b, 0x04, 0xf3, 0xa8,
- 0x92, 0x16, 0x35, 0x2e, 0xf6, 0x5d, 0x90, 0xaa, 0x1a, 0x4d, 0x92, 0xeb, 0x31, 0x3c, 0x32, 0x77,
- 0x48, 0xca, 0x30, 0x83, 0xb9, 0x28, 0x3c, 0x8b, 0xf7, 0x76, 0xbd, 0x52, 0xca, 0x30, 0x83, 0x31,
- 0x94, 0xfb, 0x61, 0x4c, 0xad, 0xd5, 0x2c, 0xc2, 0x5c, 0x30, 0x62, 0xeb, 0x92, 0x51, 0x17, 0x4c,
- 0x11, 0xb3, 0xcf, 0x40, 0x42, 0xd8, 0x81, 0x4c, 0xd5, 0xc4, 0x12, 0x65, 0x93, 0x2d, 0xb6, 0x23,
- 0x27, 0x93, 0x4a, 0x42, 0x17, 0x95, 0x77, 0x41, 0x4a, 0xb3, 0xcb, 0xde, 0x26, 0x7e, 0x64, 0x26,
- 0x72, 0x32, 0xa1, 0x0c, 0x6b, 0xb6, 0xbb, 0x01, 0x2a, 0x7f, 0x26, 0x02, 0xa3, 0xc1, 0x43, 0x08,
- 0x54, 0x84, 0x44, 0xdd, 0xa8, 0xa8, 0xd4, 0xb5, 0xd8, 0x09, 0xd8, 0xc9, 0x1e, 0xe7, 0x16, 0xb3,
- 0x8b, 0x1c, 0x5f, 0x71, 0x29, 0xb3, 0xbf, 0x23, 0x41, 0x42, 0x80, 0xd1, 0x61, 0x88, 0x99, 0xaa,
- 0xb3, 0x4d, 0xd9, 0xc5, 0x0b, 0x91, 0xb4, 0xa4, 0xd0, 0x32, 0x81, 0xdb, 0xa6, 0xaa, 0x53, 0x17,
- 0xe0, 0x70, 0x52, 0x26, 0xfd, 0x5a, 0xc7, 0x6a, 0x95, 0x2e, 0x7a, 0x8c, 0x46, 0x03, 0xeb, 0x8e,
- 0x2d, 0xfa, 0x95, 0xc3, 0xe7, 0x38, 0x18, 0x3d, 0x08, 0xe3, 0x8e, 0xa5, 0x6a, 0xf5, 0x00, 0x6e,
- 0x8c, 0xe2, 0xa6, 0x45, 0x85, 0x8b, 0x9c, 0x83, 0xa3, 0x82, 0x6f, 0x15, 0x3b, 0x6a, 0x65, 0x1b,
- 0x57, 0x3d, 0xa2, 0x41, 0xba, 0xb9, 0x71, 0x84, 0x23, 0x14, 0x79, 0xbd, 0xa0, 0x95, 0xbf, 0x25,
- 0xc1, 0xb8, 0x58, 0xa6, 0x55, 0x5d, 0x63, 0x2d, 0x01, 0xa8, 0xba, 0x6e, 0x38, 0x7e, 0x73, 0xb5,
- 0xba, 0x72, 0x0b, 0xdd, 0x6c, 0xde, 0x25, 0x52, 0x7c, 0x0c, 0xb2, 0x0d, 0x00, 0xaf, 0xa6, 0xa3,
- 0xd9, 0xa6, 0x61, 0x98, 0x9f, 0x30, 0xd1, 0x63, 0x4a, 0xb6, 0xb0, 0x07, 0x06, 0x22, 0xeb, 0x39,
- 0x34, 0x09, 0xf1, 0x4d, 0x5c, 0xd3, 0x74, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, 0x25, 0xe6, 0x6e,
- 0xbf, 0x14, 0xfe, 0x32, 0x4c, 0x54, 0x8c, 0x46, 0x58, 0xdc, 0x42, 0x3a, 0xb4, 0xb9, 0x60, 0x5f,
- 0x94, 0x5e, 0x78, 0x98, 0x23, 0xd5, 0x8c, 0xba, 0xaa, 0xd7, 0x66, 0x0d, 0xab, 0xe6, 0x1d, 0xb3,
- 0x92, 0x8c, 0xc7, 0xf6, 0x1d, 0xb6, 0x9a, 0x9b, 0x7f, 0x26, 0x49, 0xbf, 0x14, 0x89, 0xce, 0xaf,
- 0x16, 0x3e, 0x1b, 0xc9, 0xce, 0x33, 0xc2, 0x55, 0x61, 0x0c, 0x05, 0x6f, 0xd5, 0x71, 0x85, 0x28,
- 0x08, 0xdf, 0x7b, 0x10, 0x26, 0x6b, 0x46, 0xcd, 0xa0, 0x9c, 0x4e, 0x93, 0x5f, 0xfc, 0x9c, 0x36,
- 0xe9, 0x42, 0xb3, 0x3d, 0x0f, 0x75, 0x73, 0xcb, 0x30, 0xc1, 0x91, 0xcb, 0xf4, 0xa0, 0x88, 0x2d,
- 0x63, 0x50, 0xd7, 0x3d, 0xb4, 0xcc, 0x17, 0xbe, 0x4b, 0xa7, 0x6f, 0x65, 0x9c, 0x93, 0x92, 0x3a,
- 0xb6, 0xd2, 0xc9, 0x29, 0x70, 0x28, 0xc0, 0x8f, 0x0d, 0x52, 0x6c, 0xf5, 0xe0, 0xf8, 0x9b, 0x9c,
- 0xe3, 0x84, 0x8f, 0xe3, 0x1a, 0x27, 0xcd, 0xcd, 0xc1, 0xc8, 0x7e, 0x78, 0xfd, 0x0b, 0xce, 0x2b,
- 0x85, 0xfd, 0x4c, 0xe6, 0x61, 0x8c, 0x32, 0xa9, 0x34, 0x6d, 0xc7, 0x68, 0xd0, 0x08, 0xd8, 0x9d,
- 0xcd, 0x6f, 0x7d, 0x97, 0x8d, 0x9a, 0x51, 0x42, 0x36, 0xe7, 0x52, 0xe5, 0x72, 0x40, 0xcf, 0xc6,
- 0xaa, 0xb8, 0x52, 0xef, 0xc1, 0xe1, 0x6b, 0x5c, 0x10, 0x17, 0x3f, 0x77, 0x19, 0x26, 0xc9, 0x6f,
- 0x1a, 0xa0, 0xfc, 0x92, 0xf4, 0xde, 0x70, 0xcb, 0x7c, 0xeb, 0xbd, 0x6c, 0x60, 0x4e, 0xb8, 0x0c,
- 0x7c, 0x32, 0xf9, 0x7a, 0xb1, 0x86, 0x1d, 0x07, 0x5b, 0x76, 0x59, 0xad, 0xb7, 0x13, 0xcf, 0xb7,
- 0x63, 0x91, 0xf9, 0xd8, 0xf7, 0x83, 0xbd, 0x38, 0xcf, 0x28, 0xf3, 0xf5, 0x7a, 0x6e, 0x03, 0x8e,
- 0xb4, 0xf1, 0x8a, 0x3e, 0x78, 0xbe, 0xc2, 0x79, 0x4e, 0xb6, 0x78, 0x06, 0x61, 0xbb, 0x0a, 0x02,
- 0xee, 0xf6, 0x65, 0x1f, 0x3c, 0x3f, 0xce, 0x79, 0x22, 0x4e, 0x2b, 0xba, 0x94, 0x70, 0x7c, 0x06,
- 0xc6, 0xaf, 0x60, 0x6b, 0xd3, 0xb0, 0xf9, 0x2e, 0x51, 0x1f, 0xec, 0x3e, 0xc1, 0xd9, 0x8d, 0x71,
- 0x42, 0xba, 0x6d, 0x44, 0x78, 0x3d, 0x05, 0x89, 0x2d, 0xb5, 0x82, 0xfb, 0x60, 0x71, 0x83, 0xb3,
- 0x18, 0x22, 0xf8, 0x84, 0x34, 0x0f, 0xa9, 0x9a, 0xc1, 0xe7, 0xa8, 0xde, 0xe4, 0x9f, 0xe4, 0xe4,
- 0xc3, 0x82, 0x86, 0xb3, 0x30, 0x0d, 0xb3, 0x59, 0x27, 0x13, 0x58, 0x6f, 0x16, 0x7f, 0x4b, 0xb0,
- 0x10, 0x34, 0x9c, 0xc5, 0x3e, 0xcc, 0xfa, 0xaa, 0x60, 0x61, 0xfb, 0xec, 0xf9, 0x34, 0x0c, 0x1b,
- 0x7a, 0x7d, 0xcf, 0xd0, 0xfb, 0x11, 0xe2, 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x3c, 0x24,
- 0xfb, 0xed, 0x88, 0xbf, 0xfd, 0x7d, 0x31, 0x3c, 0x44, 0x0f, 0xcc, 0xc3, 0x98, 0x08, 0x50, 0x9a,
- 0xa1, 0xf7, 0xc1, 0xe2, 0xef, 0x70, 0x16, 0xa3, 0x3e, 0x32, 0xae, 0x86, 0x83, 0x6d, 0xa7, 0x86,
- 0xfb, 0x61, 0xf2, 0x19, 0xa1, 0x06, 0x27, 0xe1, 0xa6, 0xdc, 0xc4, 0x7a, 0x65, 0xbb, 0x3f, 0x0e,
- 0xbf, 0x22, 0x4c, 0x29, 0x68, 0x08, 0x8b, 0x39, 0x18, 0x69, 0xa8, 0x96, 0xbd, 0xad, 0xd6, 0xfb,
- 0xea, 0x8e, 0xbf, 0xcb, 0x79, 0xa4, 0x5c, 0x22, 0x6e, 0x91, 0xa6, 0xbe, 0x1f, 0x36, 0x9f, 0x15,
- 0x16, 0xf1, 0x91, 0xf1, 0xa1, 0x67, 0x3b, 0x74, 0x4b, 0x6d, 0x3f, 0xdc, 0x7e, 0x55, 0x0c, 0x3d,
- 0x46, 0xbb, 0xe4, 0xe7, 0x78, 0x1e, 0x92, 0xb6, 0x76, 0xad, 0x2f, 0x36, 0x9f, 0x13, 0x3d, 0x4d,
- 0x09, 0x08, 0xf1, 0x5b, 0xe1, 0x68, 0xdb, 0x69, 0xa2, 0x0f, 0x66, 0x7f, 0x8f, 0x33, 0x3b, 0xdc,
- 0x66, 0xaa, 0xe0, 0x21, 0x61, 0xbf, 0x2c, 0xff, 0xbe, 0x08, 0x09, 0x38, 0xc4, 0x6b, 0x95, 0xac,
- 0x1a, 0x6c, 0x75, 0x6b, 0x7f, 0x56, 0xfb, 0x35, 0x61, 0x35, 0x46, 0x1b, 0xb0, 0xda, 0x3a, 0x1c,
- 0xe6, 0x1c, 0xf7, 0xd7, 0xaf, 0x9f, 0x17, 0x81, 0x95, 0x51, 0x6f, 0x04, 0x7b, 0xf7, 0x6d, 0x90,
- 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x81, 0x73, 0x16, 0x11,
- 0xdf, 0xcd, 0x6f, 0xed, 0x25, 0xd5, 0x24, 0xcc, 0x9f, 0x87, 0x8c, 0x60, 0xde, 0xd4, 0x2d, 0x5c,
- 0x31, 0x6a, 0xba, 0x76, 0x0d, 0x57, 0xfb, 0x60, 0xfd, 0xeb, 0xa1, 0xae, 0xda, 0xf0, 0x91, 0x13,
- 0xce, 0x0b, 0x90, 0x76, 0x73, 0x95, 0xb2, 0xd6, 0x30, 0x0d, 0xcb, 0xe9, 0xc1, 0xf1, 0x8b, 0xa2,
- 0xa7, 0x5c, 0xba, 0x05, 0x4a, 0x96, 0x2b, 0x01, 0x3b, 0x67, 0xee, 0xd7, 0x25, 0xbf, 0xc4, 0x19,
- 0x8d, 0x78, 0x54, 0x3c, 0x70, 0x54, 0x8c, 0x86, 0xa9, 0x5a, 0xfd, 0xc4, 0xbf, 0x7f, 0x20, 0x02,
- 0x07, 0x27, 0xe1, 0x81, 0x83, 0x64, 0x74, 0x64, 0xb6, 0xef, 0x83, 0xc3, 0x97, 0x45, 0xe0, 0x10,
- 0x34, 0x9c, 0x85, 0x48, 0x18, 0xfa, 0x60, 0xf1, 0x0f, 0x05, 0x0b, 0x41, 0x43, 0x58, 0x3c, 0xeb,
- 0x4d, 0xb4, 0x16, 0xae, 0x69, 0xb6, 0x63, 0xb1, 0xa4, 0xb8, 0x3b, 0xab, 0x7f, 0xf4, 0xfd, 0x60,
- 0x12, 0xa6, 0xf8, 0x48, 0x49, 0x24, 0xe2, 0x9b, 0xac, 0x74, 0xcd, 0xd4, 0x5b, 0xb0, 0xdf, 0x10,
- 0x91, 0xc8, 0x47, 0x46, 0x64, 0xf3, 0x65, 0x88, 0xc4, 0xec, 0x15, 0xb2, 0x52, 0xe8, 0x83, 0xdd,
- 0x3f, 0x0e, 0x09, 0xb7, 0x26, 0x68, 0x09, 0x4f, 0x5f, 0xfe, 0xd3, 0xd4, 0x77, 0xf0, 0x5e, 0x5f,
- 0xde, 0xf9, 0x4f, 0x42, 0xf9, 0xcf, 0x06, 0xa3, 0x64, 0x31, 0x64, 0x2c, 0x94, 0x4f, 0xa1, 0x5e,
- 0xb7, 0x8a, 0x32, 0xef, 0xfe, 0x21, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x16, 0x89, 0x93, 0x07, 0x93,
- 0x9e, 0xde, 0xcc, 0xde, 0xfb, 0x43, 0xd7, 0xcf, 0x03, 0x39, 0x4f, 0xee, 0x02, 0x8c, 0x04, 0x12,
- 0x9e, 0xde, 0xac, 0xde, 0xc7, 0x59, 0xa5, 0xfc, 0xf9, 0x4e, 0xee, 0x2c, 0xc4, 0x48, 0xf2, 0xd2,
- 0x9b, 0xfc, 0xaf, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x13, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0xfd,
- 0x9c, 0xd4, 0x25, 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x57, 0x05, 0xb9, 0x20, 0x21, 0xe4,
- 0xfd, 0x9b, 0xf0, 0x2b, 0x3f, 0x17, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99, 0x4a,
- 0x6f, 0xea, 0x0f, 0xf2, 0xc6, 0x05, 0x45, 0xee, 0x09, 0x88, 0xf7, 0x69, 0xf0, 0x9f, 0xe7, 0xa4,
- 0x0c, 0x3f, 0x37, 0x07, 0xc3, 0xbe, 0xec, 0xa4, 0x37, 0xf9, 0x5f, 0xe3, 0xe4, 0x7e, 0x2a, 0x22,
- 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x05, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49, 0x6f,
- 0xea, 0x0f, 0x09, 0xab, 0x0b, 0x92, 0xdc, 0xd3, 0x90, 0x74, 0x27, 0x9b, 0xde, 0xf4, 0x1f, 0xe6,
- 0xf4, 0x1e, 0x0d, 0xb1, 0x80, 0x6f, 0xb2, 0xeb, 0xcd, 0xe2, 0xaf, 0x0b, 0x0b, 0xf8, 0xa8, 0xc8,
- 0x30, 0x0a, 0x27, 0x30, 0xbd, 0x39, 0x7d, 0x44, 0x0c, 0xa3, 0x50, 0xfe, 0x42, 0x7a, 0x93, 0xc6,
- 0xfc, 0xde, 0x2c, 0xfe, 0x86, 0xe8, 0x4d, 0x8a, 0x4f, 0xc4, 0x08, 0x67, 0x04, 0xbd, 0x79, 0xfc,
- 0xa2, 0x10, 0x23, 0x94, 0x10, 0xe4, 0x56, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x94, 0xf3,
- 0x1b, 0x6f, 0x49, 0x06, 0x72, 0xcf, 0xc1, 0xe1, 0xf6, 0x99, 0x40, 0x6f, 0xae, 0x1f, 0xfb, 0x61,
- 0x68, 0xed, 0xe6, 0x4f, 0x04, 0x72, 0xeb, 0xde, 0x94, 0xe2, 0xcf, 0x02, 0x7a, 0xb3, 0x7d, 0xe5,
- 0x87, 0xc1, 0xc0, 0xed, 0x4f, 0x02, 0x72, 0x79, 0x00, 0x6f, 0x02, 0xee, 0xcd, 0xeb, 0x13, 0x9c,
- 0x97, 0x8f, 0x88, 0x0c, 0x0d, 0x3e, 0xff, 0xf6, 0xa6, 0xbf, 0x21, 0x86, 0x06, 0xa7, 0x20, 0x43,
- 0x43, 0x4c, 0xbd, 0xbd, 0xa9, 0x3f, 0x29, 0x86, 0x86, 0x20, 0x21, 0x9e, 0xed, 0x9b, 0xdd, 0x7a,
- 0x73, 0xf8, 0x94, 0xf0, 0x6c, 0x1f, 0x55, 0x6e, 0x19, 0xc6, 0x5b, 0x26, 0xc4, 0xde, 0xac, 0x7e,
- 0x89, 0xb3, 0x4a, 0x87, 0xe7, 0x43, 0xff, 0xe4, 0xc5, 0x27, 0xc3, 0xde, 0xdc, 0x3e, 0x1d, 0x9a,
- 0xbc, 0xf8, 0x5c, 0x98, 0x3b, 0x0f, 0x09, 0xbd, 0x59, 0xaf, 0x93, 0xc1, 0x83, 0xba, 0xdf, 0x04,
- 0xcc, 0xfc, 0xe7, 0x1f, 0x71, 0xeb, 0x08, 0x82, 0xdc, 0x59, 0x88, 0xe3, 0xc6, 0x26, 0xae, 0xf6,
- 0xa2, 0xfc, 0xde, 0x8f, 0x44, 0xc0, 0x24, 0xd8, 0xb9, 0xa7, 0x01, 0xd8, 0xd6, 0x08, 0x3d, 0x0c,
- 0xec, 0x41, 0xfb, 0x5f, 0x7e, 0xc4, 0xaf, 0xde, 0x78, 0x24, 0x1e, 0x03, 0x76, 0x91, 0xa7, 0x3b,
- 0x83, 0xef, 0x07, 0x19, 0xd0, 0x1e, 0x79, 0x0a, 0x86, 0x5e, 0xb4, 0x0d, 0xdd, 0x51, 0x6b, 0xbd,
- 0xa8, 0xff, 0x2b, 0xa7, 0x16, 0xf8, 0xc4, 0x60, 0x0d, 0xc3, 0xc2, 0x8e, 0x5a, 0xb3, 0x7b, 0xd1,
- 0xfe, 0x37, 0x4e, 0xeb, 0x12, 0x10, 0xe2, 0x8a, 0x6a, 0x3b, 0xfd, 0xe8, 0xfd, 0xc7, 0x82, 0x58,
- 0x10, 0x10, 0xa1, 0xc9, 0xef, 0x1d, 0xbc, 0xd7, 0x8b, 0xf6, 0x07, 0x42, 0x68, 0x8e, 0x9f, 0x7b,
- 0x13, 0x24, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf1, 0x9f, 0x70, 0x62, 0x8f, 0x82, 0xb4, 0x6c,
- 0x3b, 0x55, 0x47, 0xeb, 0x6d, 0xec, 0x5b, 0xbc, 0xa7, 0x05, 0x7e, 0x2e, 0x0f, 0xc3, 0xb6, 0x53,
- 0xad, 0x36, 0x79, 0x7e, 0xda, 0x83, 0xfc, 0x4f, 0x7f, 0xe4, 0x6e, 0x59, 0xb8, 0x34, 0xa4, 0xb7,
- 0xaf, 0xee, 0x38, 0xa6, 0x41, 0x0f, 0x3c, 0x7a, 0x71, 0xf8, 0x21, 0xe7, 0xe0, 0x23, 0xc9, 0xcd,
- 0x41, 0x8a, 0xe8, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x3b, 0x37, 0x40, 0x80,
- 0xa8, 0xf0, 0xb3, 0x5f, 0x7b, 0x6d, 0x4a, 0xfa, 0xe6, 0x6b, 0x53, 0xd2, 0x1f, 0xbe, 0x36, 0x25,
- 0x7d, 0xe8, 0x3b, 0x53, 0x03, 0xdf, 0xfc, 0xce, 0xd4, 0xc0, 0xef, 0x7d, 0x67, 0x6a, 0xa0, 0xfd,
- 0x2e, 0x31, 0xcc, 0x1b, 0xf3, 0x06, 0xdb, 0x1f, 0x7e, 0x41, 0xae, 0x69, 0xce, 0x76, 0x73, 0x73,
- 0xb6, 0x62, 0x34, 0xe8, 0x36, 0xae, 0xb7, 0x5b, 0xeb, 0x2e, 0x72, 0xe0, 0x3d, 0x51, 0x38, 0x5a,
- 0x31, 0xec, 0x86, 0x61, 0x97, 0xd9, 0x7e, 0x2f, 0x2b, 0xf0, 0x1d, 0xdf, 0x94, 0xbf, 0xaa, 0x8f,
- 0x4d, 0xdf, 0x8b, 0x30, 0x4a, 0x55, 0xa7, 0xdb, 0x5d, 0xd4, 0xdb, 0x7a, 0x06, 0x88, 0xaf, 0xff,
- 0xdb, 0x38, 0xd5, 0x7a, 0xc4, 0x25, 0xa4, 0xa7, 0xf7, 0xeb, 0x30, 0xa9, 0x35, 0xcc, 0x3a, 0xa6,
- 0xdb, 0xfc, 0x65, 0xb7, 0xae, 0x37, 0xbf, 0x6f, 0x70, 0x7e, 0x13, 0x1e, 0xf9, 0x82, 0xa0, 0xce,
- 0x2d, 0xc2, 0xb8, 0x5a, 0xa9, 0x60, 0x33, 0xc0, 0xb2, 0x47, 0xb7, 0x08, 0x01, 0xd3, 0x9c, 0xd2,
- 0xe5, 0x56, 0x78, 0xba, 0x53, 0xd7, 0xbc, 0x70, 0xaf, 0xcf, 0xf2, 0x16, 0xae, 0x61, 0xfd, 0x61,
- 0x1d, 0x3b, 0x57, 0x0d, 0x6b, 0x87, 0x9b, 0xf7, 0x61, 0xd6, 0xd4, 0x20, 0xbb, 0xc1, 0x0c, 0xef,
- 0x8b, 0xc2, 0x14, 0xab, 0x38, 0xbd, 0xa9, 0xda, 0xf8, 0xf4, 0x95, 0x47, 0x37, 0xb1, 0xa3, 0x3e,
- 0x7a, 0xba, 0x62, 0x68, 0x3a, 0xef, 0x89, 0x09, 0xde, 0x2f, 0xa4, 0x7e, 0x96, 0xd7, 0x67, 0xdb,
- 0x6e, 0xd3, 0xcb, 0xf3, 0x10, 0x9b, 0x33, 0x34, 0x1d, 0x4d, 0x42, 0xbc, 0x8a, 0x75, 0xa3, 0xc1,
- 0xef, 0xdc, 0xb1, 0x02, 0xba, 0x1b, 0x06, 0xd5, 0x86, 0xd1, 0xd4, 0x1d, 0x76, 0x42, 0x51, 0x18,
- 0xfe, 0xda, 0xcd, 0xe9, 0x81, 0xdf, 0xbf, 0x39, 0x1d, 0x5d, 0xd0, 0x1d, 0x85, 0x57, 0xe5, 0x62,
- 0xaf, 0xbf, 0x3a, 0x2d, 0xc9, 0xcf, 0xc0, 0x50, 0x11, 0x57, 0x0e, 0xc2, 0xab, 0x88, 0x2b, 0x21,
- 0x5e, 0x0f, 0x40, 0x62, 0x41, 0x77, 0xd8, 0xad, 0xc8, 0x13, 0x10, 0xd5, 0x74, 0x76, 0xd1, 0x26,
- 0xd4, 0x3e, 0x81, 0x13, 0xd4, 0x22, 0xae, 0xb8, 0xa8, 0x55, 0x5c, 0x09, 0xa3, 0x12, 0xf6, 0x04,
- 0x5e, 0x28, 0xfe, 0xde, 0x7f, 0x9c, 0x1a, 0x78, 0xf9, 0xb5, 0xa9, 0x81, 0x8e, 0x3d, 0xe1, 0x1f,
- 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x0e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0xb7, 0x07, 0x41,
- 0xe6, 0x38, 0xb6, 0xa3, 0xee, 0x68, 0x7a, 0xcd, 0xed, 0x09, 0xb5, 0xe9, 0x6c, 0x5f, 0xe3, 0x5d,
- 0x71, 0x98, 0x77, 0x05, 0xc7, 0xe9, 0xde, 0x1b, 0xd9, 0xce, 0xa3, 0x2b, 0xdb, 0xa3, 0xcf, 0xe5,
- 0x7f, 0x15, 0x05, 0xb4, 0xe6, 0xa8, 0x3b, 0x38, 0xdf, 0x74, 0xb6, 0x0d, 0x4b, 0xbb, 0xc6, 0x62,
- 0x19, 0x06, 0x68, 0xa8, 0xbb, 0x65, 0xc7, 0xd8, 0xc1, 0xba, 0x4d, 0x4d, 0x33, 0x7c, 0xe6, 0xe8,
- 0x6c, 0x1b, 0xff, 0x98, 0x25, 0x5d, 0x57, 0x78, 0xf0, 0xb3, 0xdf, 0x9e, 0xbe, 0xbf, 0xb7, 0x15,
- 0x28, 0x32, 0x49, 0xae, 0x77, 0xd7, 0x29, 0x63, 0x74, 0x19, 0xd8, 0x25, 0x8b, 0x72, 0x5d, 0xb3,
- 0x1d, 0x7e, 0x4f, 0xfb, 0xec, 0x6c, 0x7b, 0xdd, 0x67, 0x5b, 0xc5, 0x9c, 0xbd, 0xac, 0xd6, 0xb5,
- 0xaa, 0xea, 0x18, 0x96, 0x7d, 0x71, 0x40, 0x49, 0x52, 0x56, 0x8b, 0x9a, 0xed, 0xa0, 0x75, 0x48,
- 0x56, 0xb1, 0xbe, 0xc7, 0xd8, 0x46, 0xdf, 0x18, 0xdb, 0x04, 0xe1, 0x44, 0xb9, 0x3e, 0x0f, 0x48,
- 0xf5, 0xe3, 0x89, 0x87, 0x49, 0xec, 0x7e, 0x65, 0x07, 0xf6, 0x01, 0xce, 0xf4, 0x1d, 0xc5, 0xb8,
- 0x1a, 0x06, 0x65, 0xef, 0x03, 0xf0, 0xda, 0x44, 0x19, 0x18, 0x52, 0xab, 0x55, 0x0b, 0xdb, 0x36,
- 0x3d, 0x00, 0x4c, 0x2a, 0xa2, 0x98, 0x1b, 0xff, 0xd7, 0x5f, 0x7a, 0x78, 0x24, 0xc0, 0xb1, 0x90,
- 0x02, 0xb8, 0xe2, 0x92, 0x9e, 0xfa, 0xa4, 0x04, 0xe3, 0x2d, 0x2d, 0x22, 0x19, 0xa6, 0xf2, 0x1b,
- 0xeb, 0x17, 0x57, 0x94, 0x85, 0x17, 0xf2, 0xeb, 0x0b, 0x2b, 0xcb, 0x65, 0x76, 0xe5, 0x7f, 0x79,
- 0x6d, 0xb5, 0x34, 0xb7, 0x70, 0x61, 0xa1, 0x54, 0x4c, 0x0f, 0xa0, 0x69, 0x38, 0xd6, 0x06, 0xa7,
- 0x58, 0x5a, 0x2c, 0xcd, 0xe7, 0xd7, 0x4b, 0x69, 0x09, 0xdd, 0x05, 0x27, 0xda, 0x32, 0x71, 0x51,
- 0x22, 0x1d, 0x50, 0x94, 0x92, 0x8b, 0x12, 0x2d, 0x5c, 0xe8, 0x38, 0x8a, 0x1e, 0xea, 0xea, 0x3f,
- 0xbb, 0xee, 0x70, 0x09, 0x8e, 0xa7, 0x77, 0x47, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e,
- 0xaf, 0x3e, 0x3b, 0x44, 0xb3, 0x8b, 0x10, 0xcd, 0xeb, 0x7b, 0xe8, 0x28, 0xcb, 0xa7, 0xcb, 0x4d,
- 0xab, 0xce, 0x63, 0xd0, 0x10, 0x29, 0x6f, 0x58, 0x75, 0x12, 0x9b, 0xc4, 0x45, 0x7f, 0xe9, 0x64,
- 0x8a, 0xdf, 0xde, 0xcf, 0xa5, 0x3f, 0xfa, 0xea, 0xf4, 0xc0, 0xe7, 0x5f, 0x9d, 0x1e, 0xf8, 0xc1,
- 0xa7, 0xa6, 0x07, 0x5e, 0xfe, 0x83, 0x99, 0x81, 0xc2, 0x4e, 0x58, 0xbd, 0xaf, 0xf4, 0x9c, 0x4d,
- 0x13, 0x79, 0x7d, 0x8f, 0x06, 0xa2, 0x55, 0xe9, 0x85, 0x38, 0x55, 0x4e, 0x1c, 0xa0, 0x4e, 0x85,
- 0x0f, 0x50, 0x9f, 0xc3, 0xf5, 0xfa, 0x25, 0xdd, 0xb8, 0x4a, 0x7b, 0xd5, 0xb3, 0xc1, 0x47, 0x22,
- 0x30, 0xd5, 0x32, 0x6d, 0xf2, 0x0c, 0xa3, 0xd3, 0xf3, 0xd7, 0x1c, 0x24, 0x8a, 0x22, 0x71, 0xc9,
- 0xc0, 0x90, 0x8d, 0x2b, 0x86, 0x5e, 0x65, 0x23, 0x3d, 0xaa, 0x88, 0x22, 0x51, 0x5b, 0x57, 0x75,
- 0xc3, 0xe6, 0x77, 0xee, 0x59, 0xa1, 0xf0, 0x71, 0x69, 0x7f, 0xf9, 0xc2, 0x88, 0x68, 0x49, 0xa8,
- 0xf9, 0x68, 0xcf, 0x23, 0xe5, 0x1d, 0xa2, 0xa5, 0xab, 0x44, 0xe0, 0x58, 0xb9, 0x5f, 0xab, 0xfc,
- 0x62, 0x04, 0xa6, 0xc3, 0x56, 0x21, 0x69, 0x9b, 0xed, 0xa8, 0x0d, 0xb3, 0x93, 0x59, 0xce, 0x43,
- 0x72, 0x5d, 0xe0, 0xec, 0xdb, 0x2e, 0x37, 0xf6, 0x69, 0x97, 0x51, 0xb7, 0x29, 0x61, 0x98, 0x33,
- 0x7d, 0x1a, 0xc6, 0xd5, 0xe3, 0x40, 0x96, 0xf9, 0x6c, 0x0c, 0x4e, 0xd0, 0x47, 0x59, 0x56, 0x43,
- 0xd3, 0x9d, 0xd3, 0x15, 0x6b, 0xcf, 0x74, 0x68, 0xe2, 0x66, 0x6c, 0x71, 0xbb, 0x8c, 0x7b, 0xd5,
- 0xb3, 0xac, 0xba, 0xc3, 0xc8, 0xd9, 0x82, 0xf8, 0x2a, 0xa1, 0x23, 0x16, 0x71, 0x0c, 0x47, 0xad,
- 0x73, 0x4b, 0xb1, 0x02, 0x81, 0xb2, 0x87, 0x5c, 0x11, 0x06, 0xd5, 0xc4, 0x1b, 0xae, 0x3a, 0x56,
- 0xb7, 0xd8, 0x7d, 0xf8, 0x28, 0x1d, 0x50, 0x09, 0x02, 0xa0, 0x57, 0xdf, 0x27, 0x21, 0xae, 0x36,
- 0xd9, 0x55, 0x8e, 0x28, 0x19, 0x69, 0xb4, 0x20, 0x5f, 0x82, 0x21, 0x7e, 0xa0, 0x8c, 0xd2, 0x10,
- 0xdd, 0xc1, 0x7b, 0xb4, 0x9d, 0x94, 0x42, 0x7e, 0xa2, 0x59, 0x88, 0x53, 0xe1, 0xf9, 0x04, 0x92,
- 0x99, 0x6d, 0x91, 0x7e, 0x96, 0x0a, 0xa9, 0x30, 0x34, 0xf9, 0x19, 0x48, 0x14, 0x8d, 0x86, 0xa6,
- 0x1b, 0x41, 0x6e, 0x49, 0xc6, 0x8d, 0xca, 0x6c, 0x36, 0x79, 0xbe, 0xa1, 0xb0, 0x02, 0x3a, 0x0c,
- 0x83, 0xec, 0x7d, 0x04, 0xbf, 0x8e, 0xc2, 0x4b, 0xf2, 0x1c, 0x0c, 0x51, 0xde, 0x2b, 0x26, 0x42,
- 0xfc, 0x65, 0x1d, 0x7f, 0x88, 0x41, 0x53, 0x53, 0xce, 0x3e, 0xe2, 0x09, 0x8b, 0x20, 0x56, 0x55,
- 0x1d, 0x95, 0xeb, 0x4d, 0x7f, 0xcb, 0x6f, 0x86, 0x04, 0x67, 0x62, 0xa3, 0x33, 0x10, 0x35, 0x4c,
- 0x9b, 0x5f, 0x28, 0xc9, 0x76, 0x52, 0x65, 0xc5, 0x2c, 0xc4, 0x48, 0xa6, 0xa2, 0x10, 0xe4, 0x82,
- 0xd2, 0x31, 0xa8, 0x3e, 0xe9, 0x0b, 0xaa, 0xbe, 0x2e, 0xf7, 0xfd, 0x64, 0x5d, 0xda, 0xe2, 0x0e,
- 0xae, 0xb3, 0x7c, 0x2a, 0x02, 0x53, 0xbe, 0xda, 0x2b, 0xd8, 0xb2, 0x35, 0x43, 0xe7, 0xf3, 0x39,
- 0xf3, 0x16, 0xe4, 0x13, 0x92, 0xd7, 0x77, 0x70, 0x97, 0x37, 0x41, 0x34, 0x6f, 0x9a, 0x28, 0x0b,
- 0x09, 0x5a, 0xae, 0x18, 0xcc, 0x5f, 0x62, 0x8a, 0x5b, 0x26, 0x75, 0xb6, 0xb1, 0xe5, 0x5c, 0x55,
- 0x2d, 0xf7, 0x09, 0xa1, 0x28, 0xcb, 0x4f, 0x41, 0x72, 0xce, 0xd0, 0x6d, 0xac, 0xdb, 0x4d, 0x3a,
- 0x06, 0x37, 0xeb, 0x46, 0x65, 0x87, 0x73, 0x60, 0x05, 0x62, 0x70, 0xd5, 0x34, 0x29, 0x65, 0x4c,
- 0x21, 0x3f, 0x59, 0x6e, 0x58, 0x58, 0xeb, 0x68, 0xa2, 0xa7, 0xf6, 0x6f, 0x22, 0xae, 0xa4, 0x6b,
- 0xa3, 0xff, 0x2d, 0xc1, 0xf1, 0xd6, 0x01, 0xb5, 0x83, 0xf7, 0xec, 0xfd, 0x8e, 0xa7, 0xe7, 0x21,
- 0xb9, 0x4a, 0xdf, 0xf1, 0x5f, 0xc2, 0x7b, 0x28, 0x0b, 0x43, 0xb8, 0x7a, 0xe6, 0xec, 0xd9, 0x47,
- 0x9f, 0x62, 0xde, 0x7e, 0x71, 0x40, 0x11, 0x00, 0x34, 0x05, 0x49, 0x1b, 0x57, 0xcc, 0x33, 0x67,
- 0xcf, 0xed, 0x3c, 0xca, 0xdc, 0x8b, 0x64, 0x40, 0x2e, 0x28, 0x97, 0x20, 0x5a, 0xbf, 0xfe, 0xa9,
- 0x69, 0xa9, 0x10, 0x87, 0xa8, 0xdd, 0x6c, 0xdc, 0x51, 0x1f, 0x79, 0x25, 0x0e, 0x33, 0x7e, 0x4a,
- 0x1a, 0xa9, 0xdc, 0xac, 0x84, 0xdb, 0x20, 0xed, 0xb3, 0x01, 0xc5, 0xe8, 0x90, 0xcc, 0x76, 0xb5,
- 0xa4, 0xfc, 0xeb, 0x12, 0xa4, 0xdc, 0x54, 0x69, 0x0d, 0x3b, 0xe8, 0xbc, 0x3f, 0xff, 0xe1, 0xc3,
- 0xe6, 0xd8, 0x6c, 0xb8, 0x2d, 0x2f, 0xa5, 0x53, 0x7c, 0xe8, 0xe8, 0x09, 0xea, 0x88, 0xa6, 0x61,
- 0xf3, 0x67, 0x65, 0x3d, 0x48, 0x5d, 0x64, 0xf4, 0x10, 0x20, 0x1a, 0xe1, 0xca, 0x57, 0x0c, 0x47,
- 0xd3, 0x6b, 0x65, 0xd3, 0xb8, 0xca, 0x1f, 0xeb, 0x46, 0x95, 0x34, 0xad, 0xb9, 0x4c, 0x2b, 0x56,
- 0x09, 0x9c, 0x08, 0x9d, 0x74, 0xb9, 0x04, 0xd3, 0x3b, 0x12, 0x04, 0x44, 0x11, 0x9d, 0x87, 0x21,
- 0xb3, 0xb9, 0x59, 0x16, 0x11, 0x63, 0xf8, 0xcc, 0xf1, 0x76, 0xe3, 0x5f, 0xf8, 0x07, 0x8f, 0x00,
- 0x83, 0x66, 0x73, 0x93, 0x78, 0xcb, 0x5d, 0x90, 0x6a, 0x23, 0xcc, 0xf0, 0x15, 0x4f, 0x0e, 0xfa,
- 0xf9, 0x08, 0xae, 0x41, 0xd9, 0xb4, 0x34, 0xc3, 0xd2, 0x9c, 0x3d, 0x9a, 0xbf, 0x46, 0x95, 0xb4,
- 0xa8, 0x58, 0xe5, 0x70, 0x79, 0x07, 0xc6, 0xd6, 0xe8, 0xfa, 0xd6, 0x93, 0xfc, 0xac, 0x27, 0x9f,
- 0xd4, 0x5b, 0xbe, 0x8e, 0x92, 0x45, 0x5a, 0x24, 0x2b, 0x3c, 0xdb, 0xd1, 0x3b, 0x9f, 0xd8, 0xbf,
- 0x77, 0x06, 0x33, 0xc4, 0x3f, 0x3e, 0x1a, 0x18, 0x9c, 0xcc, 0x39, 0xfd, 0xe1, 0xab, 0x5f, 0xc7,
- 0xec, 0x95, 0x4d, 0x64, 0xbb, 0x4f, 0xaa, 0xd9, 0x1e, 0x61, 0x34, 0xdb, 0x73, 0x08, 0xc9, 0x4f,
- 0xc1, 0xc8, 0xaa, 0x6a, 0x39, 0x6b, 0xd8, 0xb9, 0x88, 0xd5, 0x2a, 0xb6, 0x82, 0xb3, 0xee, 0x88,
- 0x98, 0x75, 0x11, 0xc4, 0xe8, 0xd4, 0xca, 0x66, 0x1d, 0xfa, 0x5b, 0xde, 0x86, 0x18, 0xbd, 0x19,
- 0xea, 0xce, 0xc8, 0x9c, 0x82, 0xcd, 0xc8, 0x24, 0x96, 0xee, 0x39, 0xd8, 0x16, 0xe9, 0x2d, 0x2d,
- 0xa0, 0xc7, 0xc5, 0xbc, 0x1a, 0xed, 0x3e, 0xaf, 0x72, 0x47, 0xe4, 0xb3, 0x6b, 0x1d, 0x86, 0x0a,
- 0x24, 0x14, 0x2f, 0x14, 0x5d, 0x41, 0x24, 0x4f, 0x10, 0xb4, 0x04, 0x63, 0xa6, 0x6a, 0x39, 0xf4,
- 0x49, 0xcc, 0x36, 0xd5, 0x82, 0xfb, 0xfa, 0x74, 0xeb, 0xc8, 0x0b, 0x28, 0xcb, 0x5b, 0x19, 0x31,
- 0xfd, 0x40, 0xf9, 0x8f, 0x62, 0x30, 0xc8, 0x8d, 0xf1, 0x26, 0x18, 0xe2, 0x66, 0xe5, 0xde, 0x79,
- 0x62, 0xb6, 0x75, 0x62, 0x9a, 0x75, 0x27, 0x10, 0xce, 0x4f, 0xd0, 0xa0, 0xfb, 0x20, 0x51, 0xd9,
- 0x56, 0x35, 0xbd, 0xac, 0x55, 0xc5, 0x56, 0xc3, 0x6b, 0x37, 0xa7, 0x87, 0xe6, 0x08, 0x6c, 0xa1,
- 0xa8, 0x0c, 0xd1, 0xca, 0x85, 0x2a, 0xc9, 0x04, 0xb6, 0xb1, 0x56, 0xdb, 0x76, 0xf8, 0x08, 0xe3,
- 0x25, 0xf4, 0x24, 0xc4, 0x88, 0x43, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9, 0x2b,
- 0x24, 0x48, 0xc3, 0x1f, 0xfa, 0xf6, 0xb4, 0xa4, 0x50, 0x0a, 0x34, 0x07, 0x23, 0x75, 0xd5, 0x76,
- 0xca, 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0xc5, 0x20, 0xdc, 0xb0, 0x5c, 0xf4, 0x61,
- 0x42, 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5, 0x56,
- 0x83, 0xd4, 0xee, 0xa3, 0x04, 0x3e, 0x47, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44, 0x8b,
- 0xa2, 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc3, 0x98, 0x17, 0x1f, 0x19, 0x4a, 0x82,
- 0x71, 0xf1, 0xc0, 0x14, 0xf1, 0x11, 0x98, 0xd4, 0xf1, 0x2e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e, 0x52,
- 0x6c, 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x85, 0xd1, 0x8a, 0x30, 0x3e, 0xc3, 0x05, 0x8a, 0x3b,
- 0xe2, 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d, 0x5a,
- 0x75, 0x0a, 0xc6, 0xa9, 0x8e, 0x16, 0xb6, 0x9b, 0x75, 0x87, 0x33, 0x49, 0x51, 0x9c, 0x31, 0x52,
- 0xa1, 0x30, 0x38, 0xc5, 0xbd, 0x1b, 0x46, 0xf0, 0x15, 0xad, 0x8a, 0xf5, 0x0a, 0x66, 0x78, 0x23,
- 0x14, 0x2f, 0x25, 0x80, 0x14, 0xe9, 0x01, 0x70, 0xe3, 0x5e, 0x59, 0xc4, 0xe4, 0x51, 0xc6, 0x4f,
- 0xc0, 0xf3, 0x0c, 0x2c, 0x67, 0x20, 0x56, 0x54, 0x1d, 0x95, 0x24, 0x18, 0xce, 0x2e, 0x9b, 0x68,
- 0x52, 0x0a, 0xf9, 0x29, 0xbf, 0x1e, 0x81, 0xd8, 0x65, 0xc3, 0xc1, 0xe8, 0x31, 0x5f, 0x02, 0x38,
- 0xda, 0xce, 0x9f, 0xd7, 0xb4, 0x9a, 0x8e, 0xab, 0x4b, 0x76, 0xcd, 0xf7, 0x3d, 0x05, 0xcf, 0x9d,
- 0x22, 0x01, 0x77, 0x9a, 0x84, 0xb8, 0x65, 0x34, 0xf5, 0xaa, 0xb8, 0xc9, 0x4b, 0x0b, 0xa8, 0x04,
- 0x09, 0xd7, 0x4b, 0x62, 0xbd, 0xbc, 0x64, 0x8c, 0x78, 0x09, 0xf1, 0x61, 0x0e, 0x50, 0x86, 0x36,
- 0xb9, 0xb3, 0x14, 0x20, 0xe9, 0x06, 0x2f, 0xee, 0x6d, 0xfd, 0x39, 0xac, 0x47, 0x46, 0x26, 0x13,
- 0xb7, 0xef, 0x5d, 0xe3, 0x31, 0x8f, 0x4b, 0xbb, 0x15, 0xdc, 0x7a, 0x01, 0xb7, 0xe2, 0xdf, 0x76,
- 0x18, 0xa2, 0x7a, 0x79, 0x6e, 0xc5, 0xbe, 0xef, 0x70, 0x1c, 0x92, 0xb6, 0x56, 0xd3, 0x55, 0xa7,
- 0x69, 0x61, 0xee, 0x79, 0x1e, 0x40, 0xfe, 0x8a, 0x04, 0x83, 0xcc, 0x93, 0x7d, 0x76, 0x93, 0xda,
- 0xdb, 0x2d, 0xd2, 0xc9, 0x6e, 0xd1, 0x83, 0xdb, 0x2d, 0x0f, 0xe0, 0x0a, 0x63, 0xf3, 0x27, 0xf7,
- 0x6d, 0x32, 0x06, 0x26, 0xe2, 0x9a, 0x56, 0xe3, 0x03, 0xd5, 0x47, 0x24, 0xff, 0x07, 0x89, 0x24,
- 0xb1, 0xbc, 0x1e, 0xe5, 0x61, 0x44, 0xc8, 0x55, 0xde, 0xaa, 0xab, 0x35, 0xee, 0x3b, 0x27, 0x3a,
- 0x0a, 0x77, 0xa1, 0xae, 0xd6, 0x94, 0x61, 0x2e, 0x0f, 0x29, 0xb4, 0xef, 0x87, 0x48, 0x87, 0x7e,
- 0x08, 0x74, 0x7c, 0xf4, 0x60, 0x1d, 0x1f, 0xe8, 0xa2, 0x58, 0xb8, 0x8b, 0xbe, 0x18, 0xa1, 0x8b,
- 0x19, 0xd3, 0xb0, 0xd5, 0xfa, 0x8f, 0x63, 0x44, 0x1c, 0x83, 0xa4, 0x69, 0xd4, 0xcb, 0xac, 0x86,
- 0xdd, 0x70, 0x4f, 0x98, 0x46, 0x5d, 0x69, 0xe9, 0xf6, 0xf8, 0x6d, 0x1a, 0x2e, 0x83, 0xb7, 0xc1,
- 0x6a, 0x43, 0x61, 0xab, 0x59, 0x90, 0x62, 0xa6, 0xe0, 0x73, 0xd9, 0x23, 0xc4, 0x06, 0x74, 0x72,
- 0x94, 0x5a, 0xe7, 0x5e, 0x26, 0x36, 0xc3, 0x54, 0x38, 0x1e, 0xa1, 0x60, 0xa1, 0xbf, 0xdd, 0x2a,
- 0xd8, 0xef, 0x96, 0x0a, 0xc7, 0x93, 0xff, 0xa6, 0x04, 0xb0, 0x48, 0x2c, 0x4b, 0xf5, 0x25, 0xb3,
- 0x90, 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0xd4, 0x69, 0xbc, 0xfd, 0x94, 0xed, 0x97, 0x7b,
- 0x0e, 0x46, 0x3c, 0x67, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x86, 0x1d, 0x25, 0x75,
- 0xc5, 0x57, 0x92, 0xff, 0xb9, 0x04, 0x49, 0x2a, 0xd3, 0x12, 0x76, 0xd4, 0x40, 0x1f, 0x4a, 0x07,
- 0xef, 0xc3, 0x13, 0x00, 0x8c, 0x8d, 0xad, 0x5d, 0xc3, 0xdc, 0xb3, 0x92, 0x14, 0xb2, 0xa6, 0x5d,
- 0xc3, 0xe8, 0x9c, 0x6b, 0xf0, 0x68, 0x77, 0x83, 0x8b, 0xac, 0x9b, 0x9b, 0xfd, 0x08, 0x0c, 0xd1,
- 0x4f, 0x54, 0xed, 0xda, 0x3c, 0x91, 0x1e, 0xd4, 0x9b, 0x8d, 0xf5, 0x5d, 0x5b, 0x7e, 0x11, 0x86,
- 0xd6, 0x77, 0xd9, 0xde, 0xc8, 0x31, 0x48, 0x5a, 0x86, 0xc1, 0xe7, 0x64, 0x96, 0x0b, 0x25, 0x08,
- 0x80, 0x4e, 0x41, 0x62, 0x3f, 0x20, 0xe2, 0xed, 0x07, 0x78, 0x1b, 0x1a, 0xd1, 0xbe, 0x36, 0x34,
- 0x4e, 0xfd, 0x3b, 0x09, 0x86, 0x7d, 0xf1, 0x01, 0x3d, 0x0a, 0x87, 0x0a, 0x8b, 0x2b, 0x73, 0x97,
- 0xca, 0x0b, 0xc5, 0xf2, 0x85, 0xc5, 0xfc, 0xbc, 0xf7, 0x86, 0x2b, 0x7b, 0xf8, 0xfa, 0x8d, 0x19,
- 0xe4, 0xc3, 0xdd, 0xd0, 0xe9, 0x8e, 0x12, 0x3a, 0x0d, 0x93, 0x41, 0x92, 0x7c, 0x61, 0xad, 0xb4,
- 0xbc, 0x9e, 0x96, 0xb2, 0x87, 0xae, 0xdf, 0x98, 0x19, 0xf7, 0x51, 0xe4, 0x37, 0x6d, 0xac, 0x3b,
- 0xad, 0x04, 0x73, 0x2b, 0x4b, 0x4b, 0x0b, 0xeb, 0xe9, 0x48, 0x0b, 0x01, 0x0f, 0xd8, 0x0f, 0xc0,
- 0x78, 0x90, 0x60, 0x79, 0x61, 0x31, 0x1d, 0xcd, 0xa2, 0xeb, 0x37, 0x66, 0x46, 0x7d, 0xd8, 0xcb,
- 0x5a, 0x3d, 0x9b, 0xf8, 0xc0, 0xa7, 0xa7, 0x06, 0x7e, 0xe5, 0x97, 0xa7, 0x24, 0xa2, 0xd9, 0x48,
- 0x20, 0x46, 0xa0, 0x87, 0xe0, 0xc8, 0xda, 0xc2, 0xfc, 0x72, 0xa9, 0x58, 0x5e, 0x5a, 0x9b, 0x17,
- 0x7b, 0xd0, 0x42, 0xbb, 0xb1, 0xeb, 0x37, 0x66, 0x86, 0xb9, 0x4a, 0x9d, 0xb0, 0x57, 0x95, 0xd2,
- 0xe5, 0x95, 0xf5, 0x52, 0x5a, 0x62, 0xd8, 0xab, 0x16, 0xbe, 0x62, 0x38, 0xec, 0x1b, 0x76, 0x8f,
- 0xc0, 0xd1, 0x36, 0xd8, 0xae, 0x62, 0xe3, 0xd7, 0x6f, 0xcc, 0x8c, 0xac, 0x5a, 0x98, 0x8d, 0x1f,
- 0x4a, 0x31, 0x0b, 0x99, 0x56, 0x8a, 0x95, 0xd5, 0x95, 0xb5, 0xfc, 0x62, 0x7a, 0x26, 0x9b, 0xbe,
- 0x7e, 0x63, 0x26, 0x25, 0x82, 0x21, 0xdd, 0xe8, 0x77, 0x35, 0xbb, 0x93, 0x2b, 0x9e, 0x3f, 0x7d,
- 0x18, 0xee, 0xe9, 0x70, 0xc6, 0x24, 0x4e, 0x27, 0x0e, 0x74, 0xca, 0xd4, 0x71, 0x9f, 0x3d, 0xdb,
- 0x63, 0xfb, 0xb9, 0xf7, 0xd2, 0xe9, 0xe0, 0x27, 0x58, 0xd9, 0xae, 0x8b, 0x3b, 0xf9, 0x83, 0x12,
- 0x8c, 0x5e, 0xd4, 0x6c, 0xc7, 0xb0, 0xb4, 0x8a, 0x5a, 0xa7, 0x2f, 0xb7, 0xce, 0xf5, 0x1b, 0x5b,
- 0x43, 0x43, 0xfd, 0x69, 0x18, 0xbc, 0xa2, 0xd6, 0x59, 0x50, 0x8b, 0xd2, 0x0f, 0xcd, 0x74, 0x38,
- 0xf2, 0x71, 0x43, 0x9b, 0x60, 0xc0, 0xc8, 0xe4, 0x5f, 0x8b, 0xc0, 0x18, 0x1d, 0x0c, 0x36, 0xfb,
- 0x04, 0x19, 0x59, 0x63, 0x15, 0x20, 0x66, 0xa9, 0x0e, 0xdf, 0x34, 0x2c, 0xcc, 0xf2, 0xd3, 0xc7,
- 0xfb, 0xfa, 0x38, 0x4b, 0x2b, 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0xdb, 0x21, 0xd1, 0x50, 0x77, 0xcb,
- 0x94, 0x0f, 0x5b, 0xb9, 0xe4, 0xf7, 0xc7, 0xe7, 0xd6, 0xcd, 0xe9, 0xb1, 0x3d, 0xb5, 0x51, 0xcf,
- 0xc9, 0x82, 0x8f, 0xac, 0x0c, 0x35, 0xd4, 0x5d, 0x22, 0x22, 0x32, 0x61, 0x8c, 0x40, 0x2b, 0xdb,
- 0xaa, 0x5e, 0xc3, 0xac, 0x11, 0xba, 0x05, 0x5a, 0xb8, 0xb8, 0xef, 0x46, 0x0e, 0x7b, 0x8d, 0xf8,
- 0xd8, 0xc9, 0xca, 0x48, 0x43, 0xdd, 0x9d, 0xa3, 0x00, 0xd2, 0x62, 0x2e, 0xf1, 0xd1, 0x57, 0xa7,
- 0x07, 0xe8, 0x89, 0xee, 0xb7, 0x24, 0x00, 0xcf, 0x62, 0xe8, 0xed, 0x90, 0xae, 0xb8, 0x25, 0x4a,
- 0x2b, 0xce, 0x26, 0xef, 0xef, 0xd4, 0x17, 0x21, 0x7b, 0xb3, 0xb9, 0xf9, 0x9b, 0x37, 0xa7, 0x25,
- 0x65, 0xac, 0x12, 0xea, 0x8a, 0xb7, 0xc1, 0x70, 0xd3, 0xac, 0xaa, 0x0e, 0x2e, 0xd3, 0x75, 0x5c,
- 0xa4, 0xe7, 0x3c, 0x3f, 0x45, 0x78, 0xdd, 0xba, 0x39, 0x8d, 0x98, 0x5a, 0x3e, 0x62, 0x99, 0xce,
- 0xfe, 0xc0, 0x20, 0x84, 0xc0, 0xa7, 0xd3, 0xd7, 0x25, 0x18, 0x2e, 0xfa, 0xee, 0x54, 0x66, 0x60,
- 0xa8, 0x61, 0xe8, 0xda, 0x0e, 0xf7, 0xc7, 0xa4, 0x22, 0x8a, 0x28, 0x0b, 0x09, 0xf6, 0x98, 0xd5,
- 0xd9, 0x13, 0x5b, 0xa1, 0xa2, 0x4c, 0xa8, 0xae, 0xe2, 0x4d, 0x5b, 0x13, 0xbd, 0xa1, 0x88, 0x22,
- 0xba, 0x00, 0x69, 0x1b, 0x57, 0x9a, 0x96, 0xe6, 0xec, 0x95, 0x2b, 0x86, 0xee, 0xa8, 0x15, 0x87,
- 0x3d, 0x8b, 0x2c, 0x1c, 0xbb, 0x75, 0x73, 0xfa, 0x08, 0x93, 0x35, 0x8c, 0x21, 0x2b, 0x63, 0x02,
- 0x34, 0xc7, 0x20, 0xa4, 0x85, 0x2a, 0x76, 0x54, 0xad, 0x6e, 0x67, 0xd8, 0xe5, 0x04, 0x51, 0xf4,
- 0xe9, 0xf2, 0xb9, 0x21, 0xff, 0xc6, 0xd6, 0x05, 0x48, 0x1b, 0x26, 0xb6, 0x02, 0x89, 0xa8, 0x14,
- 0x6e, 0x39, 0x8c, 0x21, 0x2b, 0x63, 0x02, 0x24, 0x92, 0x54, 0x87, 0x74, 0xb3, 0x58, 0x28, 0x9a,
- 0xcd, 0x4d, 0x6f, 0x3f, 0x6c, 0xb2, 0xa5, 0x37, 0xf2, 0xfa, 0x5e, 0xe1, 0x31, 0x8f, 0x7b, 0x98,
- 0x4e, 0xfe, 0xc6, 0x97, 0x1e, 0x9e, 0xe4, 0xae, 0xe1, 0xed, 0x4f, 0x5d, 0xc2, 0x7b, 0xa4, 0xfb,
- 0x39, 0xea, 0x2a, 0xc5, 0x24, 0x69, 0xe7, 0x8b, 0xaa, 0x56, 0x17, 0xcf, 0xfb, 0x15, 0x5e, 0x42,
- 0x39, 0x18, 0xb4, 0x1d, 0xd5, 0x69, 0xda, 0xfc, 0xa4, 0x57, 0xee, 0xe4, 0x6a, 0x05, 0x43, 0xaf,
- 0xae, 0x51, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, 0xc8, 0x8f, 0xd0, 0xe3, 0xfb, 0x1e, 0xdf, 0xf4,
- 0xae, 0x04, 0xa3, 0x26, 0x16, 0xa9, 0xe2, 0x3a, 0xae, 0xb1, 0xb4, 0x6a, 0x5b, 0x25, 0xab, 0x0f,
- 0xfa, 0xed, 0xbd, 0xc2, 0xc2, 0xbe, 0x07, 0x21, 0xb7, 0x54, 0x98, 0x9f, 0xac, 0x8c, 0xb9, 0xa0,
- 0x35, 0x0a, 0x41, 0x97, 0x02, 0x97, 0x7f, 0xf9, 0x07, 0x2a, 0xef, 0xee, 0xa4, 0xbe, 0xcf, 0xa7,
- 0xc5, 0xfe, 0x84, 0xff, 0xea, 0xf0, 0x05, 0x48, 0x37, 0xf5, 0x4d, 0x43, 0xa7, 0x6f, 0x70, 0x79,
- 0x7e, 0x4f, 0xd6, 0x77, 0x51, 0xbf, 0x73, 0x84, 0x31, 0x64, 0x65, 0xcc, 0x05, 0x5d, 0x64, 0xab,
- 0x80, 0x2a, 0x8c, 0x7a, 0x58, 0x74, 0xa0, 0x26, 0x7b, 0x0e, 0xd4, 0xbb, 0xf8, 0x40, 0x3d, 0x14,
- 0x6e, 0xc5, 0x1b, 0xab, 0x23, 0x2e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x5e, 0x78, 0xa0, 0xfb, 0x14,
- 0xc3, 0x9d, 0x3b, 0xde, 0x8b, 0x31, 0x62, 0xbd, 0xe7, 0xd1, 0xa2, 0x77, 0xc2, 0x44, 0x43, 0xd3,
- 0xcb, 0x36, 0xae, 0x6f, 0x95, 0xb9, 0x81, 0x09, 0x4b, 0xfa, 0x09, 0xa5, 0xc2, 0xe2, 0xfe, 0xfc,
- 0xe1, 0xd6, 0xcd, 0xe9, 0x2c, 0x0f, 0xa1, 0xad, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0xe9, 0x6b, 0xb8,
- 0xbe, 0x55, 0x74, 0x61, 0xb9, 0xd4, 0x07, 0x5e, 0x9d, 0x1e, 0xe0, 0xc3, 0x75, 0x40, 0x3e, 0x47,
- 0xf7, 0xce, 0xf9, 0x30, 0xc3, 0x36, 0x59, 0x93, 0xa8, 0xa2, 0xc0, 0xaf, 0x1a, 0x78, 0x00, 0x36,
- 0xcc, 0x5f, 0xfe, 0x83, 0x19, 0x49, 0xfe, 0x9c, 0x04, 0x83, 0xc5, 0xcb, 0xab, 0xaa, 0x66, 0xa1,
- 0x05, 0x18, 0xf7, 0x3c, 0x27, 0x38, 0xc8, 0x8f, 0xdf, 0xba, 0x39, 0x9d, 0x09, 0x3b, 0x97, 0x3b,
- 0xca, 0x3d, 0x07, 0x16, 0xc3, 0x7c, 0xa1, 0xd3, 0xc2, 0x35, 0xc0, 0xaa, 0x05, 0x45, 0x6e, 0x5d,
- 0xd6, 0x86, 0xd4, 0x2c, 0xc1, 0x10, 0x93, 0xd6, 0x46, 0x39, 0x88, 0x9b, 0xe4, 0x07, 0x3f, 0x18,
- 0x98, 0xea, 0xe8, 0xbc, 0x14, 0xdf, 0xdd, 0xc8, 0x24, 0x24, 0xf2, 0x87, 0x23, 0x00, 0xc5, 0xcb,
- 0x97, 0xd7, 0x2d, 0xcd, 0xac, 0x63, 0xe7, 0x76, 0x6a, 0xbe, 0x0e, 0x87, 0x7c, 0xab, 0x24, 0xab,
- 0x12, 0xd2, 0x7e, 0xe6, 0xd6, 0xcd, 0xe9, 0xe3, 0x61, 0xed, 0x7d, 0x68, 0xb2, 0x32, 0xe1, 0xad,
- 0x97, 0xac, 0x4a, 0x5b, 0xae, 0x55, 0xdb, 0x71, 0xb9, 0x46, 0x3b, 0x73, 0xf5, 0xa1, 0xf9, 0xb9,
- 0x16, 0x6d, 0xa7, 0xbd, 0x69, 0xd7, 0x60, 0xd8, 0x33, 0x89, 0x8d, 0x8a, 0x90, 0x70, 0xf8, 0x6f,
- 0x6e, 0x61, 0xb9, 0xb3, 0x85, 0x05, 0x19, 0xb7, 0xb2, 0x4b, 0x29, 0xff, 0x99, 0x04, 0xe0, 0xf9,
- 0xec, 0x4f, 0xa7, 0x8b, 0x91, 0x50, 0xce, 0x03, 0x6f, 0xf4, 0x40, 0xa9, 0x1a, 0xa7, 0x0e, 0xd9,
- 0xf3, 0xe7, 0x22, 0x30, 0xb1, 0x21, 0x22, 0xcf, 0x4f, 0xbd, 0x0d, 0x56, 0x61, 0x08, 0xeb, 0x8e,
- 0xa5, 0x51, 0x23, 0x90, 0xde, 0x7e, 0xa4, 0x53, 0x6f, 0xb7, 0xd1, 0x89, 0x7e, 0x44, 0x4a, 0x6c,
- 0xba, 0x73, 0x36, 0x21, 0x6b, 0xfc, 0x42, 0x14, 0x32, 0x9d, 0x28, 0xd1, 0x1c, 0x8c, 0x55, 0x2c,
- 0xcc, 0x2e, 0x5e, 0xf9, 0x77, 0xfe, 0x0a, 0x59, 0x2f, 0xb3, 0x0c, 0x21, 0xc8, 0xca, 0xa8, 0x80,
- 0xf0, 0xd9, 0xa3, 0x06, 0x24, 0xed, 0x23, 0x6e, 0x47, 0xef, 0x6f, 0xf5, 0x97, 0xe7, 0xc9, 0x7c,
- 0xfa, 0x10, 0x8d, 0x04, 0x19, 0xb0, 0xf9, 0x63, 0xd4, 0x83, 0xd2, 0x09, 0xe4, 0x25, 0x18, 0xd3,
- 0x74, 0xcd, 0xd1, 0xd4, 0x7a, 0x79, 0x53, 0xad, 0xab, 0x7a, 0xe5, 0x20, 0x59, 0x33, 0x0b, 0xf9,
- 0xbc, 0xd9, 0x10, 0x3b, 0x59, 0x19, 0xe5, 0x90, 0x02, 0x03, 0xa0, 0x8b, 0x30, 0x24, 0x9a, 0x8a,
- 0x1d, 0x28, 0xdb, 0x10, 0xe4, 0xbe, 0x04, 0xef, 0xe7, 0xa3, 0x30, 0xae, 0xe0, 0xea, 0xff, 0xef,
- 0x8a, 0xfd, 0x75, 0xc5, 0x12, 0x00, 0x1b, 0xee, 0x24, 0xc0, 0x1e, 0xa0, 0x37, 0x48, 0xc0, 0x48,
- 0x32, 0x0e, 0x45, 0xdb, 0xf1, 0xf5, 0xc7, 0xcd, 0x08, 0xa4, 0xfc, 0xfd, 0xf1, 0x17, 0x74, 0x56,
- 0x42, 0x0b, 0x5e, 0x24, 0x8a, 0xf1, 0x4f, 0xef, 0x76, 0x88, 0x44, 0x2d, 0xde, 0xdb, 0x3d, 0x04,
- 0xfd, 0x8f, 0x08, 0x0c, 0xae, 0xaa, 0x96, 0xda, 0xb0, 0x51, 0xa5, 0x25, 0xd3, 0x14, 0xdb, 0x8f,
- 0x2d, 0x1f, 0x58, 0xe7, 0xbb, 0x1d, 0x3d, 0x12, 0xcd, 0x8f, 0xb6, 0x49, 0x34, 0xdf, 0x02, 0xa3,
- 0x64, 0x39, 0xec, 0xbb, 0xc2, 0x40, 0xac, 0x3d, 0x52, 0x38, 0xea, 0x71, 0x09, 0xd6, 0xb3, 0xd5,
- 0xf2, 0x65, 0xff, 0x1d, 0x86, 0x61, 0x82, 0xe1, 0x05, 0x66, 0x42, 0x7e, 0xd8, 0x5b, 0x96, 0xfa,
- 0x2a, 0x65, 0x05, 0x1a, 0xea, 0x6e, 0x89, 0x15, 0xd0, 0x22, 0xa0, 0x6d, 0x77, 0x67, 0xa4, 0xec,
- 0x99, 0x93, 0xd0, 0x9f, 0xb8, 0x75, 0x73, 0xfa, 0x28, 0xa3, 0x6f, 0xc5, 0x91, 0x95, 0x71, 0x0f,
- 0x28, 0xb8, 0x3d, 0x0e, 0x40, 0xf4, 0x2a, 0xb3, 0x2b, 0xdc, 0x6c, 0xb9, 0x73, 0xe8, 0xd6, 0xcd,
- 0xe9, 0x71, 0xc6, 0xc5, 0xab, 0x93, 0x95, 0x24, 0x29, 0x14, 0xc9, 0x6f, 0x9f, 0x67, 0x7f, 0x5a,
- 0x02, 0xe4, 0x85, 0x7c, 0x05, 0xdb, 0x26, 0x59, 0x9f, 0x91, 0x44, 0xdc, 0x97, 0x35, 0x4b, 0xdd,
- 0x13, 0x71, 0x8f, 0x5e, 0x24, 0xe2, 0xbe, 0x91, 0xf2, 0x94, 0x17, 0x1e, 0x23, 0xbd, 0xee, 0x33,
- 0x73, 0x17, 0x09, 0xc7, 0xc3, 0x01, 0xf9, 0x5f, 0x4a, 0x70, 0xb4, 0xc5, 0xa3, 0x5c, 0x61, 0xff,
- 0x12, 0x20, 0xcb, 0x57, 0xc9, 0xbf, 0xa3, 0xc8, 0x84, 0xde, 0xb7, 0x83, 0x8e, 0x5b, 0x2d, 0x71,
- 0xf7, 0xf6, 0x45, 0x78, 0x76, 0x61, 0xfe, 0x9f, 0x49, 0x30, 0xe9, 0x6f, 0xde, 0x55, 0x64, 0x19,
- 0x52, 0xfe, 0xd6, 0xb9, 0x0a, 0xf7, 0xf4, 0xa3, 0x02, 0x97, 0x3e, 0x40, 0x8f, 0x9e, 0xf5, 0x86,
- 0x2b, 0xdb, 0x3b, 0x7b, 0xb4, 0x6f, 0x6b, 0x08, 0x99, 0xc2, 0xc3, 0x36, 0x46, 0xfb, 0xe3, 0xff,
- 0x48, 0x10, 0x5b, 0x35, 0x8c, 0x3a, 0x32, 0x60, 0x5c, 0x37, 0x9c, 0x32, 0xf1, 0x2c, 0x5c, 0xf5,
- 0xdf, 0x5b, 0x4f, 0x16, 0xe6, 0xf6, 0x67, 0xa4, 0xef, 0xdd, 0x9c, 0x6e, 0x65, 0xa5, 0x8c, 0xe9,
- 0x86, 0x53, 0xa0, 0x10, 0x7e, 0x75, 0xfd, 0x9d, 0x30, 0x12, 0x6c, 0x8c, 0x45, 0xc9, 0xe7, 0xf6,
- 0xdd, 0x58, 0x90, 0xcd, 0xad, 0x9b, 0xd3, 0x93, 0xde, 0x88, 0x71, 0xc1, 0xb2, 0x92, 0xda, 0xf4,
- 0xb5, 0xce, 0xae, 0x77, 0xfd, 0xe0, 0xd5, 0x69, 0xe9, 0xd4, 0x97, 0x25, 0x00, 0x6f, 0xe7, 0x01,
- 0x3d, 0x04, 0x47, 0x0a, 0x2b, 0xcb, 0xc5, 0xf2, 0xda, 0x7a, 0x7e, 0x7d, 0x63, 0x2d, 0x78, 0xc7,
- 0x5b, 0x6c, 0x8f, 0xdb, 0x26, 0xae, 0x68, 0x5b, 0x1a, 0xae, 0xa2, 0xfb, 0x60, 0x32, 0x88, 0x4d,
- 0x4a, 0xa5, 0x62, 0x5a, 0xca, 0xa6, 0xae, 0xdf, 0x98, 0x49, 0xb0, 0x5c, 0x0c, 0x57, 0xd1, 0x49,
- 0x38, 0xd4, 0x8a, 0xb7, 0xb0, 0x3c, 0x9f, 0x8e, 0x64, 0x47, 0xae, 0xdf, 0x98, 0x49, 0xba, 0x49,
- 0x1b, 0x92, 0x01, 0xf9, 0x31, 0x39, 0xbf, 0x68, 0x16, 0xae, 0xdf, 0x98, 0x19, 0x64, 0x06, 0xcc,
- 0xc6, 0x3e, 0xf0, 0xe9, 0xa9, 0x81, 0xdb, 0x7e, 0x13, 0xfc, 0x4f, 0x86, 0x3a, 0xee, 0x7a, 0xd7,
- 0xb0, 0x8e, 0x6d, 0xcd, 0x3e, 0xd0, 0xae, 0x77, 0x5f, 0x3b, 0xe9, 0xf2, 0xef, 0xc6, 0x21, 0x35,
- 0xcf, 0x5a, 0x21, 0x1d, 0x81, 0xd1, 0xcf, 0xc0, 0xa0, 0x49, 0xa7, 0x11, 0xf7, 0x18, 0xad, 0x83,
- 0xc3, 0xb3, 0xc9, 0xc6, 0xbd, 0xcb, 0xc5, 0xa6, 0x1e, 0x9b, 0x5f, 0xe6, 0x60, 0x77, 0xcc, 0xbc,
- 0x5b, 0x53, 0xa9, 0x7d, 0xed, 0xf7, 0xb0, 0x9c, 0x85, 0x6f, 0xad, 0x84, 0xf9, 0xc9, 0xec, 0x5e,
- 0xc8, 0x3a, 0x81, 0xb0, 0xdb, 0x61, 0xef, 0x93, 0xe0, 0x10, 0xc5, 0xf2, 0x26, 0x62, 0x8a, 0x29,
- 0x92, 0xfd, 0x53, 0x9d, 0x54, 0x58, 0x54, 0x6d, 0xef, 0xae, 0x07, 0xbb, 0xcf, 0x75, 0x0f, 0x9f,
- 0x08, 0x8f, 0xfb, 0x1a, 0x0f, 0xb3, 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa5, 0x8d, 0xe6, 0x03, 0x17,
- 0xfa, 0x62, 0xfb, 0xdb, 0x6a, 0xf7, 0x5f, 0xee, 0x7b, 0x06, 0x86, 0xbd, 0x58, 0x62, 0xf3, 0xff,
- 0xfb, 0xd2, 0xff, 0xdc, 0xe1, 0x27, 0x46, 0xef, 0x97, 0xe0, 0x90, 0x37, 0x9b, 0xfb, 0xd9, 0xb2,
- 0xff, 0x8f, 0xf3, 0xe0, 0x3e, 0x16, 0x42, 0x61, 0xe3, 0xb4, 0xe5, 0x2b, 0x2b, 0x93, 0xcd, 0x56,
- 0x52, 0xb2, 0x04, 0x1b, 0xf1, 0x47, 0x56, 0x3b, 0x23, 0x3e, 0x01, 0xd9, 0x7f, 0x68, 0x0e, 0x32,
- 0x60, 0xff, 0xb3, 0xc3, 0x34, 0x2c, 0x07, 0x57, 0xe9, 0x86, 0x5c, 0x42, 0x71, 0xcb, 0xf2, 0x32,
- 0xa0, 0xd6, 0xce, 0x0d, 0x5f, 0x60, 0xf4, 0xde, 0xa7, 0xa0, 0x49, 0x88, 0xfb, 0xaf, 0xf8, 0xb1,
- 0x42, 0x2e, 0xf1, 0x01, 0x3e, 0x7d, 0xde, 0xf6, 0x31, 0xff, 0xed, 0x08, 0x9c, 0xf2, 0x1f, 0x0f,
- 0xbd, 0xd4, 0xc4, 0xd6, 0x9e, 0x3b, 0x44, 0x4d, 0xb5, 0xa6, 0xe9, 0xfe, 0x57, 0x10, 0x47, 0xfd,
- 0x13, 0x3e, 0xc5, 0x15, 0x76, 0x92, 0x3f, 0x20, 0xc1, 0xf0, 0xaa, 0x5a, 0xc3, 0x0a, 0x7e, 0xa9,
- 0x89, 0x6d, 0xa7, 0xcd, 0x2d, 0xf3, 0xc3, 0x30, 0x68, 0x6c, 0x6d, 0x89, 0x33, 0xed, 0x98, 0xc2,
- 0x4b, 0x44, 0xe7, 0xba, 0xd6, 0xd0, 0xd8, 0x75, 0xb0, 0x98, 0xc2, 0x0a, 0x68, 0x1a, 0x86, 0x2b,
- 0x46, 0x53, 0xe7, 0x43, 0x2e, 0x13, 0x13, 0xdf, 0x5a, 0x69, 0xea, 0x6c, 0xc8, 0x11, 0x23, 0x5a,
- 0xf8, 0x0a, 0xb6, 0x6c, 0xf6, 0x75, 0xc9, 0x84, 0x22, 0x8a, 0xf2, 0xd3, 0x90, 0x62, 0x92, 0xf0,
- 0xc9, 0xf8, 0x28, 0x24, 0xe8, 0x4d, 0x2b, 0x4f, 0x9e, 0x21, 0x52, 0xbe, 0xc4, 0xee, 0xaa, 0x33,
- 0xfe, 0x4c, 0x24, 0x56, 0x28, 0x14, 0x3a, 0x5a, 0xf9, 0x64, 0xef, 0xa8, 0xc1, 0x6c, 0xe8, 0x5a,
- 0xf8, 0x37, 0xe3, 0x70, 0x88, 0x1f, 0xde, 0xa9, 0xa6, 0x76, 0x7a, 0xdb, 0x71, 0xc4, 0xdb, 0x09,
- 0xe0, 0x59, 0xb0, 0x6a, 0x6a, 0xf2, 0x1e, 0xc4, 0x2e, 0x3a, 0x8e, 0x89, 0x4e, 0x41, 0xdc, 0x6a,
- 0xd6, 0xb1, 0xd8, 0x0c, 0x72, 0xb7, 0xeb, 0x55, 0x53, 0x9b, 0x25, 0x08, 0x4a, 0xb3, 0x8e, 0x15,
- 0x86, 0x82, 0x4a, 0x30, 0xbd, 0xd5, 0xac, 0xd7, 0xf7, 0xca, 0x55, 0x4c, 0xff, 0x5d, 0x96, 0xfb,
- 0x0f, 0x27, 0xf0, 0xae, 0xa9, 0x8a, 0xcf, 0x56, 0x12, 0xc3, 0x1c, 0xa7, 0x68, 0x45, 0x8a, 0x25,
- 0xfe, 0xd9, 0x44, 0x49, 0xe0, 0xc8, 0xbf, 0x1f, 0x81, 0x84, 0x60, 0x4d, 0x2f, 0x8f, 0xe3, 0x3a,
- 0xae, 0x38, 0x86, 0x38, 0x4c, 0x71, 0xcb, 0x08, 0x41, 0xb4, 0xc6, 0x3b, 0x2f, 0x79, 0x71, 0x40,
- 0x21, 0x05, 0x02, 0x73, 0xaf, 0xf4, 0x13, 0x98, 0xd9, 0x24, 0xfd, 0x19, 0x33, 0x0d, 0xb1, 0x6a,
- 0xbb, 0x38, 0xa0, 0xd0, 0x12, 0xca, 0xc0, 0x20, 0x19, 0x34, 0x0e, 0xeb, 0x2d, 0x02, 0xe7, 0x65,
- 0x74, 0x18, 0xe2, 0xa6, 0xea, 0x54, 0xd8, 0x6d, 0x3b, 0x52, 0xc1, 0x8a, 0xe8, 0x09, 0x18, 0x64,
- 0xaf, 0xb2, 0xc3, 0xff, 0x8b, 0x86, 0x18, 0x83, 0x7d, 0xfe, 0x8e, 0xc8, 0xbd, 0xaa, 0x3a, 0x0e,
- 0xb6, 0x74, 0xc2, 0x90, 0xa1, 0x23, 0x04, 0xb1, 0x4d, 0xa3, 0xba, 0xc7, 0xff, 0x3f, 0x0e, 0xfd,
- 0xcd, 0xff, 0x21, 0x07, 0xf5, 0x87, 0x32, 0xad, 0x64, 0xff, 0x16, 0x2c, 0x25, 0x80, 0x05, 0x82,
- 0x54, 0x82, 0x09, 0xb5, 0x5a, 0xd5, 0xd8, 0xbf, 0xaa, 0x29, 0x6f, 0x6a, 0x34, 0x78, 0xd8, 0xf4,
- 0x9f, 0xbe, 0x75, 0xea, 0x0b, 0xe4, 0x11, 0x14, 0x38, 0x7e, 0x21, 0x09, 0x43, 0x26, 0x13, 0x4a,
- 0x3e, 0x0f, 0xe3, 0x2d, 0x92, 0x12, 0xf9, 0x76, 0x34, 0xbd, 0x2a, 0xde, 0x39, 0x90, 0xdf, 0x04,
- 0x46, 0x3f, 0x58, 0xc9, 0x8e, 0xa9, 0xe8, 0xef, 0xc2, 0x7b, 0x3a, 0x3f, 0x87, 0x19, 0xf5, 0x3d,
- 0x87, 0x51, 0x4d, 0xad, 0x90, 0xa4, 0xfc, 0xf9, 0x23, 0x98, 0x7c, 0xeb, 0x23, 0x98, 0x1a, 0xd6,
- 0xc5, 0xc4, 0x4c, 0xaa, 0x54, 0x53, 0xb3, 0xa9, 0x3b, 0x7a, 0x1f, 0xd0, 0xb4, 0xcf, 0xfb, 0x7e,
- 0xd3, 0x37, 0x31, 0xb1, 0xf9, 0xfc, 0xea, 0x82, 0xeb, 0xc7, 0x5f, 0x8d, 0xc0, 0x71, 0x9f, 0x1f,
- 0xfb, 0x90, 0x5b, 0xdd, 0x39, 0xdb, 0xde, 0xe3, 0xfb, 0x78, 0x9b, 0x7c, 0x09, 0x62, 0x04, 0x1f,
- 0xf5, 0xf8, 0x77, 0x19, 0x99, 0xcf, 0x7f, 0xe3, 0x9f, 0xca, 0xc1, 0x03, 0xad, 0x40, 0xaf, 0x50,
- 0x26, 0x85, 0xf7, 0xf7, 0x6f, 0xbf, 0xb4, 0xf7, 0xed, 0x50, 0xfb, 0xf6, 0x99, 0x31, 0x6c, 0xc3,
- 0xef, 0x9e, 0xed, 0xf8, 0x76, 0x95, 0x05, 0xd3, 0xee, 0xf9, 0xd5, 0x3e, 0x22, 0x75, 0xa7, 0xa7,
- 0x01, 0xdd, 0x7a, 0xb0, 0xcf, 0x4c, 0x6d, 0x17, 0x0e, 0x3f, 0x4b, 0xda, 0xf6, 0x56, 0xd0, 0x22,
- 0xe4, 0x1f, 0x76, 0x0f, 0xfa, 0x24, 0xfe, 0x3f, 0xf7, 0xc4, 0x21, 0x1e, 0x78, 0xf2, 0xf1, 0xb5,
- 0xe3, 0x7d, 0xb3, 0x1d, 0xa7, 0x92, 0x59, 0xdf, 0x34, 0xa2, 0xf8, 0x28, 0xe5, 0x5f, 0x95, 0xe0,
- 0x48, 0x4b, 0xd3, 0x3c, 0xc6, 0xcf, 0xb7, 0x79, 0xc5, 0x70, 0xa0, 0xa4, 0x67, 0xbe, 0x8d, 0xb0,
- 0xf7, 0xf7, 0x14, 0x96, 0x49, 0x11, 0x90, 0xf6, 0xcd, 0x70, 0x28, 0x28, 0xac, 0x30, 0xd3, 0xbd,
- 0x30, 0x1a, 0xdc, 0x2c, 0xe6, 0xe6, 0x1a, 0x09, 0x6c, 0x17, 0xcb, 0xe5, 0xb0, 0x9d, 0x5d, 0x5d,
- 0x4b, 0x90, 0x74, 0x51, 0x79, 0x76, 0xdc, 0xb7, 0xaa, 0x1e, 0xa5, 0xfc, 0x61, 0x09, 0x66, 0x82,
- 0x2d, 0xf8, 0xf2, 0xa4, 0xfd, 0x09, 0x7b, 0xdb, 0xba, 0xf8, 0x75, 0x09, 0xee, 0xea, 0x22, 0x13,
- 0x37, 0xc0, 0x35, 0x98, 0xf4, 0x6d, 0x12, 0x88, 0x10, 0x2e, 0xba, 0xfd, 0x54, 0xef, 0x0c, 0xd5,
- 0x5d, 0x13, 0x1f, 0x23, 0x46, 0xf9, 0xec, 0xb7, 0xa7, 0x27, 0x5a, 0xeb, 0x6c, 0x65, 0xa2, 0x75,
- 0x61, 0x7f, 0x1b, 0xfd, 0xe3, 0x15, 0x09, 0x1e, 0x08, 0xaa, 0xda, 0x26, 0xd5, 0xfd, 0x49, 0xf5,
- 0xc3, 0xbf, 0x97, 0xe0, 0x54, 0x3f, 0xc2, 0xf1, 0x0e, 0xd9, 0x84, 0x09, 0x2f, 0x09, 0x0f, 0xf7,
- 0xc7, 0xbe, 0x52, 0x7b, 0xe6, 0xa5, 0xc8, 0xe5, 0x76, 0x07, 0x0c, 0x6f, 0xf2, 0x81, 0xe5, 0xef,
- 0x72, 0xd7, 0xc8, 0xc1, 0x8d, 0x5e, 0x61, 0xe4, 0xc0, 0x56, 0x6f, 0x9b, 0xbe, 0x88, 0xb4, 0xe9,
- 0x0b, 0x2f, 0x6b, 0x97, 0xaf, 0xf0, 0xb8, 0xd5, 0x66, 0x7b, 0xee, 0x6d, 0x30, 0xd1, 0xc6, 0x95,
- 0xf9, 0xa8, 0xde, 0x87, 0x27, 0x2b, 0xa8, 0xd5, 0x59, 0xe5, 0x3d, 0x98, 0xa6, 0xed, 0xb6, 0x31,
- 0xf4, 0x9d, 0x56, 0xb9, 0xc1, 0x63, 0x4b, 0xdb, 0xa6, 0xb9, 0xee, 0x0b, 0x30, 0xc8, 0xfa, 0x99,
- 0xab, 0x7b, 0x00, 0x47, 0xe1, 0x0c, 0xe4, 0x8f, 0x8b, 0x58, 0x56, 0x14, 0x62, 0xb7, 0x1f, 0x43,
- 0xfd, 0xe8, 0x7a, 0x9b, 0xc6, 0x90, 0xcf, 0x18, 0xdf, 0x12, 0x51, 0xad, 0xbd, 0x74, 0xdc, 0x1c,
- 0x95, 0xdb, 0x16, 0xd5, 0x98, 0x6d, 0xee, 0x6c, 0xf8, 0xfa, 0x65, 0x11, 0xbe, 0x5c, 0x9d, 0x7a,
- 0x84, 0xaf, 0x9f, 0x8c, 0xe9, 0xdd, 0x40, 0xd6, 0x43, 0xcc, 0x3f, 0x8f, 0x81, 0xec, 0x07, 0x12,
- 0x1c, 0xa5, 0xba, 0xf9, 0xf7, 0x28, 0xf6, 0x6b, 0xf2, 0x87, 0x00, 0xd9, 0x56, 0xa5, 0xdc, 0x76,
- 0x74, 0xa7, 0x6d, 0xab, 0x72, 0x39, 0x30, 0xbf, 0x3c, 0x04, 0xa8, 0x1a, 0xd8, 0x89, 0xa2, 0xd8,
- 0xec, 0x02, 0x5d, 0xba, 0xea, 0xdb, 0xe8, 0x68, 0xd3, 0x9d, 0xb1, 0xdb, 0xd0, 0x9d, 0xdf, 0x94,
- 0x20, 0xdb, 0x4e, 0x65, 0xde, 0x7d, 0x1a, 0x1c, 0x0e, 0x9c, 0x1f, 0x84, 0x7b, 0xf0, 0xa1, 0x7e,
- 0x76, 0x79, 0x42, 0xc3, 0xe8, 0x90, 0x85, 0xef, 0x74, 0x1e, 0x30, 0x1d, 0xf4, 0xd0, 0xd6, 0xcc,
- 0xfa, 0x27, 0x36, 0x7c, 0xbe, 0xd4, 0x12, 0x57, 0xff, 0x5c, 0xe4, 0xde, 0xbb, 0x30, 0xd5, 0x41,
- 0xea, 0x3b, 0x3d, 0xef, 0x6d, 0x77, 0xec, 0xcc, 0xdb, 0x9d, 0xbe, 0x3f, 0xce, 0x47, 0x42, 0xf0,
- 0x72, 0xb6, 0x6f, 0x2d, 0xd6, 0xee, 0x75, 0x97, 0xfc, 0x56, 0x38, 0xd6, 0x96, 0x8a, 0xcb, 0x96,
- 0x83, 0xd8, 0xb6, 0x66, 0x3b, 0x5c, 0xac, 0xfb, 0x3a, 0x89, 0x15, 0xa2, 0xa6, 0x34, 0x32, 0x82,
- 0x34, 0x65, 0xbd, 0x6a, 0x18, 0x75, 0x2e, 0x86, 0x7c, 0x09, 0xc6, 0x7d, 0x30, 0xde, 0xc8, 0x39,
- 0x88, 0x99, 0x06, 0xff, 0x72, 0xc1, 0xf0, 0x99, 0xe3, 0x1d, 0x37, 0xf6, 0x0d, 0xa3, 0xce, 0xd5,
- 0xa6, 0xf8, 0xf2, 0x24, 0x20, 0xc6, 0x8c, 0xee, 0xf1, 0x8b, 0x26, 0xd6, 0x60, 0x22, 0x00, 0xe5,
- 0x8d, 0xbc, 0xa1, 0xf3, 0x83, 0x33, 0xdf, 0x3b, 0x04, 0x71, 0xca, 0x15, 0x7d, 0x4c, 0x0a, 0x7c,
- 0x5a, 0x68, 0xb6, 0x13, 0x9b, 0xf6, 0x6b, 0xe2, 0xec, 0xe9, 0xbe, 0xf1, 0x79, 0xce, 0x76, 0xea,
- 0x3d, 0xff, 0xe6, 0xbb, 0x1f, 0x89, 0xdc, 0x83, 0xe4, 0xd3, 0x1d, 0x56, 0xe3, 0xbe, 0xf1, 0xf2,
- 0x99, 0xc0, 0xb3, 0xf8, 0x87, 0xfb, 0x6b, 0x4a, 0x48, 0x36, 0xdb, 0x2f, 0x3a, 0x17, 0xec, 0x3c,
- 0x15, 0xec, 0x2c, 0x7a, 0xac, 0xb7, 0x60, 0xa7, 0xdf, 0x11, 0x1c, 0x34, 0xef, 0x42, 0xbf, 0x2b,
- 0xc1, 0x64, 0xbb, 0x25, 0x1d, 0x7a, 0xb2, 0x3f, 0x29, 0x5a, 0x53, 0x8a, 0xec, 0x53, 0x07, 0xa0,
- 0xe4, 0xaa, 0xcc, 0x53, 0x55, 0xf2, 0xe8, 0xe9, 0x03, 0xa8, 0x72, 0xda, 0xbf, 0xf5, 0xff, 0xbf,
- 0x24, 0x38, 0xd1, 0x75, 0x85, 0x84, 0xf2, 0xfd, 0x49, 0xd9, 0x25, 0x77, 0xca, 0x16, 0xde, 0x08,
- 0x0b, 0xae, 0xf1, 0xb3, 0x54, 0xe3, 0x4b, 0x68, 0xe1, 0x20, 0x1a, 0xb7, 0x3d, 0x5f, 0x41, 0xbf,
- 0x15, 0xbc, 0x74, 0xd8, 0xdd, 0x9d, 0x5a, 0x16, 0x1e, 0x3d, 0x06, 0x46, 0x6b, 0x52, 0x2b, 0x3f,
- 0x4f, 0x55, 0x50, 0xd0, 0xea, 0x1b, 0xec, 0xb4, 0xd3, 0xef, 0x08, 0x06, 0xfe, 0x77, 0xa1, 0xff,
- 0x29, 0xb5, 0xbf, 0x43, 0xf8, 0x44, 0x57, 0x11, 0x3b, 0x2f, 0xaa, 0xb2, 0x4f, 0xee, 0x9f, 0x90,
- 0x2b, 0xd9, 0xa0, 0x4a, 0xd6, 0x10, 0xbe, 0xdd, 0x4a, 0xb6, 0xed, 0x44, 0xf4, 0x75, 0x09, 0x26,
- 0xdb, 0xad, 0x49, 0x7a, 0x0c, 0xcb, 0x2e, 0x8b, 0xac, 0x1e, 0xc3, 0xb2, 0xdb, 0x02, 0x48, 0xfe,
- 0x19, 0xaa, 0xfc, 0x39, 0xf4, 0x78, 0x27, 0xe5, 0xbb, 0xf6, 0x22, 0x19, 0x8b, 0x5d, 0x93, 0xfc,
- 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, 0xa3, 0xf7, 0x58, 0x74, 0x35,
- 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x55, 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb4, 0xab, 0xa0, 0xed,
- 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, 0xe6, 0x50, 0xfe, 0x20, 0xba,
- 0x04, 0x8f, 0x51, 0xbf, 0x29, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, 0x28, 0xec, 0x9c, 0x34, 0x67,
- 0x9f, 0xdc, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0x2d, 0xe8, 0xcd, 0x07, 0xd1, 0xca, 0x37,
- 0x3f, 0xdf, 0xf4, 0xae, 0x64, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, 0x98, 0x50, 0xe8, 0x89, 0x7d,
- 0xd3, 0x71, 0x7d, 0x9e, 0xa3, 0xfa, 0x3c, 0x8b, 0x56, 0xde, 0x98, 0x3e, 0xad, 0xd3, 0xfa, 0x17,
- 0x5b, 0x1f, 0x07, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0xb1, 0x7d, 0xd1, 0x70, 0xa5, 0x9e,
- 0xa4, 0x4a, 0x9d, 0x41, 0x8f, 0x74, 0x52, 0xca, 0x77, 0xef, 0x4e, 0xd3, 0xb7, 0x8c, 0xd3, 0xef,
- 0x60, 0x29, 0xf0, 0xbb, 0xd0, 0xbb, 0xc5, 0x9d, 0xa7, 0x93, 0x5d, 0xdb, 0xf5, 0xe5, 0xb1, 0xd9,
- 0x07, 0xfa, 0xc0, 0xe4, 0x72, 0xdd, 0x43, 0xe5, 0x9a, 0x42, 0xc7, 0x3b, 0xc9, 0x45, 0x72, 0x59,
- 0xf4, 0x41, 0xc9, 0xbd, 0x26, 0x79, 0xaa, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0x7d, 0xb0, 0x2f, 0x5c,
- 0x2e, 0xc9, 0x7d, 0x54, 0x92, 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, 0xee, 0x4b, 0x05,
- 0xd7, 0x8f, 0xc0, 0x74, 0x87, 0x16, 0x9d, 0xdd, 0x1e, 0x67, 0x5c, 0x5d, 0xde, 0xc8, 0xf6, 0x7c,
- 0x03, 0x7b, 0xbb, 0xbf, 0xed, 0xda, 0xe7, 0x81, 0xd8, 0x6f, 0xc7, 0x00, 0x2d, 0xd9, 0xb5, 0x39,
- 0x0b, 0xb3, 0xff, 0x33, 0xc9, 0x47, 0x79, 0xe8, 0xf1, 0x97, 0xf4, 0x86, 0x1e, 0x7f, 0x2d, 0x05,
- 0x9e, 0x53, 0x45, 0xf6, 0xf7, 0x64, 0xb3, 0xef, 0x37, 0x55, 0xd1, 0x1f, 0xcb, 0x9b, 0xaa, 0xf6,
- 0x57, 0xae, 0x63, 0xb7, 0xef, 0x6d, 0x46, 0xfc, 0xa0, 0xef, 0x53, 0xf8, 0x53, 0xc9, 0xc1, 0x2e,
- 0x4f, 0x25, 0x33, 0x1d, 0xdf, 0x43, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xe9, 0x74, 0xa8, 0xbf, 0x4b,
- 0xb2, 0xfc, 0x53, 0xa8, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, 0xa8, 0x3f, 0x12,
- 0x85, 0xf4, 0x92, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x0e, 0xf9, 0xda, 0xd3, 0x9d, 0xdf, 0xbb, 0xa0,
- 0x5b, 0x37, 0xa7, 0x47, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0x57, 0xc6, 0xdc, 0xb3,
- 0x8a, 0x07, 0x79, 0xec, 0x1c, 0x62, 0x25, 0xd3, 0xe7, 0x09, 0x3e, 0xff, 0x46, 0xbb, 0xed, 0x9d,
- 0x99, 0x39, 0xd4, 0xc5, 0x3b, 0xf9, 0x38, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, 0x9d, 0xe2, 0xf6,
- 0xd8, 0x1f, 0x49, 0x30, 0xbc, 0x64, 0x8b, 0x54, 0x10, 0xff, 0x94, 0x3e, 0x4d, 0x7a, 0xc2, 0xfd,
- 0x4c, 0x78, 0xb4, 0x3f, 0xbf, 0x15, 0x9f, 0x0e, 0xf7, 0x8c, 0x70, 0x08, 0x26, 0x7c, 0x7a, 0xba,
- 0xfa, 0xff, 0x4e, 0x84, 0xc6, 0xc7, 0x02, 0xae, 0x69, 0xba, 0x9b, 0x45, 0xe2, 0xbf, 0xa8, 0x0f,
- 0x2f, 0x3c, 0x3b, 0xc7, 0x0e, 0x6a, 0xe7, 0x1d, 0x1a, 0x20, 0x42, 0xf6, 0x74, 0x37, 0xbe, 0x96,
- 0x5a, 0x9f, 0x05, 0x49, 0xfb, 0xf8, 0xe2, 0x4e, 0xe8, 0xf1, 0x8f, 0xfc, 0xba, 0x04, 0x23, 0x4b,
- 0x76, 0x6d, 0x43, 0xaf, 0xfe, 0x3f, 0xef, 0xbf, 0x5b, 0x70, 0x28, 0xa0, 0xe9, 0x1d, 0x32, 0xe9,
- 0x99, 0x57, 0x62, 0x10, 0x5d, 0xb2, 0x6b, 0xe8, 0x25, 0x18, 0x0b, 0x27, 0x0d, 0x1d, 0x73, 0xc1,
- 0xd6, 0x19, 0xa1, 0xf3, 0x7a, 0xad, 0xf3, 0xec, 0x81, 0x76, 0x60, 0x24, 0x38, 0x73, 0x9c, 0xec,
- 0xc2, 0x24, 0x80, 0x99, 0x7d, 0xa4, 0x5f, 0x4c, 0xb7, 0xb1, 0xb7, 0x43, 0xc2, 0x0d, 0x7a, 0x77,
- 0x77, 0xa1, 0x16, 0x48, 0x9d, 0xb3, 0xdb, 0x36, 0x61, 0x85, 0x58, 0x2f, 0x1c, 0x52, 0xba, 0x59,
- 0x2f, 0x84, 0xdb, 0xd5, 0x7a, 0x9d, 0x86, 0xd6, 0x26, 0x80, 0x6f, 0x1c, 0xdc, 0xdb, 0x85, 0x83,
- 0x87, 0x96, 0x7d, 0xb8, 0x2f, 0x34, 0xf7, 0xd0, 0xe9, 0x36, 0x27, 0xe3, 0xff, 0x37, 0x00, 0x00,
- 0xff, 0xff, 0xb1, 0x48, 0x2a, 0x05, 0xdd, 0x97, 0x00, 0x00,
+ // 9836 bytes of a gzipped FileDescriptorSet
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x70, 0x24, 0xd7,
+ 0x75, 0x18, 0x8c, 0x9e, 0x07, 0x30, 0x73, 0x30, 0x00, 0x06, 0x17, 0x58, 0x70, 0x76, 0x76, 0x17,
+ 0x00, 0x9b, 0xaf, 0xe5, 0x92, 0xc4, 0x92, 0x4b, 0xee, 0x92, 0x9c, 0x95, 0x44, 0xcd, 0x60, 0x66,
+ 0xb1, 0xe0, 0xe2, 0xc5, 0x06, 0xb0, 0xa4, 0x28, 0xf9, 0x9b, 0x6a, 0xcc, 0x5c, 0x0c, 0x9a, 0x98,
+ 0xe9, 0x6e, 0x76, 0xf7, 0xec, 0x02, 0x2b, 0xe9, 0x2b, 0xea, 0x11, 0x45, 0xa2, 0xcb, 0xb1, 0x14,
+ 0xa5, 0x62, 0x89, 0xd2, 0x2a, 0x94, 0xe5, 0x44, 0x8e, 0xac, 0xc4, 0x92, 0xa5, 0x28, 0x71, 0x92,
+ 0xaa, 0x48, 0xa9, 0x72, 0x2c, 0x29, 0x71, 0x4a, 0x4a, 0x5c, 0x89, 0xe3, 0x72, 0x56, 0x0e, 0xc5,
+ 0x4a, 0x14, 0x45, 0x89, 0xe5, 0xb5, 0x92, 0x38, 0xa5, 0xca, 0xa3, 0xee, 0xab, 0x5f, 0xf3, 0x04,
+ 0xb8, 0x2b, 0xc9, 0x71, 0x7e, 0x61, 0xee, 0xb9, 0xe7, 0x9c, 0x7b, 0xce, 0xb9, 0xe7, 0x9e, 0x7b,
+ 0xee, 0xab, 0x01, 0x5f, 0x3c, 0x0f, 0xb3, 0x35, 0xc3, 0xa8, 0xd5, 0xf1, 0x69, 0xd3, 0x32, 0x1c,
+ 0x63, 0xab, 0xb9, 0x7d, 0xba, 0x8a, 0xed, 0x8a, 0xa5, 0x99, 0x8e, 0x61, 0xcd, 0x51, 0x18, 0x1a,
+ 0x63, 0x18, 0x73, 0x02, 0x43, 0x5e, 0x86, 0xf1, 0x0b, 0x5a, 0x1d, 0x17, 0x5d, 0xc4, 0x75, 0xec,
+ 0xa0, 0x27, 0x20, 0xb6, 0xad, 0xd5, 0x71, 0x46, 0x9a, 0x8d, 0x9e, 0x1c, 0x3e, 0x73, 0xf7, 0x5c,
+ 0x88, 0x68, 0x2e, 0x48, 0xb1, 0x46, 0xc0, 0x0a, 0xa5, 0x90, 0x5f, 0x8f, 0xc1, 0x44, 0x9b, 0x5a,
+ 0x84, 0x20, 0xa6, 0xab, 0x0d, 0xc2, 0x51, 0x3a, 0x99, 0x54, 0xe8, 0x6f, 0x94, 0x81, 0x21, 0x53,
+ 0xad, 0xec, 0xaa, 0x35, 0x9c, 0x89, 0x50, 0xb0, 0x28, 0xa2, 0x69, 0x80, 0x2a, 0x36, 0xb1, 0x5e,
+ 0xc5, 0x7a, 0x65, 0x3f, 0x13, 0x9d, 0x8d, 0x9e, 0x4c, 0x2a, 0x3e, 0x08, 0x7a, 0x00, 0xc6, 0xcd,
+ 0xe6, 0x56, 0x5d, 0xab, 0x94, 0x7d, 0x68, 0x30, 0x1b, 0x3d, 0x19, 0x57, 0xd2, 0xac, 0xa2, 0xe8,
+ 0x21, 0xdf, 0x07, 0x63, 0x57, 0xb1, 0xba, 0xeb, 0x47, 0x1d, 0xa6, 0xa8, 0xa3, 0x04, 0xec, 0x43,
+ 0x9c, 0x87, 0x54, 0x03, 0xdb, 0xb6, 0x5a, 0xc3, 0x65, 0x67, 0xdf, 0xc4, 0x99, 0x18, 0xd5, 0x7e,
+ 0xb6, 0x45, 0xfb, 0xb0, 0xe6, 0xc3, 0x9c, 0x6a, 0x63, 0xdf, 0xc4, 0x28, 0x0f, 0x49, 0xac, 0x37,
+ 0x1b, 0x8c, 0x43, 0xbc, 0x83, 0xfd, 0x4a, 0x7a, 0xb3, 0x11, 0xe6, 0x92, 0x20, 0x64, 0x9c, 0xc5,
+ 0x90, 0x8d, 0xad, 0x2b, 0x5a, 0x05, 0x67, 0x06, 0x29, 0x83, 0xfb, 0x5a, 0x18, 0xac, 0xb3, 0xfa,
+ 0x30, 0x0f, 0x41, 0x87, 0xe6, 0x21, 0x89, 0xf7, 0x1c, 0xac, 0xdb, 0x9a, 0xa1, 0x67, 0x86, 0x28,
+ 0x93, 0x7b, 0xda, 0xf4, 0x22, 0xae, 0x57, 0xc3, 0x2c, 0x3c, 0x3a, 0x74, 0x0e, 0x86, 0x0c, 0xd3,
+ 0xd1, 0x0c, 0xdd, 0xce, 0x24, 0x66, 0xa5, 0x93, 0xc3, 0x67, 0x8e, 0xb7, 0x75, 0x84, 0x55, 0x86,
+ 0xa3, 0x08, 0x64, 0xb4, 0x08, 0x69, 0xdb, 0x68, 0x5a, 0x15, 0x5c, 0xae, 0x18, 0x55, 0x5c, 0xd6,
+ 0xf4, 0x6d, 0x23, 0x93, 0xa4, 0x0c, 0x66, 0x5a, 0x15, 0xa1, 0x88, 0xf3, 0x46, 0x15, 0x2f, 0xea,
+ 0xdb, 0x86, 0x32, 0x6a, 0x07, 0xca, 0x68, 0x0a, 0x06, 0xed, 0x7d, 0xdd, 0x51, 0xf7, 0x32, 0x29,
+ 0xea, 0x21, 0xbc, 0x24, 0xff, 0xe6, 0x20, 0x8c, 0xf5, 0xe3, 0x62, 0xe7, 0x21, 0xbe, 0x4d, 0xb4,
+ 0xcc, 0x44, 0x0e, 0x62, 0x03, 0x46, 0x13, 0x34, 0xe2, 0xe0, 0x21, 0x8d, 0x98, 0x87, 0x61, 0x1d,
+ 0xdb, 0x0e, 0xae, 0x32, 0x8f, 0x88, 0xf6, 0xe9, 0x53, 0xc0, 0x88, 0x5a, 0x5d, 0x2a, 0x76, 0x28,
+ 0x97, 0x7a, 0x0e, 0xc6, 0x5c, 0x91, 0xca, 0x96, 0xaa, 0xd7, 0x84, 0x6f, 0x9e, 0xee, 0x25, 0xc9,
+ 0x5c, 0x49, 0xd0, 0x29, 0x84, 0x4c, 0x19, 0xc5, 0x81, 0x32, 0x2a, 0x02, 0x18, 0x3a, 0x36, 0xb6,
+ 0xcb, 0x55, 0x5c, 0xa9, 0x67, 0x12, 0x1d, 0xac, 0xb4, 0x4a, 0x50, 0x5a, 0xac, 0x64, 0x30, 0x68,
+ 0xa5, 0x8e, 0x9e, 0xf4, 0x5c, 0x6d, 0xa8, 0x83, 0xa7, 0x2c, 0xb3, 0x41, 0xd6, 0xe2, 0x6d, 0x9b,
+ 0x30, 0x6a, 0x61, 0xe2, 0xf7, 0xb8, 0xca, 0x35, 0x4b, 0x52, 0x21, 0xe6, 0x7a, 0x6a, 0xa6, 0x70,
+ 0x32, 0xa6, 0xd8, 0x88, 0xe5, 0x2f, 0xa2, 0xbb, 0xc0, 0x05, 0x94, 0xa9, 0x5b, 0x01, 0x8d, 0x42,
+ 0x29, 0x01, 0x5c, 0x51, 0x1b, 0x38, 0x7b, 0x0d, 0x46, 0x83, 0xe6, 0x41, 0x93, 0x10, 0xb7, 0x1d,
+ 0xd5, 0x72, 0xa8, 0x17, 0xc6, 0x15, 0x56, 0x40, 0x69, 0x88, 0x62, 0xbd, 0x4a, 0xa3, 0x5c, 0x5c,
+ 0x21, 0x3f, 0xd1, 0x5b, 0x3d, 0x85, 0xa3, 0x54, 0xe1, 0x7b, 0x5b, 0x7b, 0x34, 0xc0, 0x39, 0xac,
+ 0x77, 0xf6, 0x71, 0x18, 0x09, 0x28, 0xd0, 0x6f, 0xd3, 0xf2, 0xbb, 0xe0, 0x48, 0x5b, 0xd6, 0xe8,
+ 0x39, 0x98, 0x6c, 0xea, 0x9a, 0xee, 0x60, 0xcb, 0xb4, 0x30, 0xf1, 0x58, 0xd6, 0x54, 0xe6, 0x3f,
+ 0x0c, 0x75, 0xf0, 0xb9, 0x4d, 0x3f, 0x36, 0xe3, 0xa2, 0x4c, 0x34, 0x5b, 0x81, 0xa7, 0x92, 0x89,
+ 0xef, 0x0d, 0xa5, 0x5f, 0x7a, 0xe9, 0xa5, 0x97, 0x22, 0xf2, 0xd7, 0x06, 0x61, 0xb2, 0xdd, 0x98,
+ 0x69, 0x3b, 0x7c, 0xa7, 0x60, 0x50, 0x6f, 0x36, 0xb6, 0xb0, 0x45, 0x8d, 0x14, 0x57, 0x78, 0x09,
+ 0xe5, 0x21, 0x5e, 0x57, 0xb7, 0x70, 0x3d, 0x13, 0x9b, 0x95, 0x4e, 0x8e, 0x9e, 0x79, 0xa0, 0xaf,
+ 0x51, 0x39, 0xb7, 0x44, 0x48, 0x14, 0x46, 0x89, 0xde, 0x02, 0x31, 0x1e, 0xa2, 0x09, 0x87, 0x53,
+ 0xfd, 0x71, 0x20, 0x63, 0x49, 0xa1, 0x74, 0xe8, 0x18, 0x24, 0xc9, 0x5f, 0xe6, 0x1b, 0x83, 0x54,
+ 0xe6, 0x04, 0x01, 0x10, 0xbf, 0x40, 0x59, 0x48, 0xd0, 0x61, 0x52, 0xc5, 0x62, 0x6a, 0x73, 0xcb,
+ 0xc4, 0xb1, 0xaa, 0x78, 0x5b, 0x6d, 0xd6, 0x9d, 0xf2, 0x15, 0xb5, 0xde, 0xc4, 0xd4, 0xe1, 0x93,
+ 0x4a, 0x8a, 0x03, 0x2f, 0x13, 0x18, 0x9a, 0x81, 0x61, 0x36, 0xaa, 0x34, 0xbd, 0x8a, 0xf7, 0x68,
+ 0xf4, 0x8c, 0x2b, 0x6c, 0xa0, 0x2d, 0x12, 0x08, 0x69, 0xfe, 0x05, 0xdb, 0xd0, 0x85, 0x6b, 0xd2,
+ 0x26, 0x08, 0x80, 0x36, 0xff, 0x78, 0x38, 0x70, 0x9f, 0x68, 0xaf, 0x5e, 0xcb, 0x58, 0xba, 0x0f,
+ 0xc6, 0x28, 0xc6, 0xa3, 0xbc, 0xeb, 0xd5, 0x7a, 0x66, 0x7c, 0x56, 0x3a, 0x99, 0x50, 0x46, 0x19,
+ 0x78, 0x95, 0x43, 0xe5, 0xaf, 0x44, 0x20, 0x46, 0x03, 0xcb, 0x18, 0x0c, 0x6f, 0xbc, 0x6d, 0xad,
+ 0x54, 0x2e, 0xae, 0x6e, 0x16, 0x96, 0x4a, 0x69, 0x09, 0x8d, 0x02, 0x50, 0xc0, 0x85, 0xa5, 0xd5,
+ 0xfc, 0x46, 0x3a, 0xe2, 0x96, 0x17, 0x57, 0x36, 0xce, 0x3d, 0x96, 0x8e, 0xba, 0x04, 0x9b, 0x0c,
+ 0x10, 0xf3, 0x23, 0x3c, 0x7a, 0x26, 0x1d, 0x47, 0x69, 0x48, 0x31, 0x06, 0x8b, 0xcf, 0x95, 0x8a,
+ 0xe7, 0x1e, 0x4b, 0x0f, 0x06, 0x21, 0x8f, 0x9e, 0x49, 0x0f, 0xa1, 0x11, 0x48, 0x52, 0x48, 0x61,
+ 0x75, 0x75, 0x29, 0x9d, 0x70, 0x79, 0xae, 0x6f, 0x28, 0x8b, 0x2b, 0x0b, 0xe9, 0xa4, 0xcb, 0x73,
+ 0x41, 0x59, 0xdd, 0x5c, 0x4b, 0x83, 0xcb, 0x61, 0xb9, 0xb4, 0xbe, 0x9e, 0x5f, 0x28, 0xa5, 0x87,
+ 0x5d, 0x8c, 0xc2, 0xdb, 0x36, 0x4a, 0xeb, 0xe9, 0x54, 0x40, 0xac, 0x47, 0xcf, 0xa4, 0x47, 0xdc,
+ 0x26, 0x4a, 0x2b, 0x9b, 0xcb, 0xe9, 0x51, 0x34, 0x0e, 0x23, 0xac, 0x09, 0x21, 0xc4, 0x58, 0x08,
+ 0x74, 0xee, 0xb1, 0x74, 0xda, 0x13, 0x84, 0x71, 0x19, 0x0f, 0x00, 0xce, 0x3d, 0x96, 0x46, 0xf2,
+ 0x3c, 0xc4, 0xa9, 0x1b, 0x22, 0x04, 0xa3, 0x4b, 0xf9, 0x42, 0x69, 0xa9, 0xbc, 0xba, 0xb6, 0xb1,
+ 0xb8, 0xba, 0x92, 0x5f, 0x4a, 0x4b, 0x1e, 0x4c, 0x29, 0x3d, 0xb3, 0xb9, 0xa8, 0x94, 0x8a, 0xe9,
+ 0x88, 0x1f, 0xb6, 0x56, 0xca, 0x6f, 0x94, 0x8a, 0xe9, 0xa8, 0x5c, 0x81, 0xc9, 0x76, 0x01, 0xb5,
+ 0xed, 0x10, 0xf2, 0xf9, 0x42, 0xa4, 0x83, 0x2f, 0x50, 0x5e, 0x61, 0x5f, 0x90, 0xbf, 0x1b, 0x81,
+ 0x89, 0x36, 0x93, 0x4a, 0xdb, 0x46, 0x9e, 0x82, 0x38, 0xf3, 0x65, 0x36, 0xcd, 0xde, 0xdf, 0x76,
+ 0x76, 0xa2, 0x9e, 0xdd, 0x32, 0xd5, 0x52, 0x3a, 0x7f, 0xaa, 0x11, 0xed, 0x90, 0x6a, 0x10, 0x16,
+ 0x2d, 0x0e, 0xfb, 0x73, 0x2d, 0xc1, 0x9f, 0xcd, 0x8f, 0xe7, 0xfa, 0x99, 0x1f, 0x29, 0xec, 0x60,
+ 0x93, 0x40, 0xbc, 0xcd, 0x24, 0x70, 0x1e, 0xc6, 0x5b, 0x18, 0xf5, 0x1d, 0x8c, 0xdf, 0x27, 0x41,
+ 0xa6, 0x93, 0x71, 0x7a, 0x84, 0xc4, 0x48, 0x20, 0x24, 0x9e, 0x0f, 0x5b, 0xf0, 0xce, 0xce, 0x9d,
+ 0xd0, 0xd2, 0xd7, 0x9f, 0x95, 0x60, 0xaa, 0x7d, 0x4a, 0xd9, 0x56, 0x86, 0xb7, 0xc0, 0x60, 0x03,
+ 0x3b, 0x3b, 0x86, 0x48, 0xab, 0xee, 0x6d, 0x33, 0x59, 0x93, 0xea, 0x70, 0x67, 0x73, 0x2a, 0xff,
+ 0x6c, 0x1f, 0xed, 0x94, 0x17, 0x32, 0x69, 0x5a, 0x24, 0xfd, 0x50, 0x04, 0x8e, 0xb4, 0x65, 0xde,
+ 0x56, 0xd0, 0x13, 0x00, 0x9a, 0x6e, 0x36, 0x1d, 0x96, 0x3a, 0xb1, 0x48, 0x9c, 0xa4, 0x10, 0x1a,
+ 0xbc, 0x48, 0x94, 0x6d, 0x3a, 0x6e, 0x7d, 0x94, 0xd6, 0x03, 0x03, 0x51, 0x84, 0x27, 0x3c, 0x41,
+ 0x63, 0x54, 0xd0, 0xe9, 0x0e, 0x9a, 0xb6, 0x38, 0xe6, 0xc3, 0x90, 0xae, 0xd4, 0x35, 0xac, 0x3b,
+ 0x65, 0xdb, 0xb1, 0xb0, 0xda, 0xd0, 0xf4, 0x1a, 0x9d, 0x6a, 0x12, 0xb9, 0xf8, 0xb6, 0x5a, 0xb7,
+ 0xb1, 0x32, 0xc6, 0xaa, 0xd7, 0x45, 0x2d, 0xa1, 0xa0, 0x0e, 0x64, 0xf9, 0x28, 0x06, 0x03, 0x14,
+ 0xac, 0xda, 0xa5, 0x90, 0x3f, 0x92, 0x84, 0x61, 0x5f, 0x02, 0x8e, 0xee, 0x84, 0xd4, 0x0b, 0xea,
+ 0x15, 0xb5, 0x2c, 0x16, 0x55, 0xcc, 0x12, 0xc3, 0x04, 0xb6, 0xc6, 0x17, 0x56, 0x0f, 0xc3, 0x24,
+ 0x45, 0x31, 0x9a, 0x0e, 0xb6, 0xca, 0x95, 0xba, 0x6a, 0xdb, 0xd4, 0x68, 0x09, 0x8a, 0x8a, 0x48,
+ 0xdd, 0x2a, 0xa9, 0x9a, 0x17, 0x35, 0xe8, 0x2c, 0x4c, 0x50, 0x8a, 0x46, 0xb3, 0xee, 0x68, 0x66,
+ 0x1d, 0x97, 0xc9, 0x32, 0xcf, 0xa6, 0x53, 0x8e, 0x2b, 0xd9, 0x38, 0xc1, 0x58, 0xe6, 0x08, 0x44,
+ 0x22, 0x1b, 0x15, 0xe1, 0x04, 0x25, 0xab, 0x61, 0x1d, 0x5b, 0xaa, 0x83, 0xcb, 0xf8, 0xc5, 0xa6,
+ 0x5a, 0xb7, 0xcb, 0xaa, 0x5e, 0x2d, 0xef, 0xa8, 0xf6, 0x4e, 0x66, 0x92, 0x30, 0x28, 0x44, 0x32,
+ 0x92, 0x72, 0x94, 0x20, 0x2e, 0x70, 0xbc, 0x12, 0x45, 0xcb, 0xeb, 0xd5, 0x8b, 0xaa, 0xbd, 0x83,
+ 0x72, 0x30, 0x45, 0xb9, 0xd8, 0x8e, 0xa5, 0xe9, 0xb5, 0x72, 0x65, 0x07, 0x57, 0x76, 0xcb, 0x4d,
+ 0x67, 0xfb, 0x89, 0xcc, 0x31, 0x7f, 0xfb, 0x54, 0xc2, 0x75, 0x8a, 0x33, 0x4f, 0x50, 0x36, 0x9d,
+ 0xed, 0x27, 0xd0, 0x3a, 0xa4, 0x48, 0x67, 0x34, 0xb4, 0x6b, 0xb8, 0xbc, 0x6d, 0x58, 0x74, 0x0e,
+ 0x1d, 0x6d, 0x13, 0x9a, 0x7c, 0x16, 0x9c, 0x5b, 0xe5, 0x04, 0xcb, 0x46, 0x15, 0xe7, 0xe2, 0xeb,
+ 0x6b, 0xa5, 0x52, 0x51, 0x19, 0x16, 0x5c, 0x2e, 0x18, 0x16, 0x71, 0xa8, 0x9a, 0xe1, 0x1a, 0x78,
+ 0x98, 0x39, 0x54, 0xcd, 0x10, 0xe6, 0x3d, 0x0b, 0x13, 0x95, 0x0a, 0xd3, 0x59, 0xab, 0x94, 0xf9,
+ 0x62, 0xcc, 0xce, 0xa4, 0x03, 0xc6, 0xaa, 0x54, 0x16, 0x18, 0x02, 0xf7, 0x71, 0x1b, 0x3d, 0x09,
+ 0x47, 0x3c, 0x63, 0xf9, 0x09, 0xc7, 0x5b, 0xb4, 0x0c, 0x93, 0x9e, 0x85, 0x09, 0x73, 0xbf, 0x95,
+ 0x10, 0x05, 0x5a, 0x34, 0xf7, 0xc3, 0x64, 0x8f, 0xc3, 0xa4, 0xb9, 0x63, 0xb6, 0xd2, 0x9d, 0xf2,
+ 0xd3, 0x21, 0x73, 0xc7, 0x0c, 0x13, 0xde, 0x43, 0x57, 0xe6, 0x16, 0xae, 0xa8, 0x0e, 0xae, 0x66,
+ 0xee, 0xf0, 0xa3, 0xfb, 0x2a, 0xd0, 0x1c, 0xa4, 0x2b, 0x95, 0x32, 0xd6, 0xd5, 0xad, 0x3a, 0x2e,
+ 0xab, 0x16, 0xd6, 0x55, 0x3b, 0x33, 0x43, 0x91, 0x63, 0x8e, 0xd5, 0xc4, 0xca, 0x68, 0xa5, 0x52,
+ 0xa2, 0x95, 0x79, 0x5a, 0x87, 0x4e, 0xc1, 0xb8, 0xb1, 0xf5, 0x42, 0x85, 0x79, 0x64, 0xd9, 0xb4,
+ 0xf0, 0xb6, 0xb6, 0x97, 0xb9, 0x9b, 0x9a, 0x77, 0x8c, 0x54, 0x50, 0x7f, 0x5c, 0xa3, 0x60, 0x74,
+ 0x3f, 0xa4, 0x2b, 0xf6, 0x8e, 0x6a, 0x99, 0x34, 0x24, 0xdb, 0xa6, 0x5a, 0xc1, 0x99, 0x7b, 0x18,
+ 0x2a, 0x83, 0xaf, 0x08, 0x30, 0x19, 0x11, 0xf6, 0x55, 0x6d, 0xdb, 0x11, 0x1c, 0xef, 0x63, 0x23,
+ 0x82, 0xc2, 0x38, 0xb7, 0x93, 0x90, 0x26, 0x96, 0x08, 0x34, 0x7c, 0x92, 0xa2, 0x8d, 0x9a, 0x3b,
+ 0xa6, 0xbf, 0xdd, 0xbb, 0x60, 0x84, 0x60, 0x7a, 0x8d, 0xde, 0xcf, 0x12, 0x37, 0x73, 0xc7, 0xd7,
+ 0xe2, 0x63, 0x30, 0x45, 0x90, 0x1a, 0xd8, 0x51, 0xab, 0xaa, 0xa3, 0xfa, 0xb0, 0x1f, 0xa4, 0xd8,
+ 0xc4, 0xec, 0xcb, 0xbc, 0x32, 0x20, 0xa7, 0xd5, 0xdc, 0xda, 0x77, 0x1d, 0xeb, 0x21, 0x26, 0x27,
+ 0x81, 0x09, 0xd7, 0xba, 0x6d, 0xc9, 0xb9, 0x9c, 0x83, 0x94, 0xdf, 0xef, 0x51, 0x12, 0x98, 0xe7,
+ 0xa7, 0x25, 0x92, 0x04, 0xcd, 0xaf, 0x16, 0x49, 0xfa, 0xf2, 0x7c, 0x29, 0x1d, 0x21, 0x69, 0xd4,
+ 0xd2, 0xe2, 0x46, 0xa9, 0xac, 0x6c, 0xae, 0x6c, 0x2c, 0x2e, 0x97, 0xd2, 0x51, 0x5f, 0x62, 0xff,
+ 0x74, 0x2c, 0x71, 0x6f, 0xfa, 0x3e, 0xf9, 0xdb, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0x9b, 0xe0,
+ 0x0e, 0xb1, 0xad, 0x62, 0x63, 0xa7, 0x7c, 0x55, 0xb3, 0xe8, 0x80, 0x6c, 0xa8, 0x6c, 0x72, 0x74,
+ 0xfd, 0x67, 0x92, 0x63, 0xad, 0x63, 0xe7, 0x59, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x09,
+ 0x66, 0x74, 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95,
+ 0x0a, 0xb6, 0x6d, 0x83, 0x4d, 0x84, 0x2e, 0x97, 0xe3, 0xba, 0xb1, 0xce, 0x91, 0xbd, 0x19, 0x22,
+ 0xcf, 0x51, 0x43, 0xee, 0x1b, 0xed, 0xe4, 0xbe, 0xc7, 0x20, 0xd9, 0x50, 0xcd, 0x32, 0xd6, 0x1d,
+ 0x6b, 0x9f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x44, 0x96, 0x49, 0x4f,
+ 0xc7, 0x12, 0x89, 0x74, 0xf2, 0xe9, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xb5, 0x28, 0xa4, 0xfc, 0xf9,
+ 0x3a, 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x57, 0xd7, 0xec, 0x7e, 0x6e, 0x9e,
+ 0x4c, 0x65, 0xb9, 0x41, 0x96, 0x1c, 0x2b, 0x8c, 0x92, 0xa4, 0x11, 0xc4, 0xd9, 0x30, 0x4b, 0x46,
+ 0x12, 0x0a, 0x2f, 0xa1, 0x05, 0x18, 0x7c, 0xc1, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0xbb, 0xbb, 0xf3,
+ 0x7e, 0x7a, 0x9d, 0x32, 0x4f, 0x3e, 0xbd, 0x5e, 0x5e, 0x59, 0x55, 0x96, 0xf3, 0x4b, 0x0a, 0x27,
+ 0x47, 0x47, 0x21, 0x56, 0x57, 0xaf, 0xed, 0x07, 0x27, 0x3d, 0x0a, 0xea, 0xb7, 0x13, 0x8e, 0x42,
+ 0xec, 0x2a, 0x56, 0x77, 0x83, 0x53, 0x0d, 0x05, 0xdd, 0xc6, 0xc1, 0x70, 0x1a, 0xe2, 0xd4, 0x5e,
+ 0x08, 0x80, 0x5b, 0x2c, 0x3d, 0x80, 0x12, 0x10, 0x9b, 0x5f, 0x55, 0xc8, 0x80, 0x48, 0x43, 0x8a,
+ 0x41, 0xcb, 0x6b, 0x8b, 0xa5, 0xf9, 0x52, 0x3a, 0x22, 0x9f, 0x85, 0x41, 0x66, 0x04, 0x32, 0x58,
+ 0x5c, 0x33, 0xa4, 0x07, 0x78, 0x91, 0xf3, 0x90, 0x44, 0xed, 0xe6, 0x72, 0xa1, 0xa4, 0xa4, 0x23,
+ 0xc1, 0xae, 0x8e, 0xa5, 0xe3, 0xb2, 0x0d, 0x29, 0x7f, 0x1e, 0xfe, 0x93, 0x59, 0x8c, 0x7f, 0x55,
+ 0x82, 0x61, 0x5f, 0x5e, 0x4d, 0x12, 0x22, 0xb5, 0x5e, 0x37, 0xae, 0x96, 0xd5, 0xba, 0xa6, 0xda,
+ 0xdc, 0x35, 0x80, 0x82, 0xf2, 0x04, 0xd2, 0x6f, 0xd7, 0xfd, 0x84, 0x86, 0x48, 0x3c, 0x3d, 0x28,
+ 0x7f, 0x4a, 0x82, 0x74, 0x38, 0xb1, 0x0d, 0x89, 0x29, 0xfd, 0x34, 0xc5, 0x94, 0x3f, 0x29, 0xc1,
+ 0x68, 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xe7, 0x4f, 0x55, 0xbc, 0x3f, 0x8c, 0xc0, 0x48, 0x20, 0x87,
+ 0xed, 0x57, 0xba, 0x17, 0x61, 0x5c, 0xab, 0xe2, 0x86, 0x69, 0x38, 0x58, 0xaf, 0xec, 0x97, 0xeb,
+ 0xf8, 0x0a, 0xae, 0x67, 0x64, 0x1a, 0x34, 0x4e, 0x77, 0xcf, 0x92, 0xe7, 0x16, 0x3d, 0xba, 0x25,
+ 0x42, 0x96, 0x9b, 0x58, 0x2c, 0x96, 0x96, 0xd7, 0x56, 0x37, 0x4a, 0x2b, 0xf3, 0x6f, 0x2b, 0x6f,
+ 0xae, 0x5c, 0x5a, 0x59, 0x7d, 0x76, 0x45, 0x49, 0x6b, 0x21, 0xb4, 0xdb, 0x38, 0xec, 0xd7, 0x20,
+ 0x1d, 0x16, 0x0a, 0xdd, 0x01, 0xed, 0xc4, 0x4a, 0x0f, 0xa0, 0x09, 0x18, 0x5b, 0x59, 0x2d, 0xaf,
+ 0x2f, 0x16, 0x4b, 0xe5, 0xd2, 0x85, 0x0b, 0xa5, 0xf9, 0x8d, 0x75, 0xb6, 0xef, 0xe1, 0x62, 0x6f,
+ 0x04, 0x06, 0xb8, 0xfc, 0x4a, 0x14, 0x26, 0xda, 0x48, 0x82, 0xf2, 0x7c, 0xc5, 0xc2, 0x16, 0x51,
+ 0x0f, 0xf5, 0x23, 0xfd, 0x1c, 0xc9, 0x19, 0xd6, 0x54, 0xcb, 0xe1, 0x0b, 0x9c, 0xfb, 0x81, 0x58,
+ 0x49, 0x77, 0xb4, 0x6d, 0x0d, 0x5b, 0x7c, 0x3f, 0x89, 0x2d, 0x63, 0xc6, 0x3c, 0x38, 0xdb, 0x52,
+ 0x7a, 0x10, 0x90, 0x69, 0xd8, 0x9a, 0xa3, 0x5d, 0xc1, 0x65, 0x4d, 0x17, 0x9b, 0x4f, 0x64, 0x59,
+ 0x13, 0x53, 0xd2, 0xa2, 0x66, 0x51, 0x77, 0x5c, 0x6c, 0x1d, 0xd7, 0xd4, 0x10, 0x36, 0x09, 0xe6,
+ 0x51, 0x25, 0x2d, 0x6a, 0x5c, 0xec, 0x3b, 0x21, 0x55, 0x35, 0x9a, 0x24, 0xd7, 0x63, 0x78, 0x64,
+ 0xee, 0x90, 0x94, 0x61, 0x06, 0x73, 0x51, 0x78, 0x16, 0xef, 0xed, 0x7a, 0xa5, 0x94, 0x61, 0x06,
+ 0x63, 0x28, 0xf7, 0xc1, 0x98, 0x5a, 0xab, 0x59, 0x84, 0xb9, 0x60, 0xc4, 0xd6, 0x25, 0xa3, 0x2e,
+ 0x98, 0x22, 0x66, 0x9f, 0x86, 0x84, 0xb0, 0x03, 0x99, 0xaa, 0x89, 0x25, 0xca, 0x26, 0x5b, 0x6c,
+ 0x47, 0x4e, 0x26, 0x95, 0x84, 0x2e, 0x2a, 0xef, 0x84, 0x94, 0x66, 0x97, 0xbd, 0x4d, 0xfc, 0xc8,
+ 0x6c, 0xe4, 0x64, 0x42, 0x19, 0xd6, 0x6c, 0x77, 0x03, 0x54, 0xfe, 0x6c, 0x04, 0x46, 0x83, 0x87,
+ 0x10, 0xa8, 0x08, 0x89, 0xba, 0x51, 0x51, 0xa9, 0x6b, 0xb1, 0x13, 0xb0, 0x93, 0x3d, 0xce, 0x2d,
+ 0xe6, 0x96, 0x38, 0xbe, 0xe2, 0x52, 0x66, 0xff, 0xb9, 0x04, 0x09, 0x01, 0x46, 0x53, 0x10, 0x33,
+ 0x55, 0x67, 0x87, 0xb2, 0x8b, 0x17, 0x22, 0x69, 0x49, 0xa1, 0x65, 0x02, 0xb7, 0x4d, 0x55, 0xa7,
+ 0x2e, 0xc0, 0xe1, 0xa4, 0x4c, 0xfa, 0xb5, 0x8e, 0xd5, 0x2a, 0x5d, 0xf4, 0x18, 0x8d, 0x06, 0xd6,
+ 0x1d, 0x5b, 0xf4, 0x2b, 0x87, 0xcf, 0x73, 0x30, 0x7a, 0x00, 0xc6, 0x1d, 0x4b, 0xd5, 0xea, 0x01,
+ 0xdc, 0x18, 0xc5, 0x4d, 0x8b, 0x0a, 0x17, 0x39, 0x07, 0x47, 0x05, 0xdf, 0x2a, 0x76, 0xd4, 0xca,
+ 0x0e, 0xae, 0x7a, 0x44, 0x83, 0x74, 0x73, 0xe3, 0x0e, 0x8e, 0x50, 0xe4, 0xf5, 0x82, 0x56, 0xfe,
+ 0xb6, 0x04, 0xe3, 0x62, 0x99, 0x56, 0x75, 0x8d, 0xb5, 0x0c, 0xa0, 0xea, 0xba, 0xe1, 0xf8, 0xcd,
+ 0xd5, 0xea, 0xca, 0x2d, 0x74, 0x73, 0x79, 0x97, 0x48, 0xf1, 0x31, 0xc8, 0x36, 0x00, 0xbc, 0x9a,
+ 0x8e, 0x66, 0x9b, 0x81, 0x61, 0x7e, 0xc2, 0x44, 0x8f, 0x29, 0xd9, 0xc2, 0x1e, 0x18, 0x88, 0xac,
+ 0xe7, 0xd0, 0x24, 0xc4, 0xb7, 0x70, 0x4d, 0xd3, 0xf9, 0xbe, 0x31, 0x2b, 0x88, 0xed, 0x97, 0x98,
+ 0xbb, 0xfd, 0x52, 0xf8, 0xff, 0x61, 0xa2, 0x62, 0x34, 0xc2, 0xe2, 0x16, 0xd2, 0xa1, 0xcd, 0x05,
+ 0xfb, 0xa2, 0xf4, 0xfc, 0x43, 0x1c, 0xa9, 0x66, 0xd4, 0x55, 0xbd, 0x36, 0x67, 0x58, 0x35, 0xef,
+ 0x98, 0x95, 0x64, 0x3c, 0xb6, 0xef, 0xb0, 0xd5, 0xdc, 0xfa, 0x53, 0x49, 0xfa, 0xe5, 0x48, 0x74,
+ 0x61, 0xad, 0xf0, 0xb9, 0x48, 0x76, 0x81, 0x11, 0xae, 0x09, 0x63, 0x28, 0x78, 0xbb, 0x8e, 0x2b,
+ 0x44, 0x41, 0xf8, 0xfe, 0x03, 0x30, 0x59, 0x33, 0x6a, 0x06, 0xe5, 0x74, 0x9a, 0xfc, 0xe2, 0xe7,
+ 0xb4, 0x49, 0x17, 0x9a, 0xed, 0x79, 0xa8, 0x9b, 0x5b, 0x81, 0x09, 0x8e, 0x5c, 0xa6, 0x07, 0x45,
+ 0x6c, 0x19, 0x83, 0xba, 0xee, 0xa1, 0x65, 0xbe, 0xf8, 0x3a, 0x9d, 0xbe, 0x95, 0x71, 0x4e, 0x4a,
+ 0xea, 0xd8, 0x4a, 0x27, 0xa7, 0xc0, 0x91, 0x00, 0x3f, 0x36, 0x48, 0xb1, 0xd5, 0x83, 0xe3, 0x6f,
+ 0x71, 0x8e, 0x13, 0x3e, 0x8e, 0xeb, 0x9c, 0x34, 0x37, 0x0f, 0x23, 0x07, 0xe1, 0xf5, 0x4f, 0x38,
+ 0xaf, 0x14, 0xf6, 0x33, 0x59, 0x80, 0x31, 0xca, 0xa4, 0xd2, 0xb4, 0x1d, 0xa3, 0x41, 0x23, 0x60,
+ 0x77, 0x36, 0xbf, 0xfd, 0x3a, 0x1b, 0x35, 0xa3, 0x84, 0x6c, 0xde, 0xa5, 0xca, 0xe5, 0x80, 0x9e,
+ 0x8d, 0x55, 0x71, 0xa5, 0xde, 0x83, 0xc3, 0xd7, 0xb9, 0x20, 0x2e, 0x7e, 0xee, 0x32, 0x4c, 0x92,
+ 0xdf, 0x34, 0x40, 0xf9, 0x25, 0xe9, 0xbd, 0xe1, 0x96, 0xf9, 0xf6, 0xfb, 0xd8, 0xc0, 0x9c, 0x70,
+ 0x19, 0xf8, 0x64, 0xf2, 0xf5, 0x62, 0x0d, 0x3b, 0x0e, 0xb6, 0xec, 0xb2, 0x5a, 0x6f, 0x27, 0x9e,
+ 0x6f, 0xc7, 0x22, 0xf3, 0xf1, 0x1f, 0x04, 0x7b, 0x71, 0x81, 0x51, 0xe6, 0xeb, 0xf5, 0xdc, 0x26,
+ 0xdc, 0xd1, 0xc6, 0x2b, 0xfa, 0xe0, 0xf9, 0x0a, 0xe7, 0x39, 0xd9, 0xe2, 0x19, 0x84, 0xed, 0x1a,
+ 0x08, 0xb8, 0xdb, 0x97, 0x7d, 0xf0, 0xfc, 0x04, 0xe7, 0x89, 0x38, 0xad, 0xe8, 0x52, 0xc2, 0xf1,
+ 0x69, 0x18, 0xbf, 0x82, 0xad, 0x2d, 0xc3, 0xe6, 0xbb, 0x44, 0x7d, 0xb0, 0xfb, 0x24, 0x67, 0x37,
+ 0xc6, 0x09, 0xe9, 0xb6, 0x11, 0xe1, 0xf5, 0x24, 0x24, 0xb6, 0xd5, 0x0a, 0xee, 0x83, 0xc5, 0x75,
+ 0xce, 0x62, 0x88, 0xe0, 0x13, 0xd2, 0x3c, 0xa4, 0x6a, 0x06, 0x9f, 0xa3, 0x7a, 0x93, 0x7f, 0x8a,
+ 0x93, 0x0f, 0x0b, 0x1a, 0xce, 0xc2, 0x34, 0xcc, 0x66, 0x9d, 0x4c, 0x60, 0xbd, 0x59, 0xfc, 0x35,
+ 0xc1, 0x42, 0xd0, 0x70, 0x16, 0x07, 0x30, 0xeb, 0xab, 0x82, 0x85, 0xed, 0xb3, 0xe7, 0x53, 0x30,
+ 0x6c, 0xe8, 0xf5, 0x7d, 0x43, 0xef, 0x47, 0x88, 0x4f, 0x73, 0x0e, 0xc0, 0x49, 0x08, 0x83, 0xf3,
+ 0x90, 0xec, 0xb7, 0x23, 0xfe, 0xfa, 0x0f, 0xc4, 0xf0, 0x10, 0x3d, 0xb0, 0x00, 0x63, 0x22, 0x40,
+ 0x69, 0x86, 0xde, 0x07, 0x8b, 0xbf, 0xc1, 0x59, 0x8c, 0xfa, 0xc8, 0xb8, 0x1a, 0x0e, 0xb6, 0x9d,
+ 0x1a, 0xee, 0x87, 0xc9, 0x67, 0x85, 0x1a, 0x9c, 0x84, 0x9b, 0x72, 0x0b, 0xeb, 0x95, 0x9d, 0xfe,
+ 0x38, 0xfc, 0xaa, 0x30, 0xa5, 0xa0, 0x21, 0x2c, 0xe6, 0x61, 0xa4, 0xa1, 0x5a, 0xf6, 0x8e, 0x5a,
+ 0xef, 0xab, 0x3b, 0xfe, 0x26, 0xe7, 0x91, 0x72, 0x89, 0xb8, 0x45, 0x9a, 0xfa, 0x41, 0xd8, 0x7c,
+ 0x4e, 0x58, 0xc4, 0x47, 0xc6, 0x87, 0x9e, 0xed, 0xd0, 0x2d, 0xb5, 0x83, 0x70, 0xfb, 0x35, 0x31,
+ 0xf4, 0x18, 0xed, 0xb2, 0x9f, 0xe3, 0x79, 0x48, 0xda, 0xda, 0xb5, 0xbe, 0xd8, 0x7c, 0x5e, 0xf4,
+ 0x34, 0x25, 0x20, 0xc4, 0x6f, 0x83, 0xa3, 0x6d, 0xa7, 0x89, 0x3e, 0x98, 0xfd, 0x2d, 0xce, 0x6c,
+ 0xaa, 0xcd, 0x54, 0xc1, 0x43, 0xc2, 0x41, 0x59, 0xfe, 0x6d, 0x11, 0x12, 0x70, 0x88, 0xd7, 0x1a,
+ 0x59, 0x35, 0xd8, 0xea, 0xf6, 0xc1, 0xac, 0xf6, 0xeb, 0xc2, 0x6a, 0x8c, 0x36, 0x60, 0xb5, 0x0d,
+ 0x98, 0xe2, 0x1c, 0x0f, 0xd6, 0xaf, 0x5f, 0x10, 0x81, 0x95, 0x51, 0x6f, 0x06, 0x7b, 0xf7, 0xed,
+ 0x90, 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x91, 0x73, 0x16,
+ 0x11, 0xdf, 0xcd, 0x6f, 0xed, 0x65, 0xd5, 0x24, 0xcc, 0x9f, 0x83, 0x8c, 0x60, 0xde, 0xd4, 0x2d,
+ 0x5c, 0x31, 0x6a, 0xba, 0x76, 0x0d, 0x57, 0xfb, 0x60, 0xfd, 0x1b, 0xa1, 0xae, 0xda, 0xf4, 0x91,
+ 0x13, 0xce, 0x8b, 0x90, 0x76, 0x73, 0x95, 0xb2, 0xd6, 0x30, 0x0d, 0xcb, 0xe9, 0xc1, 0xf1, 0x4b,
+ 0xa2, 0xa7, 0x5c, 0xba, 0x45, 0x4a, 0x96, 0x2b, 0x01, 0x3b, 0x67, 0xee, 0xd7, 0x25, 0xbf, 0xcc,
+ 0x19, 0x8d, 0x78, 0x54, 0x3c, 0x70, 0x54, 0x8c, 0x86, 0xa9, 0x5a, 0xfd, 0xc4, 0xbf, 0xbf, 0x23,
+ 0x02, 0x07, 0x27, 0xe1, 0x81, 0x83, 0x64, 0x74, 0x64, 0xb6, 0xef, 0x83, 0xc3, 0x57, 0x44, 0xe0,
+ 0x10, 0x34, 0x9c, 0x85, 0x48, 0x18, 0xfa, 0x60, 0xf1, 0x77, 0x05, 0x0b, 0x41, 0x43, 0x58, 0x3c,
+ 0xe3, 0x4d, 0xb4, 0x16, 0xae, 0x69, 0xb6, 0x63, 0xb1, 0xa4, 0xb8, 0x3b, 0xab, 0xbf, 0xf7, 0x83,
+ 0x60, 0x12, 0xa6, 0xf8, 0x48, 0x49, 0x24, 0xe2, 0x9b, 0xac, 0x74, 0xcd, 0xd4, 0x5b, 0xb0, 0xdf,
+ 0x14, 0x91, 0xc8, 0x47, 0x46, 0x64, 0xf3, 0x65, 0x88, 0xc4, 0xec, 0x15, 0xb2, 0x52, 0xe8, 0x83,
+ 0xdd, 0xdf, 0x0f, 0x09, 0xb7, 0x2e, 0x68, 0x09, 0x4f, 0x5f, 0xfe, 0xd3, 0xd4, 0x77, 0xf1, 0x7e,
+ 0x5f, 0xde, 0xf9, 0x0f, 0x42, 0xf9, 0xcf, 0x26, 0xa3, 0x64, 0x31, 0x64, 0x2c, 0x94, 0x4f, 0xa1,
+ 0x5e, 0xb7, 0x8a, 0x32, 0xef, 0xf9, 0x11, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x96, 0x88, 0x93, 0x07,
+ 0x93, 0x9e, 0xde, 0xcc, 0xde, 0xf7, 0x23, 0xd7, 0xcf, 0x03, 0x39, 0x4f, 0xee, 0x02, 0x8c, 0x04,
+ 0x12, 0x9e, 0xde, 0xac, 0xde, 0xcf, 0x59, 0xa5, 0xfc, 0xf9, 0x4e, 0xee, 0x2c, 0xc4, 0x48, 0xf2,
+ 0xd2, 0x9b, 0xfc, 0x2f, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x33, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4,
+ 0x03, 0x9c, 0xd4, 0x25, 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x17, 0x05, 0xb9, 0x20, 0x21,
+ 0xe4, 0xfd, 0x9b, 0xf0, 0xab, 0x3f, 0x1f, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99,
+ 0x4a, 0x6f, 0xea, 0x0f, 0xf1, 0xc6, 0x05, 0x45, 0xee, 0x71, 0x88, 0xf7, 0x69, 0xf0, 0x5f, 0xe0,
+ 0xa4, 0x0c, 0x3f, 0x37, 0x0f, 0xc3, 0xbe, 0xec, 0xa4, 0x37, 0xf9, 0x5f, 0xe2, 0xe4, 0x7e, 0x2a,
+ 0x22, 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x45, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49,
+ 0x6f, 0xea, 0x0f, 0x0b, 0xab, 0x0b, 0x92, 0xdc, 0x53, 0x90, 0x74, 0x27, 0x9b, 0xde, 0xf4, 0x1f,
+ 0xe1, 0xf4, 0x1e, 0x0d, 0xb1, 0x80, 0x6f, 0xb2, 0xeb, 0xcd, 0xe2, 0x2f, 0x0b, 0x0b, 0xf8, 0xa8,
+ 0xc8, 0x30, 0x0a, 0x27, 0x30, 0xbd, 0x39, 0x7d, 0x54, 0x0c, 0xa3, 0x50, 0xfe, 0x42, 0x7a, 0x93,
+ 0xc6, 0xfc, 0xde, 0x2c, 0xfe, 0x8a, 0xe8, 0x4d, 0x8a, 0x4f, 0xc4, 0x08, 0x67, 0x04, 0xbd, 0x79,
+ 0xfc, 0x92, 0x10, 0x23, 0x94, 0x10, 0xe4, 0xd6, 0x00, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x8c,
+ 0xf3, 0x1b, 0x6f, 0x49, 0x06, 0x72, 0xcf, 0xc2, 0x54, 0xfb, 0x4c, 0xa0, 0x37, 0xd7, 0x8f, 0xff,
+ 0x28, 0xb4, 0x76, 0xf3, 0x27, 0x02, 0xb9, 0x0d, 0x6f, 0x4a, 0xf1, 0x67, 0x01, 0xbd, 0xd9, 0xbe,
+ 0xf2, 0xa3, 0x60, 0xe0, 0xf6, 0x27, 0x01, 0xb9, 0x3c, 0x80, 0x37, 0x01, 0xf7, 0xe6, 0xf5, 0x49,
+ 0xce, 0xcb, 0x47, 0x44, 0x86, 0x06, 0x9f, 0x7f, 0x7b, 0xd3, 0x5f, 0x17, 0x43, 0x83, 0x53, 0x90,
+ 0xa1, 0x21, 0xa6, 0xde, 0xde, 0xd4, 0x9f, 0x12, 0x43, 0x43, 0x90, 0x10, 0xcf, 0xf6, 0xcd, 0x6e,
+ 0xbd, 0x39, 0x7c, 0x5a, 0x78, 0xb6, 0x8f, 0x2a, 0xb7, 0x02, 0xe3, 0x2d, 0x13, 0x62, 0x6f, 0x56,
+ 0xbf, 0xcc, 0x59, 0xa5, 0xc3, 0xf3, 0xa1, 0x7f, 0xf2, 0xe2, 0x93, 0x61, 0x6f, 0x6e, 0x9f, 0x09,
+ 0x4d, 0x5e, 0x7c, 0x2e, 0xcc, 0x9d, 0x87, 0x84, 0xde, 0xac, 0xd7, 0xc9, 0xe0, 0x41, 0xdd, 0x6f,
+ 0x02, 0x66, 0xfe, 0xe3, 0x8f, 0xb9, 0x75, 0x04, 0x41, 0xee, 0x2c, 0xc4, 0x71, 0x63, 0x0b, 0x57,
+ 0x7b, 0x51, 0x7e, 0xff, 0xc7, 0x22, 0x60, 0x12, 0xec, 0xdc, 0x53, 0x00, 0x6c, 0x6b, 0x84, 0x1e,
+ 0x06, 0xf6, 0xa0, 0xfd, 0x4f, 0x3f, 0xe6, 0x57, 0x6f, 0x3c, 0x12, 0x8f, 0x01, 0xbb, 0xc8, 0xd3,
+ 0x9d, 0xc1, 0x0f, 0x82, 0x0c, 0x68, 0x8f, 0x3c, 0x09, 0x43, 0x2f, 0xd8, 0x86, 0xee, 0xa8, 0xb5,
+ 0x5e, 0xd4, 0xff, 0x99, 0x53, 0x0b, 0x7c, 0x62, 0xb0, 0x86, 0x61, 0x61, 0x47, 0xad, 0xd9, 0xbd,
+ 0x68, 0xff, 0x0b, 0xa7, 0x75, 0x09, 0x08, 0x71, 0x45, 0xb5, 0x9d, 0x7e, 0xf4, 0xfe, 0x23, 0x41,
+ 0x2c, 0x08, 0x88, 0xd0, 0xe4, 0xf7, 0x2e, 0xde, 0xef, 0x45, 0xfb, 0x43, 0x21, 0x34, 0xc7, 0xcf,
+ 0xbd, 0x19, 0x92, 0xe4, 0x27, 0xbb, 0x4f, 0xd7, 0x83, 0xf8, 0x8f, 0x39, 0xb1, 0x47, 0x41, 0x5a,
+ 0xb6, 0x9d, 0xaa, 0xa3, 0xf5, 0x36, 0xf6, 0x4d, 0xde, 0xd3, 0x02, 0x3f, 0x97, 0x87, 0x61, 0xdb,
+ 0xa9, 0x56, 0x9b, 0x3c, 0x3f, 0xed, 0x41, 0xfe, 0x27, 0x3f, 0x76, 0xb7, 0x2c, 0x5c, 0x1a, 0xd2,
+ 0xdb, 0x57, 0x77, 0x1d, 0xd3, 0xa0, 0x07, 0x1e, 0xbd, 0x38, 0xfc, 0x88, 0x73, 0xf0, 0x91, 0xe4,
+ 0xe6, 0x21, 0x45, 0x74, 0xb1, 0xb0, 0x89, 0xe9, 0xe9, 0x54, 0x0f, 0x16, 0xff, 0x95, 0x1b, 0x20,
+ 0x40, 0x54, 0xf8, 0xb9, 0xaf, 0xbf, 0x36, 0x2d, 0x7d, 0xeb, 0xb5, 0x69, 0xe9, 0x0f, 0x5f, 0x9b,
+ 0x96, 0x3e, 0xfc, 0xdd, 0xe9, 0x81, 0x6f, 0x7d, 0x77, 0x7a, 0xe0, 0xf7, 0xbe, 0x3b, 0x3d, 0xd0,
+ 0x7e, 0x97, 0x18, 0x16, 0x8c, 0x05, 0x83, 0xed, 0x0f, 0x3f, 0x2f, 0xd7, 0x34, 0x67, 0xa7, 0xb9,
+ 0x35, 0x57, 0x31, 0x1a, 0x74, 0x1b, 0xd7, 0xdb, 0xad, 0x75, 0x17, 0x39, 0xf0, 0xde, 0x28, 0x1c,
+ 0xad, 0x18, 0x76, 0xc3, 0xb0, 0xcb, 0x6c, 0xbf, 0x97, 0x15, 0xf8, 0x8e, 0x6f, 0xca, 0x5f, 0xd5,
+ 0xc7, 0xa6, 0xef, 0x45, 0x18, 0xa5, 0xaa, 0xd3, 0xed, 0x2e, 0xea, 0x6d, 0x3d, 0x03, 0xc4, 0x37,
+ 0xfe, 0x55, 0x9c, 0x6a, 0x3d, 0xe2, 0x12, 0xd2, 0xd3, 0xfb, 0x0d, 0x98, 0xd4, 0x1a, 0x66, 0x1d,
+ 0xd3, 0x6d, 0xfe, 0xb2, 0x5b, 0xd7, 0x9b, 0xdf, 0x37, 0x39, 0xbf, 0x09, 0x8f, 0x7c, 0x51, 0x50,
+ 0xe7, 0x96, 0x60, 0x5c, 0xad, 0x54, 0xb0, 0x19, 0x60, 0xd9, 0xa3, 0x5b, 0x84, 0x80, 0x69, 0x4e,
+ 0xe9, 0x72, 0x2b, 0x3c, 0xd5, 0xa9, 0x6b, 0x9e, 0xbf, 0xc7, 0x67, 0x79, 0x0b, 0xd7, 0xb0, 0xfe,
+ 0x90, 0x8e, 0x9d, 0xab, 0x86, 0xb5, 0xcb, 0xcd, 0xfb, 0x10, 0x6b, 0x6a, 0x90, 0xdd, 0x60, 0x86,
+ 0xf7, 0x47, 0x61, 0x9a, 0x55, 0x9c, 0xde, 0x52, 0x6d, 0x7c, 0xfa, 0xca, 0x23, 0x5b, 0xd8, 0x51,
+ 0x1f, 0x39, 0x5d, 0x31, 0x34, 0x9d, 0xf7, 0xc4, 0x04, 0xef, 0x17, 0x52, 0x3f, 0xc7, 0xeb, 0xb3,
+ 0x6d, 0xb7, 0xe9, 0xe5, 0x05, 0x88, 0xcd, 0x1b, 0x9a, 0x8e, 0x26, 0x21, 0x5e, 0xc5, 0xba, 0xd1,
+ 0xe0, 0x77, 0xee, 0x58, 0x01, 0xdd, 0x05, 0x83, 0x6a, 0xc3, 0x68, 0xea, 0x0e, 0x3b, 0xa1, 0x28,
+ 0x0c, 0x7f, 0xfd, 0xc6, 0xcc, 0xc0, 0xef, 0xdf, 0x98, 0x89, 0x2e, 0xea, 0x8e, 0xc2, 0xab, 0x72,
+ 0xb1, 0xef, 0xbd, 0x3a, 0x23, 0xc9, 0x4f, 0xc3, 0x50, 0x11, 0x57, 0x0e, 0xc3, 0xab, 0x88, 0x2b,
+ 0x21, 0x5e, 0xf7, 0x43, 0x62, 0x51, 0x77, 0xd8, 0xad, 0xc8, 0x13, 0x10, 0xd5, 0x74, 0x76, 0xd1,
+ 0x26, 0xd4, 0x3e, 0x81, 0x13, 0xd4, 0x22, 0xae, 0xb8, 0xa8, 0x55, 0x5c, 0x09, 0xa3, 0x12, 0xf6,
+ 0x04, 0x5e, 0x28, 0xfe, 0xde, 0xbf, 0x9b, 0x1e, 0x78, 0xe9, 0xb5, 0xe9, 0x81, 0x8e, 0x3d, 0xe1,
+ 0x1f, 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x2e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0x77, 0x06,
+ 0x41, 0xe6, 0x38, 0xb6, 0xa3, 0xee, 0x6a, 0x7a, 0xcd, 0xed, 0x09, 0xb5, 0xe9, 0xec, 0x5c, 0xe3,
+ 0x5d, 0x31, 0xc5, 0xbb, 0x82, 0xe3, 0x74, 0xef, 0x8d, 0x6c, 0xe7, 0xd1, 0x95, 0xed, 0xd1, 0xe7,
+ 0xf2, 0x3f, 0x8b, 0x02, 0x5a, 0x77, 0xd4, 0x5d, 0x9c, 0x6f, 0x3a, 0x3b, 0x86, 0xa5, 0x5d, 0x63,
+ 0xb1, 0x0c, 0x03, 0x34, 0xd4, 0xbd, 0xb2, 0x63, 0xec, 0x62, 0xdd, 0xa6, 0xa6, 0x19, 0x3e, 0x73,
+ 0x74, 0xae, 0x8d, 0x7f, 0xcc, 0x91, 0xae, 0x2b, 0x3c, 0xf0, 0xb9, 0xef, 0xcc, 0xdc, 0xd7, 0xdb,
+ 0x0a, 0x14, 0x99, 0x24, 0xd7, 0x7b, 0x1b, 0x94, 0x31, 0xba, 0x0c, 0xec, 0x92, 0x45, 0xb9, 0xae,
+ 0xd9, 0x0e, 0xbf, 0xa7, 0x7d, 0x76, 0xae, 0xbd, 0xee, 0x73, 0xad, 0x62, 0xce, 0x5d, 0x56, 0xeb,
+ 0x5a, 0x55, 0x75, 0x0c, 0xcb, 0xbe, 0x38, 0xa0, 0x24, 0x29, 0xab, 0x25, 0xcd, 0x76, 0xd0, 0x06,
+ 0x24, 0xab, 0x58, 0xdf, 0x67, 0x6c, 0xa3, 0x6f, 0x8c, 0x6d, 0x82, 0x70, 0xa2, 0x5c, 0x9f, 0x03,
+ 0xa4, 0xfa, 0xf1, 0xc4, 0xc3, 0x24, 0x76, 0xbf, 0xb2, 0x03, 0xfb, 0x00, 0x67, 0xfa, 0x8e, 0x62,
+ 0x5c, 0x0d, 0x83, 0xb2, 0xf7, 0x02, 0x78, 0x6d, 0xa2, 0x0c, 0x0c, 0xa9, 0xd5, 0xaa, 0x85, 0x6d,
+ 0x9b, 0x1e, 0x00, 0x26, 0x15, 0x51, 0xcc, 0x8d, 0xff, 0x8b, 0x2f, 0x3f, 0x34, 0x12, 0xe0, 0x58,
+ 0x48, 0x01, 0x5c, 0x71, 0x49, 0x4f, 0x7d, 0x4a, 0x82, 0xf1, 0x96, 0x16, 0x91, 0x0c, 0xd3, 0xf9,
+ 0xcd, 0x8d, 0x8b, 0xab, 0xca, 0xe2, 0xf3, 0xf9, 0x8d, 0xc5, 0xd5, 0x95, 0x32, 0xbb, 0xf2, 0xbf,
+ 0xb2, 0xbe, 0x56, 0x9a, 0x5f, 0xbc, 0xb0, 0x58, 0x2a, 0xa6, 0x07, 0xd0, 0x0c, 0x1c, 0x6b, 0x83,
+ 0x53, 0x2c, 0x2d, 0x95, 0x16, 0xf2, 0x1b, 0xa5, 0xb4, 0x84, 0xee, 0x84, 0x13, 0x6d, 0x99, 0xb8,
+ 0x28, 0x91, 0x0e, 0x28, 0x4a, 0xc9, 0x45, 0x89, 0x16, 0x2e, 0x74, 0x1c, 0x45, 0x0f, 0x76, 0xf5,
+ 0x9f, 0x3d, 0x77, 0xb8, 0x04, 0xc7, 0xd3, 0x7b, 0x22, 0x70, 0x34, 0x3c, 0x65, 0xa8, 0xfa, 0x7e,
+ 0x87, 0x57, 0x9f, 0x1d, 0xa2, 0xd9, 0x45, 0x88, 0xe6, 0xf5, 0x7d, 0x74, 0x94, 0xe5, 0xd3, 0xe5,
+ 0xa6, 0x55, 0xe7, 0x31, 0x68, 0x88, 0x94, 0x37, 0xad, 0x3a, 0x89, 0x4d, 0xe2, 0xa2, 0xbf, 0x74,
+ 0x32, 0xc5, 0x6f, 0xef, 0xe7, 0xd2, 0x1f, 0x7b, 0x75, 0x66, 0xe0, 0x0b, 0xaf, 0xce, 0x0c, 0xfc,
+ 0xf0, 0xd3, 0x33, 0x03, 0x2f, 0xfd, 0xc1, 0xec, 0x40, 0x61, 0x37, 0xac, 0xde, 0x57, 0x7b, 0xce,
+ 0xa6, 0x89, 0xbc, 0xbe, 0x4f, 0x03, 0xd1, 0x9a, 0xf4, 0x7c, 0x9c, 0x2a, 0x27, 0x0e, 0x50, 0xa7,
+ 0xc3, 0x07, 0xa8, 0xcf, 0xe2, 0x7a, 0xfd, 0x92, 0x6e, 0x5c, 0xa5, 0xbd, 0xea, 0xd9, 0xe0, 0xa3,
+ 0x11, 0x98, 0x6e, 0x99, 0x36, 0x79, 0x86, 0xd1, 0xe9, 0xf9, 0x6b, 0x0e, 0x12, 0x45, 0x91, 0xb8,
+ 0x64, 0x60, 0xc8, 0xc6, 0x15, 0x43, 0xaf, 0xb2, 0x91, 0x1e, 0x55, 0x44, 0x91, 0xa8, 0xad, 0xab,
+ 0xba, 0x61, 0xf3, 0x3b, 0xf7, 0xac, 0x50, 0xf8, 0x84, 0x74, 0xb0, 0x7c, 0x61, 0x44, 0xb4, 0x24,
+ 0xd4, 0x7c, 0xa4, 0xe7, 0x91, 0xf2, 0x2e, 0xd1, 0xd2, 0x55, 0x22, 0x70, 0xac, 0xdc, 0xaf, 0x55,
+ 0x7e, 0x29, 0x02, 0x33, 0x61, 0xab, 0x90, 0xb4, 0xcd, 0x76, 0xd4, 0x86, 0xd9, 0xc9, 0x2c, 0xe7,
+ 0x21, 0xb9, 0x21, 0x70, 0x0e, 0x6c, 0x97, 0xeb, 0x07, 0xb4, 0xcb, 0xa8, 0xdb, 0x94, 0x30, 0xcc,
+ 0x99, 0x3e, 0x0d, 0xe3, 0xea, 0x71, 0x28, 0xcb, 0x7c, 0x2e, 0x06, 0x27, 0xe8, 0xa3, 0x2c, 0xab,
+ 0xa1, 0xe9, 0xce, 0xe9, 0x8a, 0xb5, 0x6f, 0x3a, 0x34, 0x71, 0x33, 0xb6, 0xb9, 0x5d, 0xc6, 0xbd,
+ 0xea, 0x39, 0x56, 0xdd, 0x61, 0xe4, 0x6c, 0x43, 0x7c, 0x8d, 0xd0, 0x11, 0x8b, 0x38, 0x86, 0xa3,
+ 0xd6, 0xb9, 0xa5, 0x58, 0x81, 0x40, 0xd9, 0x43, 0xae, 0x08, 0x83, 0x6a, 0xe2, 0x0d, 0x57, 0x1d,
+ 0xab, 0xdb, 0xec, 0x3e, 0x7c, 0x94, 0x0e, 0xa8, 0x04, 0x01, 0xd0, 0xab, 0xef, 0x93, 0x10, 0x57,
+ 0x9b, 0xec, 0x2a, 0x47, 0x94, 0x8c, 0x34, 0x5a, 0x90, 0x2f, 0xc1, 0x10, 0x3f, 0x50, 0x46, 0x69,
+ 0x88, 0xee, 0xe2, 0x7d, 0xda, 0x4e, 0x4a, 0x21, 0x3f, 0xd1, 0x1c, 0xc4, 0xa9, 0xf0, 0x7c, 0x02,
+ 0xc9, 0xcc, 0xb5, 0x48, 0x3f, 0x47, 0x85, 0x54, 0x18, 0x9a, 0xfc, 0x34, 0x24, 0x8a, 0x46, 0x43,
+ 0xd3, 0x8d, 0x20, 0xb7, 0x24, 0xe3, 0x46, 0x65, 0x36, 0x9b, 0x3c, 0xdf, 0x50, 0x58, 0x01, 0x4d,
+ 0xc1, 0x20, 0x7b, 0x1f, 0xc1, 0xaf, 0xa3, 0xf0, 0x92, 0x3c, 0x0f, 0x43, 0x94, 0xf7, 0xaa, 0x89,
+ 0x10, 0x7f, 0x59, 0xc7, 0x1f, 0x62, 0xd0, 0xd4, 0x94, 0xb3, 0x8f, 0x78, 0xc2, 0x22, 0x88, 0x55,
+ 0x55, 0x47, 0xe5, 0x7a, 0xd3, 0xdf, 0xf2, 0x5b, 0x20, 0xc1, 0x99, 0xd8, 0xe8, 0x0c, 0x44, 0x0d,
+ 0xd3, 0xe6, 0x17, 0x4a, 0xb2, 0x9d, 0x54, 0x59, 0x35, 0x0b, 0x31, 0x92, 0xa9, 0x28, 0x04, 0xb9,
+ 0xa0, 0x74, 0x0c, 0xaa, 0x4f, 0xf8, 0x82, 0xaa, 0xaf, 0xcb, 0x7d, 0x3f, 0x59, 0x97, 0xb6, 0xb8,
+ 0x83, 0xeb, 0x2c, 0x9f, 0x8e, 0xc0, 0xb4, 0xaf, 0xf6, 0x0a, 0xb6, 0x6c, 0xcd, 0xd0, 0xf9, 0x7c,
+ 0xce, 0xbc, 0x05, 0xf9, 0x84, 0xe4, 0xf5, 0x1d, 0xdc, 0xe5, 0xcd, 0x10, 0xcd, 0x9b, 0x26, 0xca,
+ 0x42, 0x82, 0x96, 0x2b, 0x06, 0xf3, 0x97, 0x98, 0xe2, 0x96, 0x49, 0x9d, 0x6d, 0x6c, 0x3b, 0x57,
+ 0x55, 0xcb, 0x7d, 0x42, 0x28, 0xca, 0xf2, 0x93, 0x90, 0x9c, 0x37, 0x74, 0x1b, 0xeb, 0x76, 0x93,
+ 0x8e, 0xc1, 0xad, 0xba, 0x51, 0xd9, 0xe5, 0x1c, 0x58, 0x81, 0x18, 0x5c, 0x35, 0x4d, 0x4a, 0x19,
+ 0x53, 0xc8, 0x4f, 0x96, 0x1b, 0x16, 0xd6, 0x3b, 0x9a, 0xe8, 0xc9, 0x83, 0x9b, 0x88, 0x2b, 0xe9,
+ 0xda, 0xe8, 0x7f, 0x4a, 0x70, 0xbc, 0x75, 0x40, 0xed, 0xe2, 0x7d, 0xfb, 0xa0, 0xe3, 0xe9, 0x39,
+ 0x48, 0xae, 0xd1, 0x77, 0xfc, 0x97, 0xf0, 0x3e, 0xca, 0xc2, 0x10, 0xae, 0x9e, 0x39, 0x7b, 0xf6,
+ 0x91, 0x27, 0x99, 0xb7, 0x5f, 0x1c, 0x50, 0x04, 0x00, 0x4d, 0x43, 0xd2, 0xc6, 0x15, 0xf3, 0xcc,
+ 0xd9, 0x73, 0xbb, 0x8f, 0x30, 0xf7, 0x22, 0x19, 0x90, 0x0b, 0xca, 0x25, 0x88, 0xd6, 0xdf, 0xfb,
+ 0xf4, 0x8c, 0x54, 0x88, 0x43, 0xd4, 0x6e, 0x36, 0x6e, 0xab, 0x8f, 0xbc, 0x12, 0x87, 0x59, 0x3f,
+ 0x25, 0x8d, 0x54, 0x6e, 0x56, 0xc2, 0x6d, 0x90, 0xf6, 0xd9, 0x80, 0x62, 0x74, 0x48, 0x66, 0xbb,
+ 0x5a, 0x52, 0xfe, 0x0d, 0x09, 0x52, 0x6e, 0xaa, 0xb4, 0x8e, 0x1d, 0x74, 0xde, 0x9f, 0xff, 0xf0,
+ 0x61, 0x73, 0x6c, 0x2e, 0xdc, 0x96, 0x97, 0xd2, 0x29, 0x3e, 0x74, 0xf4, 0x38, 0x75, 0x44, 0xd3,
+ 0xb0, 0xf9, 0xb3, 0xb2, 0x1e, 0xa4, 0x2e, 0x32, 0x7a, 0x10, 0x10, 0x8d, 0x70, 0xe5, 0x2b, 0x86,
+ 0xa3, 0xe9, 0xb5, 0xb2, 0x69, 0x5c, 0xe5, 0x8f, 0x75, 0xa3, 0x4a, 0x9a, 0xd6, 0x5c, 0xa6, 0x15,
+ 0x6b, 0x04, 0x4e, 0x84, 0x4e, 0xba, 0x5c, 0x82, 0xe9, 0x1d, 0x09, 0x02, 0xa2, 0x88, 0xce, 0xc3,
+ 0x90, 0xd9, 0xdc, 0x2a, 0x8b, 0x88, 0x31, 0x7c, 0xe6, 0x78, 0xbb, 0xf1, 0x2f, 0xfc, 0x83, 0x47,
+ 0x80, 0x41, 0xb3, 0xb9, 0x45, 0xbc, 0xe5, 0x4e, 0x48, 0xb5, 0x11, 0x66, 0xf8, 0x8a, 0x27, 0x07,
+ 0xfd, 0x7c, 0x04, 0xd7, 0xa0, 0x6c, 0x5a, 0x9a, 0x61, 0x69, 0xce, 0x3e, 0xcd, 0x5f, 0xa3, 0x4a,
+ 0x5a, 0x54, 0xac, 0x71, 0xb8, 0xbc, 0x0b, 0x63, 0xeb, 0x74, 0x7d, 0xeb, 0x49, 0x7e, 0xd6, 0x93,
+ 0x4f, 0xea, 0x2d, 0x5f, 0x47, 0xc9, 0x22, 0x2d, 0x92, 0x15, 0x9e, 0xe9, 0xe8, 0x9d, 0x8f, 0x1f,
+ 0xdc, 0x3b, 0x83, 0x19, 0xe2, 0x1f, 0x1d, 0x0d, 0x0c, 0x4e, 0xe6, 0x9c, 0xfe, 0xf0, 0xd5, 0xaf,
+ 0x63, 0xf6, 0xca, 0x26, 0xb2, 0xdd, 0x27, 0xd5, 0x6c, 0x8f, 0x30, 0x9a, 0xed, 0x39, 0x84, 0xe4,
+ 0x27, 0x61, 0x64, 0x4d, 0xb5, 0x9c, 0x75, 0xec, 0x5c, 0xc4, 0x6a, 0x15, 0x5b, 0xc1, 0x59, 0x77,
+ 0x44, 0xcc, 0xba, 0x08, 0x62, 0x74, 0x6a, 0x65, 0xb3, 0x0e, 0xfd, 0x2d, 0xef, 0x40, 0x8c, 0xde,
+ 0x0c, 0x75, 0x67, 0x64, 0x4e, 0xc1, 0x66, 0x64, 0x12, 0x4b, 0xf7, 0x1d, 0x6c, 0x8b, 0xf4, 0x96,
+ 0x16, 0xd0, 0x63, 0x62, 0x5e, 0x8d, 0x76, 0x9f, 0x57, 0xb9, 0x23, 0xf2, 0xd9, 0xb5, 0x0e, 0x43,
+ 0x05, 0x12, 0x8a, 0x17, 0x8b, 0xae, 0x20, 0x92, 0x27, 0x08, 0x5a, 0x86, 0x31, 0x53, 0xb5, 0x1c,
+ 0xfa, 0x24, 0x66, 0x87, 0x6a, 0xc1, 0x7d, 0x7d, 0xa6, 0x75, 0xe4, 0x05, 0x94, 0xe5, 0xad, 0x8c,
+ 0x98, 0x7e, 0xa0, 0xfc, 0xef, 0x63, 0x30, 0xc8, 0x8d, 0xf1, 0x66, 0x18, 0xe2, 0x66, 0xe5, 0xde,
+ 0x79, 0x62, 0xae, 0x75, 0x62, 0x9a, 0x73, 0x27, 0x10, 0xce, 0x4f, 0xd0, 0xa0, 0x7b, 0x21, 0x51,
+ 0xd9, 0x51, 0x35, 0xbd, 0xac, 0x55, 0xc5, 0x56, 0xc3, 0x6b, 0x37, 0x66, 0x86, 0xe6, 0x09, 0x6c,
+ 0xb1, 0xa8, 0x0c, 0xd1, 0xca, 0xc5, 0x2a, 0xc9, 0x04, 0x76, 0xb0, 0x56, 0xdb, 0x71, 0xf8, 0x08,
+ 0xe3, 0x25, 0xf4, 0x04, 0xc4, 0x88, 0x43, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9,
+ 0x2b, 0x24, 0x48, 0xc3, 0x1f, 0xfe, 0xce, 0x8c, 0xa4, 0x50, 0x0a, 0x34, 0x0f, 0x23, 0x75, 0xd5,
+ 0x76, 0xca, 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0xc5, 0x20, 0xdc, 0xb0, 0x5c, 0xf4,
+ 0x61, 0x42, 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5,
+ 0x56, 0x83, 0xd4, 0xee, 0xa3, 0x04, 0x3e, 0x4f, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44,
+ 0x8b, 0xa2, 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc1, 0x98, 0x17, 0x1f, 0x19, 0x4a,
+ 0x82, 0x71, 0xf1, 0xc0, 0x14, 0xf1, 0x61, 0x98, 0xd4, 0xf1, 0x1e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e,
+ 0x52, 0x6c, 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x81, 0xd1, 0x8a, 0x30, 0x3e, 0xc3, 0x05, 0x8a,
+ 0x3b, 0xe2, 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d,
+ 0x5a, 0x75, 0x0a, 0xc6, 0xa9, 0x8e, 0x16, 0xb6, 0x9b, 0x75, 0x87, 0x33, 0x49, 0x51, 0x9c, 0x31,
+ 0x52, 0xa1, 0x30, 0x38, 0xc5, 0xbd, 0x0b, 0x46, 0xf0, 0x15, 0xad, 0x8a, 0xf5, 0x0a, 0x66, 0x78,
+ 0x23, 0x14, 0x2f, 0x25, 0x80, 0x14, 0xe9, 0x7e, 0x70, 0xe3, 0x5e, 0x59, 0xc4, 0xe4, 0x51, 0xc6,
+ 0x4f, 0xc0, 0xf3, 0x0c, 0x2c, 0x67, 0x20, 0x56, 0x54, 0x1d, 0x95, 0x24, 0x18, 0xce, 0x1e, 0x9b,
+ 0x68, 0x52, 0x0a, 0xf9, 0x29, 0x7f, 0x2f, 0x02, 0xb1, 0xcb, 0x86, 0x83, 0xd1, 0xa3, 0xbe, 0x04,
+ 0x70, 0xb4, 0x9d, 0x3f, 0xaf, 0x6b, 0x35, 0x1d, 0x57, 0x97, 0xed, 0x9a, 0xef, 0x7b, 0x0a, 0x9e,
+ 0x3b, 0x45, 0x02, 0xee, 0x34, 0x09, 0x71, 0xcb, 0x68, 0xea, 0x55, 0x71, 0x93, 0x97, 0x16, 0x50,
+ 0x09, 0x12, 0xae, 0x97, 0xc4, 0x7a, 0x79, 0xc9, 0x18, 0xf1, 0x12, 0xe2, 0xc3, 0x1c, 0xa0, 0x0c,
+ 0x6d, 0x71, 0x67, 0x29, 0x40, 0xd2, 0x0d, 0x5e, 0xdc, 0xdb, 0xfa, 0x73, 0x58, 0x8f, 0x8c, 0x4c,
+ 0x26, 0x6e, 0xdf, 0xbb, 0xc6, 0x63, 0x1e, 0x97, 0x76, 0x2b, 0xb8, 0xf5, 0x02, 0x6e, 0xc5, 0xbf,
+ 0xed, 0x30, 0x44, 0xf5, 0xf2, 0xdc, 0x8a, 0x7d, 0xdf, 0xe1, 0x38, 0x24, 0x6d, 0xad, 0xa6, 0xab,
+ 0x4e, 0xd3, 0xc2, 0xdc, 0xf3, 0x3c, 0x80, 0xfc, 0x55, 0x09, 0x06, 0x99, 0x27, 0xfb, 0xec, 0x26,
+ 0xb5, 0xb7, 0x5b, 0xa4, 0x93, 0xdd, 0xa2, 0x87, 0xb7, 0x5b, 0x1e, 0xc0, 0x15, 0xc6, 0xe6, 0x4f,
+ 0xee, 0xdb, 0x64, 0x0c, 0x4c, 0xc4, 0x75, 0xad, 0xc6, 0x07, 0xaa, 0x8f, 0x48, 0xfe, 0xb7, 0x12,
+ 0x49, 0x62, 0x79, 0x3d, 0xca, 0xc3, 0x88, 0x90, 0xab, 0xbc, 0x5d, 0x57, 0x6b, 0xdc, 0x77, 0x4e,
+ 0x74, 0x14, 0xee, 0x42, 0x5d, 0xad, 0x29, 0xc3, 0x5c, 0x1e, 0x52, 0x68, 0xdf, 0x0f, 0x91, 0x0e,
+ 0xfd, 0x10, 0xe8, 0xf8, 0xe8, 0xe1, 0x3a, 0x3e, 0xd0, 0x45, 0xb1, 0x70, 0x17, 0x7d, 0x29, 0x42,
+ 0x17, 0x33, 0xa6, 0x61, 0xab, 0xf5, 0x9f, 0xc4, 0x88, 0x38, 0x06, 0x49, 0xd3, 0xa8, 0x97, 0x59,
+ 0x0d, 0xbb, 0xe1, 0x9e, 0x30, 0x8d, 0xba, 0xd2, 0xd2, 0xed, 0xf1, 0x5b, 0x34, 0x5c, 0x06, 0x6f,
+ 0x81, 0xd5, 0x86, 0xc2, 0x56, 0xb3, 0x20, 0xc5, 0x4c, 0xc1, 0xe7, 0xb2, 0x87, 0x89, 0x0d, 0xe8,
+ 0xe4, 0x28, 0xb5, 0xce, 0xbd, 0x4c, 0x6c, 0x86, 0xa9, 0x70, 0x3c, 0x42, 0xc1, 0x42, 0x7f, 0xbb,
+ 0x55, 0xb0, 0xdf, 0x2d, 0x15, 0x8e, 0x27, 0xff, 0x55, 0x09, 0x60, 0x89, 0x58, 0x96, 0xea, 0x4b,
+ 0x66, 0x21, 0x9b, 0x8a, 0x50, 0x0e, 0xb4, 0x3c, 0xdd, 0xa9, 0xd3, 0x78, 0xfb, 0x29, 0xdb, 0x2f,
+ 0xf7, 0x3c, 0x8c, 0x78, 0xce, 0x68, 0x63, 0x21, 0xcc, 0x74, 0x97, 0xac, 0x7a, 0x1d, 0x3b, 0x4a,
+ 0xea, 0x8a, 0xaf, 0x24, 0xff, 0x63, 0x09, 0x92, 0x54, 0xa6, 0x65, 0xec, 0xa8, 0x81, 0x3e, 0x94,
+ 0x0e, 0xdf, 0x87, 0x27, 0x00, 0x18, 0x1b, 0x5b, 0xbb, 0x86, 0xb9, 0x67, 0x25, 0x29, 0x64, 0x5d,
+ 0xbb, 0x86, 0xd1, 0x39, 0xd7, 0xe0, 0xd1, 0xee, 0x06, 0x17, 0x59, 0x37, 0x37, 0xfb, 0x1d, 0x30,
+ 0x44, 0x3f, 0x51, 0xb5, 0x67, 0xf3, 0x44, 0x7a, 0x50, 0x6f, 0x36, 0x36, 0xf6, 0x6c, 0xf9, 0x05,
+ 0x18, 0xda, 0xd8, 0x63, 0x7b, 0x23, 0xc7, 0x20, 0x69, 0x19, 0x06, 0x9f, 0x93, 0x59, 0x2e, 0x94,
+ 0x20, 0x00, 0x3a, 0x05, 0x89, 0xfd, 0x80, 0x88, 0xb7, 0x1f, 0xe0, 0x6d, 0x68, 0x44, 0xfb, 0xda,
+ 0xd0, 0x38, 0xf5, 0xaf, 0x25, 0x18, 0xf6, 0xc5, 0x07, 0xf4, 0x08, 0x1c, 0x29, 0x2c, 0xad, 0xce,
+ 0x5f, 0x2a, 0x2f, 0x16, 0xcb, 0x17, 0x96, 0xf2, 0x0b, 0xde, 0x1b, 0xae, 0xec, 0xd4, 0xcb, 0xd7,
+ 0x67, 0x91, 0x0f, 0x77, 0x53, 0xa7, 0x3b, 0x4a, 0xe8, 0x34, 0x4c, 0x06, 0x49, 0xf2, 0x85, 0xf5,
+ 0xd2, 0xca, 0x46, 0x5a, 0xca, 0x1e, 0x79, 0xf9, 0xfa, 0xec, 0xb8, 0x8f, 0x22, 0xbf, 0x65, 0x63,
+ 0xdd, 0x69, 0x25, 0x98, 0x5f, 0x5d, 0x5e, 0x5e, 0xdc, 0x48, 0x47, 0x5a, 0x08, 0x78, 0xc0, 0xbe,
+ 0x1f, 0xc6, 0x83, 0x04, 0x2b, 0x8b, 0x4b, 0xe9, 0x68, 0x16, 0xbd, 0x7c, 0x7d, 0x76, 0xd4, 0x87,
+ 0xbd, 0xa2, 0xd5, 0xb3, 0x89, 0x0f, 0x7e, 0x66, 0x7a, 0xe0, 0x57, 0x7f, 0x65, 0x5a, 0x22, 0x9a,
+ 0x8d, 0x04, 0x62, 0x04, 0x7a, 0x10, 0xee, 0x58, 0x5f, 0x5c, 0x58, 0x29, 0x15, 0xcb, 0xcb, 0xeb,
+ 0x0b, 0x62, 0x0f, 0x5a, 0x68, 0x37, 0xf6, 0xf2, 0xf5, 0xd9, 0x61, 0xae, 0x52, 0x27, 0xec, 0x35,
+ 0xa5, 0x74, 0x79, 0x75, 0xa3, 0x94, 0x96, 0x18, 0xf6, 0x9a, 0x85, 0xaf, 0x18, 0x0e, 0xfb, 0x86,
+ 0xdd, 0xc3, 0x70, 0xb4, 0x0d, 0xb6, 0xab, 0xd8, 0xf8, 0xcb, 0xd7, 0x67, 0x47, 0xd6, 0x2c, 0xcc,
+ 0xc6, 0x0f, 0xa5, 0x98, 0x83, 0x4c, 0x2b, 0xc5, 0xea, 0xda, 0xea, 0x7a, 0x7e, 0x29, 0x3d, 0x9b,
+ 0x4d, 0xbf, 0x7c, 0x7d, 0x36, 0x25, 0x82, 0x21, 0xdd, 0xe8, 0x77, 0x35, 0xbb, 0x9d, 0x2b, 0x9e,
+ 0x3f, 0x79, 0x08, 0xee, 0xee, 0x70, 0xc6, 0x24, 0x4e, 0x27, 0x0e, 0x75, 0xca, 0xd4, 0x71, 0x9f,
+ 0x3d, 0xdb, 0x63, 0xfb, 0xb9, 0xf7, 0xd2, 0xe9, 0xf0, 0x27, 0x58, 0xd9, 0xae, 0x8b, 0x3b, 0xf9,
+ 0x43, 0x12, 0x8c, 0x5e, 0xd4, 0x6c, 0xc7, 0xb0, 0xb4, 0x8a, 0x5a, 0xa7, 0x2f, 0xb7, 0xce, 0xf5,
+ 0x1b, 0x5b, 0x43, 0x43, 0xfd, 0x29, 0x18, 0xbc, 0xa2, 0xd6, 0x59, 0x50, 0x8b, 0xd2, 0x0f, 0xcd,
+ 0x74, 0x38, 0xf2, 0x71, 0x43, 0x9b, 0x60, 0xc0, 0xc8, 0xe4, 0x5f, 0x8f, 0xc0, 0x18, 0x1d, 0x0c,
+ 0x36, 0xfb, 0x04, 0x19, 0x59, 0x63, 0x15, 0x20, 0x66, 0xa9, 0x0e, 0xdf, 0x34, 0x2c, 0xcc, 0xf1,
+ 0xd3, 0xc7, 0x7b, 0xfb, 0x38, 0x4b, 0x2b, 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0x3b, 0x20, 0xd1, 0x50,
+ 0xf7, 0xca, 0x94, 0x0f, 0x5b, 0xb9, 0xe4, 0x0f, 0xc6, 0xe7, 0xe6, 0x8d, 0x99, 0xb1, 0x7d, 0xb5,
+ 0x51, 0xcf, 0xc9, 0x82, 0x8f, 0xac, 0x0c, 0x35, 0xd4, 0x3d, 0x22, 0x22, 0x32, 0x61, 0x8c, 0x40,
+ 0x2b, 0x3b, 0xaa, 0x5e, 0xc3, 0xac, 0x11, 0xba, 0x05, 0x5a, 0xb8, 0x78, 0xe0, 0x46, 0xa6, 0xbc,
+ 0x46, 0x7c, 0xec, 0x64, 0x65, 0xa4, 0xa1, 0xee, 0xcd, 0x53, 0x00, 0x69, 0x31, 0x97, 0xf8, 0xd8,
+ 0xab, 0x33, 0x03, 0xf4, 0x44, 0xf7, 0xdb, 0x12, 0x80, 0x67, 0x31, 0xf4, 0x0e, 0x48, 0x57, 0xdc,
+ 0x12, 0xa5, 0x15, 0x67, 0x93, 0xf7, 0x75, 0xea, 0x8b, 0x90, 0xbd, 0xd9, 0xdc, 0xfc, 0xad, 0x1b,
+ 0x33, 0x92, 0x32, 0x56, 0x09, 0x75, 0xc5, 0xdb, 0x61, 0xb8, 0x69, 0x56, 0x55, 0x07, 0x97, 0xe9,
+ 0x3a, 0x2e, 0xd2, 0x73, 0x9e, 0x9f, 0x26, 0xbc, 0x6e, 0xde, 0x98, 0x41, 0x4c, 0x2d, 0x1f, 0xb1,
+ 0x4c, 0x67, 0x7f, 0x60, 0x10, 0x42, 0xe0, 0xd3, 0xe9, 0x1b, 0x12, 0x0c, 0x17, 0x7d, 0x77, 0x2a,
+ 0x33, 0x30, 0xd4, 0x30, 0x74, 0x6d, 0x97, 0xfb, 0x63, 0x52, 0x11, 0x45, 0x94, 0x85, 0x04, 0x7b,
+ 0xcc, 0xea, 0xec, 0x8b, 0xad, 0x50, 0x51, 0x26, 0x54, 0x57, 0xf1, 0x96, 0xad, 0x89, 0xde, 0x50,
+ 0x44, 0x11, 0x5d, 0x80, 0xb4, 0x8d, 0x2b, 0x4d, 0x4b, 0x73, 0xf6, 0xcb, 0x15, 0x43, 0x77, 0xd4,
+ 0x8a, 0xc3, 0x9e, 0x45, 0x16, 0x8e, 0xdd, 0xbc, 0x31, 0x73, 0x07, 0x93, 0x35, 0x8c, 0x21, 0x2b,
+ 0x63, 0x02, 0x34, 0xcf, 0x20, 0xa4, 0x85, 0x2a, 0x76, 0x54, 0xad, 0x6e, 0x67, 0xd8, 0xe5, 0x04,
+ 0x51, 0xf4, 0xe9, 0xf2, 0xf9, 0x21, 0xff, 0xc6, 0xd6, 0x05, 0x48, 0x1b, 0x26, 0xb6, 0x02, 0x89,
+ 0xa8, 0x14, 0x6e, 0x39, 0x8c, 0x21, 0x2b, 0x63, 0x02, 0x24, 0x92, 0x54, 0x87, 0x74, 0xb3, 0x58,
+ 0x28, 0x9a, 0xcd, 0x2d, 0x6f, 0x3f, 0x6c, 0xb2, 0xa5, 0x37, 0xf2, 0xfa, 0x7e, 0xe1, 0x51, 0x8f,
+ 0x7b, 0x98, 0x4e, 0xfe, 0xe6, 0x97, 0x1f, 0x9a, 0xe4, 0xae, 0xe1, 0xed, 0x4f, 0x5d, 0xc2, 0xfb,
+ 0xa4, 0xfb, 0x39, 0xea, 0x1a, 0xc5, 0x24, 0x69, 0xe7, 0x0b, 0xaa, 0x56, 0x17, 0xcf, 0xfb, 0x15,
+ 0x5e, 0x42, 0x39, 0x18, 0xb4, 0x1d, 0xd5, 0x69, 0xda, 0xfc, 0xa4, 0x57, 0xee, 0xe4, 0x6a, 0x05,
+ 0x43, 0xaf, 0xae, 0x53, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, 0xc8, 0x8f, 0xd0, 0xe3, 0x07, 0x1e,
+ 0xdf, 0xf4, 0xae, 0x04, 0xa3, 0x26, 0x16, 0xa9, 0xe2, 0x3a, 0xae, 0xb1, 0xb4, 0x6a, 0x47, 0x25,
+ 0xab, 0x0f, 0xfa, 0xed, 0xbd, 0xc2, 0xe2, 0x81, 0x07, 0x21, 0xb7, 0x54, 0x98, 0x9f, 0xac, 0x8c,
+ 0xb9, 0xa0, 0x75, 0x0a, 0x41, 0x97, 0x02, 0x97, 0x7f, 0xf9, 0x07, 0x2a, 0xef, 0xea, 0xa4, 0xbe,
+ 0xcf, 0xa7, 0xc5, 0xfe, 0x84, 0xff, 0xea, 0xf0, 0x05, 0x48, 0x37, 0xf5, 0x2d, 0x43, 0xa7, 0x6f,
+ 0x70, 0x79, 0x7e, 0x4f, 0xd6, 0x77, 0x51, 0xbf, 0x73, 0x84, 0x31, 0x64, 0x65, 0xcc, 0x05, 0x5d,
+ 0x64, 0xab, 0x80, 0x2a, 0x8c, 0x7a, 0x58, 0x74, 0xa0, 0x26, 0x7b, 0x0e, 0xd4, 0x3b, 0xf9, 0x40,
+ 0x3d, 0x12, 0x6e, 0xc5, 0x1b, 0xab, 0x23, 0x2e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x5e, 0x78, 0xa0,
+ 0xfb, 0x14, 0xc3, 0x9d, 0x3b, 0xde, 0x8b, 0x31, 0x62, 0xbd, 0xe7, 0xd1, 0xa2, 0x77, 0xc1, 0x44,
+ 0x43, 0xd3, 0xcb, 0x36, 0xae, 0x6f, 0x97, 0xb9, 0x81, 0x09, 0x4b, 0xfa, 0x09, 0xa5, 0xc2, 0xd2,
+ 0xc1, 0xfc, 0xe1, 0xe6, 0x8d, 0x99, 0x2c, 0x0f, 0xa1, 0xad, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0xe9,
+ 0xeb, 0xb8, 0xbe, 0x5d, 0x74, 0x61, 0xb9, 0xd4, 0x07, 0x5f, 0x9d, 0x19, 0xe0, 0xc3, 0x75, 0x40,
+ 0x3e, 0x47, 0xf7, 0xce, 0xf9, 0x30, 0xc3, 0x36, 0x59, 0x93, 0xa8, 0xa2, 0xc0, 0xaf, 0x1a, 0x78,
+ 0x00, 0x36, 0xcc, 0x5f, 0xfa, 0x83, 0x59, 0x49, 0xfe, 0xbc, 0x04, 0x83, 0xc5, 0xcb, 0x6b, 0xaa,
+ 0x66, 0xa1, 0x45, 0x18, 0xf7, 0x3c, 0x27, 0x38, 0xc8, 0x8f, 0xdf, 0xbc, 0x31, 0x93, 0x09, 0x3b,
+ 0x97, 0x3b, 0xca, 0x3d, 0x07, 0x16, 0xc3, 0x7c, 0xb1, 0xd3, 0xc2, 0x35, 0xc0, 0xaa, 0x05, 0x45,
+ 0x6e, 0x5d, 0xd6, 0x86, 0xd4, 0x2c, 0xc1, 0x10, 0x93, 0xd6, 0x46, 0x39, 0x88, 0x9b, 0xe4, 0x07,
+ 0x3f, 0x18, 0x98, 0xee, 0xe8, 0xbc, 0x14, 0xdf, 0xdd, 0xc8, 0x24, 0x24, 0xf2, 0x47, 0x22, 0x00,
+ 0xc5, 0xcb, 0x97, 0x37, 0x2c, 0xcd, 0xac, 0x63, 0xe7, 0x56, 0x6a, 0xbe, 0x01, 0x47, 0x7c, 0xab,
+ 0x24, 0xab, 0x12, 0xd2, 0x7e, 0xf6, 0xe6, 0x8d, 0x99, 0xe3, 0x61, 0xed, 0x7d, 0x68, 0xb2, 0x32,
+ 0xe1, 0xad, 0x97, 0xac, 0x4a, 0x5b, 0xae, 0x55, 0xdb, 0x71, 0xb9, 0x46, 0x3b, 0x73, 0xf5, 0xa1,
+ 0xf9, 0xb9, 0x16, 0x6d, 0xa7, 0xbd, 0x69, 0xd7, 0x61, 0xd8, 0x33, 0x89, 0x8d, 0x8a, 0x90, 0x70,
+ 0xf8, 0x6f, 0x6e, 0x61, 0xb9, 0xb3, 0x85, 0x05, 0x19, 0xb7, 0xb2, 0x4b, 0x29, 0xff, 0xa9, 0x04,
+ 0xe0, 0xf9, 0xec, 0xcf, 0xa6, 0x8b, 0x91, 0x50, 0xce, 0x03, 0x6f, 0xf4, 0x50, 0xa9, 0x1a, 0xa7,
+ 0x0e, 0xd9, 0xf3, 0xe7, 0x23, 0x30, 0xb1, 0x29, 0x22, 0xcf, 0xcf, 0xbc, 0x0d, 0xd6, 0x60, 0x08,
+ 0xeb, 0x8e, 0xa5, 0x51, 0x23, 0x90, 0xde, 0x7e, 0xb8, 0x53, 0x6f, 0xb7, 0xd1, 0x89, 0x7e, 0x44,
+ 0x4a, 0x6c, 0xba, 0x73, 0x36, 0x21, 0x6b, 0xfc, 0x62, 0x14, 0x32, 0x9d, 0x28, 0xd1, 0x3c, 0x8c,
+ 0x55, 0x2c, 0xcc, 0x2e, 0x5e, 0xf9, 0x77, 0xfe, 0x0a, 0x59, 0x2f, 0xb3, 0x0c, 0x21, 0xc8, 0xca,
+ 0xa8, 0x80, 0xf0, 0xd9, 0xa3, 0x06, 0x24, 0xed, 0x23, 0x6e, 0x47, 0xef, 0x6f, 0xf5, 0x97, 0xe7,
+ 0xc9, 0x7c, 0xfa, 0x10, 0x8d, 0x04, 0x19, 0xb0, 0xf9, 0x63, 0xd4, 0x83, 0xd2, 0x09, 0xe4, 0x45,
+ 0x18, 0xd3, 0x74, 0xcd, 0xd1, 0xd4, 0x7a, 0x79, 0x4b, 0xad, 0xab, 0x7a, 0xe5, 0x30, 0x59, 0x33,
+ 0x0b, 0xf9, 0xbc, 0xd9, 0x10, 0x3b, 0x59, 0x19, 0xe5, 0x90, 0x02, 0x03, 0xa0, 0x8b, 0x30, 0x24,
+ 0x9a, 0x8a, 0x1d, 0x2a, 0xdb, 0x10, 0xe4, 0xbe, 0x04, 0xef, 0x17, 0xa2, 0x30, 0xae, 0xe0, 0xea,
+ 0xff, 0xeb, 0x8a, 0x83, 0x75, 0xc5, 0x32, 0x00, 0x1b, 0xee, 0x24, 0xc0, 0x1e, 0xa2, 0x37, 0x48,
+ 0xc0, 0x48, 0x32, 0x0e, 0x45, 0xdb, 0xf1, 0xf5, 0xc7, 0x8d, 0x08, 0xa4, 0xfc, 0xfd, 0xf1, 0xe7,
+ 0x74, 0x56, 0x42, 0x8b, 0x5e, 0x24, 0x8a, 0xf1, 0x4f, 0xef, 0x76, 0x88, 0x44, 0x2d, 0xde, 0xdb,
+ 0x3d, 0x04, 0xfd, 0xb7, 0x08, 0x0c, 0xae, 0xa9, 0x96, 0xda, 0xb0, 0x51, 0xa5, 0x25, 0xd3, 0x14,
+ 0xdb, 0x8f, 0x2d, 0x1f, 0x58, 0xe7, 0xbb, 0x1d, 0x3d, 0x12, 0xcd, 0x8f, 0xb5, 0x49, 0x34, 0xdf,
+ 0x0a, 0xa3, 0x64, 0x39, 0xec, 0xbb, 0xc2, 0x40, 0xac, 0x3d, 0x52, 0x38, 0xea, 0x71, 0x09, 0xd6,
+ 0xb3, 0xd5, 0xf2, 0x65, 0xff, 0x1d, 0x86, 0x61, 0x82, 0xe1, 0x05, 0x66, 0x42, 0x3e, 0xe5, 0x2d,
+ 0x4b, 0x7d, 0x95, 0xb2, 0x02, 0x0d, 0x75, 0xaf, 0xc4, 0x0a, 0x68, 0x09, 0xd0, 0x8e, 0xbb, 0x33,
+ 0x52, 0xf6, 0xcc, 0x49, 0xe8, 0x4f, 0xdc, 0xbc, 0x31, 0x73, 0x94, 0xd1, 0xb7, 0xe2, 0xc8, 0xca,
+ 0xb8, 0x07, 0x14, 0xdc, 0x1e, 0x03, 0x20, 0x7a, 0x95, 0xd9, 0x15, 0x6e, 0xb6, 0xdc, 0x39, 0x72,
+ 0xf3, 0xc6, 0xcc, 0x38, 0xe3, 0xe2, 0xd5, 0xc9, 0x4a, 0x92, 0x14, 0x8a, 0xe4, 0xb7, 0xcf, 0xb3,
+ 0x3f, 0x23, 0x01, 0xf2, 0x42, 0xbe, 0x82, 0x6d, 0x93, 0xac, 0xcf, 0x48, 0x22, 0xee, 0xcb, 0x9a,
+ 0xa5, 0xee, 0x89, 0xb8, 0x47, 0x2f, 0x12, 0x71, 0xdf, 0x48, 0x79, 0xd2, 0x0b, 0x8f, 0x91, 0x5e,
+ 0xf7, 0x99, 0xb9, 0x8b, 0x84, 0xe3, 0xe1, 0x80, 0xfc, 0x4f, 0x25, 0x38, 0xda, 0xe2, 0x51, 0xae,
+ 0xb0, 0xff, 0x1f, 0x20, 0xcb, 0x57, 0xc9, 0xbf, 0xa3, 0xc8, 0x84, 0x3e, 0xb0, 0x83, 0x8e, 0x5b,
+ 0x2d, 0x71, 0xf7, 0xd6, 0x45, 0x78, 0x76, 0x61, 0xfe, 0x1f, 0x49, 0x30, 0xe9, 0x6f, 0xde, 0x55,
+ 0x64, 0x05, 0x52, 0xfe, 0xd6, 0xb9, 0x0a, 0x77, 0xf7, 0xa3, 0x02, 0x97, 0x3e, 0x40, 0x8f, 0x9e,
+ 0xf1, 0x86, 0x2b, 0xdb, 0x3b, 0x7b, 0xa4, 0x6f, 0x6b, 0x08, 0x99, 0xc2, 0xc3, 0x36, 0x46, 0xfb,
+ 0xe3, 0x7f, 0x4b, 0x10, 0x5b, 0x33, 0x8c, 0x3a, 0x32, 0x60, 0x5c, 0x37, 0x9c, 0x32, 0xf1, 0x2c,
+ 0x5c, 0xf5, 0xdf, 0x5b, 0x4f, 0x16, 0xe6, 0x0f, 0x66, 0xa4, 0xef, 0xdf, 0x98, 0x69, 0x65, 0xa5,
+ 0x8c, 0xe9, 0x86, 0x53, 0xa0, 0x10, 0x7e, 0x75, 0xfd, 0x5d, 0x30, 0x12, 0x6c, 0x8c, 0x45, 0xc9,
+ 0x67, 0x0f, 0xdc, 0x58, 0x90, 0xcd, 0xcd, 0x1b, 0x33, 0x93, 0xde, 0x88, 0x71, 0xc1, 0xb2, 0x92,
+ 0xda, 0xf2, 0xb5, 0xce, 0xae, 0x77, 0xfd, 0xf0, 0xd5, 0x19, 0xe9, 0xd4, 0x57, 0x24, 0x00, 0x6f,
+ 0xe7, 0x01, 0x3d, 0x08, 0x77, 0x14, 0x56, 0x57, 0x8a, 0xe5, 0xf5, 0x8d, 0xfc, 0xc6, 0xe6, 0x7a,
+ 0xf0, 0x8e, 0xb7, 0xd8, 0x1e, 0xb7, 0x4d, 0x5c, 0xd1, 0xb6, 0x35, 0x5c, 0x45, 0xf7, 0xc2, 0x64,
+ 0x10, 0x9b, 0x94, 0x4a, 0xc5, 0xb4, 0x94, 0x4d, 0xbd, 0x7c, 0x7d, 0x36, 0xc1, 0x72, 0x31, 0x5c,
+ 0x45, 0x27, 0xe1, 0x48, 0x2b, 0xde, 0xe2, 0xca, 0x42, 0x3a, 0x92, 0x1d, 0x79, 0xf9, 0xfa, 0x6c,
+ 0xd2, 0x4d, 0xda, 0x90, 0x0c, 0xc8, 0x8f, 0xc9, 0xf9, 0x45, 0xb3, 0xf0, 0xf2, 0xf5, 0xd9, 0x41,
+ 0x66, 0xc0, 0x6c, 0xec, 0x83, 0x9f, 0x99, 0x1e, 0xb8, 0xe5, 0x37, 0xc1, 0xff, 0x78, 0xa8, 0xe3,
+ 0xae, 0x77, 0x0d, 0xeb, 0xd8, 0xd6, 0xec, 0x43, 0xed, 0x7a, 0xf7, 0xb5, 0x93, 0x2e, 0xff, 0x6e,
+ 0x1c, 0x52, 0x0b, 0xac, 0x15, 0xd2, 0x11, 0x18, 0xbd, 0x09, 0x06, 0x4d, 0x3a, 0x8d, 0xb8, 0xc7,
+ 0x68, 0x1d, 0x1c, 0x9e, 0x4d, 0x36, 0xee, 0x5d, 0x2e, 0x36, 0xf5, 0xd8, 0xfc, 0x32, 0x07, 0xbb,
+ 0x63, 0xe6, 0xdd, 0x9a, 0x4a, 0x1d, 0x68, 0xbf, 0x87, 0xe5, 0x2c, 0x7c, 0x6b, 0x25, 0xcc, 0x4f,
+ 0x66, 0xf7, 0x42, 0x36, 0x08, 0x84, 0xdd, 0x0e, 0x7b, 0xbf, 0x04, 0x47, 0x28, 0x96, 0x37, 0x11,
+ 0x53, 0x4c, 0x91, 0xec, 0x9f, 0xea, 0xa4, 0xc2, 0x92, 0x6a, 0x7b, 0x77, 0x3d, 0xd8, 0x7d, 0xae,
+ 0xbb, 0xf9, 0x44, 0x78, 0xdc, 0xd7, 0x78, 0x98, 0xad, 0xac, 0x4c, 0xd4, 0x5b, 0x28, 0x6d, 0xb4,
+ 0x10, 0xb8, 0xd0, 0x17, 0x3b, 0xd8, 0x56, 0xbb, 0xff, 0x72, 0xdf, 0xd3, 0x30, 0xec, 0xc5, 0x12,
+ 0x9b, 0xff, 0xdf, 0x97, 0xfe, 0xe7, 0x0e, 0x3f, 0x31, 0xfa, 0x80, 0x04, 0x47, 0xbc, 0xd9, 0xdc,
+ 0xcf, 0x96, 0xfd, 0x7f, 0x9c, 0x07, 0x0e, 0xb0, 0x10, 0x0a, 0x1b, 0xa7, 0x2d, 0x5f, 0x59, 0x99,
+ 0x6c, 0xb6, 0x92, 0x92, 0x25, 0xd8, 0x88, 0x3f, 0xb2, 0xda, 0x19, 0xf1, 0x09, 0xc8, 0xfe, 0x43,
+ 0x73, 0x90, 0x01, 0xfb, 0x9f, 0x1d, 0xa6, 0x61, 0x39, 0xb8, 0x4a, 0x37, 0xe4, 0x12, 0x8a, 0x5b,
+ 0x96, 0x57, 0x00, 0xb5, 0x76, 0x6e, 0xf8, 0x02, 0xa3, 0xf7, 0x3e, 0x05, 0x4d, 0x42, 0xdc, 0x7f,
+ 0xc5, 0x8f, 0x15, 0x72, 0x89, 0x0f, 0xf2, 0xe9, 0xf3, 0x96, 0x8f, 0xf9, 0xef, 0x44, 0xe0, 0x94,
+ 0xff, 0x78, 0xe8, 0xc5, 0x26, 0xb6, 0xf6, 0xdd, 0x21, 0x6a, 0xaa, 0x35, 0x4d, 0xf7, 0xbf, 0x82,
+ 0x38, 0xea, 0x9f, 0xf0, 0x29, 0xae, 0xb0, 0x93, 0xfc, 0x41, 0x09, 0x86, 0xd7, 0xd4, 0x1a, 0x56,
+ 0xf0, 0x8b, 0x4d, 0x6c, 0x3b, 0x6d, 0x6e, 0x99, 0x4f, 0xc1, 0xa0, 0xb1, 0xbd, 0x2d, 0xce, 0xb4,
+ 0x63, 0x0a, 0x2f, 0x11, 0x9d, 0xeb, 0x5a, 0x43, 0x63, 0xd7, 0xc1, 0x62, 0x0a, 0x2b, 0xa0, 0x19,
+ 0x18, 0xae, 0x18, 0x4d, 0x9d, 0x0f, 0xb9, 0x4c, 0x4c, 0x7c, 0x6b, 0xa5, 0xa9, 0xb3, 0x21, 0x47,
+ 0x8c, 0x68, 0xe1, 0x2b, 0xd8, 0xb2, 0xd9, 0xd7, 0x25, 0x13, 0x8a, 0x28, 0xca, 0x4f, 0x41, 0x8a,
+ 0x49, 0xc2, 0x27, 0xe3, 0xa3, 0x90, 0xa0, 0x37, 0xad, 0x3c, 0x79, 0x86, 0x48, 0xf9, 0x12, 0xbb,
+ 0xab, 0xce, 0xf8, 0x33, 0x91, 0x58, 0xa1, 0x50, 0xe8, 0x68, 0xe5, 0x93, 0xbd, 0xa3, 0x06, 0xb3,
+ 0xa1, 0x6b, 0xe1, 0xdf, 0x8a, 0xc3, 0x11, 0x7e, 0x78, 0xa7, 0x9a, 0xda, 0xe9, 0x1d, 0xc7, 0x11,
+ 0x6f, 0x27, 0x80, 0x67, 0xc1, 0xaa, 0xa9, 0xc9, 0xfb, 0x10, 0xbb, 0xe8, 0x38, 0x26, 0x3a, 0x05,
+ 0x71, 0xab, 0x59, 0xc7, 0x62, 0x33, 0xc8, 0xdd, 0xae, 0x57, 0x4d, 0x6d, 0x8e, 0x20, 0x28, 0xcd,
+ 0x3a, 0x56, 0x18, 0x0a, 0x2a, 0xc1, 0xcc, 0x76, 0xb3, 0x5e, 0xdf, 0x2f, 0x57, 0x31, 0xfd, 0x77,
+ 0x59, 0xee, 0x3f, 0x9c, 0xc0, 0x7b, 0xa6, 0x2a, 0x3e, 0x5b, 0x49, 0x0c, 0x73, 0x9c, 0xa2, 0x15,
+ 0x29, 0x96, 0xf8, 0x67, 0x13, 0x25, 0x81, 0x23, 0xff, 0x7e, 0x04, 0x12, 0x82, 0x35, 0xbd, 0x3c,
+ 0x8e, 0xeb, 0xb8, 0xe2, 0x18, 0xe2, 0x30, 0xc5, 0x2d, 0x23, 0x04, 0xd1, 0x1a, 0xef, 0xbc, 0xe4,
+ 0xc5, 0x01, 0x85, 0x14, 0x08, 0xcc, 0xbd, 0xd2, 0x4f, 0x60, 0x66, 0x93, 0xf4, 0x67, 0xcc, 0x34,
+ 0xc4, 0xaa, 0xed, 0xe2, 0x80, 0x42, 0x4b, 0x28, 0x03, 0x83, 0x64, 0xd0, 0x38, 0xac, 0xb7, 0x08,
+ 0x9c, 0x97, 0xd1, 0x14, 0xc4, 0x4d, 0xd5, 0xa9, 0xb0, 0xdb, 0x76, 0xa4, 0x82, 0x15, 0xd1, 0xe3,
+ 0x30, 0xc8, 0x5e, 0x65, 0x87, 0xff, 0x17, 0x0d, 0x31, 0x06, 0xfb, 0xfc, 0x1d, 0x91, 0x7b, 0x4d,
+ 0x75, 0x1c, 0x6c, 0xe9, 0x84, 0x21, 0x43, 0x47, 0x08, 0x62, 0x5b, 0x46, 0x75, 0x9f, 0xff, 0x7f,
+ 0x1c, 0xfa, 0x9b, 0xff, 0x43, 0x0e, 0xea, 0x0f, 0x65, 0x5a, 0xc9, 0xfe, 0x2d, 0x58, 0x4a, 0x00,
+ 0x0b, 0x04, 0xa9, 0x04, 0x13, 0x6a, 0xb5, 0xaa, 0xb1, 0x7f, 0x55, 0x53, 0xde, 0xd2, 0x68, 0xf0,
+ 0xb0, 0xe9, 0x3f, 0x7d, 0xeb, 0xd4, 0x17, 0xc8, 0x23, 0x28, 0x70, 0xfc, 0x42, 0x12, 0x86, 0x4c,
+ 0x26, 0x94, 0x7c, 0x1e, 0xc6, 0x5b, 0x24, 0x25, 0xf2, 0xed, 0x6a, 0x7a, 0x55, 0xbc, 0x73, 0x20,
+ 0xbf, 0x09, 0x8c, 0x7e, 0xb0, 0x92, 0x1d, 0x53, 0xd1, 0xdf, 0x85, 0xf7, 0x76, 0x7e, 0x0e, 0x33,
+ 0xea, 0x7b, 0x0e, 0xa3, 0x9a, 0x5a, 0x21, 0x49, 0xf9, 0xf3, 0x47, 0x30, 0xf9, 0xd6, 0x47, 0x30,
+ 0x35, 0xac, 0x8b, 0x89, 0x99, 0x54, 0xa9, 0xa6, 0x66, 0x53, 0x77, 0xf4, 0x3e, 0xa0, 0x69, 0x9f,
+ 0xf7, 0xfd, 0xa6, 0x6f, 0x62, 0x62, 0x0b, 0xf9, 0xb5, 0x45, 0xd7, 0x8f, 0xbf, 0x16, 0x81, 0xe3,
+ 0x3e, 0x3f, 0xf6, 0x21, 0xb7, 0xba, 0x73, 0xb6, 0xbd, 0xc7, 0xf7, 0xf1, 0x36, 0xf9, 0x12, 0xc4,
+ 0x08, 0x3e, 0xea, 0xf1, 0xef, 0x32, 0x32, 0x5f, 0xf8, 0xe6, 0x3f, 0x94, 0x83, 0x07, 0x5a, 0x81,
+ 0x5e, 0xa1, 0x4c, 0x0a, 0x1f, 0xe8, 0xdf, 0x7e, 0x69, 0xef, 0xdb, 0xa1, 0xf6, 0xad, 0x33, 0x63,
+ 0xd8, 0x86, 0xaf, 0x9f, 0xed, 0xf8, 0x76, 0x95, 0x05, 0xd3, 0xee, 0xf9, 0xd5, 0x01, 0x22, 0x75,
+ 0xa7, 0xa7, 0x01, 0xdd, 0x7a, 0xb0, 0xcf, 0x4c, 0x6d, 0x0f, 0xa6, 0x9e, 0x21, 0x6d, 0x7b, 0x2b,
+ 0x68, 0x11, 0xf2, 0xa7, 0xdc, 0x83, 0x3e, 0x89, 0xff, 0xcf, 0x3d, 0x71, 0x88, 0x07, 0x9e, 0x7c,
+ 0x7c, 0xed, 0x78, 0xef, 0x5c, 0xc7, 0xa9, 0x64, 0xce, 0x37, 0x8d, 0x28, 0x3e, 0x4a, 0xf9, 0xd7,
+ 0x24, 0xb8, 0xa3, 0xa5, 0x69, 0x1e, 0xe3, 0x17, 0xda, 0xbc, 0x62, 0x38, 0x54, 0xd2, 0xb3, 0xd0,
+ 0x46, 0xd8, 0xfb, 0x7a, 0x0a, 0xcb, 0xa4, 0x08, 0x48, 0xfb, 0x16, 0x38, 0x12, 0x14, 0x56, 0x98,
+ 0xe9, 0x1e, 0x18, 0x0d, 0x6e, 0x16, 0x73, 0x73, 0x8d, 0x04, 0xb6, 0x8b, 0xe5, 0x72, 0xd8, 0xce,
+ 0xae, 0xae, 0x25, 0x48, 0xba, 0xa8, 0x3c, 0x3b, 0xee, 0x5b, 0x55, 0x8f, 0x52, 0xfe, 0x88, 0x04,
+ 0xb3, 0xc1, 0x16, 0x7c, 0x79, 0xd2, 0xc1, 0x84, 0xbd, 0x65, 0x5d, 0xfc, 0x3d, 0x09, 0xee, 0xec,
+ 0x22, 0x13, 0x37, 0xc0, 0x35, 0x98, 0xf4, 0x6d, 0x12, 0x88, 0x10, 0x2e, 0xba, 0xfd, 0x54, 0xef,
+ 0x0c, 0xd5, 0x5d, 0x13, 0x1f, 0x23, 0x46, 0xf9, 0xdc, 0x77, 0x66, 0x26, 0x5a, 0xeb, 0x6c, 0x65,
+ 0xa2, 0x75, 0x61, 0x7f, 0x0b, 0xfd, 0xe3, 0x15, 0x09, 0xee, 0x0f, 0xaa, 0xda, 0x26, 0xd5, 0xfd,
+ 0x69, 0xf5, 0xc3, 0xbf, 0x91, 0xe0, 0x54, 0x3f, 0xc2, 0xf1, 0x0e, 0xd9, 0x82, 0x09, 0x2f, 0x09,
+ 0x0f, 0xf7, 0xc7, 0x81, 0x52, 0x7b, 0xe6, 0xa5, 0xc8, 0xe5, 0x76, 0x1b, 0x0c, 0x6f, 0xf2, 0x81,
+ 0xe5, 0xef, 0x72, 0xd7, 0xc8, 0xc1, 0x8d, 0x5e, 0x61, 0xe4, 0xc0, 0x56, 0x6f, 0x9b, 0xbe, 0x88,
+ 0xb4, 0xe9, 0x0b, 0x2f, 0x6b, 0x97, 0xaf, 0xf0, 0xb8, 0xd5, 0x66, 0x7b, 0xee, 0xed, 0x30, 0xd1,
+ 0xc6, 0x95, 0xf9, 0xa8, 0x3e, 0x80, 0x27, 0x2b, 0xa8, 0xd5, 0x59, 0xe5, 0x7d, 0x98, 0xa1, 0xed,
+ 0xb6, 0x31, 0xf4, 0xed, 0x56, 0xb9, 0xc1, 0x63, 0x4b, 0xdb, 0xa6, 0xb9, 0xee, 0x8b, 0x30, 0xc8,
+ 0xfa, 0x99, 0xab, 0x7b, 0x08, 0x47, 0xe1, 0x0c, 0xe4, 0x4f, 0x88, 0x58, 0x56, 0x14, 0x62, 0xb7,
+ 0x1f, 0x43, 0xfd, 0xe8, 0x7a, 0x8b, 0xc6, 0x90, 0xcf, 0x18, 0xdf, 0x16, 0x51, 0xad, 0xbd, 0x74,
+ 0xdc, 0x1c, 0x95, 0x5b, 0x16, 0xd5, 0x98, 0x6d, 0x6e, 0x6f, 0xf8, 0xfa, 0x15, 0x11, 0xbe, 0x5c,
+ 0x9d, 0x7a, 0x84, 0xaf, 0x9f, 0x8e, 0xe9, 0xdd, 0x40, 0xd6, 0x43, 0xcc, 0x3f, 0x8b, 0x81, 0xec,
+ 0x87, 0x12, 0x1c, 0xa5, 0xba, 0xf9, 0xf7, 0x28, 0x0e, 0x6a, 0xf2, 0x07, 0x01, 0xd9, 0x56, 0xa5,
+ 0xdc, 0x76, 0x74, 0xa7, 0x6d, 0xab, 0x72, 0x39, 0x30, 0xbf, 0x3c, 0x08, 0xa8, 0x1a, 0xd8, 0x89,
+ 0xa2, 0xd8, 0xec, 0x02, 0x5d, 0xba, 0xea, 0xdb, 0xe8, 0x68, 0xd3, 0x9d, 0xb1, 0x5b, 0xd0, 0x9d,
+ 0xdf, 0x92, 0x20, 0xdb, 0x4e, 0x65, 0xde, 0x7d, 0x1a, 0x4c, 0x05, 0xce, 0x0f, 0xc2, 0x3d, 0xf8,
+ 0x60, 0x3f, 0xbb, 0x3c, 0xa1, 0x61, 0x74, 0xc4, 0xc2, 0xb7, 0x3b, 0x0f, 0x98, 0x09, 0x7a, 0x68,
+ 0x6b, 0x66, 0xfd, 0x53, 0x1b, 0x3e, 0x5f, 0x6e, 0x89, 0xab, 0x7f, 0x26, 0x72, 0xef, 0x3d, 0x98,
+ 0xee, 0x20, 0xf5, 0xed, 0x9e, 0xf7, 0x76, 0x3a, 0x76, 0xe6, 0xad, 0x4e, 0xdf, 0x1f, 0xe3, 0x23,
+ 0x21, 0x78, 0x39, 0xdb, 0xb7, 0x16, 0x6b, 0xf7, 0xba, 0x4b, 0x7e, 0x1b, 0x1c, 0x6b, 0x4b, 0xc5,
+ 0x65, 0xcb, 0x41, 0x6c, 0x47, 0xb3, 0x1d, 0x2e, 0xd6, 0xbd, 0x9d, 0xc4, 0x0a, 0x51, 0x53, 0x1a,
+ 0x19, 0x41, 0x9a, 0xb2, 0x5e, 0x33, 0x8c, 0x3a, 0x17, 0x43, 0xbe, 0x04, 0xe3, 0x3e, 0x18, 0x6f,
+ 0xe4, 0x1c, 0xc4, 0x4c, 0x83, 0x7f, 0xb9, 0x60, 0xf8, 0xcc, 0xf1, 0x8e, 0x1b, 0xfb, 0x86, 0x51,
+ 0xe7, 0x6a, 0x53, 0x7c, 0x79, 0x12, 0x10, 0x63, 0x46, 0xf7, 0xf8, 0x45, 0x13, 0xeb, 0x30, 0x11,
+ 0x80, 0xf2, 0x46, 0xde, 0xd0, 0xf9, 0xc1, 0x99, 0xef, 0x1f, 0x81, 0x38, 0xe5, 0x8a, 0x3e, 0x2e,
+ 0x05, 0x3e, 0x2d, 0x34, 0xd7, 0x89, 0x4d, 0xfb, 0x35, 0x71, 0xf6, 0x74, 0xdf, 0xf8, 0x3c, 0x67,
+ 0x3b, 0xf5, 0xde, 0x7f, 0xf9, 0xfa, 0x47, 0x23, 0x77, 0x23, 0xf9, 0x74, 0x87, 0xd5, 0xb8, 0x6f,
+ 0xbc, 0x7c, 0x36, 0xf0, 0x2c, 0xfe, 0xa1, 0xfe, 0x9a, 0x12, 0x92, 0xcd, 0xf5, 0x8b, 0xce, 0x05,
+ 0x3b, 0x4f, 0x05, 0x3b, 0x8b, 0x1e, 0xed, 0x2d, 0xd8, 0xe9, 0x77, 0x06, 0x07, 0xcd, 0xbb, 0xd1,
+ 0xef, 0x4a, 0x30, 0xd9, 0x6e, 0x49, 0x87, 0x9e, 0xe8, 0x4f, 0x8a, 0xd6, 0x94, 0x22, 0xfb, 0xe4,
+ 0x21, 0x28, 0xb9, 0x2a, 0x0b, 0x54, 0x95, 0x3c, 0x7a, 0xea, 0x10, 0xaa, 0x9c, 0xf6, 0x6f, 0xfd,
+ 0xff, 0x0f, 0x09, 0x4e, 0x74, 0x5d, 0x21, 0xa1, 0x7c, 0x7f, 0x52, 0x76, 0xc9, 0x9d, 0xb2, 0x85,
+ 0x37, 0xc2, 0x82, 0x6b, 0xfc, 0x0c, 0xd5, 0xf8, 0x12, 0x5a, 0x3c, 0x8c, 0xc6, 0x6d, 0xcf, 0x57,
+ 0xd0, 0x6f, 0x07, 0x2f, 0x1d, 0x76, 0x77, 0xa7, 0x96, 0x85, 0x47, 0x8f, 0x81, 0xd1, 0x9a, 0xd4,
+ 0xca, 0xcf, 0x51, 0x15, 0x14, 0xb4, 0xf6, 0x06, 0x3b, 0xed, 0xf4, 0x3b, 0x83, 0x81, 0xff, 0xdd,
+ 0xe8, 0xbf, 0x4b, 0xed, 0xef, 0x10, 0x3e, 0xde, 0x55, 0xc4, 0xce, 0x8b, 0xaa, 0xec, 0x13, 0x07,
+ 0x27, 0xe4, 0x4a, 0x36, 0xa8, 0x92, 0x35, 0x84, 0x6f, 0xb5, 0x92, 0x6d, 0x3b, 0x11, 0x7d, 0x43,
+ 0x82, 0xc9, 0x76, 0x6b, 0x92, 0x1e, 0xc3, 0xb2, 0xcb, 0x22, 0xab, 0xc7, 0xb0, 0xec, 0xb6, 0x00,
+ 0x92, 0xdf, 0x44, 0x95, 0x3f, 0x87, 0x1e, 0xeb, 0xa4, 0x7c, 0xd7, 0x5e, 0x24, 0x63, 0xb1, 0x6b,
+ 0x92, 0xdf, 0x63, 0x2c, 0xf6, 0xb3, 0x8e, 0xe9, 0x31, 0x16, 0xfb, 0x5a, 0x63, 0xf4, 0x1e, 0x8b,
+ 0xae, 0x66, 0x7d, 0x76, 0xa3, 0x8d, 0xbe, 0x26, 0xc1, 0x48, 0x20, 0x23, 0x46, 0x8f, 0x74, 0x15,
+ 0xb4, 0xdd, 0x82, 0x21, 0x7b, 0xe6, 0x20, 0x24, 0x5c, 0x97, 0x45, 0xaa, 0xcb, 0x3c, 0xca, 0x1f,
+ 0x46, 0x97, 0xe0, 0x31, 0xea, 0xb7, 0x24, 0x98, 0x68, 0x93, 0x65, 0xf6, 0x18, 0x85, 0x9d, 0x93,
+ 0xe6, 0xec, 0x13, 0x07, 0x27, 0xe4, 0x5a, 0x5d, 0xa0, 0x5a, 0xbd, 0x15, 0xbd, 0xe5, 0x30, 0x5a,
+ 0xf9, 0xe6, 0xe7, 0x1b, 0xde, 0x95, 0x2c, 0x5f, 0x3b, 0xe8, 0xdc, 0x01, 0x05, 0x13, 0x0a, 0x3d,
+ 0x7e, 0x60, 0x3a, 0xae, 0xcf, 0xb3, 0x54, 0x9f, 0x67, 0xd0, 0xea, 0x1b, 0xd3, 0xa7, 0x75, 0x5a,
+ 0xff, 0x52, 0xeb, 0xe3, 0xc0, 0xee, 0x5e, 0xd4, 0x36, 0x59, 0xcd, 0x3e, 0x7a, 0x20, 0x1a, 0xae,
+ 0xd4, 0x13, 0x54, 0xa9, 0x33, 0xe8, 0xe1, 0x4e, 0x4a, 0xf9, 0xee, 0xdd, 0x69, 0xfa, 0xb6, 0x71,
+ 0xfa, 0x9d, 0x2c, 0x05, 0x7e, 0x37, 0x7a, 0x8f, 0xb8, 0xf3, 0x74, 0xb2, 0x6b, 0xbb, 0xbe, 0x3c,
+ 0x36, 0x7b, 0x7f, 0x1f, 0x98, 0x5c, 0xae, 0xbb, 0xa9, 0x5c, 0xd3, 0xe8, 0x78, 0x27, 0xb9, 0x48,
+ 0x2e, 0x8b, 0x3e, 0x24, 0xb9, 0xd7, 0x24, 0x4f, 0x75, 0xe7, 0xed, 0x4f, 0x76, 0xb3, 0x0f, 0xf4,
+ 0x85, 0xcb, 0x25, 0xb9, 0x97, 0x4a, 0x32, 0x8b, 0xa6, 0x3b, 0x4a, 0xc2, 0x52, 0xdf, 0x5b, 0x7d,
+ 0xa9, 0xe0, 0x7f, 0x4d, 0xc1, 0x4c, 0x87, 0x16, 0x9d, 0xbd, 0x1e, 0x67, 0x5c, 0x5d, 0xde, 0xc8,
+ 0xf6, 0x7c, 0x03, 0x7b, 0xab, 0xbf, 0xed, 0xda, 0xe7, 0x81, 0xd8, 0xef, 0xc4, 0x00, 0x2d, 0xdb,
+ 0xb5, 0x79, 0x0b, 0xb3, 0xff, 0x33, 0xc9, 0x47, 0x79, 0xe8, 0xf1, 0x97, 0xf4, 0x86, 0x1e, 0x7f,
+ 0x2d, 0x07, 0x9e, 0x53, 0x45, 0x0e, 0xf6, 0x64, 0xb3, 0xef, 0x37, 0x55, 0xd1, 0x9f, 0xc8, 0x9b,
+ 0xaa, 0xf6, 0x57, 0xae, 0x63, 0xb7, 0xee, 0x6d, 0x46, 0xfc, 0xb0, 0xef, 0x53, 0xf8, 0x53, 0xc9,
+ 0xc1, 0x2e, 0x4f, 0x25, 0x33, 0x1d, 0xdf, 0x43, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xe9, 0x74, 0xa8,
+ 0xbf, 0x4b, 0xb2, 0xfc, 0x53, 0xa8, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, 0xa8,
+ 0x3f, 0x1a, 0x85, 0xf4, 0xb2, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x36, 0xf9, 0xda, 0x53, 0x9d, 0xdf,
+ 0xbb, 0xa0, 0x9b, 0x37, 0x66, 0x46, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0x57, 0xc6,
+ 0xdc, 0xb3, 0x8a, 0x87, 0x79, 0xec, 0x1c, 0x62, 0x25, 0xd3, 0xe7, 0x09, 0x3e, 0xff, 0x46, 0x7b,
+ 0xed, 0x9d, 0x99, 0x39, 0xd4, 0xc5, 0xdb, 0xf9, 0x38, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, 0x9d,
+ 0xe2, 0xf6, 0xd8, 0x6b, 0x12, 0x0c, 0x2f, 0xdb, 0x22, 0x15, 0xc4, 0x3f, 0xa3, 0x4f, 0x93, 0x1e,
+ 0x77, 0x3f, 0x13, 0x1e, 0xed, 0xcf, 0x6f, 0xfd, 0x9f, 0x0e, 0x1f, 0x90, 0x8f, 0xc0, 0x84, 0x4f,
+ 0x47, 0x57, 0xf7, 0x6f, 0x46, 0x68, 0x6c, 0x2c, 0xe0, 0x9a, 0xa6, 0xbb, 0x19, 0x24, 0xfe, 0xf3,
+ 0xfa, 0xe8, 0xc2, 0xb3, 0x71, 0xec, 0x30, 0x36, 0xde, 0xa5, 0x81, 0x21, 0x64, 0x4b, 0x77, 0xc3,
+ 0x6b, 0xb9, 0xf5, 0x39, 0x90, 0x74, 0x80, 0x2f, 0xed, 0x84, 0x1e, 0xfd, 0xc8, 0xaf, 0x4b, 0x30,
+ 0xb2, 0x6c, 0xd7, 0x36, 0xf5, 0xea, 0xff, 0xd5, 0x7e, 0xbb, 0x0d, 0x47, 0x02, 0x5a, 0xde, 0x26,
+ 0x73, 0x9e, 0x79, 0x25, 0x06, 0xd1, 0x65, 0xbb, 0x86, 0x5e, 0x84, 0xb1, 0x70, 0xa2, 0xd0, 0x31,
+ 0xff, 0x6b, 0x9d, 0x05, 0x3a, 0xaf, 0xd1, 0x3a, 0xcf, 0x18, 0x68, 0x17, 0x46, 0x82, 0xb3, 0xc5,
+ 0xc9, 0x2e, 0x4c, 0x02, 0x98, 0xd9, 0x87, 0xfb, 0xc5, 0x74, 0x1b, 0x7b, 0x07, 0x24, 0xdc, 0x40,
+ 0x77, 0x57, 0x17, 0x6a, 0x81, 0xd4, 0x39, 0xa3, 0x6d, 0x13, 0x4e, 0x88, 0xf5, 0xc2, 0xa1, 0xa4,
+ 0x9b, 0xf5, 0x42, 0xb8, 0x5d, 0xad, 0xd7, 0x69, 0x58, 0x6d, 0x01, 0xf8, 0xc6, 0xc0, 0x3d, 0x5d,
+ 0x38, 0x78, 0x68, 0xd9, 0x87, 0xfa, 0x42, 0x73, 0x0f, 0x9a, 0x6e, 0x71, 0x02, 0xfe, 0x7f, 0x02,
+ 0x00, 0x00, 0xff, 0xff, 0x99, 0xdd, 0x46, 0x27, 0xd1, 0x97, 0x00, 0x00,
}
r := bytes.NewReader(gzipped)
gzipr, err := compress_gzip.NewReader(r)
if err != nil {
panic(err)
}
- ungzipped, err := io.ReadAll(gzipr)
+ ungzipped, err := io_ioutil.ReadAll(gzipr)
if err != nil {
panic(err)
}