New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@penumbra-zone/getters

Package Overview
Dependencies
Maintainers
3
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@penumbra-zone/getters - npm Package Compare versions

Comparing version 1.1.0 to 2.0.0

dist/penumbra-bech32-Cg4Donbu.js

13

CHANGELOG.md
# @penumbra-zone/getters
## 2.0.0
### Major Changes
- 929d278: barrel imports to facilitate better tree shaking
### Patch Changes
- Updated dependencies [8933117]
- Updated dependencies [929d278]
- @penumbra-zone/constants@2.0.0
- @penumbra-zone/bech32@2.0.0
## 1.1.0

@@ -4,0 +17,0 @@

16

dist/metadata.d.ts

@@ -21,10 +21,2 @@ import { AssetId } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';

/**
* Get the start epoch index from the metadata of an unbonding token -- that is,
* the epoch at which unbonding started.
*
* For metadata of a non-unbonding token, will return `undefined`.
*/
export declare const getStartEpochIndex: Getter<Metadata_2, bigint, false>;
declare type Getter<SourceType = unknown, TargetType = unknown, Optional extends boolean = false> = GetterFunction<SourceType, TargetType, Optional> & GetterMethods<SourceType, TargetType, Optional>;

@@ -78,2 +70,10 @@

/**
* Get the unbonding start height index from the metadata of an unbonding token
* -- that is, the block height at which unbonding started.
*
* For metadata of a non-unbonding token, will return `undefined`.
*/
export declare const getUnbondingStartHeight: Getter<Metadata_2, bigint, false>;
/**
* Get the bech32 representation of a validator's identity key from the metadata

@@ -80,0 +80,0 @@ * of a delegation or unbonding token.

@@ -1,8 +0,412 @@

import "./create-getter-Bi5Cvcfi.js";
import { c as s, a as o, b as g, g as n } from "./metadata-DPBt1mbQ.js";
import { c as D } from "./create-getter-Bi5Cvcfi.js";
import { p as g } from "./proto3-BqHBe24v.js";
const T = /* @__PURE__ */ g.makeMessageType(
"penumbra.core.asset.v1.AssetId",
() => [
{
no: 1,
name: "inner",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 2,
name: "alt_bech32m",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 3,
name: "alt_base_denom",
kind: "scalar",
T: 9
/* ScalarType.STRING */
}
]
), A = /* @__PURE__ */ g.makeMessageType(
"penumbra.core.asset.v1.Metadata",
() => [
{
no: 1,
name: "description",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{ no: 2, name: "denom_units", kind: "message", T: z, repeated: !0 },
{
no: 3,
name: "base",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 4,
name: "display",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 5,
name: "name",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 6,
name: "symbol",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{ no: 1984, name: "penumbra_asset_id", kind: "message", T },
{ no: 1985, name: "images", kind: "message", T: u, repeated: !0 }
]
), z = /* @__PURE__ */ g.makeMessageType(
"penumbra.core.asset.v1.DenomUnit",
() => [
{
no: 1,
name: "denom",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 2,
name: "exponent",
kind: "scalar",
T: 13
/* ScalarType.UINT32 */
},
{ no: 3, name: "aliases", kind: "scalar", T: 9, repeated: !0 }
]
), u = /* @__PURE__ */ g.makeMessageType(
"penumbra.core.asset.v1.AssetImage",
() => [
{
no: 1,
name: "png",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 2,
name: "svg",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{ no: 3, name: "theme", kind: "message", T: i }
]
), i = /* @__PURE__ */ g.makeMessageType(
"penumbra.core.asset.v1.AssetImage.Theme",
() => [
{
no: 1,
name: "primary_color_hex",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 2,
name: "circle",
kind: "scalar",
T: 8
/* ScalarType.BOOL */
},
{
no: 3,
name: "dark_mode",
kind: "scalar",
T: 8
/* ScalarType.BOOL */
}
],
{ localName: "AssetImage_Theme" }
), x = [
{
denomUnits: [
{
denom: "penumbra",
exponent: 6
},
{
denom: "mpenumbra",
exponent: 3
},
{
denom: "upenumbra"
}
],
base: "upenumbra",
display: "penumbra",
symbol: "UM",
penumbraAssetId: {
inner: "KeqcLzNx9qSH5+lcJHBB9KNW+YPrBk5dKzvPMiypahA="
},
images: [
{
svg: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcyIgogICB3aWR0aD0iMzIiCiAgIGhlaWdodD0iMzIiCiAgIHZpZXdCb3g9IjAgMCAzMiAzMiIKICAgc29kaXBvZGk6ZG9jbmFtZT0iMTUtUGVudW1icmEtdG9rZW4tbG9nby0yNHgyNHB4LTEtMi5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMi4yIChiMGE4NDg2NSwgMjAyMi0xMi0wMSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczYiPgogICAgPHJhZGlhbEdyYWRpZW50CiAgICAgICBmeD0iMCIKICAgICAgIGZ5PSIwIgogICAgICAgY3g9IjAiCiAgICAgICBjeT0iMCIKICAgICAgIHI9IjEiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoOC42ODQyMzc1LDMuOTM4MjAwNywzLjkzODIwMDcsLTguNjg0MjM3NSwxMS44MjIzNDQsMTEuNzA0NDM0KSIKICAgICAgIHNwcmVhZE1ldGhvZD0icGFkIgogICAgICAgaWQ9InJhZGlhbEdyYWRpZW50MzQiPgogICAgICA8c3RvcAogICAgICAgICBzdHlsZT0ic3RvcC1vcGFjaXR5OjE7c3RvcC1jb2xvcjojZjc5MDM2IgogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIGlkPSJzdG9wMjYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxlPSJzdG9wLW9wYWNpdHk6MTtzdG9wLWNvbG9yOiNmNzkwMzYiCiAgICAgICAgIG9mZnNldD0iMC42MDMwMTciCiAgICAgICAgIGlkPSJzdG9wMjgiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxlPSJzdG9wLW9wYWNpdHk6MTtzdG9wLWNvbG9yOiM5NmQ1ZDEiCiAgICAgICAgIG9mZnNldD0iMC44Nzk2NjgiCiAgICAgICAgIGlkPSJzdG9wMzAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxlPSJzdG9wLW9wYWNpdHk6MTtzdG9wLWNvbG9yOiM5NmQ1ZDEiCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgaWQ9InN0b3AzMiIgLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3NCIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiMwMDAwMDAiCiAgICAgYm9yZGVyb3BhY2l0eT0iMC4yNSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZGVza2NvbG9yPSIjZDFkMWQxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIzMi4wOTM3NSIKICAgICBpbmtzY2FwZTpjeD0iMTcuNzc2MDQ3IgogICAgIGlua3NjYXBlOmN5PSIxNy4wNzQ5NzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxNDE5IgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjkxNiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNTAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzEwIj4KICAgIDxpbmtzY2FwZTpwYWdlCiAgICAgICB4PSIwIgogICAgICAgeT0iMCIKICAgICAgIGlkPSJwYWdlOCIKICAgICAgIHdpZHRoPSIzMiIKICAgICAgIGhlaWdodD0iMzIiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPGcKICAgICBpZD0iZzEwIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaW5rc2NhcGU6bGFiZWw9IlBhZ2UgMSIKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMzMzMsMCwwLC0xLjMzMzMzMzMsMCwzMikiPgogICAgPHBhdGgKICAgICAgIGQ9Ik0gMC4wMTY1MjM4NSwwIEggMjQuMDAxIFYgMjQgSCAwLjAxNjUyMzg1IFoiCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjAwMTk1IgogICAgICAgaWQ9InBhdGgxMiIgLz4KICAgIDxnCiAgICAgICBpZD0iZzE0Ij4KICAgICAgPGcKICAgICAgICAgaWQ9ImcxNiI+CiAgICAgICAgPGcKICAgICAgICAgICBpZD0iZzIyIj4KICAgICAgICAgIDxnCiAgICAgICAgICAgICBpZD0iZzI0Ij4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgZD0ibSAxNS43ODIsMjAuODk1IGMgLTAuNjU3LC0wLjIzNCAtMS4yOTgsLTAuNTMgLTEuOTE4LC0wLjgxNyB2IDAgQyAxMi43MjksMTkuNTU0IDExLjY1OCwxOS4wNiAxMC44MSwxOS4xMTEgdiAwIGMgLTAuMjk3LDAuMDE4IC0wLjY2MiwwLjA2MyAtMS4wODUsMC4xMTcgdiAwIEMgOC4xMzIsMTkuNDI2IDUuOTUyLDE5LjcgNC44MTUsMTguNzcxIHYgMCBDIDQuMDA3LDE4LjExMiA0LjEzMywxNi41MzggNC4yNTQsMTUuMDE2IHYgMCBDIDQuMzQ2LDEzLjg3OCA0LjQ0MSwxMi43MDIgNC4xMjcsMTEuOTk3IHYgMCBDIDMuNDIsMTAuNDAxIDMuMTc5LDkuMDQgMy40MTEsNy45NTIgdiAwIEMgMy42MzksNi44ODMgNC4zMjUsNi4wNDYgNS40NSw1LjQ2MyB2IDAgQyA2LjA4NCw1LjEzNSA2LjY2OCw0Ljk5OCA3LjI4Niw0Ljg1MyB2IDAgQyA4LjE4OCw0LjY0IDkuMTIsNC40MjEgMTAuMjg0LDMuNTY4IHYgMCBjIDAuNTgyLC0wLjQyNyAxLjE4MiwtMC42NDIgMS44MTgsLTAuNjQyIHYgMCBjIDEuMjEsMCAyLjU1MiwwLjc3OCA0LjE1MSwyLjM3MiB2IDAgYyAwLjU4MSwwLjU4IDEuMjksMC45MTcgMS45NzUsMS4yNDUgdiAwIGMgMC44MDUsMC4zODQgMS42MzksMC43ODIgMi4yNzUsMS41NyB2IDAgYyAwLjM4OSwwLjQ4MSAwLjQ4NywwLjk5NiAwLjMsMS41NzMgdiAwIGMgLTAuMTYzLDAuNTA3IC0wLjUyNiwxLjAyMSAtMC45MSwxLjU2NSB2IDAgYyAtMC40MTgsMC41OTEgLTAuODUxLDEuMjAzIC0xLjEwOSwxLjkgdiAwIGMgLTAuNDUyLDEuMjE1IC0wLjM2NywxLjcwMSAtMC4yMTUsMi41ODUgdiAwIGMgMC4xLDAuNTcyIDAuMjIyLDEuMjg1IDAuMjUxLDIuNDQyIHYgMCBjIDAuMDMyLDEuMzIxIC0wLjM0MSwyLjA3NCAtMC45NDQsMi41MSB2IDAgYyAtMC4zMjUsMC4yMzUgLTAuNywwLjM4NiAtMS4xNjEsMC4zODYgdiAwIGMgLTAuMjc3LDAgLTAuNTg1LC0wLjA1NSAtMC45MzMsLTAuMTc5IE0gOC44MjgsNy42NzIgQyA3Ljk0Myw4LjMyNiA3LjMyMiw5LjIyNyA3LjAzMiwxMC4yNzggdiAwIGMgLTAuMzQ1LDEuMjUxIC0wLjE3MSwyLjU1OSAwLjQ4OSwzLjY4MiB2IDAgYyAwLjY2MiwxLjEyMyAxLjczLDEuOTI4IDMuMDEsMi4yNjUgdiAwIGMgMC40MjQsMC4xMTIgMC44NTksMC4xNjkgMS4yOTUsMC4xNjkgdiAwIGMgMS4wNjksMCAyLjEzMSwtMC4zNSAyLjk5LC0wLjk4NCB2IDAgYyAwLjg4NSwtMC42NTQgMS41MDYsLTEuNTU1IDEuNzk2LC0yLjYwNiB2IDAgYyAwLjM0NSwtMS4yNTIgMC4xNzEsLTIuNTU5IC0wLjQ4OSwtMy42ODIgdiAwIEMgMTUuNDYyLDcuOTk4IDE0LjM5Myw3LjE5NSAxMy4xMTQsNi44NTcgdiAwIEMgMTIuNjg5LDYuNzQ1IDEyLjI1Myw2LjY4OCAxMS44MTksNi42ODggdiAwIGMgLTEuMDcsMCAtMi4xMzEsMC4zNSAtMi45OTEsMC45ODQiCiAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsOnVybCgjcmFkaWFsR3JhZGllbnQzNCk7c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgICAgIGlkPSJwYXRoMzYiIC8+CiAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K"
}
]
},
{
denomUnits: [
{
denom: "gm",
exponent: 6
},
{
denom: "mgm",
exponent: 3
},
{
denom: "ugm"
}
],
base: "ugm",
display: "gm",
symbol: "GM",
penumbraAssetId: {
inner: "HW2Eq3UZVSBttoUwUi/MUtE7rr2UU7/UH500byp7OAc="
}
},
{
denomUnits: [
{
denom: "gn",
exponent: 6
},
{
denom: "mgn",
exponent: 3
},
{
denom: "ugn"
}
],
base: "ugn",
display: "gn",
symbol: "GN",
penumbraAssetId: {
inner: "nwPDkQq3OvLnBwGTD+nmv1Ifb2GEmFCgNHrU++9BsRE="
}
},
{
denomUnits: [
{
denom: "test_usd",
exponent: 18
},
{
denom: "wtest_usd"
}
],
base: "wtest_usd",
display: "test_usd",
symbol: "TestUSD",
penumbraAssetId: {
inner: "reum7wQmk/owgvGMWMZn/6RFPV24zIKq3W6In/WwZgg="
},
images: [
{
svg: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjU2IDI1NjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMxNTgwM2Q7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQo8L3N0eWxlPgo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSIxMjgiIGN5PSIxMjgiIHI9IjEyOCIvPgo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTA0LDIxN2MwLDMtMi40LDQuNy01LjIsMy44QzYwLDIwOC40LDMyLDE3Mi4yLDMyLDEyOS4zYzAtNDIuOCwyOC03OS4xLDY2LjgtOTEuNWMyLjktMC45LDUuMiwwLjgsNS4yLDMuOAoJdjcuNWMwLDItMS41LDQuMy0zLjQsNUM2OS45LDY1LjQsNDgsOTQuOSw0OCwxMjkuM2MwLDM0LjUsMjEuOSw2My45LDUyLjYsNzUuMWMxLjksMC43LDMuNCwzLDMuNCw1VjIxN3oiLz4KPHBhdGggY2xhc3M9InN0MSIgZD0iTTEzNiwxODkuM2MwLDIuMi0xLjgsNC00LDRoLThjLTIuMiwwLTQtMS44LTQtNHYtMTIuNmMtMTcuNS0yLjQtMjYtMTIuMS0yOC4zLTI1LjVjLTAuNC0yLjMsMS40LTQuMywzLjctNC4zCgloOS4xYzEuOSwwLDMuNSwxLjQsMy45LDMuMmMxLjcsNy45LDYuMywxNCwyMC4zLDE0YzEwLjMsMCwxNy43LTUuOCwxNy43LTE0LjRjMC04LjYtNC4zLTExLjktMTkuNS0xNC40Yy0yMi40LTMtMzMtOS44LTMzLTI3LjMKCWMwLTEzLjUsMTAuMy0yNC4xLDI2LjEtMjYuM1Y2OS4zYzAtMi4yLDEuOC00LDQtNGg4YzIuMiwwLDQsMS44LDQsNHYxMi43YzEyLjksMi4zLDIxLjEsOS42LDIzLjgsMjEuOGMwLjUsMi4zLTEuMyw0LjQtMy43LDQuNAoJaC04LjRjLTEuOCwwLTMuMy0xLjItMy44LTIuOWMtMi4zLTcuNy03LjgtMTEuMS0xNy40LTExLjFjLTEwLjYsMC0xNi4xLDUuMS0xNi4xLDEyLjNjMCw3LjYsMy4xLDExLjQsMTkuNCwxMy43CgljMjIsMywzMy40LDkuMywzMy40LDI4YzAsMTQuMi0xMC42LDI1LjctMjcuMSwyOC4zVjE4OS4zeiIvPgo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTU3LjIsMjIwLjhjLTIuOSwwLjktNS4yLTAuOC01LjItMy44di03LjVjMC0yLjIsMS4zLTQuMywzLjQtNWMzMC42LTExLjIsNTIuNi00MC43LDUyLjYtNzUuMQoJYzAtMzQuNS0yMS45LTYzLjktNTIuNi03NS4xYy0xLjktMC43LTMuNC0zLTMuNC01di03LjVjMC0zLDIuNC00LjcsNS4yLTMuOEMxOTYsNTAuMiwyMjQsODYuNSwyMjQsMTI5LjMKCUMyMjQsMTcyLjIsMTk2LDIwOC40LDE1Ny4yLDIyMC44eiIvPgo8L3N2Zz4K"
}
]
},
{
denomUnits: [
{
denom: "cube"
}
],
base: "cube",
display: "cube",
symbol: "CUBE",
penumbraAssetId: {
inner: "6KBVsPINa8gWSHhfH+kAFJC4afEJA3EtuB2HyCqJUws="
}
},
{
denomUnits: [
{
denom: "pizza"
}
],
base: "pizza",
display: "pizza",
symbol: "PIZZA",
penumbraAssetId: {
inner: "nDjzm+ldIrNMJha1anGMDVxpA5cLCPnUYQ1clmHF1gw="
},
images: [
{
svg: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIEdlbmVyYXRvcjogU1ZHIFJlcG8gTWl4ZXIgVG9vbHMgLS0+Cjxzdmcgd2lkdGg9IjgwMHB4IiBoZWlnaHQ9IjgwMHB4IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGFyaWEtaGlkZGVuPSJ0cnVlIiByb2xlPSJpbWciIGNsYXNzPSJpY29uaWZ5IGljb25pZnktLWVtb2ppb25lIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0Ij4KDTxwYXRoIGQ9Ik02Mi4zIDQ3LjFDNjIuMiAyMi43IDQxLjUgMi4xIDE3LjEgMkwyLjMgNjJsNjAtMTQuOSIgZmlsbD0iI2Y2ZGE3NyI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNNTQuNSA0OWwyLjEtLjRjLTEtMTktMTQuNi0zOC45LTQxLTQwLjlsLS4zIDJDMzUuNSAxMi4zIDUyIDI4LjcgNTQuNSA0OSIgZmlsbD0iIzg2MGQxNiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNNTYuNSA0OC42bDUuNy0xLjRDNjIuMyAyMi44IDQxLjUgMiAxNi45IDJsLTEuNCA1LjdjMjMuNSAyLjIgMzguOCAxNy42IDQxIDQwLjl6IiBmaWxsPSIjYzk4ZTUyIj4KDTwvcGF0aD4KDTxnIGZpbGw9IiM4M2JmNGYiPgoNPHBhdGggZD0iTTEzLjUgNDEuN2MtMS43IDAtMy4yLS42LTQuNC0xLjhjLS41LS41LS41LTEuMyAwLTEuN2MuNS0uNSAxLjMtLjUgMS43IDBjMS40IDEuNCAzLjkgMS40IDUuMyAwYy43LS43IDEuMS0xLjYgMS4xLTIuNnMtLjQtMS45LTEuMS0yLjZjLS41LS41LS41LTEuMyAwLTEuN2MuNS0uNSAxLjMtLjUgMS43IDBjMS4yIDEuMiAxLjggMi43IDEuOCA0LjRjMCAxLjctLjYgMy4yLTEuOCA0LjRjLTEuMS45LTIuNyAxLjYtNC4zIDEuNiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMzguNiAyMS45di41Yy0uMS4zLS4yLjUtLjUuN2MtLjMuMi0uNi4yLS44LjFjLS44LS4yLTEuNiAwLTIuMy40Yy0uNy40LTEuMiAxLjEtMS40IDEuOWMtLjQgMS42LjcgMy4zIDIuMyAzLjdjLjYuMSAxIC44LjggMS4zYy0uMS42LS43IDEtMS4zLjhjLTItLjUtMy41LTItNC00Yy0uMi0uOC0uMi0xLjYgMC0yLjNjLjMtMS40IDEuMi0yLjUgMi40LTMuM2MxLjItLjggMi42LTEgNC0uN2MuMy4yLjcuNS44LjkiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTQzLjkgNTAuOWgtLjVjLS4zLS4xLS41LS4yLS42LS41Yy0uMS0uMi0uMi0uNS0uMS0uOGMuMi0uNy4xLTEuNS0uMy0yLjJjLS40LS43LTEtMS4yLTEuOC0xLjRjLTEuNS0uNC0zLjIuNi0zLjYgMmMtLjEuNS0uOC45LTEuMy43Yy0uNi0uMi0uOS0uNy0uNy0xLjNjLjUtMS44IDItMy4zIDMuOS0zLjZjLjctLjEgMS41LS4xIDIuMi4xYzEuMy4zIDIuNCAxLjIgMyAyLjNjLjcgMS4yLjggMi41LjUgMy44YzAgLjUtLjMuOC0uNy45Ij4KDTwvcGF0aD4KDTwvZz4KDTxnIGZpbGw9IiNiMjE3MjUiPgoNPHBhdGggZD0iTTM3LjEgMzYuMmMxLjQgNC4xLS44IDguNS01IDkuOWMtNC4yIDEuNC04LjctLjgtMTAtNC45Yy0xLjQtNC4xLjgtOC41IDUtOS45YzQuMS0xLjQgOC42LjggMTAgNC45Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik00OS42IDM3Yy44IDIuNS0uNSA1LjEtMyA2Yy0yLjUuOC01LjItLjUtNi0zYy0uOC0yLjUuNS01LjEgMy02YzIuNC0uOCA1LjEuNSA2IDMiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTI5IDE5YzEuMSAzLjMtLjcgNy00LjEgOC4xYy0zLjQgMS4xLTcuMS0uNy04LjItNGMtMS4xLTMuMy43LTcgNC4xLTguMWMzLjQtMS4xIDcuMS43IDguMiA0Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik0zNC40IDU0bC05LjcgMi40Yy0uOS0yLjYuOS01LjcgMy41LTYuNGMzLjItLjggNS4zIDEuNSA2LjIgNCI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMTkuNiA0N2MxLjIgMy40LS43IDcuMi00LjIgOC4zYy0zLjUgMS4yLTcuMy0uNy04LjUtNC4yYy0xLjItMy40LjctNy4yIDQuMi04LjNjMy41LTEuMSA3LjMuOCA4LjUgNC4yIj4KDTwvcGF0aD4KDTwvZz4KDTxwYXRoIGQ9Ik0xNS41IDcuN2M1LjMuMSAxMC42IDEuMSAxNS42IDMuMWM1IDEuOSA5LjcgNC45IDEzLjUgOC44YzMuOCAzLjggNi44IDguNSA4LjggMTMuNWMyIDUgMyAxMC4zIDMuMSAxNS42Yy0uOS01LjItMi4zLTEwLjMtNC41LTE1Yy0yLjItNC43LTUuMS05LjEtOC44LTEyLjdjLTMuNi0zLjctOC02LjYtMTIuNy04LjdjLTQuNy0yLjMtOS44LTMuNy0xNS00LjYiIGZpbGw9IiNlMGE3NjMiPgoNPC9wYXRoPgoNPGcgZmlsbD0iI2ZmYWI0MSI+Cg08cGF0aCBkPSJNMTYuNzk0IDEzLjQzNmwxLjk4LTEuOThsMS45OCAxLjk4bC0xLjk4IDEuOTh6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik0yOS43MiAxOS4wNDRsMS45OC0xLjk4bDEuOTggMS45OGwtMS45OCAxLjk4eiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMTIuOTA4IDI2LjQ0OGwxLjk4LTEuOThsMS45OCAxLjk4bC0xLjk4IDEuOTh6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik0xOS43NDggMzIuMTM1bDEuOTgtMS45OGwxLjk4IDEuOThsLTEuOTggMS45OHoiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTM3LjU0NSAzMi4zOWwxLjk4LTEuOThsMS45OCAxLjk4bC0xLjk4IDEuOTh6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik00OS4wMjQgNDYuNTQxbDEuOTgtMS45OGwxLjk4IDEuOThsLTEuOTggMS45OHoiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTE5LjYxNyA0NC42NTJsMS45OC0xLjk4bDEuOTggMS45OGwtMS45OCAxLjk4eiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMjEuMDM0IDUxLjkwM2wxLjk4LTEuOThsMS45OCAxLjk4bC0xLjk4IDEuOTh6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik00LjMzOCA1OC4yNDFsMS45OC0xLjk4bDEuOTggMS45OGwtMS45OCAxLjk4eiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMTMuOTcgMTcuMzI4bDEuNDg1LTEuNDg1bDEuNDg1IDEuNDg1bC0xLjQ4NSAxLjQ4NXoiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTI2LjU1MiAyNy44OTNsMS40ODUtMS40ODVsMS40ODUgMS40ODVsLTEuNDg1IDEuNDg1eiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNNDAuMDc1IDI3Ljk1NWwxLjQ4NS0xLjQ4NWwxLjQ4NSAxLjQ4NWwtMS40ODUgMS40ODV6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik0xMy40MzYgMzYuMTY0bDEuNDg1LTEuNDg1bDEuNDg1IDEuNDg1bC0xLjQ4NSAxLjQ4NXoiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTcuMzYgNDIuMWwxLjQ4NS0xLjQ4NWwxLjQ4NSAxLjQ4NGwtMS40ODUgMS40ODV6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik01LjAzIDU0LjQ4NUw2LjUxNSA1M0w4IDU0LjQ4NUw2LjUxNSA1NS45N3oiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTE3Ljg3NiA1NS4yODZsMS40ODUtMS40ODVsMS40ODUgMS40ODZsLTEuNDg1IDEuNDg0eiI+Cg08L3BhdGg+Cg08cGF0aCBkPSJNMzAuNzc4IDQ4LjM0NmwxLjQ4NS0xLjQ4NWwxLjQ4NSAxLjQ4NWwtMS40ODUgMS40ODV6Ij4KDTwvcGF0aD4KDTxwYXRoIGQ9Ik0zNy4wNDIgNTAuODk2bDEuNDg1LTEuNDg1bDEuNDg1IDEuNDg1bC0xLjQ4NSAxLjQ4NHoiPgoNPC9wYXRoPgoNPHBhdGggZD0iTTQ1LjM3NiA0NS4xN2wxLjQ4NS0xLjQ4NGwxLjQ4NSAxLjQ4NWwtMS40ODUgMS40ODV6Ij4KDTwvcGF0aD4KDTwvZz4KDTwvc3ZnPg=="
}
]
},
{
denomUnits: [
{
denom: "delegation_penumbravalid18nkv0r3sfp2seleq6du5kt3mhfce3k6cqm77kj2e7mhakmyw9v9qx42a20",
exponent: 6
},
{
denom: "mdelegation_penumbravalid18nkv0r3sfp2seleq6du5kt3mhfce3k6cqm77kj2e7mhakmyw9v9qx42a20",
exponent: 3
},
{
denom: "udelegation_penumbravalid18nkv0r3sfp2seleq6du5kt3mhfce3k6cqm77kj2e7mhakmyw9v9qx42a20"
}
],
base: "udelegation_penumbravalid18nkv0r3sfp2seleq6du5kt3mhfce3k6cqm77kj2e7mhakmyw9v9qx42a20",
display: "delegation_penumbravalid18nkv0r3sfp2seleq6du5kt3mhfce3k6cqm77kj2e7mhakmyw9v9qx42a20",
penumbraAssetId: {
inner: "CwpUYIdQ9H5Dnf3oQ1l7ISeVMVahWbVNNvMA0dBSdwI="
},
symbol: "Delegation (Penumbra Labs CI 1)",
images: [
{
png: "data:image/png;base64,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"
}
]
},
{
denomUnits: [
{
denom: "delegation_penumbravalid1qfxldejdhanmu302kcn5fm98q5d7d2upfhzqhaz95hyjdn82pqysqfq050",
exponent: 6
},
{
denom: "mdelegation_penumbravalid1qfxldejdhanmu302kcn5fm98q5d7d2upfhzqhaz95hyjdn82pqysqfq050",
exponent: 3
},
{
denom: "udelegation_penumbravalid1qfxldejdhanmu302kcn5fm98q5d7d2upfhzqhaz95hyjdn82pqysqfq050"
}
],
base: "udelegation_penumbravalid1qfxldejdhanmu302kcn5fm98q5d7d2upfhzqhaz95hyjdn82pqysqfq050",
display: "delegation_penumbravalid1qfxldejdhanmu302kcn5fm98q5d7d2upfhzqhaz95hyjdn82pqysqfq050",
penumbraAssetId: {
inner: "qUn70lKZ3qQlCT5gj5sakux4daiTPKj0AN6ZuuFldQU="
},
symbol: "Delegation (Penumbra Labs CI 2)",
images: [
{
png: "data:image/png;base64,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"
}
]
},
{
denomUnits: [
{
denom: "osmo",
exponent: 6
},
{
denom: "transfer/channel-0/uosmo",
exponent: 0
}
],
base: "transfer/channel-0/uosmo",
display: "osmo",
symbol: "OSMO",
penumbraAssetId: {
inner: "jIowYEpoMr+LQYqjDVEnQO6hyzb9raVxbO1GLyDxlhI="
},
images: [
{
svg: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xOTEuMTM2IDM1LjM1MTlDMTg5LjEgMjcuNTEyNCAxODIuNTU2IDE5LjY3MjggMTcwLjc3NyAxMC45NDU4QzE2MS4zMjMgMy45OTM3MSAxNTEuMjg5IDAgMTQzLjI5MSAwQzE0MS42OTEgMCAxNDAuMjM3IDAuMTQ3OTEgMTM4Ljc4MyAwLjQ0Mzc0QzEzNS4xNDcgMS4xODMzIDEzMS45NDcgMy44NDU4MSAxMjkuOTEyIDcuODM5NTRDMTI3LjQ0IDEyLjU3MjggMTI2Ljg1OCAxOC45MzMzIDEyOC40NTggMjIuNzc5QzEyOS4wMzkgMjMuOTYyMyAxMjkuNzY2IDI1LjQ0MTUgMTMwLjYzOSAyNi43NzI3QzEyMi45MzEgMzEuNTA2MSAxMTguNTY4IDMyLjgzNzMgMTE3Ljk4NiAzMi45ODUyQzEzOC4wNTYgMzkuNzg5MyAxNTQuNzggNTMuOTg5MiAxNjUuMjUgNzIuNDc4OEwxNjUuMzk2IDcwLjcwMzhDMTY1LjgzMiA2NS44MjI1IDE2Ny4yODYgNjAuMjAxNyAxNjkuMzIzIDU0LjQzM0MxNzEuMzU4IDU1LjAyNDcgMTczLjM5NCA1NS4zMjA1IDE3NS40MyA1NS4zMjA1QzE4MC44MTEgNTUuMzIwNSAxODUuNDY0IDUzLjEwMTggMTg4LjM3MyA0OS4xMDgxQzE5MS4yODIgNDUuMTE0MyAxOTIuNDQ0IDM5Ljc4OTMgMTkxLjEzNiAzNS4zNTE5WiIgZmlsbD0iIzVFMTJBMCIvPgo8cGF0aCBkPSJNMTcwLjE5NyA1MC4xNDc1QzE4My40MyA1My44NDU0IDE4OC44MTEgNDMuNDkxMyAxODcuMDY1IDM2LjUzOTNDMTg1LjE3NSAyOS41ODcyIDE3OS4wNjcgMjIuNDg3MiAxNjguMzA1IDE0LjQ5OThDMTU3LjU0NCA2LjUxMjM1IDE0Ni42MzggMy4yNTgxOCAxMzkuNjU3IDQuNzM3MjhDMTMyLjY3NyA2LjIxNjQ3IDEzMC42NDEgMTcuMDE0MyAxMzIuMzg1IDIxLjE1NTlDMTMzLjExMyAyMi43ODMgMTM0LjcxMiAyNS4xNDk3IDEzNi44OTQgMjcuODEyMkMxMzQuMTMxIDI5LjczNTEgMTMxLjUxMyAzMS4yMTQyIDEyOS4zMzIgMzIuNTQ1NEMxNDIuNzExIDM4LjYxIDE1NC4zNDUgNDguMDc2NyAxNjMuMDcgNTkuOTA5OUMxNjQuMDg4IDU1LjkxNjIgMTY1LjU0MyA1Mi4zNjYyIDE2Ni44NTIgNDkuMjZDMTY3Ljg2OSA0OS40MDc5IDE2OS4wMzMgNDkuNzAzOCAxNzAuMTk3IDUwLjE0NzVaIiBmaWxsPSJ1cmwoI3BhaW50MF9yYWRpYWxfOTE0XzQ4KSIvPgo8cGF0aCBkPSJNOTQuNDIzOCAxOTUuMTEyQzEzOS4zMiAxOTUuMTEyIDE3NS43MTcgMTU4LjA5MiAxNzUuNzE3IDExMi40MjdDMTc1LjcxNyA2Ni43NjE1IDEzOS4zMiAyOS43NDIyIDk0LjQyMzggMjkuNzQyMkM0OS41MjcgMjkuNzQyMiAxMy4xMzA5IDY2Ljc2MTUgMTMuMTMwOSAxMTIuNDI3QzEzLjEzMDkgMTU4LjA5MiA0OS41MjcgMTk1LjExMiA5NC40MjM4IDE5NS4xMTJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfOTE0XzQ4KSIvPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0xODAuMzc3IDI5LjczMDdDMTY5LjMyNCAxNy44OTc1IDE2MC4wMTcgMTQuNzkxMiAxNDguODE5IDEyLjI3NjdDMTQwLjA5NCAxMC4yMDU4IDE0Mi40MiA1LjE3NjY2IDE1My4wMzcgNi4yMTIwOUMxNDcuOTQ3IDQuNDM3MTEgMTQzLjE0OCAzLjk5MzM0IDEzOS42NTcgNC43MzI4OUMxMzIuNjc3IDYuMjEyMDkgMTMwLjY0MSAxNy4wMDk5IDEzMi4zODYgMjEuMTUxNkMxMzMuMTEzIDIyLjc3ODYgMTM0LjcxMyAyNS4xNDUzIDEzNi44OTUgMjcuODA3OEMxMzIuOTY4IDMwLjQ3MDMgMTI5LjYyMyAzMi4zOTMyIDEyNi44NTkgMzMuODcyNEMxMjguMTY5IDM0LjQ2NCAxMjkuNzY4IDM1LjIwMzYgMTMxLjY1OCAzNi4yMzlDMTM2LjYwMyAzOC45MDE1IDE0MS45ODQgNDMuMzM4OSAxNDEuOTg0IDQzLjMzODlDMTMzLjg0IDM2LjIzOSAxMzUuNTg1IDMyLjk4NDggMTQ2Ljc4MyAyNC45OTc0QzE1MC4yNzQgMjIuNDgyOSAxNTYuNjcyIDIyLjc3ODYgMTYyLjYzNSAyNS44ODQ5QzE2OC41OTcgMjguOTkxMSAxNzUuNTc3IDM2LjgzMDcgMTc1LjU3NyAzNi44MzA3TDE2OC44ODggNDkuODQ3M0MxNjkuMzI0IDQ5Ljk5NTIgMTY5Ljc2IDUwLjE0MyAxNzAuMTk3IDUwLjI5MUMxNzQuNDE0IDUxLjQ3NDMgMTc3Ljc1OCA1MS4xNzg1IDE4MC4zNzcgNTAuMTQzMUMxODMuNDMxIDQ4LjIyMDIgMTkxLjQyOSA0MS43MTE5IDE4MC4zNzcgMjkuNzMwN1oiIGZpbGw9IiNBOTg2OTgiLz4KPHBhdGggZD0iTTE0OC42NzMgMTkuMzg1MkMxNTEuNTgyIDIwLjU2ODUgMTU1LjM2MyAyMi42MzkzIDE2MC4wMTcgMjUuNzQ1NkMxNjUuNTQzIDI5LjQ0MzUgMTcwLjM0MiAzMy41ODUyIDE3My4zOTYgMzYuODM5MkMxNjguMzA2IDQzLjY0MzQgMTY0Ljk2MSA1Mi45NjIxIDE2Mi45MjYgNTkuNDcwNEMxNjMuOTQ0IDYwLjk0OTYgMTY1LjEwNyA2Mi40Mjg3IDE2Ni4xMjUgNjMuOTA3OUMxNjcuMTQzIDYwLjIxIDE2OC44ODcgNTQuNzM3MSAxNzEuMjE0IDQ5LjI2NDJDMTcxLjc5NiA0OS40MTIxIDE3Mi41MjQgNDkuNDEyMSAxNzMuMjUgNDkuNDEyMUMxNzQuOTk1IDQ5LjQxMjEgMTc3LjAzMSA0OS4xMTYzIDE3OC42MzEgNDcuNzg1QzE3OS43OTQgNDYuODk3NSAxODEuMTA0IDQ1LjI3MDUgMTgwLjk1OCA0Mi4zMTIyQzE4MC45NTggMzkuNTAxOCAxNzguNzc3IDM1Ljk1MTggMTc0LjI2OCAzMS42NjIyQzE3MS4wNjkgMjguNTU2IDE2Ni43MDcgMjUuMTUzOSAxNjIuMzQ0IDIyLjA0NzdDMTQ5LjgzNyAxMy42MTY1IDE0MS4xMTEgMTEuMjQ5OCAxMzcuMTg1IDE1LjI0MzVDMTM0LjU2NyAxNy45MDYxIDEzNC44NTggMjEuMTYwMiAxMzUuNzMgMjMuNTI2OUMxMzEuMDc3IDI2LjYzMzEgMTI3LjE1IDI4Ljg1MTggMTI0LjUzMyAzMC4zMzFDMTI2LjI3OCAzMC45MjI3IDEyNy44NzggMzEuNjYyMiAxMjkuNjIzIDMyLjQwMThDMTM0LjI3NiAyOS44ODcyIDE0MC45NjYgMjUuNTk3NiAxNDguNjczIDE5LjM4NTJaTTE3Ni4xNTkgNDAuNTM3MkMxNzYuNTk1IDQxLjI3NjcgMTc2Ljc0MSA0Mi4wMTYzIDE3Ni43NDEgNDIuNDZDMTc2Ljc0MSA0My43OTE0IDE3Ni4zMDUgNDQuMjM1IDE3Ni4wMTMgNDQuNTMwOUMxNzUuNDMyIDQ0Ljk3NDcgMTc0LjI2OCA0NS4yNzA1IDE3My4yNSA0NS4yNzA1QzE3NC4xMjMgNDMuNDk1NSAxNzUuMTQxIDQyLjAxNjMgMTc2LjE1OSA0MC41MzcyWk0xNDAuMjM5IDE4LjQ5NzdDMTQwLjY3NSAxOC4wNTM5IDE0MS44MzkgMTcuNzU4MSAxNDMuNzI5IDE4LjA1MzlDMTQyLjI3NSAxOS4yMzczIDE0MC44MjEgMjAuMjcyNyAxMzkuMzY3IDIxLjMwODFDMTM5LjIyMSAyMC4yNzI3IDEzOS4zNjcgMTkuMjM3MyAxNDAuMjM5IDE4LjQ5NzdaIiBmaWxsPSIjNUUxMkEwIi8+CjxwYXRoIGQ9Ik05NC40MjQxIDI0Ljg2NzJDNDYuODY5OCAyNC44NjcyIDguMzMyMDMgNjQuMDY0OSA4LjMzMjAzIDExMi40MzRDOC4zMzIwMyAxNjAuODAxIDQ2Ljg2OTggMjAwIDk0LjQyNDEgMjAwQzE0MS45NzggMjAwIDE4MC41MTYgMTYwLjgwMSAxODAuNTE2IDExMi40MzRDMTgwLjUxNiA2NC4wNjQ5IDE0MS44MzMgMjQuODY3MiA5NC40MjQxIDI0Ljg2NzJaTTk0LjQyNDEgMTk1LjExOEM0OS40ODc1IDE5NS4xMTggMTMuMTMxMSAxNTguMTQgMTMuMTMxMSAxMTIuNDM0QzEzLjEzMTEgNjYuNzI3NCA0OS40ODc1IDI5Ljc0ODQgOTQuNDI0MSAyOS43NDg0QzEzOS4zNiAyOS43NDg0IDE3NS43MTggNjYuNzI3NCAxNzUuNzE4IDExMi40MzRDMTc1LjcxOCAxNTguMTQgMTM5LjIxNiAxOTUuMTE4IDk0LjQyNDEgMTk1LjExOFoiIGZpbGw9IiM1RTEyQTAiLz4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNOTQuNDIzOCAxOTUuMTEyQzEzOS4zMiAxOTUuMTEyIDE3NS43MTcgMTU4LjA5MiAxNzUuNzE3IDExMi40MjdDMTc1LjcxNyA2Ni43NjE1IDEzOS4zMiAyOS43NDIyIDk0LjQyMzggMjkuNzQyMkM0OS41MjcgMjkuNzQyMiAxMy4xMzA5IDY2Ljc2MTUgMTMuMTMwOSAxMTIuNDI3QzEzLjEzMDkgMTU4LjA5MiA0OS41MjcgMTk1LjExMiA5NC40MjM4IDE5NS4xMTJaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfOTE0XzQ4KSIvPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik05My44NTA4IDE4NS4wNjJDNDkuNDk1OSAxNzcuODE0IDE5LjM5MjggMTM1LjM2MiAyNi42NjQgOTAuMjQ4M0MyOS44NjM1IDcwLjI3OTUgMzkuNzUyNCA1My4yNjkxIDUzLjcxMzMgNDAuOTkyMkMzMy4zNTM3IDUyLjk3MzQgMTguMjI5NCA3My44Mjk1IDE0LjE1NzUgOTkuMjcxMkM3LjAzMTYgMTQ0LjM4NSAzNy4xMzQ3IDE4Ni44MzcgODEuMzQ0MSAxOTQuMDg1QzEwNi4wNjYgMTk4LjIyNyAxMjkuOTE2IDE5MC4zODcgMTQ3LjUxMyAxNzUuMDA0QzEzMS45NTIgMTg0LjE3NSAxMTMuMDQ3IDE4OC4xNjkgOTMuODUwOCAxODUuMDYyWiIgZmlsbD0iI0E5ODY5OCIvPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0xMDcuMzY1IDMwLjkyMzdDODYuODYwMiAyNy41MjE2IDY2LjkzNjggMzIuMjU0OSA1MC42NDkxIDQyLjc1N0M1MC4zNTgyIDQzLjA1MjcgNTAuMDY3NCA0My4zNDg2IDUwLjA2NzQgNDMuMzQ4NkM1Ni4zMjA3IDM5LjUwMjggNjUuNDgyNSAzNi4xMDA3IDY1LjQ4MjUgMzYuMTAwN0M0MS45MjM2IDUwLjAwNDggMzQuNjUyMyA2NS44MzE4IDM0LjY1MjMgNjUuODMxOEM0My44MTQyIDQ3Ljc4NiA3MC43MTc5IDM1LjA2NTMgOTEuODA0NiAzNC4xNzc4QzExMi44OTEgMzMuMjkwMyAxMjYuNzA2IDM5LjY1MDcgMTQzLjU3NiA1My40MDY4QzE2MC40NDUgNjcuMzExIDE3MC42MjUgOTUuNzEwNCAxNjkuNjA3IDExOC4xOTRDMTY4LjczNSAxNDAuNjc4IDE1Ny4xMDEgMTU4Ljg3MSAxNTcuMTAxIDE1OC44NzFDMTY1LjA5OSAxNDguMzY4IDE2OS44OTggMTQwLjY3OCAxNzIuOTUyIDEzMi44MzdDMTczLjUzNCAxMzAuNDcxIDE3NC4xMTYgMTI4LjEwNSAxNzQuNDA2IDEyNS41OUMxODEuNjc4IDgwLjYyMzMgMTUxLjcyIDM4LjE3MTUgMTA3LjM2NSAzMC45MjM3WiIgZmlsbD0idXJsKCNwYWludDNfbGluZWFyXzkxNF80OCkiLz4KPHBhdGggZD0iTTE3MS42NDQgMTExLjY4OUMxNzEuNjQ0IDE1NS4wMjggMTM3LjAzMiAxOTAuMjMzIDk0LjQyMzEgMTkwLjIzM0M1MS44MTM0IDE5MC4yMzMgMTcuMDU2NiAxNTUuMDI4IDE3LjA1NjYgMTExLjY4OUgxNzEuNjQ0WiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzkxNF80OCkiLz4KPGcgb3BhY2l0eT0iMC42Ij4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMTY1LjUzNCAxMTEuNjg5QzE2NS41MzQgMTUzLjk5MyAxMzIuNjY4IDE4OC42MDUgOTEuMzY3MiAxOTAuMjMzQzkyLjM4NTIgMTkwLjIzMyA5My40MDMyIDE5MC4yMzMgOTQuNDIxMiAxOTAuMjMzQzEzNy4wMzEgMTkwLjIzMyAxNzEuNjQzIDE1NS4wMjggMTcxLjY0MyAxMTEuNjg5SDE2NS41MzRaIiBmaWxsPSJ1cmwoI3BhaW50NV9saW5lYXJfOTE0XzQ4KSIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNyI+CjxwYXRoIG9wYWNpdHk9IjAuNyIgZD0iTTI3Ljk2MzYgMTExLjY4OUgxNy4wNTY2QzE3LjA1NjYgMTU1LjAyOCA1MS42NjggMTkwLjIzMyA5NC4yNzc3IDE5MC4yMzNDOTYuMTY4MiAxOTAuMjMzIDk3LjkxMzMgMTkwLjIzMyA5OS42NTg1IDE5MC4wODRDNTkuNjY2NCAxODcuMTI2IDI3Ljk2MzYgMTUzLjEwNiAyNy45NjM2IDExMS42ODlaIiBmaWxsPSJ1cmwoI3BhaW50Nl9saW5lYXJfOTE0XzQ4KSIvPgo8L2c+CjxwYXRoIGQ9Ik0xNzEuNDk5IDExMi40MjJDMTcxLjQ5OSAxMDMuMzk5IDE1Ni4wODQgOTguMjIxMSAxMzUuNTc4IDk2LjQ0N0MxMjAuNzQ1IDk1LjI2MzMgMTA1Ljc2NyA5Ni43NDIyIDg4LjYwNjEgMTAyLjA2N0M3My43NzI2IDEwNi41MDUgNjAuMzkzNSAxMDUuNzY1IDUwLjY1IDEwNC41ODFDMjguOTgxNSAxMDIuMDY3IDE3LjA1NjYgMTAxLjc3MSAxNy4wNTY2IDExMi40MjJDMTcuMDU2NiAxMjcuODA1IDQ3Ljg4NjggMTQ3LjAzNCA5NC4xMzIzIDE0MC4zNzdDMTE3LjU0NiAxMzYuOTc2IDEyOS42MTYgMTMwLjAyNCAxNDMuNDMyIDEyNS4yOUMxNTguNDExIDEyMC4yNjEgMTcxLjQ5OSAxMjAuNDA5IDE3MS40OTkgMTEyLjQyMloiIGZpbGw9InVybCgjcGFpbnQ3X2xpbmVhcl85MTRfNDgpIi8+CjxwYXRoIGQ9Ik0xMTkuNzI3IDc1LjE1MjJDMTI2Ljk1NiA3NS4xNTIyIDEzMi44MTUgNjkuMTkyIDEzMi44MTUgNjEuODM5N0MxMzIuODE1IDU0LjQ4NzUgMTI2Ljk1NiA0OC41MjczIDExOS43MjcgNDguNTI3M0MxMTIuNDk5IDQ4LjUyNzMgMTA2LjYzOSA1NC40ODc1IDEwNi42MzkgNjEuODM5N0MxMDYuNjM5IDY5LjE5MiAxMTIuNDk5IDc1LjE1MjIgMTE5LjcyNyA3NS4xNTIyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE0MS4xMDggODUuMDYxOUMxNDQuMTYgODUuMDYxOSAxNDYuNjM0IDgyLjU0NTQgMTQ2LjYzNCA3OS40NDExQzE0Ni42MzQgNzYuMzM2OCAxNDQuMTYgNzMuODIwMyAxNDEuMTA4IDczLjgyMDNDMTM4LjA1NiA3My44MjAzIDEzNS41ODIgNzYuMzM2OCAxMzUuNTgyIDc5LjQ0MTFDMTM1LjU4MiA4Mi41NDU0IDEzOC4wNTYgODUuMDYxOSAxNDEuMTA4IDg1LjA2MTlaIiBmaWxsPSJ3aGl0ZSIvPgo8ZyBvcGFjaXR5PSIwLjYiPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0xNjAuODg0IDUxLjIwM0MxNjAuNzM4IDUxLjIwMyAxNjAuNTkzIDUxLjIwMyAxNjAuNTkzIDUxLjIwM0MxNTkuNzIgNTEuMDU1MSAxNTkuMTM5IDUwLjE2NzYgMTU5LjI4NCA0OS4xMzIyQzE2MC41OTMgNDIuMzI4IDE2Ni4xMTkgMzUuODE5OCAxNjYuNDEgMzUuNTIzOUMxNjYuOTkxIDM0Ljc4NDQgMTY4LjE1NSAzNC43ODQ0IDE2OC43MzcgMzUuMzc2QzE2OS40NjQgMzUuOTY3NyAxNjkuNDY0IDM3LjE1MSAxNjguODgyIDM3Ljc0MjdDMTY4LjczNyAzNy44OTA2IDE2My42NDcgNDMuOTU1MSAxNjIuNDg0IDQ5Ljg3MThDMTYyLjMzOCA1MC43NTkzIDE2MS42MTEgNTEuMjAzIDE2MC44ODQgNTEuMjAzWiIgZmlsbD0idXJsKCNwYWludDhfbGluZWFyXzkxNF80OCkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik04OS4wNjAzIDE3NC4wOThDOTEuMzA5MSAxNzQuMDk4IDkzLjEzMjIgMTcyLjI0NCA5My4xMzIyIDE2OS45NTZDOTMuMTMyMiAxNjcuNjY5IDkxLjMwOTEgMTY1LjgxNCA4OS4wNjAzIDE2NS44MTRDODYuODExNCAxNjUuODE0IDg0Ljk4ODMgMTY3LjY2OSA4NC45ODgzIDE2OS45NTZDODQuOTg4MyAxNzIuMjQ0IDg2LjgxMTQgMTc0LjA5OCA4OS4wNjAzIDE3NC4wOThaIiBmaWxsPSJ3aGl0ZSIvPgo8ZyBvcGFjaXR5PSIwLjQiPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik04Ni43MTMxIDE3Mi42NTdDODUuMTEzNCAxNzEuMDMgODUuMTEzNCAxNjguMzY4IDg2LjcxMzEgMTY2Ljc0Qzg3LjAwMzkgMTY2LjQ0NCA4Ny4yOTQ4IDE2Ni4yOTYgODcuNTg1NiAxNjZDODcuMDAzOSAxNjYuMTQ5IDg2LjU2NzYgMTY2LjQ0NCA4Ni4xMzE0IDE2Ni44ODhDODQuNTMxNyAxNjguNTE1IDg0LjUzMTcgMTcxLjE3OCA4Ni4xMzE0IDE3Mi44MDVDODcuNDQwMiAxNzQuMTM2IDg5LjQ3NjEgMTc0LjQzMiA5MS4wNzU4IDE3My41NDVDODkuNjIxNSAxNzQuMTM2IDg3Ljg3NjUgMTczLjg0MSA4Ni43MTMxIDE3Mi42NTdaIiBmaWxsPSJ1cmwoI3BhaW50OV9saW5lYXJfOTE0XzQ4KSIvPgo8L2c+CjxwYXRoIG9wYWNpdHk9IjAuMyIgZD0iTTkwLjQ5MTcgMTY4Ljc3OUM5MC45NzM2IDE2OC43NzkgOTEuMzY0MyAxNjguMzgyIDkxLjM2NDMgMTY3Ljg5MkM5MS4zNjQzIDE2Ny40MDEgOTAuOTczNiAxNjcuMDA0IDkwLjQ5MTcgMTY3LjAwNEM5MC4wMDk4IDE2Ny4wMDQgODkuNjE5MSAxNjcuNDAxIDg5LjYxOTEgMTY3Ljg5MkM4OS42MTkxIDE2OC4zODIgOTAuMDA5OCAxNjguNzc5IDkwLjQ5MTcgMTY4Ljc3OVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZD0iTTExMC4zMDIgMTcyLjAzNUMxMTIuNTUxIDE3Mi4wMzUgMTE0LjM3NCAxNzAuMTggMTE0LjM3NCAxNjcuODkyQzExNC4zNzQgMTY1LjYwNCAxMTIuNTUxIDE2My43NSAxMTAuMzAyIDE2My43NUMxMDguMDUzIDE2My43NSAxMDYuMjMgMTY1LjYwNCAxMDYuMjMgMTY3Ljg5MkMxMDYuMjMgMTcwLjE4IDEwOC4wNTMgMTcyLjAzNSAxMTAuMzAyIDE3Mi4wMzVaIiBmaWxsPSJ3aGl0ZSIvPgo8ZyBvcGFjaXR5PSIwLjQiPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0xMDcuOTU1IDE3MC41OTNDMTA2LjM1NSAxNjguOTY1IDEwNi4zNTUgMTY2LjMwMiAxMDcuOTU1IDE2NC42NzVDMTA4LjI0NSAxNjQuMzc5IDEwOC41MzcgMTY0LjIzMSAxMDguODI3IDE2My45MzZDMTA4LjI0NSAxNjQuMDgzIDEwNy44MDkgMTY0LjM3OSAxMDcuMzczIDE2NC44MjNDMTA1Ljc3NCAxNjYuNDUgMTA1Ljc3NCAxNjkuMTEzIDEwNy4zNzMgMTcwLjc0QzEwOC42ODMgMTcyLjA3MiAxMTAuNzE4IDE3Mi4zNjcgMTEyLjMxOCAxNzEuNDc5QzExMC44NjQgMTcyLjA3MiAxMDkuMTE5IDE3MS43NzYgMTA3Ljk1NSAxNzAuNTkzWiIgZmlsbD0idXJsKCNwYWludDEwX2xpbmVhcl85MTRfNDgpIi8+CjwvZz4KPHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTExLjczNCAxNjYuNzE0QzExMi4yMTYgMTY2LjcxNCAxMTIuNjA2IDE2Ni4zMTcgMTEyLjYwNiAxNjUuODI2QzExMi42MDYgMTY1LjMzNyAxMTIuMjE2IDE2NC45MzkgMTExLjczNCAxNjQuOTM5QzExMS4yNTIgMTY0LjkzOSAxMTAuODYxIDE2NS4zMzcgMTEwLjg2MSAxNjUuODI2QzExMC44NjEgMTY2LjMxNyAxMTEuMjUyIDE2Ni43MTQgMTExLjczNCAxNjYuNzE0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggb3BhY2l0eT0iMC4yIiBkPSJNOTkuNzk4IDE4MS42NjJDMTAxLjQ4NSAxODEuNjYyIDEwMi44NTIgMTgwLjI3MSAxMDIuODUyIDE3OC41NTZDMTAyLjg1MiAxNzYuODQgMTAxLjQ4NSAxNzUuNDQ5IDk5Ljc5OCAxNzUuNDQ5Qzk4LjExMTQgMTc1LjQ0OSA5Ni43NDQxIDE3Ni44NCA5Ni43NDQxIDE3OC41NTZDOTYuNzQ0MSAxODAuMjcxIDk4LjExMTQgMTgxLjY2MiA5OS43OTggMTgxLjY2MloiIGZpbGw9IndoaXRlIi8+CjxnIG9wYWNpdHk9IjAuNCI+CjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTk4LjA1MjkgMTgwLjQ5N0M5Ni44ODk2IDE3OS4zMTMgOTYuODg5NiAxNzcuMjQzIDk4LjA1MjkgMTc2LjA1OUM5OC4xOTg0IDE3NS45MTEgOTguNDg5MiAxNzUuNzY0IDk4LjYzNDYgMTc1LjYxNUM5OC4xOTg0IDE3NS43NjQgOTcuOTA3NSAxNzYuMDU5IDk3LjYxNjYgMTc2LjM1NUM5Ni40NTMzIDE3Ny41MzggOTYuNDUzMyAxNzkuNjEgOTcuNjE2NiAxODAuNzkzQzk4LjYzNDYgMTgxLjgyOSAxMDAuMDg5IDE4MS45NzYgMTAxLjM5OCAxODEuMjM3QzEwMC4yMzQgMTgxLjY4MSA5OC45MjU1IDE4MS4zODUgOTguMDUyOSAxODAuNDk3WiIgZmlsbD0idXJsKCNwYWludDExX2xpbmVhcl85MTRfNDgpIi8+CjwvZz4KPHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTAwLjgyMiAxNzcuNTA4QzEwMS4xNDMgMTc3LjUwOCAxMDEuNDAzIDE3Ny4yNDMgMTAxLjQwMyAxNzYuOTE3QzEwMS40MDMgMTc2LjU5IDEwMS4xNDMgMTc2LjMyNCAxMDAuODIyIDE3Ni4zMjRDMTAwLjUwMSAxNzYuMzI0IDEwMC4yNCAxNzYuNTkgMTAwLjI0IDE3Ni45MTdDMTAwLjI0IDE3Ny4yNDMgMTAwLjUwMSAxNzcuNTA4IDEwMC44MjIgMTc3LjUwOFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZD0iTTExOC41NjUgMTc5LjQyOUMxMjAuMjUyIDE3OS40MjkgMTIxLjYxOSAxNzguMDM5IDEyMS42MTkgMTc2LjMyM0MxMjEuNjE5IDE3NC42MDcgMTIwLjI1MiAxNzMuMjE3IDExOC41NjUgMTczLjIxN0MxMTYuODc5IDE3My4yMTcgMTE1LjUxMiAxNzQuNjA3IDExNS41MTIgMTc2LjMyM0MxMTUuNTEyIDE3OC4wMzkgMTE2Ljg3OSAxNzkuNDI5IDExOC41NjUgMTc5LjQyOVoiIGZpbGw9IndoaXRlIi8+CjxnIG9wYWNpdHk9IjAuNCI+CjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTExNi44MjEgMTc4LjI2NUMxMTUuNjU4IDE3Ny4wODEgMTE1LjY1OCAxNzUuMDEgMTE2LjgyMSAxNzMuODI3QzExNi45NjYgMTczLjY3OSAxMTcuMjU3IDE3My41MzEgMTE3LjQwMyAxNzMuMzgzQzExNi45NjYgMTczLjUzMSAxMTYuNjc1IDE3My44MjcgMTE2LjM4NSAxNzQuMTIzQzExNS4yMjEgMTc1LjMwNiAxMTUuMjIxIDE3Ny4zNzcgMTE2LjM4NSAxNzguNTYxQzExNy40MDMgMTc5LjU5NiAxMTguODU3IDE3OS43NDQgMTIwLjE2NiAxNzkuMDA1QzExOS4wMDMgMTc5LjQ0OSAxMTcuNjkzIDE3OS4xNTIgMTE2LjgyMSAxNzguMjY1WiIgZmlsbD0idXJsKCNwYWludDEyX2xpbmVhcl85MTRfNDgpIi8+CjwvZz4KPHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTE5LjU5MiAxNzUuMjkzQzExOS45MTQgMTc1LjI5MyAxMjAuMTc0IDE3NS4wMjggMTIwLjE3NCAxNzQuNzAxQzEyMC4xNzQgMTc0LjM3NCAxMTkuOTE0IDE3NC4xMDkgMTE5LjU5MiAxNzQuMTA5QzExOS4yNzEgMTc0LjEwOSAxMTkuMDEgMTc0LjM3NCAxMTkuMDEgMTc0LjcwMUMxMTkuMDEgMTc1LjAyOCAxMTkuMjcxIDE3NS4yOTMgMTE5LjU5MiAxNzUuMjkzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggb3BhY2l0eT0iMC4yIiBkPSJNNzEuNzM2NSAxNzIuNjM0Qzc1LjQzMTEgMTcyLjYzNCA3OC40MjYgMTY5LjU4NyA3OC40MjYgMTY1LjgzQzc4LjQyNiAxNjIuMDcyIDc1LjQzMTEgMTU5LjAyNSA3MS43MzY1IDE1OS4wMjVDNjguMDQxOSAxNTkuMDI1IDY1LjA0NjkgMTYyLjA3MiA2NS4wNDY5IDE2NS44M0M2NS4wNDY5IDE2OS41ODcgNjguMDQxOSAxNzIuNjM0IDcxLjczNjUgMTcyLjYzNFoiIGZpbGw9IndoaXRlIi8+CjxnIG9wYWNpdHk9IjAuNCI+CjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTY3Ljk1NyAxNzAuMTA0QzY1LjMzOTIgMTY3LjQ0MSA2NS4zMzkyIDE2My4xNTEgNjcuOTU3IDE2MC40ODlDNjguMzkzMiAxNjAuMDQ1IDY4LjgyOTUgMTU5Ljc0OSA2OS40MTExIDE1OS40NTNDNjguNTM4NyAxNTkuNzQ5IDY3LjgxMTUgMTYwLjM0MSA2Ny4wODQ0IDE2MC45MzNDNjQuNDY2NyAxNjMuNTk1IDY0LjQ2NjcgMTY3Ljg4NSA2Ny4wODQ0IDE3MC41NDdDNjkuMjY1NyAxNzIuNzY2IDcyLjYxMDYgMTczLjIxIDc1LjIyODIgMTcxLjU4MkM3Mi43NTYgMTcyLjYxOCA2OS44NDc0IDE3Mi4xNzQgNjcuOTU3IDE3MC4xMDRaIiBmaWxsPSJ1cmwoI3BhaW50MTNfbGluZWFyXzkxNF80OCkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjMiIGQ9Ik03NC4wNzE1IDE2My43NDlDNzQuODc0NiAxNjMuNzQ5IDc1LjUyNTcgMTYzLjA4NyA3NS41MjU3IDE2Mi4yN0M3NS41MjU3IDE2MS40NTMgNzQuODc0NiAxNjAuNzkxIDc0LjA3MTUgMTYwLjc5MUM3My4yNjgyIDE2MC43OTEgNzIuNjE3MiAxNjEuNDUzIDcyLjYxNzIgMTYyLjI3QzcyLjYxNzIgMTYzLjA4NyA3My4yNjgyIDE2My43NDkgNzQuMDcxNSAxNjMuNzQ5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggb3BhY2l0eT0iMC4yIiBkPSJNMTMxLjUzOSAxNTUuOTEzQzEzNS4yMzQgMTU1LjkxMyAxMzguMjI5IDE1Mi44NjcgMTM4LjIyOSAxNDkuMTA5QzEzOC4yMjkgMTQ1LjM1MSAxMzUuMjM0IDE0Mi4zMDUgMTMxLjUzOSAxNDIuMzA1QzEyNy44NDUgMTQyLjMwNSAxMjQuODUgMTQ1LjM1MSAxMjQuODUgMTQ5LjEwOUMxMjQuODUgMTUyLjg2NyAxMjcuODQ1IDE1NS45MTMgMTMxLjUzOSAxNTUuOTEzWiIgZmlsbD0id2hpdGUiLz4KPGcgb3BhY2l0eT0iMC40Ij4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMTI3LjU3NCAxNTMuNEMxMjQuOTU2IDE1MC43MzggMTI0Ljk1NiAxNDYuNDQ5IDEyNy41NzQgMTQzLjc4NkMxMjguMDEgMTQzLjM0MiAxMjguNDQ3IDE0My4wNDYgMTI5LjAyOSAxNDIuNzVDMTI4LjE1NSAxNDMuMDQ2IDEyNy40MjkgMTQzLjYzOCAxMjYuNzAyIDE0NC4yM0MxMjQuMDg0IDE0Ni44OTIgMTI0LjA4NCAxNTEuMTgyIDEyNi43MDIgMTUzLjg0NEMxMjguODgzIDE1Ni4wNjMgMTMyLjIyOCAxNTYuNTA3IDEzNC44NDYgMTU0Ljg3OUMxMzIuMzczIDE1NS45MTUgMTI5LjYwOSAxNTUuNDcyIDEyNy41NzQgMTUzLjRaIiBmaWxsPSJ1cmwoI3BhaW50MTRfbGluZWFyXzkxNF80OCkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjMiIGQ9Ik0xMzMuODM3IDE0Ny4wNDlDMTM0LjY0MSAxNDcuMDQ5IDEzNS4yOTEgMTQ2LjM4NiAxMzUuMjkxIDE0NS41NjlDMTM1LjI5MSAxNDQuNzUyIDEzNC42NDEgMTQ0LjA5IDEzMy44MzcgMTQ0LjA5QzEzMy4wMzQgMTQ0LjA5IDEzMi4zODMgMTQ0Ljc1MiAxMzIuMzgzIDE0NS41NjlDMTMyLjM4MyAxNDYuMzg2IDEzMy4wMzQgMTQ3LjA0OSAxMzMuODM3IDE0Ny4wNDlaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzkxNF80OCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxODQuNDEzIDI3LjIyMDQpIHNjYWxlKDY0Ljk5NzEgNjYuMTEwMSkiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkZFQUZGIiBzdG9wLW9wYWNpdHk9IjAuNiIvPgo8c3RvcCBvZmZzZXQ9IjAuNjgwNyIgc3RvcC1jb2xvcj0iI0EwODdDOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxMDAwMkYiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzkxNF80OCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxNjcuMzk0IDk3Ljc0MjkpIHNjYWxlKDE4Mi4wMzMgMTk2LjkxNikiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkZFQUZGIiBzdG9wLW9wYWNpdHk9IjAuNiIvPgo8c3RvcCBvZmZzZXQ9IjAuNjgwNyIgc3RvcC1jb2xvcj0iI0EwODdDOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxMDAwMkYiLz4KPC9yYWRpYWxHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzkxNF80OCIgeDE9IjgxLjM4MzgiIHkxPSIxOTMuOTQiIHgyPSIxMDguMjYiIHkyPSIzMC45MjIyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MUZGRkYiLz4KPHN0b3Agb2Zmc2V0PSIwLjYyMDIiIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDNfbGluZWFyXzkxNF80OCIgeDE9IjE1MS43MTMiIHkxPSI1Ni4yNzE0IiB4Mj0iODMuNDQ5NSIgeTI9IjExNy44NTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjI4ODgiIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMC43Nzk2IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl85MTRfNDgiIHgxPSIxNy4xMjIxIiB5MT0iMTUwLjkxNCIgeDI9IjE3MS42MDciIHkyPSIxNTAuOTE0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMDAyRTkiLz4KPHN0b3Agb2Zmc2V0PSIwLjk5NTIiIHN0b3AtY29sb3I9IiNGRjAwQzciLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDVfbGluZWFyXzkxNF80OCIgeDE9IjE3OC45MTgiIHkxPSIxMTguNTgxIiB4Mj0iOTMuNDg2NyIgeTI9IjE5Ny45NTkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjI4ODgiIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMC43Nzk2IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ2X2xpbmVhcl85MTRfNDgiIHgxPSIxNy4xMjIxIiB5MT0iMTUwLjkxNCIgeDI9Ijk5Ljc3MDUiIHkyPSIxNTAuOTE0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMDAyOTIiLz4KPHN0b3Agb2Zmc2V0PSIwLjk5NTIiIHN0b3AtY29sb3I9IiM3RDAwQzciLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDdfbGluZWFyXzkxNF80OCIgeDE9IjE3LjIyNTgiIHkxPSIxMTguOTQ3IiB4Mj0iMTcxLjUwMyIgeTI9IjExOC45NDciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzAwMDI5MiIvPgo8c3RvcCBvZmZzZXQ9IjAuOTk1MiIgc3RvcC1jb2xvcj0iI0JFMDBDNyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50OF9saW5lYXJfOTE0XzQ4IiB4MT0iMTY4Ljk3MyIgeTE9IjM0LjgwMzYiIHgyPSIxNTcuNjA5IiB5Mj0iNTIuOTU4MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMjg4OCIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIwLjc3OTYiIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDlfbGluZWFyXzkxNF80OCIgeDE9Ijg0LjkyNzUiIHkxPSIxNzAuMTIxIiB4Mj0iOTEuMDgwMyIgeTI9IjE3MC4xMjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjI4ODgiIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMC43Nzk2IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxMF9saW5lYXJfOTE0XzQ4IiB4MT0iMTA2LjE1NSIgeTE9IjE2OC4wMjgiIHgyPSIxMTIuMzA3IiB5Mj0iMTY4LjAyOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMjg4OCIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIwLjc3OTYiIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDExX2xpbmVhcl85MTRfNDgiIHgxPSI5Ni42NjIzIiB5MT0iMTc4LjYwNCIgeDI9IjEwMS4yODIiIHkyPSIxNzguNjA0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC4yODg4IiBzdG9wLWNvbG9yPSJ3aGl0ZSIvPgo8c3RvcCBvZmZzZXQ9IjAuNzc5NiIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MTJfbGluZWFyXzkxNF80OCIgeDE9IjExNS40MyIgeTE9IjE3Ni4zNzEiIHgyPSIxMjAuMDQ5IiB5Mj0iMTc2LjM3MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMjg4OCIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIwLjc3OTYiIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDEzX2xpbmVhcl85MTRfNDgiIHgxPSI2NS4wNTQ0IiB5MT0iMTY1Ljk4OCIgeDI9Ijc1LjEwMjQiIHkyPSIxNjUuOTg4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC4yODg4IiBzdG9wLWNvbG9yPSJ3aGl0ZSIvPgo8c3RvcCBvZmZzZXQ9IjAuNzc5NiIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MTRfbGluZWFyXzkxNF80OCIgeDE9IjEyNC43MjgiIHkxPSIxNDkuMjc5IiB4Mj0iMTM0Ljc3NSIgeTI9IjE0OS4yNzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjI4ODgiIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMC43Nzk2IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg=="
}
]
},
{
denomUnits: [
{
denom: "usdc",
exponent: 6
},
{
denom: "transfer/channel-3/uusdc",
exponent: 0
}
],
base: "transfer/channel-3/uusdc",
display: "usdc",
symbol: "USDC",
penumbraAssetId: {
inner: "CKBQapu+DkQpsKyTfKESLTV19/NPWR5sNZtvQsd3Hw8="
},
images: [
{
svg: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNTYgMjU2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzI3NzVDQTt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTI4Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMDQsMjE3YzAsMy0yLjQsNC43LTUuMiwzLjhDNjAsMjA4LjQsMzIsMTcyLjIsMzIsMTI5LjNjMC00Mi44LDI4LTc5LjEsNjYuOC05MS41YzIuOS0wLjksNS4yLDAuOCw1LjIsMy44Cgl2Ny41YzAsMi0xLjUsNC4zLTMuNCw1QzY5LjksNjUuNCw0OCw5NC45LDQ4LDEyOS4zYzAsMzQuNSwyMS45LDYzLjksNTIuNiw3NS4xYzEuOSwwLjcsMy40LDMsMy40LDVWMjE3eiIvPgo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTM2LDE4OS4zYzAsMi4yLTEuOCw0LTQsNGgtOGMtMi4yLDAtNC0xLjgtNC00di0xMi42Yy0xNy41LTIuNC0yNi0xMi4xLTI4LjMtMjUuNWMtMC40LTIuMywxLjQtNC4zLDMuNy00LjMKCWg5LjFjMS45LDAsMy41LDEuNCwzLjksMy4yYzEuNyw3LjksNi4zLDE0LDIwLjMsMTRjMTAuMywwLDE3LjctNS44LDE3LjctMTQuNGMwLTguNi00LjMtMTEuOS0xOS41LTE0LjRjLTIyLjQtMy0zMy05LjgtMzMtMjcuMwoJYzAtMTMuNSwxMC4zLTI0LjEsMjYuMS0yNi4zVjY5LjNjMC0yLjIsMS44LTQsNC00aDhjMi4yLDAsNCwxLjgsNCw0djEyLjdjMTIuOSwyLjMsMjEuMSw5LjYsMjMuOCwyMS44YzAuNSwyLjMtMS4zLDQuNC0zLjcsNC40CgloLTguNGMtMS44LDAtMy4zLTEuMi0zLjgtMi45Yy0yLjMtNy43LTcuOC0xMS4xLTE3LjQtMTEuMWMtMTAuNiwwLTE2LjEsNS4xLTE2LjEsMTIuM2MwLDcuNiwzLjEsMTEuNCwxOS40LDEzLjcKCWMyMiwzLDMzLjQsOS4zLDMzLjQsMjhjMCwxNC4yLTEwLjYsMjUuNy0yNy4xLDI4LjNWMTg5LjN6Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTcuMiwyMjAuOGMtMi45LDAuOS01LjItMC44LTUuMi0zLjh2LTcuNWMwLTIuMiwxLjMtNC4zLDMuNC01YzMwLjYtMTEuMiw1Mi42LTQwLjcsNTIuNi03NS4xCgljMC0zNC41LTIxLjktNjMuOS01Mi42LTc1LjFjLTEuOS0wLjctMy40LTMtMy40LTV2LTcuNWMwLTMsMi40LTQuNyw1LjItMy44QzE5Niw1MC4yLDIyNCw4Ni41LDIyNCwxMjkuMwoJQzIyNCwxNzIuMiwxOTYsMjA4LjQsMTU3LjIsMjIwLjh6Ii8+Cjwvc3ZnPgo="
}
]
}
], y = x.map(
(M) => A.fromJson(M)
), E = "penumbra";
y.find(
(M) => M.display === E
);
class j {
constructor(I) {
this.regex = I;
}
matches(I) {
return this.regex.exec(I) !== null;
}
capture(I) {
const N = this.regex.exec(I);
if (N)
return N.groups;
}
}
const L = {
lpNft: new j(/^lpnft_/),
delegationToken: new j(
/^delegation_(?<bech32IdentityKey>penumbravalid1(?<id>[a-zA-HJ-NP-Z0-9]+))$/
),
proposalNft: new j(/^proposal_/),
unbondingToken: new j(
/^unbonding_start_at_(?<startAt>[0-9]+)_(?<bech32IdentityKey>penumbravalid1(?<id>[a-zA-HJ-NP-Z0-9]+))$/
),
votingReceipt: new j(/^voted_on_/),
ibc: new j(/^transfer\/(?<channel>channel-\d+)\/(?<denom>.*)/)
}, S = D((M) => M == null ? void 0 : M.penumbraAssetId), O = D(
(M) => {
var I;
return (I = M == null ? void 0 : M.denomUnits.find((N) => N.denom === M.display)) == null ? void 0 : I.exponent;
}
), w = D((M) => {
if (!M)
return;
const I = L.unbondingToken.capture(M.display);
if (I) {
const { startAt: N } = I;
return BigInt(N);
}
}), Y = D((M) => {
if (!M)
return;
const I = L.delegationToken.capture(M.display);
if (I)
return I.bech32IdentityKey;
const N = L.unbondingToken.capture(M.display);
if (N)
return N.bech32IdentityKey;
});
export {
s as getAssetId,
o as getDisplayDenomExponent,
g as getStartEpochIndex,
n as getValidatorIdentityKeyAsBech32String
S as getAssetId,
O as getDisplayDenomExponent,
w as getUnbondingStartHeight,
Y as getValidatorIdentityKeyAsBech32String
};

@@ -51,4 +51,6 @@ import { Amount } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/num/v1/num_pb';

export declare const getValidatorExchangeRate: Getter<RateData, Amount, false>;
export declare const getValidatorRewardRate: Getter<RateData, Amount, false>;
export { }

@@ -1,7 +0,10 @@

import { c as o } from "./create-getter-Bi5Cvcfi.js";
const d = o(
(e) => e == null ? void 0 : e.validatorRewardRate
import { c as e } from "./create-getter-Bi5Cvcfi.js";
const d = e(
(o) => o == null ? void 0 : o.validatorRewardRate
), R = e(
(o) => o == null ? void 0 : o.validatorExchangeRate
);
export {
R as getValidatorExchangeRate,
d as getValidatorRewardRate
};

@@ -1,11 +0,10 @@

import { I as e } from "./keys_pb-C63cfY5s.js";
import { c as i } from "./create-getter-Bi5Cvcfi.js";
import { b as t } from "./index-CNOohKiG.js";
const a = i((r) => {
import { b as e, P as o, I as d } from "./penumbra-bech32-Cg4Donbu.js";
import { c as n } from "./create-getter-Bi5Cvcfi.js";
const s = (r) => {
const t = e.decode(r, o);
return new Uint8Array(e.fromWords(t.words));
}, a = n((r) => {
if (r)
try {
const { words: o } = t.decode(r);
return new e({
ik: new Uint8Array(t.fromWords(o))
});
return new d({ ik: s(r) });
} catch {

@@ -12,0 +11,0 @@ return;

@@ -7,4 +7,2 @@ import { IdentityKey } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/keys/v1/keys_pb';

export declare const getStartEpochIndexFromUndelegateClaim: Getter<UndelegateClaim, bigint, false>;
declare type Getter<SourceType = unknown, TargetType = unknown, Optional extends boolean = false> = GetterFunction<SourceType, TargetType, Optional> & GetterMethods<SourceType, TargetType, Optional>;

@@ -57,4 +55,6 @@

export declare const getUnbondingStartHeightFromUndelegateClaim: Getter<UndelegateClaim, bigint, false>;
export declare const getValidatorIdentityFromUndelegateClaim: Getter<UndelegateClaim, IdentityKey, false>;
export { }
import { c as r } from "./create-getter-Bi5Cvcfi.js";
import { getValidatorIdentity as p } from "./undelegate-claim-body.js";
const o = r((t) => t == null ? void 0 : t.body), I = o.pipe(p), x = o.pipe(
// Defining this inline rather than exporting `getStartEpochIndex` from
// `undelegate-claim-body.ts`, since `getStartEpochIndex` is already defined
// elsewhere and thus would result in a naming conflict in the exports from
// this package.
r((t) => t == null ? void 0 : t.startEpochIndex)
const o = r((t) => t == null ? void 0 : t.body), n = o.pipe(p), s = o.pipe(
// Defining this inline rather than exporting `getUnbondingStartHeight` from
// `undelegate-claim-body.ts`, since `getUnbondingStartHeight` is already
// defined elsewhere and thus would result in a naming conflict in the exports
// from this package.
r(
(t) => t == null ? void 0 : t.unbondingStartHeight
)
);
export {
o as getBody,
x as getStartEpochIndexFromUndelegateClaim,
I as getValidatorIdentityFromUndelegateClaim
s as getUnbondingStartHeightFromUndelegateClaim,
n as getValidatorIdentityFromUndelegateClaim
};

@@ -0,4 +1,10 @@

import { Amount } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/num/v1/num_pb';
import { IdentityKey } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/keys/v1/keys_pb';
import { ValidatorInfo } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/component/stake/v1/stake_pb';
import { ValidatorInfoResponse } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/component/stake/v1/stake_pb';
export declare const getExchangeRateFromValidatorInfoResponse: Getter<ValidatorInfoResponse, Amount, false>;
export declare const getIdentityKeyFromValidatorInfoResponse: Getter<ValidatorInfoResponse, IdentityKey, false>;
declare type Getter<SourceType = unknown, TargetType = unknown, Optional extends boolean = false> = GetterFunction<SourceType, TargetType, Optional> & GetterMethods<SourceType, TargetType, Optional>;

@@ -5,0 +11,0 @@

@@ -1,7 +0,13 @@

import { c } from "./create-getter-Bi5Cvcfi.js";
const m = c(
import { c as o } from "./create-getter-Bi5Cvcfi.js";
import { getRateData as r, getIdentityKeyFromValidatorInfo as a } from "./validator-info.js";
import { getValidatorExchangeRate as i } from "./rate-data.js";
const e = o(
(t) => t == null ? void 0 : t.validatorInfo
), c = e.pipe(r).pipe(i), n = e.pipe(
a
);
export {
m as getValidatorInfo
c as getExchangeRateFromValidatorInfoResponse,
n as getIdentityKeyFromValidatorInfoResponse,
e as getValidatorInfo
};
import { Amount } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/num/v1/num_pb';
import { Any } from '@bufbuild/protobuf';
import { AssetId } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';
import { EquivalentValue } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';
import { IdentityKey } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/keys/v1/keys_pb';

@@ -17,2 +18,4 @@ import { Metadata as Metadata_2 } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';

export declare const getEquivalentValues: Getter<ValueView, EquivalentValue[], false>;
export declare const getExtendedMetadata: Getter<ValueView, Any, false>;

@@ -28,7 +31,2 @@

/**
* For a `ValueView` containing an unbonding token, gets the start epoch index.
*/
export declare const getStartEpochIndexFromValueView: Getter<ValueView, bigint, false>;
declare type Getter<SourceType = unknown, TargetType = unknown, Optional extends boolean = false> = GetterFunction<SourceType, TargetType, Optional> & GetterMethods<SourceType, TargetType, Optional>;

@@ -82,2 +80,8 @@

/**
* For a `ValueView` containing an unbonding token, gets the unbonding start
* height.
*/
export declare const getUnbondingStartHeightFromValueView: Getter<ValueView, bigint, false>;
/**
* Get the bech32 representation of a validator's identity key from a

@@ -84,0 +88,0 @@ * `ValueView` containing a delegation or unbonding token.

@@ -1,76 +0,20 @@

import { c as s } from "./create-getter-Bi5Cvcfi.js";
import { bech32AssetId as T } from "./asset.js";
import { A as a, B as b, g as v, a as S, b as M } from "./metadata-DPBt1mbQ.js";
import { I as o, G as E, C as I } from "./keys_pb-C63cfY5s.js";
import { p as e } from "./proto3-34LlTy4u.js";
import { getIdentityKeyFromValidatorInfo as h } from "./validator-info.js";
const l = e.makeMessageType(
"penumbra.crypto.tct.v1.StateCommitment",
import { c as t } from "./create-getter-Bi5Cvcfi.js";
import { b as c, a as T, c as u, I as s, G as p } from "./penumbra-bech32-Cg4Donbu.js";
import { getValidatorIdentityKeyAsBech32String as g, getDisplayDenomExponent as _, getUnbondingStartHeight as k } from "./metadata.js";
import { p as a } from "./proto3-BqHBe24v.js";
import { getIdentityKeyFromValidatorInfo as E } from "./validator-info.js";
const o = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.num.v1.Amount",
() => [
{
no: 1,
name: "inner",
name: "lo",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
), m = e.makeMessageType(
"penumbra.crypto.tct.v1.MerkleRoot",
() => [
{
no: 1,
name: "inner",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
e.makeMessageType(
"penumbra.crypto.tct.v1.StateCommitmentProof",
() => [
{ no: 1, name: "note_commitment", kind: "message", T: l },
{
no: 2,
name: "position",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 3, name: "auth_path", kind: "message", T: N, repeated: !0 }
]
);
const N = e.makeMessageType(
"penumbra.crypto.tct.v1.MerklePathChunk",
() => [
{
no: 1,
name: "sibling_1",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 2,
name: "sibling_2",
name: "hi",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 3,
name: "sibling_3",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
), A = e.makeMessageType(
"penumbra.core.component.sct.v1.SctParameters",
() => [
{
no: 1,
name: "epoch_duration",
kind: "scalar",
T: 4

@@ -80,213 +24,10 @@ /* ScalarType.UINT64 */

]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.GenesisContent",
() => [
{ no: 1, name: "sct_params", kind: "message", T: A }
]
);
const u = e.makeMessageType(
"penumbra.core.component.sct.v1.Epoch",
() => [
{
no: 1,
name: "index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 2,
name: "start_height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
), C = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource",
() => [
{ no: 1, name: "transaction", kind: "message", T: V, oneof: "source" },
{ no: 2, name: "ics_20_transfer", kind: "message", T: R, oneof: "source" },
{ no: 20, name: "funding_stream_reward", kind: "message", T: f, oneof: "source" },
{ no: 30, name: "community_pool_output", kind: "message", T: B, oneof: "source" },
{ no: 40, name: "genesis", kind: "message", T: D, oneof: "source" }
]
), D = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource.Genesis",
[],
{ localName: "CommitmentSource_Genesis" }
), V = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource.Transaction",
() => [
{
no: 1,
name: "id",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
],
{ localName: "CommitmentSource_Transaction" }
), f = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource.FundingStreamReward",
() => [
{
no: 1,
name: "epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
],
{ localName: "CommitmentSource_FundingStreamReward" }
), B = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource.CommunityPoolOutput",
[],
{ localName: "CommitmentSource_CommunityPoolOutput" }
), R = e.makeMessageType(
"penumbra.core.component.sct.v1.CommitmentSource.Ics20Transfer",
() => [
{
no: 1,
name: "packet_seq",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 2,
name: "channel_id",
kind: "scalar",
T: 9
/* ScalarType.STRING */
},
{
no: 3,
name: "sender",
kind: "scalar",
T: 9
/* ScalarType.STRING */
}
],
{ localName: "CommitmentSource_Ics20Transfer" }
);
e.makeMessageType(
"penumbra.core.component.sct.v1.Nullifier",
() => [
{
no: 1,
name: "inner",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.NullificationInfo",
() => [
{
no: 1,
name: "id",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 2,
name: "spend_height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EventCommitment",
() => [
{ no: 1, name: "commitment", kind: "message", T: l },
{
no: 2,
name: "position",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 3, name: "source", kind: "message", T: C }
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EventAnchor",
() => [
{ no: 1, name: "anchor", kind: "message", T: m },
{
no: 2,
name: "height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EventEpochRoot",
() => [
{ no: 1, name: "root", kind: "message", T: m },
{
no: 2,
name: "index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EventBlockRoot",
() => [
{ no: 1, name: "root", kind: "message", T: m },
{
no: 2,
name: "height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EpochByHeightRequest",
() => [
{
no: 1,
name: "height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.sct.v1.EpochByHeightResponse",
() => [
{ no: 1, name: "epoch", kind: "message", T: u }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ZKUndelegateClaimProof",
() => [
{
no: 1,
name: "inner",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
const r = e.makeMessageType(
), l = (e) => c.encode(
T,
c.toWords(e.inner),
u
), I = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.Validator",
() => [
{ no: 1, name: "identity_key", kind: "message", T: o },
{ no: 1, name: "identity_key", kind: "message", T: s },
{

@@ -327,3 +68,3 @@ no: 2,

},
{ no: 6, name: "funding_streams", kind: "message", T: U, repeated: !0 },
{ no: 6, name: "funding_streams", kind: "message", T: N, repeated: !0 },
{

@@ -336,18 +77,11 @@ no: 7,

},
{ no: 9, name: "governance_key", kind: "message", T: E }
{ no: 9, name: "governance_key", kind: "message", T: p }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorList",
() => [
{ no: 1, name: "validator_keys", kind: "message", T: o, repeated: !0 }
]
);
const U = e.makeMessageType(
), N = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.FundingStream",
() => [
{ no: 1, name: "to_address", kind: "message", T: F, oneof: "recipient" },
{ no: 2, name: "to_community_pool", kind: "message", T: O, oneof: "recipient" }
{ no: 1, name: "to_address", kind: "message", T: A, oneof: "recipient" },
{ no: 2, name: "to_community_pool", kind: "message", T: S, oneof: "recipient" }
]
), F = e.makeMessageType(
), A = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.FundingStream.ToAddress",

@@ -371,3 +105,3 @@ () => [

{ localName: "FundingStream_ToAddress" }
), O = e.makeMessageType(
), S = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.FundingStream.ToCommunityPool",

@@ -384,6 +118,6 @@ () => [

{ localName: "FundingStream_ToCommunityPool" }
), g = e.makeMessageType(
), D = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.RateData",
() => [
{ no: 1, name: "identity_key", kind: "message", T: o },
{ no: 1, name: "identity_key", kind: "message", T: s },
{

@@ -396,32 +130,17 @@ no: 2,

},
{ no: 4, name: "validator_reward_rate", kind: "message", T: a },
{ no: 5, name: "validator_exchange_rate", kind: "message", T: a }
{ no: 4, name: "validator_reward_rate", kind: "message", T: o },
{ no: 5, name: "validator_exchange_rate", kind: "message", T: o }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.BaseRateData",
() => [
{
no: 1,
name: "epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 2, name: "base_reward_rate", kind: "message", T: a },
{ no: 3, name: "base_exchange_rate", kind: "message", T: a }
]
);
const _ = e.makeMessageType(
), y = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorStatus",
() => [
{ no: 1, name: "identity_key", kind: "message", T: o },
{ no: 2, name: "state", kind: "message", T: w },
{ no: 3, name: "voting_power", kind: "message", T: a },
{ no: 4, name: "bonding_state", kind: "message", T: P }
{ no: 1, name: "identity_key", kind: "message", T: s },
{ no: 2, name: "state", kind: "message", T: b },
{ no: 3, name: "voting_power", kind: "message", T: o },
{ no: 4, name: "bonding_state", kind: "message", T: V }
]
), P = e.makeMessageType(
), V = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.BondingState",
() => [
{ no: 1, name: "state", kind: "enum", T: e.getEnumType(x) },
{ no: 1, name: "state", kind: "enum", T: a.getEnumType(M) },
{

@@ -442,3 +161,3 @@ no: 2,

]
), x = e.makeEnum(
), M = /* @__PURE__ */ a.makeEnum(
"penumbra.core.component.stake.v1.BondingState.BondingStateEnum",

@@ -451,8 +170,8 @@ [

]
), w = e.makeMessageType(
), b = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorState",
() => [
{ no: 1, name: "state", kind: "enum", T: e.getEnumType(G) }
{ no: 1, name: "state", kind: "enum", T: a.getEnumType(B) }
]
), G = e.makeEnum(
), B = /* @__PURE__ */ a.makeEnum(
"penumbra.core.component.stake.v1.ValidatorState.ValidatorStateEnum",

@@ -468,354 +187,46 @@ [

]
), y = e.makeMessageType(
), F = /* @__PURE__ */ a.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorInfo",
() => [
{ no: 1, name: "validator", kind: "message", T: r },
{ no: 2, name: "status", kind: "message", T: _ },
{ no: 3, name: "rate_data", kind: "message", T: g }
{ no: 1, name: "validator", kind: "message", T: I },
{ no: 2, name: "status", kind: "message", T: y },
{ no: 3, name: "rate_data", kind: "message", T: D }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorDefinition",
() => [
{ no: 1, name: "validator", kind: "message", T: r },
{
no: 2,
name: "auth_sig",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
const L = e.makeMessageType(
"penumbra.core.component.stake.v1.Delegate",
() => [
{ no: 1, name: "validator_identity", kind: "message", T: o },
{
no: 2,
name: "epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 3, name: "unbonded_amount", kind: "message", T: a },
{ no: 4, name: "delegation_amount", kind: "message", T: a }
]
), K = e.makeMessageType(
"penumbra.core.component.stake.v1.Undelegate",
() => [
{ no: 1, name: "validator_identity", kind: "message", T: o },
{
no: 2,
name: "start_epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 3, name: "unbonded_amount", kind: "message", T: a },
{ no: 4, name: "delegation_amount", kind: "message", T: a },
{ no: 5, name: "from_epoch", kind: "message", T: u }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.UndelegateClaim",
() => [
{ no: 1, name: "body", kind: "message", T: q },
{
no: 2,
name: "proof",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
const q = e.makeMessageType(
"penumbra.core.component.stake.v1.UndelegateClaimBody",
() => [
{ no: 1, name: "validator_identity", kind: "message", T: o },
{
no: 2,
name: "start_epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 3, name: "penalty", kind: "message", T: i },
{ no: 4, name: "balance_commitment", kind: "message", T: b },
{
no: 5,
name: "unbonding_start_height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.UndelegateClaimPlan",
() => [
{ no: 1, name: "validator_identity", kind: "message", T: o },
{
no: 2,
name: "start_epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 4, name: "penalty", kind: "message", T: i },
{ no: 5, name: "unbonding_amount", kind: "message", T: a },
{
no: 6,
name: "balance_blinding",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 7,
name: "proof_blinding_r",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 8,
name: "proof_blinding_s",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
},
{
no: 9,
name: "unbonding_start_height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.DelegationChanges",
() => [
{ no: 1, name: "delegations", kind: "message", T: L, repeated: !0 },
{ no: 2, name: "undelegations", kind: "message", T: K, repeated: !0 }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.Uptime",
() => [
{
no: 1,
name: "as_of_block_height",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 2,
name: "window_len",
kind: "scalar",
T: 13
/* ScalarType.UINT32 */
},
{
no: 3,
name: "bitvec",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.CurrentConsensusKeys",
() => [
{ no: 1, name: "consensus_keys", kind: "message", T: I, repeated: !0 }
]
);
const i = e.makeMessageType(
"penumbra.core.component.stake.v1.Penalty",
() => [
{
no: 1,
name: "inner",
kind: "scalar",
T: 12
/* ScalarType.BYTES */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorInfoRequest",
() => [
{
no: 2,
name: "show_inactive",
kind: "scalar",
T: 8
/* ScalarType.BOOL */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorInfoResponse",
() => [
{ no: 1, name: "validator_info", kind: "message", T: y }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorStatusRequest",
() => [
{ no: 2, name: "identity_key", kind: "message", T: o }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorStatusResponse",
() => [
{ no: 1, name: "status", kind: "message", T: _ }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorPenaltyRequest",
() => [
{ no: 2, name: "identity_key", kind: "message", T: o },
{
no: 3,
name: "start_epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 4,
name: "end_epoch_index",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.ValidatorPenaltyResponse",
() => [
{ no: 1, name: "penalty", kind: "message", T: i }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.CurrentValidatorRateRequest",
() => [
{ no: 2, name: "identity_key", kind: "message", T: o }
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.CurrentValidatorRateResponse",
() => [
{ no: 1, name: "data", kind: "message", T: g }
]
);
const H = e.makeMessageType(
"penumbra.core.component.stake.v1.StakeParameters",
() => [
{
no: 1,
name: "unbonding_epochs",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 2,
name: "active_validator_limit",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 3,
name: "base_reward_rate",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 4,
name: "slashing_penalty_misbehavior",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 5,
name: "slashing_penalty_downtime",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 6,
name: "signed_blocks_window_len",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{
no: 7,
name: "missed_blocks_maximum",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
},
{ no: 8, name: "min_validator_stake", kind: "message", T: a },
{
no: 9,
name: "unbonding_delay",
kind: "scalar",
T: 4
/* ScalarType.UINT64 */
}
]
);
e.makeMessageType(
"penumbra.core.component.stake.v1.GenesisContent",
() => [
{ no: 1, name: "stake_params", kind: "message", T: H },
{ no: 2, name: "validators", kind: "message", T: r, repeated: !0 }
]
);
const c = s(
(n) => (n == null ? void 0 : n.valueView.case) === "knownAssetId" ? n.valueView.value.metadata : void 0
), J = s(
(n) => (n == null ? void 0 : n.valueView.case) === "knownAssetId" ? n.valueView.value.extendedMetadata : void 0
), Z = s(
(n) => n ? y.fromBinary(n.value) : void 0
), j = J.pipe(Z), ee = j.pipe(
h
), ne = c.pipe(
v
), ae = c.pipe(S), oe = s((n) => {
var t;
switch (n == null ? void 0 : n.valueView.case) {
), m = t(
(e) => (e == null ? void 0 : e.valueView.case) === "knownAssetId" ? e.valueView.value.metadata : void 0
), U = t(
(e) => (e == null ? void 0 : e.valueView.case) === "knownAssetId" ? e.valueView.value.extendedMetadata : void 0
), G = t(
(e) => (e == null ? void 0 : e.valueView.case) === "knownAssetId" ? e.valueView.value.equivalentValues : void 0
), O = t(
(e) => e ? F.fromBinary(e.value) : void 0
), f = U.pipe(O), P = f.pipe(
E
), x = m.pipe(
g
), K = m.pipe(_), H = t((e) => {
var n;
switch (e == null ? void 0 : e.valueView.case) {
case "knownAssetId":
return (t = n.valueView.value.metadata) == null ? void 0 : t.penumbraAssetId;
return (n = e.valueView.value.metadata) == null ? void 0 : n.penumbraAssetId;
case "unknownAssetId":
return n.valueView.value.assetId;
return e.valueView.value.assetId;
default:
return;
}
}), te = s(
(n) => {
var t;
return (t = n == null ? void 0 : n.valueView.value) == null ? void 0 : t.amount;
}), w = t(
(e) => {
var n;
return (n = e == null ? void 0 : e.valueView.value) == null ? void 0 : n.amount;
}
), se = c.pipe(M), me = s((n) => {
var t, d;
if ((n == null ? void 0 : n.valueView.case) === "unknownAssetId")
return n.valueView.value.assetId ? T(n.valueView.value.assetId) : void 0;
if ((n == null ? void 0 : n.valueView.case) === "knownAssetId") {
const p = (t = n.valueView.value.metadata) == null ? void 0 : t.display;
if (p)
return p;
const k = (d = n.valueView.value.metadata) == null ? void 0 : d.penumbraAssetId;
return k ? T(k) : "unknown";
), q = m.pipe(k), J = t((e) => {
var n, r;
if ((e == null ? void 0 : e.valueView.case) === "unknownAssetId")
return e.valueView.value.assetId ? l(e.valueView.value.assetId) : void 0;
if ((e == null ? void 0 : e.valueView.case) === "knownAssetId") {
const d = (n = e.valueView.value.metadata) == null ? void 0 : n.display;
if (d)
return d;
const i = (r = e.valueView.value.metadata) == null ? void 0 : r.penumbraAssetId;
return i ? l(i) : "unknown";
}

@@ -825,12 +236,13 @@ return "unknown";

export {
te as getAmount,
oe as getAssetIdFromValueView,
ae as getDisplayDenomExponentFromValueView,
me as getDisplayDenomFromView,
J as getExtendedMetadata,
ee as getIdentityKeyFromValueView,
c as getMetadata,
se as getStartEpochIndexFromValueView,
ne as getValidatorIdentityKeyAsBech32StringFromValueView,
j as getValidatorInfoFromValueView
w as getAmount,
H as getAssetIdFromValueView,
K as getDisplayDenomExponentFromValueView,
J as getDisplayDenomFromView,
G as getEquivalentValues,
U as getExtendedMetadata,
P as getIdentityKeyFromValueView,
m as getMetadata,
q as getUnbondingStartHeightFromValueView,
x as getValidatorIdentityKeyAsBech32StringFromValueView,
f as getValidatorInfoFromValueView
};
{
"name": "@penumbra-zone/getters",
"version": "1.1.0",
"version": "2.0.0",
"description": "Convenience getters for the deeply nested optionals of Penumbra's protobuf types",

@@ -12,4 +12,4 @@ "type": "module",

"dependencies": {
"bech32": "^2.0.0",
"@penumbra-zone/constants": "1.1.0"
"@penumbra-zone/constants": "2.0.0",
"@penumbra-zone/bech32": "2.0.0"
},

@@ -16,0 +16,0 @@ "scripts": {

@@ -5,3 +5,3 @@ import { Metadata } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';

getDisplayDenomExponent,
getStartEpochIndex,
getUnbondingStartHeight,
getValidatorIdentityKeyAsBech32String,

@@ -34,7 +34,7 @@ } from './metadata';

describe('getStartEpochIndex()', () => {
it("gets the epoch index, coerced to a `BigInt`, from an unbonding token's asset ID", () => {
const metadata = new Metadata({ display: 'uunbonding_epoch_123_penumbravalid1abc123' });
describe('getUnbondingStartHeight()', () => {
it("gets the unbonding start height, coerced to a `BigInt`, from an unbonding token's asset ID", () => {
const metadata = new Metadata({ display: 'unbonding_start_at_123_penumbravalid1abc123' });
expect(getStartEpochIndex(metadata)).toBe(123n);
expect(getUnbondingStartHeight(metadata)).toBe(123n);
});

@@ -45,7 +45,7 @@

expect(getStartEpochIndex.optional()(metadata)).toBeUndefined();
expect(getUnbondingStartHeight.optional()(metadata)).toBeUndefined();
});
it('returns `undefined` for undefined metadata', () => {
expect(getStartEpochIndex.optional()(undefined)).toBeUndefined();
expect(getUnbondingStartHeight.optional()(undefined)).toBeUndefined();
});

@@ -64,3 +64,3 @@ });

describe('when passed metadata of an unbonding token', () => {
const metadata = new Metadata({ display: 'uunbonding_epoch_123_penumbravalid1abc123' });
const metadata = new Metadata({ display: 'unbonding_start_at_123_penumbravalid1abc123' });

@@ -67,0 +67,0 @@ it("returns the bech32 representation of the validator's identity key", () => {

import { Metadata } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';
import { createGetter } from './utils/create-getter';
import {
assetPatterns,
DelegationCaptureGroups,
UnbondingCaptureGroups,
} from '@penumbra-zone/constants/src/assets';
import { assetPatterns } from '@penumbra-zone/constants/src/assets';

@@ -30,16 +26,15 @@ export const getAssetId = createGetter((metadata?: Metadata) => metadata?.penumbraAssetId);

/**
* Get the start epoch index from the metadata of an unbonding token -- that is,
* the epoch at which unbonding started.
* Get the unbonding start height index from the metadata of an unbonding token
* -- that is, the block height at which unbonding started.
*
* For metadata of a non-unbonding token, will return `undefined`.
*/
export const getStartEpochIndex = createGetter((metadata?: Metadata) => {
export const getUnbondingStartHeight = createGetter((metadata?: Metadata) => {
if (!metadata) return undefined;
const unbondingMatch = assetPatterns.unbondingToken.exec(metadata.display);
const unbondingMatch = assetPatterns.unbondingToken.capture(metadata.display);
if (unbondingMatch) {
const { epoch } = unbondingMatch.groups as unknown as UnbondingCaptureGroups;
if (epoch) return BigInt(epoch);
const { startAt } = unbondingMatch;
return BigInt(startAt);
}

@@ -59,12 +54,10 @@

const delegationMatch = assetPatterns.delegationToken.exec(metadata.display);
const delegationMatch = assetPatterns.delegationToken.capture(metadata.display);
if (delegationMatch) {
const { bech32IdentityKey } = delegationMatch.groups as unknown as DelegationCaptureGroups;
return bech32IdentityKey;
return delegationMatch.bech32IdentityKey;
}
const unbondingMatch = assetPatterns.unbondingToken.exec(metadata.display);
const unbondingMatch = assetPatterns.unbondingToken.capture(metadata.display);
if (unbondingMatch) {
const { bech32IdentityKey } = unbondingMatch.groups as unknown as UnbondingCaptureGroups;
return bech32IdentityKey;
return unbondingMatch.bech32IdentityKey;
}

@@ -71,0 +64,0 @@

@@ -7,1 +7,5 @@ import { RateData } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/component/stake/v1/stake_pb';

);
export const getValidatorExchangeRate = createGetter(
(rateData?: RateData) => rateData?.validatorExchangeRate,
);
import { IdentityKey } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/keys/v1/keys_pb';
import { createGetter } from './utils/create-getter';
import { bech32m } from 'bech32';
import { bech32ToIdentityKey } from '@penumbra-zone/bech32/src/identity-key';

@@ -13,7 +13,3 @@ /**

try {
const { words } = bech32m.decode(bech32IdentityKey);
return new IdentityKey({
ik: new Uint8Array(bech32m.fromWords(words)),
});
return new IdentityKey({ ik: bech32ToIdentityKey(bech32IdentityKey) });
} catch {

@@ -20,0 +16,0 @@ return undefined;

@@ -12,8 +12,10 @@ import {

export const getStartEpochIndexFromUndelegateClaim = getBody.pipe(
// Defining this inline rather than exporting `getStartEpochIndex` from
// `undelegate-claim-body.ts`, since `getStartEpochIndex` is already defined
// elsewhere and thus would result in a naming conflict in the exports from
// this package.
createGetter((undelegateClaimBody?: UndelegateClaimBody) => undelegateClaimBody?.startEpochIndex),
export const getUnbondingStartHeightFromUndelegateClaim = getBody.pipe(
// Defining this inline rather than exporting `getUnbondingStartHeight` from
// `undelegate-claim-body.ts`, since `getUnbondingStartHeight` is already
// defined elsewhere and thus would result in a naming conflict in the exports
// from this package.
createGetter(
(undelegateClaimBody?: UndelegateClaimBody) => undelegateClaimBody?.unbondingStartHeight,
),
);
import { ValidatorInfoResponse } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/component/stake/v1/stake_pb';
import { createGetter } from './utils/create-getter';
import { getIdentityKeyFromValidatorInfo, getRateData } from './validator-info';
import { getValidatorExchangeRate } from './rate-data';

@@ -7,1 +9,9 @@ export const getValidatorInfo = createGetter(

);
export const getExchangeRateFromValidatorInfoResponse = getValidatorInfo
.pipe(getRateData)
.pipe(getValidatorExchangeRate);
export const getIdentityKeyFromValidatorInfoResponse = getValidatorInfo.pipe(
getIdentityKeyFromValidatorInfo,
);
import { ValueView } from '@buf/penumbra-zone_penumbra.bufbuild_es/penumbra/core/asset/v1/asset_pb';
import { createGetter } from './utils/create-getter';
import { bech32AssetId } from './asset';
import { bech32AssetId } from '@penumbra-zone/bech32/src/asset';
import {
getDisplayDenomExponent,
getStartEpochIndex,
getUnbondingStartHeight,
getValidatorIdentityKeyAsBech32String,

@@ -23,2 +23,8 @@ } from './metadata';

export const getEquivalentValues = createGetter((valueView?: ValueView) =>
valueView?.valueView.case === 'knownAssetId'
? valueView.valueView.value.equivalentValues
: undefined,
);
const getValidatorInfo = createGetter((any?: Any) =>

@@ -70,5 +76,6 @@ any ? ValidatorInfo.fromBinary(any.value) : undefined,

/**
* For a `ValueView` containing an unbonding token, gets the start epoch index.
* For a `ValueView` containing an unbonding token, gets the unbonding start
* height.
*/
export const getStartEpochIndexFromValueView = getMetadata.pipe(getStartEpochIndex);
export const getUnbondingStartHeightFromValueView = getMetadata.pipe(getUnbondingStartHeight);

@@ -75,0 +82,0 @@ export const getDisplayDenomFromView = createGetter((view?: ValueView) => {

@@ -8,3 +8,2 @@ import { defineConfig } from 'vite';

entry: {
asset: './src/asset.ts',
'address-view': './src/address-view.ts',

@@ -29,2 +28,3 @@ 'delegations-by-address-index-response': './src/delegations-by-address-index-response.ts',

'validator-status': './src/validator-status.ts',
value: './src/value.ts',
'value-view': './src/value-view.ts',

@@ -31,0 +31,0 @@ },

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc